iptables + conntrack_ftp + mode passif : connexions sortantes ?

iptables + conntrack_ftp + mode passif : connexions sortantes ? - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 06-09-2005 à 10:51:45    

Bonjour à tous,
 
Je suis en train de faire un script iptables pour une station. Cette station est destinée à être placée chez des clients, et elle doit être particulièrement blindée (un vrai trou noir :D). Elle ne doit pas avoir le rôle de passerelle, simplement un client. Elle héberge un serveur FTP ainsi qu'un serveur ssh.  
Elle devra également être capable d'être client FTP (passif ou actif) et DNS. Pas de HTTP en vue.
Je dois contrôler absolument tous les flux, que cela soit en entrée ou en sortie.
 
Pour l'instant, j'obtiens ce script :

Code :
  1. ###  INITIALISATION
  2. /sbin/modprobe ip_conntrack_ftp
  3. ##  RAZ des regles
  4. ##  comportement par défaut : DROP sur tout
  5. iptables -F
  6. iptables -X
  7. iptables -P INPUT DROP
  8. iptables -P FORWARD DROP
  9. iptables -P OUTPUT DROP
  10. ## loopback autorisé pour tout
  11. iptables -A INPUT -i lo -j ACCEPT
  12. iptables -A OUTPUT -o lo -j ACCEPT
  13. ###  REGLES D'EXCEPTIONS
  14. ## -------------     Client DNS
  15. iptables -A INPUT -p udp -m state -d 192.168.1.202 -i eth0 --state RELATED,ESTABLISHED -j ACCEPT --sport 53 --dport 1024:
  16. iptables -A OUTPUT -p udp -m state -s 192.168.1.202 -o eth0  --state ! INVALID -j ACCEPT --sport 1024: --dport 53
  17. ## -------------     PING
  18. iptables -A INPUT -p icmp --icmp-type echo-reply -d 192.168.1.202 -i eth0 -j ACCEPT
  19. iptables -A OUTPUT -p icmp --icmp-type echo-request -s 192.168.1.202 -o eth0 -j ACCEPT
  20. #     -> autorise la station a pinger
  21. ## ------------      Serveur SSH
  22. iptables -A INPUT -p tcp -m state -m tcp -s 192.168.1.0/24 -d 192.168.1.202 -i eth0 --state NEW,ESTABLISHED -j ACCEPT --dport 22
  23. iptables -A OUTPUT -p tcp -m state -m tcp -s 192.168.1.202 -d 192.168.1.0/24 -o eth0 --state ESTABLISHED -j ACCEPT --sport 22
  24. ## ------------      serveur FTP pour le LAN seulement (passif sur le range 41000-41020)
  25. iptables -A INPUT -p tcp -m state -m tcp -s 192.168.1.0/24 -d 192.168.1.202 -i eth0 --state NEW,ESTABLISHED -j ACCEPT --dport 21
  26. iptables -A OUTPUT -p tcp -m state -m tcp -s 192.168.1.202 -d 192.168.1.0/24 -o eth0 --state ESTABLISHED -j ACCEPT --sport 21
  27. iptables -A INPUT -p tcp -m state -m tcp -s 192.168.1.0/24 -d 192.168.1.202 -i eth0 --state RELATED,ESTABLISHED -j ACCEPT --dport 41000:41020
  28. iptables -A OUTPUT -p tcp -m state -m tcp -s 192.168.1.202 -d 192.168.1.0/24 -o eth0 --state ESTABLISHED -j ACCEPT --sport 41000:41020
  29. ## ------------      Client FTP
  30. iptables -A INPUT -p tcp -m state -m tcp -d 192.168.1.202 -i eth0 --state ESTABLISHED -j ACCEPT --sport 21
  31. iptables -A OUTPUT -p tcp -m state -m tcp -s 192.168.1.202 -o eth0 --state NEW,ESTABLISHED -j ACCEPT --dport 21
  32. iptables -A OUTPUT -p tcp -m state -m tcp -s 192.168.1.202 -o eth0 --state RELATED,ESTABLISHED -j ACCEPT
  33. iptables -A INPUT -p tcp -m state -m tcp -d 192.168.1.202 -i eth0 --state ESTABLISHED -j ACCEPT


 
Ce qui ne me plait pas vraiment ce sont les dernières lignes en gras. En effet, à cause d'elles je ne contrôle plus vraiment mes sorties (et entrées) puisque j'accepte tout ce qui est déjà établis, et ce n'est pas le but.
 
Je pensais qu'avec le module conntrack_ftp, j'aurai la possibilité de n'autoriser, en entrée et sortie, que les flux de type FTP établis. Je suis persuadé qu'il est possible de le faire, mais je n'arrive pas à trouver comment ?
 
Merci de votre aide précieuse :jap:

Reply

Marsh Posté le 06-09-2005 à 10:51:45   

Reply

Marsh Posté le 06-09-2005 à 15:49:08    

Et bien voila la solution existe bien :)
 
Il faut pour cela se servir du module helper : mon script devient donc :

Code :
  1. iptables -A INPUT -p tcp -m state -m tcp -d $3 -i eth0 --state ESTABLISHED -j ACCEPT --sport 21
  2. iptables -A OUTPUT -p tcp -m state -s $3 -o eth0 --state NEW,ESTABLISHED -j ACCEPT --dport 21
  3. iptables -A OUTPUT -p tcp -m state -m tcp -m helper --helper ftp-21 -s $3 -o eth0 --state RELATED,ESTABLISHED -j ACCEPT
  4. iptables -A INPUT -p tcp -m state -m tcp -m helper --helper ftp-21 -d $3 -i eth0 --state ESTABLISHED -j ACCEPT


 
Ainsi je n'autorise bien en sortie et en entrée que les flux dont les connexions sont déjà établies et dont le protocole est FTP.
 
A noter, il est nécessaire de spécifier le port utilisé par le port de commande du serveur FTP distant (ici 21, celui par défaut) au module helper ftp (--helper ftp-portnumber).
Ainsi, si dans le futur je dois aussi aller sur un serveur FTP distant qui écoute sur le port 2100 par exemple, il faudra ajouter les règles en conséquence.
 
En espérant que cela soit utile, car après pas mal de recherche je n'ai rien trouvé de tel sur ce forum :)

Reply

Marsh Posté le 06-09-2005 à 16:15:36    

Oui ca peut etre utile ;)
(flag pour plus tard)

Reply

Marsh Posté le 29-09-2005 à 11:51:07    

utile, oui. Merci

Reply

Marsh Posté le 30-09-2005 à 08:48:20    

J'ai un petit souci avec cette partie du script : (passif du serveur FTP)
 

# iptables -A INPUT -p tcp -m state -m tcp -s 192.168.1.0/24 -d 192.168.1.202 -i eth0 --state RELATED,ESTABLISHED -j ACCEPT --dport 41000:41020
# iptables -A OUTPUT -p tcp -m state -m tcp -s 192.168.1.202 -d 192.168.1.0/24 -o eth0 --state ESTABLISHED -j ACCEPT --sport 41000:41020


 
Kan je me connecte, j'arrive a me connecter, mais ca ne liste pas :(
Il manquerais pas un NEW ou un REALTED kelque part ?


Message édité par tuxbleu le 30-09-2005 à 08:48:43
Reply

Marsh Posté le 30-09-2005 à 09:16:44    

Je viens de regarder mes logs iptables, apparement il bloque une sortie depuis le port 20 de mon serveur ftp.
Pourtant je suis en passif, mais bon, je vais ouvrir

Reply

Marsh Posté le 30-09-2005 à 09:21:05    

tutut tu vas ouvrir rien, et regarder si tu as loader les modules qui vont bien pour le suivit de connexions FTP :o
 
ip_conntrack_ftp
ipt_conntrack
ip_conntrack  
ip_nat_ftp si tu as besoin de faire du nat dans le coin


Message édité par l0ky le 30-09-2005 à 09:27:28
Reply

Marsh Posté le 30-09-2005 à 09:32:31    

/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
 
:( comment j'ai pu oublier ip_conntrack_ftp :??:
 
Il servent à quoi les 2 suivant ? ipt_contrack et ip_conntrack ?

Reply

Marsh Posté le 30-09-2005 à 09:49:05    

mais m*rde, ca marche toujours po :(

Reply

Marsh Posté le 30-09-2005 à 10:05:39    

bon, pour vous faire rire :
J'en avais marre de naviguer dans les logs, qui sont truffés de [Logs accept], j'ai une idée brillante, qui est de commenter les lignes ou je log les packets acceptés, Comme ca, j'ai plus plus que les logs_drop.
Brillant...non, j'ai plus accès à mon serveur. (suis sur un site distant).
Plus de ssh, ftp...
Humm, les l'idée était bonne en théorie...

Reply

Marsh Posté le 30-09-2005 à 10:05:39   

Reply

Marsh Posté le 05-10-2005 à 10:43:57    

Ha c'est la boulette :D

Reply

Marsh Posté le 05-10-2005 à 19:44:27    

petoulachi a écrit :

Ha c'est la boulette :D


 
Oui  [:volta]  
Bon, c'est réparé maintenant  [:dao]

Reply

Marsh Posté le 18-11-2005 à 23:49:02    

Juste pour dire merci à l'auteur de cette aide concernant les flux ftp et iptables  :jap:  
Très très utile!!!  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed