Retourner aux forums || Retourner au forum Astuces.divers
Astuces.divers : [Admin] firewall iptables minimal, mais efficace
Posté par free2.org (page perso, ) le 16 mai 2005#! /bin/sh
iptables -P INPUT DROP
iptables -F INPUT
iptables -A INPUT -m state --state established -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -P FORWARD DROP
iptables -F FORWARD
iptables -P OUTPUT ACCEPT
iptables -F OUTPUT
C'est tout.
Explications :
-P fixe le comportement (Policy) par défaut
-F efface les règles précédentes, s'il y en avait (Flush)
-A ajoute (Add) une règle
-m state --state established précise que cette règle ne concerne que les connexions déjà établies (utilisation du module state)
-i lo précise que cette règle concerne l'interface locale (lo), c'est à dire pour les communications entre 2 programmes de la même machine.
Voici un enrichissement élémentaire, pour aller plus loin :
iptables -A INPUT -p tcp --dport ssh -j ACCEPT pour autoriser les connexions depuis l'extérieur vers un serveur local, ici le port est celui de ssh (équivalent à 22 en chiffres)
Un enrichissement plus compliqué : voici l'ajout du NAT/masquerading pour en faire un routeur/firewall internet pour un réseau local : (remplacer eth0 par l'interface de votre réseau local, et ppp0 par votre interface internet)
iptables -A FORWARD -m state --state established -j ACCEPT
iptables -A FORWARD -i eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo 1 >/proc/sys/net/ipv4/ip_forward
> Lire le message (3 commentaires, moyenne: 2).
petit oubli: flush NAT
Il vaut mieux vider la table NAT avant de s'en servir, on ne sait jamais.
la fin de l'astuce devient donc:
iptables -A FORWARD -m state --state established -j ACCEPT
iptables -A FORWARD -i eth0 -j ACCEPT
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo 1 >/proc/sys/net/ipv4/ip_forward
mieux?
là je pense que tu autorises l'ack tunneling (quoique moi aussi dans l'exemple que je fais je pense que je l'autorise :).
certes ton exemple est simple, mais rapport aux clients sortants, le script ne sert à rien.
à la ligne iptables -A INPUT -m state --state established -j ACCEPT
je met comme toi: iptables -A INPUT -m state --state established -j ACCEPT
mais aussi: iptables -A OUTPUT -m state --state NEW,ESTABLISHED -j ACCEPT
le mieux est de préciser via -o pour l'output et -i pour l'input l'interface précisement ciblée. (ppp0 ou eth0)
C'est ce point, avec le fait de préciser les ports, qui sécurisent "vraiment".
l'objectif etait le simple, mais cela n'empeche pas :
# news (wanadoo)
iptables -A OUTPUT -o eth0 -p tcp -m state --state NEW,ESTABLISHED -d 193.252.117.183 --dport 119 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED -s 193.252.117.183 --sport 119 -j ACCEPT
car je suis recemment en dhcp via mon provider donc j'appliques ça sur eth0, avant c'etait pppoe donc ppp0. 119=port des newsgroups
tcp car c'est du mode connecte. dport destination port.. s source addresse..
un truc sympa :
iptables -A OUTPUT -o eth0 -p tcp -m owner --cmd-owner bash -j ACCEPT
autorisera n'importe quel processus s'intitulant bash à sortir par eth0 (noyaux recents) :p en tcp pour l'input il faut voir au port bien sûr, sous windows ce genre de choses est completement fait...artis(anal)ement (buffering.."intelligent")car on sait juste ip:port pour l'input.
je cherche un taf de techos sur bdx
Attention au conntrack
J'ajouterais une précision qui peut être utile, ajouter la ligne suivante permet d'éviter de faire un full sur sa table conntrack... La limite est définit dans /proc/sys/net/ipv4/ip_conntrack_max, un DoS (volontaire ou involontaire) peut se faire en atteignant ce seuil. Le résultat d'un full dans cette table est dans syslog (dmesg): "ip_conntrack: table full, dropping packet.", et le seul moyen pour résoudre ce problème est de décharger le module ip_conntrack quand cela est possible, sinon reboot :°|
echo $((24*3600)) >/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
(Ici une journée pour le timeout)
On peut augmenter la taille de la table ainsi:
echo 32760 >/proc/sys/net/ipv4/ip_conntrack_max
Pour calculer la bonne taille pour une machine: http://www.wallfire.org/misc/netfilter_conntrack_perf.txt(...)
Revenir en haut de page || Retourner aux forums || Retourner au forum Astuces.divers



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.