OVH Cloud OVH Cloud

script iptables: besoin de conseils

6 réponses
Avatar
grosnours [F.T.]
Hello.
Après m'être quelque peu plongé dans les manpages d'iptables, j'en
resors avec le script suivant, qui a pour but de me "protéger" de ce
monde tellement agressif qu'est internet :]

Quelques notes pour comprendre le script:
- l'iface connectée au net est eth0, elle dispose d'une ip statique a
priori (aucun changement en + d'un an de connexion).
- l'iface connectée au LAN rj-45 est eth1, ip fixe : 192.168.1.2
- l'iface connectée au LAN wireless est wlan0, ip fixe : 192.168.2.1

Je dispose
- d'un serveur ftp (pure-ftpd) sur port 21
- d'openssh sur port 22
- d'un serveur http (apache2) sur port 80
qui doivent etre disponibles de partout (LANs & internet)

Les deux LAN doivent avoir acces à internet (NAT).

Que pensez vous du script suivant ?

Merci de me faire part de tous vos commentaires & suggestions.

Fabrice TOPPI

-------------------------------------------------------

#!/bin/bash

#-----------------------------------------#
# eth0 : iface connected to internet #
# eth1 : iface connected to wired LAN #
# wlan0 : iface connected to wireless LAN #
#-----------------------------------------#

# forward ON
echo 1 > /proc/sys/net/ipv4/ip_forward

# icmp ON
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts


# module iptables
modprobe ip_tables
# nat: irc, ftp
modprobe ip_nat_ftp
modprobe ip_nat_irc
modprobe iptable_filter
modprobe iptable_nat


# flush all rules
iptables -F
iptables -X


# nouvelle chaine "log & drop"
iptables -N LOG_DROP
iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] '
iptables -A LOG_DROP -j DROP

# nouvelle chaine "log & accept"
iptables -N LOG_ACCEPT
iptables -A LOG_ACCEPT -j LOG --log-prefix '[IPTABLES ACCEPT] '
iptables -A LOG_DROP -j ACCEPT


# drop all
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# accept all on lo
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT


# accept all on lan (eth1 & wlan0)
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT
iptables -A INPUT -i wlan0 -j ACCEPT
iptables -A OUTPUT -o wlan0 -j ACCEPT


# accept & log FTP from internet
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 21 -j
LOG_ACCEPT
iptables -A INPUT -i eth0 -m state --state ESTABLISHED -p tcp --dport 21
-j ACCEPT
iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED -p tcp --sport
21 -j ACCEPT

# accept & log SSH from internet
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 22 -j
LOG_ACCEPT
iptables -A INPUT -i eth0 -m state --state ESTABLISHED -p tcp --dport 22
-j ACCEPT
iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED -p tcp --sport
22 -j ACCEPT

# accept & log HTTP from internet
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 80 -j
LOG_ACCEPT
iptables -A INPUT -i eth0 -m state --state ESTABLISHED -p tcp --dport 80
-j ACCEPT
iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED -p tcp --sport
80 -j ACCEPT


# LANs 192.168.1 (wired) et 192.168.2 (wireless) connectés au net
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -o eth1 -i eth0 -j ACCEPT

# masquerade des LANs
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE


# log de tout ce qui a pas passé le firewall
iptables -A FORWARD -j LOG_DROP
iptables -A INPUT -j LOG_DROP
iptables -A OUTPUT -j LOG_DROP

---------------------------------------------------------------------------

6 réponses

Avatar
Arnaud Gomes-do-Vale
"grosnours [F.T.]" writes:

# module iptables
modprobe ip_tables
# nat: irc, ftp
modprobe ip_nat_ftp
modprobe ip_nat_irc
modprobe iptable_filter
modprobe iptable_nat


La première et les deux dernières lignes sont superflues (merci
kmod). Je remplacerais les deux autres par une ligne dans
/etc/modules.conf :

above iptable_nat ip_nat_ftp ip_nat_irc

(valable avec un noyau 2.4, il me semble que ça ne fonctionne plus
tout à fait pareil en 2.6).

iptables -N LOG_ACCEPT
iptables -A LOG_ACCEPT -j LOG --log-prefix '[IPTABLES ACCEPT] '
iptables -A LOG_DROP -j ACCEPT


Je suppose que le LOG_DROP est une coquille ?

iptables -P OUTPUT DROP


Pourquoi pas.

iptables -A INPUT -i eth0 -m state --state ESTABLISHED -p tcp --dport
21 -j ACCEPT
iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED -p tcp --sport
21 -j ACCEPT
.../...

iptables -A INPUT -i eth0 -m state --state ESTABLISHED -p tcp --dport
22 -j ACCEPT
iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED -p tcp --sport
22 -j ACCEPT
.../...

iptables -A INPUT -i eth0 -m state --state ESTABLISHED -p tcp --dport
80 -j ACCEPT
iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED -p tcp --sport
80 -j ACCEPT


Je regrouperais tout ça dans une règle de ce style :

iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

et la même chose pour OUTPUT si tu tiens à y garder DROP comme
politique par défaut.

--
Arnaud Gomes-do-Vale -*-*-*-
http://www.glou.org/~arnaud/
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
En savoir plus sur GNU/Linux : http://www.linux-france.org/

Avatar
TiChou
Dans l'article news:c16htv$qsb$,
grosnours [F.T.] écrivait :

Hello.


Bonjour,

Après m'être quelque peu plongé dans les manpages d'iptables, j'en
resors avec le script suivant, qui a pour but de me "protéger" de ce
monde tellement agressif qu'est internet :]

Quelques notes pour comprendre le script:
- l'iface connectée au net est eth0, elle dispose d'une ip statique a
priori (aucun changement en + d'un an de connexion).
- l'iface connectée au LAN rj-45 est eth1, ip fixe : 192.168.1.2
- l'iface connectée au LAN wireless est wlan0, ip fixe : 192.168.2.1

Je dispose
- d'un serveur ftp (pure-ftpd) sur port 21
- d'openssh sur port 22
- d'un serveur http (apache2) sur port 80
qui doivent etre disponibles de partout (LANs & internet)

Les deux LAN doivent avoir acces à internet (NAT).

Que pensez vous du script suivant ?



# flush all rules
iptables -F
iptables -X


Il manque la suppression des règles et des chaînes utilisateurs dans la
table nat :

iptables -t nat -F
iptables -t nat -X

# accept all on lan (eth1 & wlan0)
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT
iptables -A INPUT -i wlan0 -j ACCEPT
iptables -A OUTPUT -o wlan0 -j ACCEPT


On peut limiter le trafic sur ces interfaces aux adresses IP de leur réseau
:

iptables -A INPUT -i eth1 -s 192.168.1.0/24 -d 192.168.1.2 -j ACCEPT
iptables -A OUTPUT -o eth1 -d 192.168.1.0/24 -s 192.168.1.2 -j ACCEPT
iptables -A INPUT -i wlan0 -s 192.168.2.0/24 -d 192.168.2.1 -j ACCEPT
iptables -A OUTPUT -o wlan0 -d 192.168.2.0/24 -s 192.168.2.1 -j ACCEPT

# accept & log FTP from internet
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 21 -j
LOG_ACCEPT
iptables -A INPUT -i eth0 -m state --state ESTABLISHED -p tcp --dport 21
-j ACCEPT
iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED -p tcp --sport
21 -j ACCEPT


Pour le ftp, il ne suffit pas seulement d'accepter le trafic sur le port
ftp/21 mais il faut aussi accepter le trafic sur le port ftp-data/20 :

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

# FTP passif
iptables -A INPUT -i eth0 -p tcp --dport 62000:62999 --sport 1024:
-m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 62000:62999 --dport 1024:
-m state --state ESTABLISHED -j ACCEPT

en ayant configuré PureFTPd avec l'otpion '-p 62000:62999' (ports auorisés
pour le mode passif).

# LANs 192.168.1 (wired) et 192.168.2 (wireless) connectés au net
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -o eth1 -i eth0 -j ACCEPT


Il manque l'autorisation de forwarder le trafic Internet pour le réseau
wireless.
On ne devrait autoriser en entrée que le trafic des connexions existantes ou
le trafic des nouvelles connexions en rapport avec des connexions existantes
(ftp, irc).
Et ici aussi on peut limiter le trafic aux adresses IP des deux réseaux
Ce qui nous donne globalement :

iptables -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -o eth1 -i eth0 -d 192.168.1.0/24
-m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i wlan0 -o eth0 -s 192.168.2.0/24 -j ACCEPT
iptables -A FORWARD -o wlan0 -i eth0 -d 192.168.2.0/24
-m state --state ESTABLISHED,RELATED -j ACCEPT

# masquerade des LANs
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE


Vous nous avez indiqué que votre adresse IP Internet était fixe ou changeait
très rarement, il serait alors préférable de faire du source NAT au lieu de
faire du masquerading :

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24
-j SNAT --to 1.2.3.4
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.0/24
-j SNAT --to 1.2.3.4

où l'adresse IP 1.2.3.4 est à remplacer avec votre adresse IP Internet.
(IPEXT=`ifconfig eth0|sed -n "s/.*inet add?r:([^[:space:]]+).*/1/p"`)

# log de tout ce qui a pas passé le firewall


Il faudrait quand même laisser le trafic icmp utile sous peine d'avoir des
problèmes, ainsi que le trafic dns :

# ICMP
iptables -A INPUT -i eth0 -p icmp --icmp-type destination-unreachable
-j ACCEPT
iptables -A INPUT -i eth0 -p icmp --icmp-type source-quench -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --icmp-type parameter-problem -j ACCEPT

iptables -A OUTPUT -o eth0 -p icmp --icmp-type destination-unreachable
-j ACCEPT

On pourrait aussi ne jouer que sur l'état RELATED des paquets icmp.

# DNS
iptables -A OUTPUT -o eth0 -p udp --dport 53
-m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p udp --sport 53
-m state --state ESTABLISHED -j ACCEPT

iptables -A FORWARD -j LOG_DROP
iptables -A INPUT -j LOG_DROP
iptables -A OUTPUT -j LOG_DROP

Merci de me faire part de tous vos commentaires & suggestions.


De rien, en espérant n'avoir rien oublié.

--
TiChou

Avatar
grosnours [F.T.]
Arnaud Gomes-do-Vale wrote:
"grosnours [F.T.]" writes:


# module iptables
modprobe ip_tables
# nat: irc, ftp
modprobe ip_nat_ftp
modprobe ip_nat_irc
modprobe iptable_filter
modprobe iptable_nat



La première et les deux dernières lignes sont superflues (merci
kmod). Je remplacerais les deux autres par une ligne dans
/etc/modules.conf :

above iptable_nat ip_nat_ftp ip_nat_irc

(valable avec un noyau 2.4, il me semble que ça ne fonctionne plus
tout à fait pareil en 2.6).


Oui, en fait, la machine en question fait gateway/router/firewall/blabla
principalement, donc tout ca finira en hard dans le kernel ;)
J'ai tout compilé en modules pour savoir ce dont j'avais réellement
besoin (il y a tellement d'options dans NetFilter ...)

iptables -N LOG_ACCEPT
iptables -A LOG_ACCEPT -j LOG --log-prefix '[IPTABLES ACCEPT] '
iptables -A LOG_DROP -j ACCEPT



Je suppose que le LOG_DROP est une coquille ?


Evidemment ;)

iptables -P OUTPUT DROP



Pourquoi pas.


moui, c'est vrai qu'interdire de sortir est un peu con ;)

Je regrouperais tout ça dans une règle de ce style :

iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT


Hmm, ca ne pose pas de probleme je suppose si un paquet arrive sur un
port non prévu initiallement (21/22/80) ?

et la même chose pour OUTPUT si tu tiens à y garder DROP comme
politique par défaut.


Simple question:
Il y a une réelle raison à mettre DROP en default policy ? (j'ai
regroupé plusieurs scripts trouvés un peu partout pour faire le mien).

Merci ;)


Avatar
grosnours [F.T.]
TiChou wrote:

# flush all rules
iptables -F
iptables -X



Il manque la suppression des règles et des chaînes utilisateurs dans la
table nat :

iptables -t nat -F
iptables -t nat -X


il faut faire pareil pour la table mangle ? (je compte faire un peu de QoS)

# accept all on lan (eth1 & wlan0)
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT
iptables -A INPUT -i wlan0 -j ACCEPT
iptables -A OUTPUT -o wlan0 -j ACCEPT



On peut limiter le trafic sur ces interfaces aux adresses IP de leur réseau
:

iptables -A INPUT -i eth1 -s 192.168.1.0/24 -d 192.168.1.2 -j ACCEPT
iptables -A OUTPUT -o eth1 -d 192.168.1.0/24 -s 192.168.1.2 -j ACCEPT
iptables -A INPUT -i wlan0 -s 192.168.2.0/24 -d 192.168.2.1 -j ACCEPT
iptables -A OUTPUT -o wlan0 -d 192.168.2.0/24 -s 192.168.2.1 -j ACCEPT


Euh, il se passe quoi lorsqu'une machine 192.168.1.x veut parler à une
192.168.2.y ?

# accept & log FTP from internet
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 21 -j
LOG_ACCEPT
iptables -A INPUT -i eth0 -m state --state ESTABLISHED -p tcp --dport 21
-j ACCEPT
iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED -p tcp --sport
21 -j ACCEPT



Pour le ftp, il ne suffit pas seulement d'accepter le trafic sur le port
ftp/21 mais il faut aussi accepter le trafic sur le port ftp-data/20 :

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

# FTP passif
iptables -A INPUT -i eth0 -p tcp --dport 62000:62999 --sport 1024:
-m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 62000:62999 --dport 1024:
-m state --state ESTABLISHED -j ACCEPT

en ayant configuré PureFTPd avec l'otpion '-p 62000:62999' (ports auorisés
pour le mode passif).


La correction d'arnaud
Je regrouperais tout ça dans une règle de ce style :
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED
-j ACCEPT
et la même chose pour OUTPUT si tu tiens à y garder DROP comme
politique par défaut.


est-elle + ou - "appréciable" en termes de sécurité ? (je ne cherche pas
le grand débat mais quelques indications ;)

# LANs 192.168.1 (wired) et 192.168.2 (wireless) connectés au net
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -o eth1 -i eth0 -j ACCEPT



Il manque l'autorisation de forwarder le trafic Internet pour le réseau
wireless.
On ne devrait autoriser en entrée que le trafic des connexions existantes ou
le trafic des nouvelles connexions en rapport avec des connexions existantes
(ftp, irc).
Et ici aussi on peut limiter le trafic aux adresses IP des deux réseaux
Ce qui nous donne globalement :

iptables -A FORWARD -i eth1 -o eth0 -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -o eth1 -i eth0 -d 192.168.1.0/24
-m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i wlan0 -o eth0 -s 192.168.2.0/24 -j ACCEPT
iptables -A FORWARD -o wlan0 -i eth0 -d 192.168.2.0/24
-m state --state ESTABLISHED,RELATED -j ACCEPT


# masquerade des LANs
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE



Vous nous avez indiqué que votre adresse IP Internet était fixe ou changeait
très rarement, il serait alors préférable de faire du source NAT au lieu de
faire du masquerading :


D'après ce que j'ai lu, le masquerading c'est du SNAT pour les ips
dynamiques. Je suppose que ca ne changera rien au point de vue de
l'utilisation interne aux lans.

Il faudrait quand même laisser le trafic icmp utile sous peine
d'avoir des

problèmes, ainsi que le trafic dns :

# ICMP
iptables -A INPUT -i eth0 -p icmp --icmp-type destination-unreachable
-j ACCEPT
iptables -A INPUT -i eth0 -p icmp --icmp-type source-quench -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --icmp-type parameter-problem -j ACCEPT

iptables -A OUTPUT -o eth0 -p icmp --icmp-type destination-unreachable
-j ACCEPT


Les règles
iptables -A INPUT -i eth0 -p icmp -j ACCEPT
iptables -A OUTPUT -o eth0 -p icmp -j ACCEPT
affectent-elles sérieusement la sécurité ?

# DNS
iptables -A OUTPUT -o eth0 -p udp --dport 53
-m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p udp --sport 53
-m state --state ESTABLISHED -j ACCEPT


ah, je l'avais oublié celui la ;)

Merci de me faire part de tous vos commentaires & suggestions.



De rien, en espérant n'avoir rien oublié.



merci merci ;)


Avatar
Arnaud Gomes-do-Vale
"grosnours [F.T.]" writes:

iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j
ACCEPT


Hmm, ca ne pose pas de probleme je suppose si un paquet arrive sur un
port non prévu initiallement (21/22/80) ?


Cette règle ne laisse passer que les paquets correspondants à des
connexions déjà ouvertes (dans la table des connexions du noyau) ou à
des connexions liées, comme par exemple les connexions ftp data
correspondant aux connexions ftp control ouvertes. Donc non seulement
ça ne posera pas de problèmes, mais ça marchera probablement mieux
dans le cas du ftp. :-)

et la même chose pour OUTPUT si tu tiens à y garder DROP comme
politique par défaut.


Il y a une réelle raison à mettre DROP en default policy ? (j'ai
regroupé plusieurs scripts trouvés un peu partout pour faire le mien).


Ça peut se justifier si on est vraiment paranoïaque, en gros ça peut
interdire à un attaquant qui ne contrôle que partiellement la machine
d'y télécharger facilement ses jouets. À toi de voir si tu veux te
compliquer la vie pour ça.

--
Arnaud Gomes-do-Vale -*-*-*-
http://www.glou.org/~arnaud/
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
En savoir plus sur GNU/Linux : http://www.linux-france.org/


Avatar
TiChou
Dans l'article news:c1851h$m92$,
grosnours [F.T.] écrivait :

iptables -t nat -F
iptables -t nat -X


il faut faire pareil pour la table mangle ? (je compte faire un peu de
QoS)


Oui il le faudra aussi.

On peut limiter le trafic sur ces interfaces aux adresses IP de leur
réseau

iptables -A INPUT -i eth1 -s 192.168.1.0/24 -d 192.168.1.2 -j ACCEPT
iptables -A OUTPUT -o eth1 -d 192.168.1.0/24 -s 192.168.1.2 -j ACCEPT
iptables -A INPUT -i wlan0 -s 192.168.2.0/24 -d 192.168.2.1 -j ACCEPT
iptables -A OUTPUT -o wlan0 -d 192.168.2.0/24 -s 192.168.2.1 -j ACCEPT


Euh, il se passe quoi lorsqu'une machine 192.168.1.x veut parler à une
192.168.2.y ?


Il se passe que le trafic entre les deux réseaux, ne concernant pas des
connexions sur la passerelle Linux, ne traverse pas du tout les chaines
INPUT et OUTPUT de la table filter mais uniquement la chaine FORWARD.

Pour le ftp, il ne suffit pas seulement d'accepter le trafic sur le port
ftp/21 mais il faut aussi accepter le trafic sur le port ftp-data/20 :

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

# FTP passif
iptables -A INPUT -i eth0 -p tcp --dport 62000:62999 --sport 1024:
-m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 62000:62999 --dport 1024:
-m state --state ESTABLISHED -j ACCEPT

en ayant configuré PureFTPd avec l'otpion '-p 62000:62999' (ports
auorisés pour le mode passif).


La correction d'arnaud
Je regrouperais tout ça dans une règle de ce style :
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED
-j ACCEPT
et la même chose pour OUTPUT si tu tiens à y garder DROP comme
politique par défaut.


est-elle + ou - "appréciable" en termes de sécurité ? (je ne cherche pas
le grand débat mais quelques indications ;)


En pratique oui, elle suffit largement à se protéger. Ensuite cela dépend du
niveau de confiance qu'on a en son système, en particulier sur les modules
conntrack, et du niveau de paranoïa de l'administrateur. ;-)
En théorie, mes précédentes règles permettent de mieux controler les paquets
en fonction de chaque service.

# masquerade des LANs
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE


Vous nous avez indiqué que votre adresse IP Internet était fixe ou
changeait très rarement, il serait alors préférable de faire du source
NAT au lieu de faire du masquerading :


D'après ce que j'ai lu, le masquerading c'est du SNAT pour les ips
dynamiques. Je suppose que ca ne changera rien au point de vue de
l'utilisation interne aux lans.


Le fonctionnement du masquerading est plus "complexe". Il détermine de
lui-même l'adresse source en fonction de la destination du paquet et il
détruit toutes les connexions natées si le lien Internet change d'état même
de façon très ponctuel (changement d'état de l'interface, changement d'IP).
Dans le cas du snat, la seule chose qui est faite, c'est de modifier
l'adresse source avec celle donnée. Le fonctionnement est ici plus simple et
plus efficace dans le cas d'une connexion avec IP fixe.

Il faudrait quand même laisser le trafic icmp utile sous peine d'avoir
des problèmes, ainsi que le trafic dns :

# ICMP
iptables -A INPUT -i eth0 -p icmp --icmp-type destination-unreachable
-j ACCEPT
iptables -A INPUT -i eth0 -p icmp --icmp-type source-quench -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A INPUT -i eth0 -p icmp --icmp-type parameter-problem -j ACCEPT

iptables -A OUTPUT -o eth0 -p icmp --icmp-type destination-unreachable
-j ACCEPT


Les règles
iptables -A INPUT -i eth0 -p icmp -j ACCEPT
iptables -A OUTPUT -o eth0 -p icmp -j ACCEPT
affectent-elles sérieusement la sécurité ?


Elles peuvent (icmp flood) et de plus ne sont pas cohérentes avec votre
politique par défaut placée à DROP.

--
TiChou