Une petite aide iptables...

Fredish Messages postés 373 Statut Membre -  
kelux Messages postés 3267 Statut Contributeur -
C'est un script simple, que j'ai pu faire grâce à pas mal de docs sur le net, et qui pourra, je pense, servir de base à tous les newbies d'iptables, qui, comme moi, on galeré au début. Donc, voilà:
#!/bin/sh

#Clean des règles de filtrage
iptables -F
iptables -X

#Connexions entrantes ignorées
iptables -P INPUT DROP

#Forward ignoré
iptables -P FORWARD DROP

#Connexions sortantes ignorées
iptables -P OUTPUT DROP

#Tout accepter en local
iptables -A INPUT  -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

#Accepter le DNS
iptables -A INPUT -i ppp0 --protocol udp -s 195.170.0.2 --source-port 53 -j ACCEPT
iptables -A INPUT -i ppp0 --protocol udp -s 195.170.2.1 --source-port 53 -j ACCEPT
iptables -A OUTPUT -o ppp0 --protocol udp -d 195.170.0.2 --destination-port 53 -j ACCEPT
iptables -A OUTPUT -o ppp0 --protocol udp -d 195.170.2.1 --destination-port 53 -j ACCEPT

#Accepter le protocole ICMP
iptables -N ICMP
iptables -A ICMP -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A ICMP -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A ICMP -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT
iptables -A ICMP -p icmp --icmp-type echo-reply -m limit --limit 1/second -j ACCEPT

        #Virer le reste
iptables -A ICMP -j DROP
iptables -A INPUT -p icmp -j ICMP

        #Mais accepter le ping sortant
iptables -A OUTPUT -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

#Ignorer le protocole IGMP
iptables -A INPUT -p igmp -j DROP

#Ignorer le protocole PIM
iptables -A INPUT -p pim -j DROP

#Scan furtif
iptables -A INPUT -p tcp --syn -m limit --limit 1/second -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/second -j ACCEPT

#msn
iptables -A OUTPUT --protocol tcp --dport 1863 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT --protocol tcp --sport 1863 -m state --state ESTABLISHED -j ACCEPT

#jabber
iptables -A OUTPUT --protocol tcp --dport 5222 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT --protocol tcp --sport 5222 -m state --state ESTABLISHED -j ACCEPT

#icq
iptables -A OUTPUT --protocol tcp --dport 5190 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT --protocol tcp --sport 5190 -m state --state ESTABLISHED -j ACCEPT

#irc
iptables -A OUTPUT --protocol tcp --dport 6667 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT --protocol tcp --sport 6667 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state NEW -j ACCEPT

#http
iptables -A INPUT --protocol tcp -m multiport --sports 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

#ftp
iptables -A INPUT -i ppp0 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT

        #Mode passif
iptables -A INPUT -i ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

#Mail
iptables -A OUTPUT -o ppp0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport 110 -m state --state ESTABLISHED -j ACCEPT

#Log des paquets refusés
iptables -N LOG_DROP
iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES:tout:IGNORE] : '
iptables -A LOG_DROP -j DROP
iptables -A INPUT -p tcp -j LOG_DROP
iptables -A OUTPUT -p tcp -j LOG_DROP


Noter, qu'il faut quand même mettre ses propres serveurs dns, pas les miens... lol, et qu'il y a trois rêgles un peu trop permissives, pour l'irc/dcc et le ftp, donc, perso, je conseille de les commenter quand on n'utilise pas ces types de connexions. Voilà, tout conseil ou commentaire est le bienvenu, bien entendu . :)

5 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut Fred,

Merci. Demande à devenir "Contributeur" et met-nous ça dans la base de connaissances de CCM...

;-))

Z'@+...che.
JP : Cap de burro Catalan ! 
        Mais Content ;-)
0
Fredish Messages postés 373 Statut Membre 19
 
Non, jipicy, pas pour un petit script comme ca. Il faut un bon tuto, à mon avis, pour s'adresser vraiment au public; et les tutos, c'est pas ca qui manque sur le net, mais c'est vrai que ce n'est pas toujours facile d'y retrouver sa propre configuration dans tout ca, alors j'ai mis ca pour l'utilisation type d'un poste de bureau, sans forward, rien... :)

( remarque, pourquoi pas, lol. C'est vrai qu'en le prenant comme ca, ca peut beaucoup aider... faut voir... :) )
0
KKN Messages postés 22 Statut Membre 59
 
Salut,
C'est sympa comme lignes de commande
Je suis débutant aussi avec Iptable, et j'ai un pb !!!
J'essay de mettre en place (pour une démo) un firewall entre 2 machine Win2000(l'une en192.168.0.1 et l'autre en 192.168.10.1)
J'arrive à tt bloquer (pas tres compliké), mais j'aimerai laisser passer juste le telnet tt en bloquant tt le reste.
Comment puis - je faire ??

Merci de votre aide

voili voilou !!!


voili voilou !!!
0
Fredish Messages postés 373 Statut Membre 19
 
Pas d'aide trop perso sur ce post s'il-te-plaît. Je veux bien expliquer quelques règles qu'on ne comprendrait pas, mais pas aider quelqu'un sur un problème perso. :)

Et de plus, comme tu l'as vu je pense, je ne m'occupe pas de firewall physique (pas de forward); ca reste pour un seul poste face au net, et n'ayant pas de configuration en réseau, je n'ai pas encore abordé ca. Voilà. :)
0
kelux Messages postés 3267 Statut Contributeur 432
 
Pour le telnet , c'est le port 23. A toi de faire la regle , c'est pas bien compliké

Pour une liste des ports les plus courants:
vi /etc/services


Luc L.
0
Fredish Messages postés 373 Statut Membre 19
 
je rectifie une règle qui me plaît pas; j'ai vérifié, ca marche, donc, au lieu de ca:

iptables -A OUTPUT -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

pour le ping, il est préférable de mettre cela:

iptables -A OUTPUT -p icmp -m state --state NEW -j ACCEPT

De peur qu'on donne des réponses en sortie à cause des liaisons.

Petite précision aussi, pour ceux qui n'ont pas compris quelles etaient ces règles trop permissives, les voilà:

iptables -A OUTPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state NEW -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT

Elles ouvrent une large bande de port, car autant pour le ftp passif que pour le dcc, le port est aléatoire lors du téléchargement. Dernière petite précision, pour l'irc, je n'ai permis l'accès qu'aux serveurs utilisant le port 6667, vous pouvez très bien accepter les connexions avec plus d'un port, si cela pose problème.
0
sidarus Messages postés 387 Statut Contributeur 112
 
Preneur :)

~°sidarus°~
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kelux Messages postés 3267 Statut Contributeur 432
 
Hello, moa aussi je kiff Netfilter !!

j'aimerai rajouter kkchoz :

Pour les DNS :
iptables -A INPUT -i ppp0 -p udp --sport 53 --dport 1024: -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p udp --sport 1024: --dport 53 -m state --state RELATED,ESTABLISHED -j ACCEPT

Pour ceux ki veulent partager leur connexion avec le rézo local :

#onactive le routage
echo 1 > /proc/sys/net/ipv4/ip_forward

#On fait du nat et du pat = masquerade
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE

Pour le ftp, il ne faut pas oublier de charger les modules suivants (sauf si on a compilé le kernel avec...) avant le démarrage du script :

modprobe ip_nat_ftp
modprobe ip_conntrack_ftp

Je rectifie juste les regles du FTP de fred (un RELATED en trop il y avait...) :

iptables -A INPUT -i ppp0 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

#pour un serveur FTP passif
iptables -A INPUT -i ppp0 -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --sport 1024: --dport 1024: -m state --state RELATED,ESTABLISHED -j ACCEPT

#pour un serveur FTP actif
iptables -A INPUT -i ppp0 -p tcp --sport 20 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT


Pour ceux ki s'interresent au FORWARD il suffit d'indiquer l'interface d'entrée et de sortie par exemple :

#eth1: interface LAN
iptables -A FORWARD -i ppp0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o ppp0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

Ici on ouvre absolument tout du lan vers le net et du net vers le lan on accepte seulement les "retours" de ce kon a demandé.

Pour ceux ki ont un peu de mal voila un tres bel article :

http://christian.caleca.free.fr/netfilter/

Mail me si + d'infos: j'adore le firewalling donc no problem !

Luc L.
0