[Serveur] Problème sécurisation serveur

Sauf erreur de ma part, la règle : iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT est là justement pour éviter d’avoir à écrire toutes ces règles de réponses de la part du serveur (qui seraient dans ce cas bien des “output / --sport” comme tu le disais)[/quote]
Dans le cadre d’une requête générée par un client extérieur vers le serveur qui attend alors une réponse du serveur… ok
Mais dans le cas d’un envoie de mail, une demande de timesync, ou un simple nslookup, ce n’est plus le client qui génère la requête au serveur et attend sa réponse, mais l’inverse

Enfin de même, je me trompe peut-être ^^’

Sauf erreur de ma part, la règle : iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT est là justement pour éviter d’avoir à écrire toutes ces règles de réponses de la part du serveur (qui seraient dans ce cas bien des “output / --sport” comme tu le disais)[/quote]
Dans le cadre d’une requête générée par un client extérieur vers le serveur qui attend alors une réponse du serveur… ok
Mais dans le cas d’un envoie de mail, une demande de timesync, ou un simple nslookup, ce n’est plus le client qui génère la requête au serveur et attend sa réponse, mais l’inverse

Enfin de même, je me trompe peut-être ^^’[/quote]

Oui mais pour les cas que tu cites, il y a aussi la règle équivalente pour le cas ou le serveur initie la connexion, et attend la réponse : iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Soit… que faire ? :119
Merci pour votre aides les gars :wink:

[quote=“dric64”]
Oui mais pour les cas que tu cites, il y a aussi la règle équivalente pour le cas ou le serveur initie la connexion, et attend la réponse : iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT[/quote]
s’il y avait NEW dans les state ok… mais là tu n’as que les connexions établies et relatées, et non les nouvelles connexions

Dans le cas d’une requête initié par le serveur lui-même, il n’y a aucune connexion pré-existante

Et voici ce qu’indique mon panel (iscCP Oméga) :

ca utilise iptables ton clic-truc ??
que donne les commandes

iptables -vL

netstat -tupan

Voilà :

[code]ks2568:~# iptables -vL
Chain INPUT (policy DROP 78 packets, 7691 bytes)
pkts bytes target prot opt in out source destination
111 11707 fail2ban-ssh tcp – any any anywhere anywhere multiport dports ssh
2888 303K ACCEPT all – any any anywhere anywhere state RELATED,ESTABLISHED
146 9247 ACCEPT all – lo any anywhere anywhere
733 61509 ACCEPT icmp – any any anywhere anywhere
7 420 ACCEPT tcp – any any anywhere anywhere tcp dpt:ssh
6 360 ACCEPT tcp – any any anywhere anywhere tcp dpt:domain
5704 419K ACCEPT udp – any any anywhere anywhere udp dpt:domain
111 6500 ACCEPT tcp – any any anywhere anywhere tcp dpt:www
1 44 ACCEPT tcp – any any anywhere anywhere tcp dpts:ftp-data:ftp
0 0 ACCEPT tcp – any any anywhere anywhere tcp dpt:smtp
0 0 ACCEPT tcp – any any anywhere anywhere tcp dpt:pop3
0 0 ACCEPT tcp – any any anywhere anywhere tcp dpt:imap2

Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy DROP 12167 packets, 2426K bytes)
pkts bytes target prot opt in out source destination
9297 3182K ACCEPT all – any any anywhere anywhere state RELATED,ESTABLISHED
146 9247 ACCEPT all – any lo anywhere anywhere
0 0 ACCEPT icmp – any any anywhere anywhere
0 0 ACCEPT tcp – any any anywhere anywhere tcp dpt:ssh
0 0 ACCEPT tcp – any any anywhere anywhere tcp dpt:domain
58 4438 ACCEPT udp – any any anywhere anywhere udp dpt:domain
15 900 ACCEPT tcp – any any anywhere anywhere tcp dpt:www
0 0 ACCEPT tcp – any any anywhere anywhere tcp dpts:ftp-data:ftp
0 0 ACCEPT tcp – any any anywhere anywhere tcp dpt:smtp
0 0 ACCEPT tcp – any any anywhere anywhere tcp dpt:pop3
0 0 ACCEPT tcp – any any anywhere anywhere tcp dpt:imap2
172 13072 ACCEPT udp – any any anywhere anywhere udp dpt:ntp

Chain fail2ban-ssh (1 references)
pkts bytes target prot opt in out source destination
111 11707 RETURN all – any any anywhere anywhere[/code]

ks2568:~# netstat -tupan Connexions Internet actives (serveurs et ?tablies) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name tcp 0 0 0.0.0.0:49724 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:540 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 127.0.0.1:60000 0.0.0.0:* LISTEN 27255/postgrey.pid tcp 0 0 0.0.0.0:1 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:20034 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:32771 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:32772 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:40421 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:32773 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:32774 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 127.0.0.1:10025 0.0.0.0:* LISTEN 29383/perl tcp 0 0 0.0.0.0:31337 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 29180/svnserve tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 25990/mysqld tcp 0 0 0.0.0.0:6667 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:11 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 15541/Xtightvnc tcp 0 0 127.0.0.1:12525 0.0.0.0:* LISTEN 3103/policyd-weight tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 18875/couriertcpd tcp 0 0 0.0.0.0:5742 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 18869/couriertcpd tcp 0 0 127.0.0.1:783 0.0.0.0:* LISTEN 29028/spamd.pid tcp 0 0 0.0.0.0:79 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:15 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 26468/portmap tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 11566/apache2 tcp 0 0 0.0.0.0:54320 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:2000 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN 15541/Xtightvnc tcp 0 0 0.0.0.0:27665 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:1524 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 127.0.0.1:9876 0.0.0.0:* LISTEN 1202/ispcp_daemon tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 18780/proftpd: (acc tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 18715/named tcp 0 0 127.0.0.1:693 0.0.0.0:* LISTEN 26805/famd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 24765/sshd tcp 0 0 0.0.0.0:119 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:1080 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 18715/named tcp 0 0 0.0.0.0:12345 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:12346 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 0.0.0.0:635 0.0.0.0:* LISTEN 5123/portsentry tcp 0 0 213.186.45.192:22 90.22.6.134:53544 ESTABLISHED 26426/sshd: root@no tcp 0 48 213.186.45.192:22 90.22.6.134:58179 ESTABLISHED 6453/0 udp 0 0 0.0.0.0:513 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:1 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:32770 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:32771 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:32772 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:32773 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:32774 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:7 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:9 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:54321 0.0.0.0:* 5127/portsentry udp 0 0 127.0.0.1:53 0.0.0.0:* 18715/named udp 0 0 0.0.0.0:37444 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:69 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:31335 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:31337 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:111 0.0.0.0:* 26468/portmap udp 0 0 213.186.45.192:123 0.0.0.0:* 11339/ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 11339/ntpd udp 0 0 0.0.0.0:123 0.0.0.0:* 11339/ntpd udp 0 0 0.0.0.0:635 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:640 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:641 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:161 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:162 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:700 0.0.0.0:* 5127/portsentry udp 0 0 0.0.0.0:34009 0.0.0.0:* 13684/avahi-daemon: udp 0 0 0.0.0.0:5353 0.0.0.0:* 13684/avahi-daemon: udp 0 0 0.0.0.0:34555 0.0.0.0:* 5127/portsentry udp 0 0 127.0.0.1:51154 127.0.0.1:53 ESTABLISHED 3103/policyd-weight udp 0 0 127.0.0.1:41971 127.0.0.1:53 ESTABLISHED 27019/policyd-weigh ks2568:~#

Ben oui, lorsque le serveur initie la connexion, la connexion est dans l’état NEW, les paquets sortent, arrivent sur le serveur de destination, celui ci répond, la connexion passe en ESTABLISHED donc elle matche avec la règle INPUT et les paquets doivent être acceptés, non ?

Bon, je n’insiste plus, car je suis pas sur d’avoir raison… :confused:

Et si son suivi de connexion ne marchait pas (genre à cause du module qui n’est pas chargé) ?
Ca ne coute rien d’ajouter au début du script un petit : modprobe nf_conntrack
au début du script.

oui mais justement, pour passer en état NEW, il faut déjà que ce soit possible ^^'
or en l’état, la règle ne couvre pas cet état
le filtrage bloque
le --sport prend alors tout son sens ici si je ne me trompe pas

me semble que si nf_conntrack n’est pas chargé, il t’est impossible d’utiliser le module state d’iptables (de mémoire)

edit :
j’ai un peu modifié le script d’origine pour le faire plus court

#!/bin/sh 
 
# Réinitialise les règles
iptables -t filter -F 
iptables -t filter -X 
 
# Bloque tout le trafic
iptables -t filter -P INPUT DROP 
iptables -t filter -P FORWARD DROP 
iptables -t filter -P OUTPUT DROP 
 
# Autorise les connexions déjà établies et localhost
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
iptables -A INPUT -i lo -j ACCEPT 
iptables -A OUTPUT -o lo -j ACCEPT 
 
# ICMP (Ping)
iptables -t filter -A INPUT -p icmp -j ACCEPT 
iptables -t filter -A OUTPUT -p icmp -j ACCEPT 
 

# ports en tcp
for PRT in 20 21 22 25 80 110 143
do
 iptables -t filter -A INPUT -p tcp --dport $PRT -j ACCEPT
 iptables -t filter -A OUPUT -p tcp --sport $PRT -j ACCEPT
done

# port en udp
# on est serveur dns
 iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
 iptables -t filter -A OUPUT -p udp --sport 53 -j ACCEPT
# on est client d'un serveur dns
 iptables -t filter -A INPUT -p udp --sport 53 -j ACCEPT
 iptables -t filter -A OUPUT -p udp --dport 53 -j ACCEPT
# on est client d'un serveur ntp
 iptables -t filter -A INPUT -p udp --sport 123 -j ACCEPT
 iptables -t filter -A OUPUT -p udp --dport 123 -j ACCEPT

[quote=“Mitsu”][quote=“dric64”]
Ben oui, lorsque le serveur initie la connexion, la connexion est dans l’état NEW, les paquets sortent, arrivent sur le serveur de destination, celui ci répond, la connexion passe en ESTABLISHED donc elle matche avec la règle INPUT et les paquets doivent être acceptés, non ?
[/quote]
oui mais justement, pour passer en état NEW, il faut déjà que ce soit possible ^^'
or en l’état, la règle ne couvre pas cet état
le filtrage bloque
le --sport prend alors tout son sens ici si je ne me trompe pas

me semble que si nf_conntrack n’est pas chargé, il t’est impossible d’utiliser le module state d’iptables (de mémoire)[/quote]

Je n’ai pas très bien compris la commande que je devais entrer… désolé pour mon incompétence >_<

[quote=“Mitsu”][quote=“dric64”]
Ben oui, lorsque le serveur initie la connexion, la connexion est dans l’état NEW, les paquets sortent, arrivent sur le serveur de destination, celui ci répond, la connexion passe en ESTABLISHED donc elle matche avec la règle INPUT et les paquets doivent être acceptés, non ?
[/quote]
oui mais justement, pour passer en état NEW, il faut déjà que ce soit possible ^^'
or en l’état, la règle ne couvre pas cet état
le filtrage bloque
le --sport prend alors tout son sens ici si je ne me trompe pas

me semble que si nf_conntrack n’est pas chargé, il t’est impossible d’utiliser le module state d’iptables (de mémoire)[/quote]
Moi je dirais que si l’état n’est pas précisé (-m state – state ce_que_tu_veux) dans la règle OUTPUT, alors quelque soit son état, le trafic passe. Un -m state – state NEW dans la règle ne laisserait passer QUE les connexion dont l’état est NEW.

je serai plus d’avis de penser que ça ne passe pas du fait de la politique par défaut définie sur DROP
enfin après… je n’ai pas test donc… ^^"

figa > j’ai édité mon précédent post pour te mettre le script

[quote=“Mitsu”]je serai plus d’avis de penser que ça ne passe pas du fait de la politique par défaut définie sur DROP
enfin après… je n’ai pas test donc… ^^"[/quote]
Certes, mais les lignes pour autoriser ces exceptions en sortie, elles y sont (sauf pour smtp-ssl, cf mon premier post)

Bon, ca n’est pas clair dans mon esprit pour les mails, je ne sais pas exactement comment se comporte le serveur mail. Donc tu as peut être raison.

6 360 ACCEPT tcp – any any anywhere anywhere tcp dpt:domain
5704 419K ACCEPT udp – any any anywhere anywhere udp dpt:domain

0 0 ACCEPT tcp – any any anywhere anywhere tcp dpt:domain
58 4438 ACCEPT udp – any any anywhere anywhere udp dpt:domain

déjà les ports DNS sont ouvert

tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
udp 0 0 127.0.0.1:53 0.0.0.0:*

mais personne n’écoute
tcp 0 0 xx.xx.xx.xx:53 0.0.0.0:* LISTEN pas present
xx.xx.xx.xx = ipserveur

commence par vérifier si ton (iscCP Oméga) a bien configuré les services et s’il n’a pas sont propre script pour iptables

dric64 >
pas exactement
on parle de la sortie là
exemple du 25
le serveur travail sur le 25 en sortie source (–sport) mais la destination ne sera pas forcément le 25 (–dport)
d’où ma remarque sur le fait de remplacer --dport par --sport pour les règles OUTPUT… ou alors utiliser la version du script que j’ai donné un peu plus haut

[quote=“Mitsu”]dric64 >
pas exactement
on parle de la sortie là
exemple du 25
le serveur travail sur le 25 en sortie source (–sport) mais la destination ne sera pas forcément le 25 (–dport)
d’où ma remarque sur le fait de remplacer --dport par --sport pour les règles OUTPUT… ou alors utiliser la version du script que j’ai donné un peu plus haut[/quote]
Oui, en fait ce que je dis dans mon post précédent, j’ai du mal a comprendre précisément ce que fait le serveur mail lorsqu’il relaye un message : son port source est le 25 pour smtp, ca je suis ok. Mais le port de destination, quel est il ? Ca n’est pas le port 25 du serveur de destination ? SI oui, alors sa règle en --dport 25 devrait marcher.

D’accord, c’est la que je me gourre alors. Je pense que je faisais une confusion avec le fonctionnement “web” client / serveur, ou port de destination du client = port source du serveur, alors que la on est de serveur à serveur… Enfin bref, je me comprends :005 .

Au temps pour moi :075 Merci de ton éclaicissement !

Bon alors je fous le script de Mitsu (merci beaucoup)

Merci les gars pour votre aide - qui se barre un peu en débat que je ne comprends pas :laughing:
Mais il me faudrait absolument de l’aide pour configuré PostFix & Bind ! Et après je pourrais ENFIN envoyé mes mails en php, et … faire pointé tous les noms de domaines ;D !

[quote=“Figawoody.”]Bon alors je fous le script de Mitsu (merci beaucoup)

Merci les gars pour votre aide - qui se barre un peu en débat que je ne comprends pas :laughing:
Mais il me faudrait absolument de l’aide pour configuré PostFix & Bind ! Et après je pourrais ENFIN envoyé mes mails en php, et … faire pointé tous les noms de domaines ;D ![/quote]

Si vous souhaitez m’aidé plus amplement, pourriez vous me donné votre adresse de messagerie instantanée via MP ?

Le problème persiste… je viens enfin de faire pointé mes Nom de domaines et bien évidemment ils pointent dans le vide … J’ai vraiment b’soin d’aide là >_< :119 :119

Je me suis fait vite fait celui-ci sur une machine de test… qui fonctionne :wink:

(nécessite ip_conntrack / nf_conntrack / ipt_LOG … à charger via modprobe si non chargés)

[code]#!/bin/sh

BEGIN INIT INFO

Provides: filtre réseaux

Required-Start: $network

Required-Stop:

Default-Start: 2 3 4 5

Default-Stop: 0 1 6

Short-Description: filtrage iptables

Description: Règles iptables standard d’un serveur linux

END INIT INFO

IPT=/sbin/iptables

case “$1” in
start)

$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT

$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -F LOG_DROP
$IPT -X LOG_DROP

$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

$IPT -t filter -A INPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
$IPT -t filter -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

$IPT -t filter -A INPUT -i eth0 -p tcp --syn -m limit --limit 5/s -j ACCEPT
$IPT -t filter -A INPUT -i eth0 -p udp -m limit --limit 10/s -j ACCEPT

$IPT -t filter -A INPUT -i eth0 -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
$IPT -t filter -A INPUT -i eth0 -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT

for PRT in 20 21 22 25 80 81 443
do
$IPT -A INPUT -i eth0 -p tcp --dport $PRT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -o eth0 -p tcp --sport $PRT -m state --state RELATED,ESTABLISHED -j ACCEPT
done

on est serveur DNS

$IPT -t filter -A INPUT -p udp --dport 53 -j ACCEPT
$IPT -t filter -A OUPUT -p udp --sport 53 -j ACCEPT

on est client DNS

$IPT -t filter -A INPUT -p udp --sport 53 -j ACCEPT
$IPT -t filter -A OUPUT -p udp --dport 53 -j ACCEPT

on est client NTP

$IPT -t filter -A INPUT -p udp --sport 123 -j ACCEPT
$IPT -t filter -A OUPUT -p udp --dport 123 -j ACCEPT

$IPT -N LOG_DROP
$IPT -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : ’ --log-level debug
$IPT -A LOG_DROP -j DROP
$IPT -t filter -A INPUT -j LOG_DROP
$IPT -t filter -A OUTPUT -j LOG_DROP
$IPT -t filter -A FORWARD -j LOG_DROP

exit 0
;;

stop)
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -F LOG_DROP
$IPT -X LOG_DROP
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT
clear
printf "\n Netfilter Stopped"
printf "\n See ya~\n"
exit 0
;;

restart)

exit 0
;;

*)
echo "Utilisation: /etc/init.d/netfilter {start|stop}"
exit 1
;;

esac[/code]

Pour Postfix, ya pas grand chose pour une config simple… au besoin :
linux-france.org/article/mai … aco/#N2981
mais vois via ton iscCP qui doit je suppose avoir un module exprès pour

Pour Bind, je passe :unamused:

Du reste, voir avec la doc iscCP comme disait sadhu-gnu
Je n’utilise pas donc je ne risque pas de pouvoir t’aiguiller dessus