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 ). 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 :
- ### INITIALISATION
- /sbin/modprobe ip_conntrack_ftp
- ## RAZ des regles
- ## comportement par défaut : DROP sur tout
- iptables -F
- iptables -X
- iptables -P INPUT DROP
- iptables -P FORWARD DROP
- iptables -P OUTPUT DROP
- ## loopback autorisé pour tout
- iptables -A INPUT -i lo -j ACCEPT
- iptables -A OUTPUT -o lo -j ACCEPT
- ### REGLES D'EXCEPTIONS
- ## ------------- Client DNS
- iptables -A INPUT -p udp -m state -d 192.168.1.202 -i eth0 --state RELATED,ESTABLISHED -j ACCEPT --sport 53 --dport 1024:
- iptables -A OUTPUT -p udp -m state -s 192.168.1.202 -o eth0 --state ! INVALID -j ACCEPT --sport 1024: --dport 53
- ## ------------- PING
- iptables -A INPUT -p icmp --icmp-type echo-reply -d 192.168.1.202 -i eth0 -j ACCEPT
- iptables -A OUTPUT -p icmp --icmp-type echo-request -s 192.168.1.202 -o eth0 -j ACCEPT
- # -> autorise la station a pinger
- ## ------------ Serveur SSH
- 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
- 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
- ## ------------ serveur FTP pour le LAN seulement (passif sur le range 41000-41020)
- 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
- 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
- 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
- ## ------------ Client FTP
- iptables -A INPUT -p tcp -m state -m tcp -d 192.168.1.202 -i eth0 --state ESTABLISHED -j ACCEPT --sport 21
- iptables -A OUTPUT -p tcp -m state -m tcp -s 192.168.1.202 -o eth0 --state NEW,ESTABLISHED -j ACCEPT --dport 21
- iptables -A OUTPUT -p tcp -m state -m tcp -s 192.168.1.202 -o eth0 --state RELATED,ESTABLISHED -j ACCEPT
- 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