Cet exemple est extrait du tutorial donn� par Michael Neuling et moi-m�me en mars 1999 lors du LinuxWorld ; ce n'est pas le seul moyen de r�gler le probl�me donn�, mais c'est probablement le plus simple. J'esp�re que vous le jugerez informatif.
R�seau externe (MAUVAIS)
|
|
ppp0|
---------------
| 192.84.219.1| R�seau des serveurs (ZDM)
| |eth0
| |----------------------------------------------
| |192.84.219.250 | | |
| | | | |
|192.168.1.250| | | |
--------------- -------- ------- -------
| eth1 | SMTP | | DNS | | WWW |
| -------- ------- -------
| 192.84.219.128 192.84.219.129 192.84.218.130
|
R�seau Interne (BON)
Sur la machine filtrant les paquets :
Tr�s utile si la machine est hors-service.
Une fois de plus, utile pour les diagnostics.
Pour rendre ping et DNS plus utile.
� l'int�rieur de la Zone D�militaris�e :
Serveur mail
Serveur de nom
Serveur web
En interne :
Ce sont des services standards � autoriser : on autorise parfois les machines internes � tout faire, mais ici nous serons plus restrictifs.
Bien entendu, nous voulons qu'il leur soit possible d'envoyer du courrier vers l'ext�rieur.
C'est ainsi qu'ils lisent leur courrier.
Ils doivent pouvoir rechercher des noms externes pour le web, le ftp, traceroute ou ssh.
C'est ainsi qu'ils synchronisent le serveur web externe avec l'interne.
Bien entendu, nous voulons qu'ils puissent se connecteur au serveur web externe.
Il est courtois de l'autoriser ; ils peuvent ainsi tester si le pare-feu est coup� (ainsi nous ne serons pas tenus responsables si un site ext�rieur est coup�).
Puisque nous n'avons pas de routage asym�trique, nous pouvons simplement mettre en marche l'anti-spoofing pour toutes les interfaces.
# for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1> $f; done
#
Nous autorisons tout de m�me le traffic local, mais nous interdisons tout le reste.
# ipchains -A input -i ! lo -j DENY
# ipchains -A output -i ! lo -j DENY
# ipchains -A forward -j DENY
#
Ceci est g�n�ralement r�alis� par les scripts de lancement. Fa�tes bien attention � ce que les r�gles ci-dessus soient ins�r�es avant que les interfaces ne soient configur�es, afin de pr�venir le passage de paquets avant l'insertion des r�gles.
Nous devons ins�rer le module de camouflage du FTP, ainsi le ftp passif et actif fonctionnera `uniquement' du r�seau interne.
# insmod ip_masq_ftp
#
Avec le camouflage, il vaut mieux filtrer la cha�ne de retransmission.
Cassez la cha�ne de retransmission en plusieurs cha�nes utilisateurs d�pendant des interfaces sources/destination ; ceci ram�ne le probl�me � des probl�mes plus g�rables.
ipchains -N bon-zdm
ipchains -N mauvais-zdm
ipchains -N bon-mauvais
ipchains -N zdm-bon
ipchains -N zdm-mauvais
ipchains -N mauvais-bon
ACCEPTer les codes standards d'erreur ICMP est un fait classique, nous lui cr�ons donc une cha�ne.
ipchains -N icmp-acc
Malheureusement, nous connaissons seulement (dans la cha�ne de transmission) quelle est l'interface externe. Ainsi, pour se repr�senter de quelle interface vient le paquet, nous utilisons l'adresse source (l'anti-spoofing �vite les probl�mes li�s aux adresses).
Notez que nous enregistrons tout ce qui ne v�rifie aucune de ces r�gles (cependant, ceci ne devrait jamais arriver).
ipchains -A forward -s 192.168.1.0/24 -i eth0 -j bon-zdm
ipchains -A forward -s 192.168.1.0/24 -i ppp0 -j bon-mauvais
ipchains -A forward -s 192.84.219.0/24 -i ppp0 -j zdm-mauvais
ipchains -A forward -s 192.84.219.0/24 -i eth1 -j zdm-bon
ipchains -A forward -i eth0 -j mauvais-zdm
ipchains -A forward -i eth1 -j mauvais-bon
ipchains -A forward -j DENY -l
Les paquets correspondant � l'une des erreurs ICMP sont accept�s, sinon le contr�le les rendra � la cha�ne appellante.
ipchains -A icmp-acc -p icmp --icmp-type destination-unreachable -j ACCEPT
ipchains -A icmp-acc -p icmp --icmp-type source-quench -j ACCEPT
ipchains -A icmp-acc -p icmp --icmp-type time-exceeded -j ACCEPT
ipchains -A icmp-acc -p icmp --icmp-type parameter-problem -j ACCEPT
Restrictions internes :
On pourrait utiliser le camouflage du r�seau interne vers la ZDM, mais ici nous ne le ferons pas. Puisque personne du r�seau interne ne devrait tenter de choses d�moniaques, nous enregistrons les paquets qui sont interdits.
ipchains -A bon-zdm -p tcp -d 192.84.219.128 smtp -j ACCEPT
ipchains -A bon-zdm -p tcp -d 192.84.219.128 pop-3 -j ACCEPT
ipchains -A bon-zdm -p udp -d 192.84.219.129 domain -j ACCEPT
ipchains -A bon-zdm -p tcp -d 192.84.219.129 domain -j ACCEPT
ipchains -A bon-zdm -p tcp -d 192.84.218.130 www -j ACCEPT
ipchains -A bon-zdm -p tcp -d 192.84.218.130 rsync -j ACCEPT
ipchains -A bon-zdm -p icmp -j icmp-acc
ipchains -A bon-zdm -j DENY -l
ipchains -A mauvais-zdm -p tcp -d 192.84.219.128 smtp -j ACCEPT
ipchains -A mauvais-zdm -p udp -d 192.84.219.129 domain -j ACCEPT
ipchains -A mauvais-zdm -p tcp -d 192.84.219.129 domain -j ACCEPT
ipchains -A mauvais-zdm -p tcp -d 192.84.218.130 www -j ACCEPT
ipchains -A mauvais-zdm -p icmp -j icmp-acc
ipchains -A mauvais-zdm -j DENY
ipchains -A bon-mauvais -p tcp --dport www -j MASQ
ipchains -A bon-mauvais -p tcp --dport ssh -j MASQ
ipchains -A bon-mauvais -p udp --dport 33434:33500 -j MASQ
ipchains -A bon-mauvais -p tcp --dport ftp --j MASQ
ipchains -A bon-mauvais -p icmp --icmp-type ping -j MASQ
ipchains -A bon-mauvais -j REJECT -l
ipchains -A zdm-bon -p tcp ! -y -s 192.84.219.128 smtp -j ACCEPT
ipchains -A zdm-bon -p udp -s 192.84.219.129 domain -j ACCEPT
ipchains -A zdm-bon -p tcp ! -y -s 192.84.219.129 domain -j ACCEPT
ipchains -A zdm-bon -p tcp ! -y -s 192.84.218.130 www -j ACCEPT
ipchains -A zdm-bon -p tcp ! -y -s 192.84.218.130 rsync -j ACCEPT
ipchains -A zdm-bon -p icmp -j icmp-acc
ipchains -A zdm-mauvais -j DENY -l
ipchains -A zdm-mauvais -p tcp -s 192.84.219.128 smtp -j ACCEPT
ipchains -A zdm-mauvais -p udp -s 192.84.219.129 domain -j ACCEPT
ipchains -A zdm-mauvais -p tcp -s 192.84.219.129 domain -j ACCEPT
ipchains -A zdm-mauvais -p tcp ! -y -s 192.84.218.130 www -j ACCEPT
ipchains -A zdm-mauvais -p icmp -j icmp-acc
ipchains -A zdm-mauvais -j DENY -l
ipchains -A mauvais-bon -j REJECT
ipchains -N mauvais-if
ipchains -N zdm-if
ipchains -N bon-if
ipchains -A input -d 192.84.219.1 -j mauvais-if
ipchains -A input -d 192.84.219.250 -j zdm-if
ipchains -A input -d 192.168.1.250 -j bon-if
ipchains -A mauvais-if -i ! ppp0 -j DENY -l
ipchains -A mauvais-if -p TCP --dport 61000:65096 -j ACCEPT
ipchains -A mauvais-if -p UDP --dport 61000:65096 -j ACCEPT
ipchains -A mauvais-if -p ICMP --icmp-type pong -j ACCEPT
ipchains -A mauvais-if -j icmp-acc
ipchains -A mauvais-if -j DENY
ipchains -A zdm-if -i ! eth0 -j DENY
ipchains -A zdm-if -p TCP ! -y -s 192.84.219.129 53 -j ACCEPT
ipchains -A zdm-if -p UDP -s 192.84.219.129 53 -j ACCEPT
ipchains -A zdm-if -p ICMP --icmp-type pong -j ACCEPT
ipchains -A zdm-if -j icmp-acc
ipchains -A zdm-if -j DENY -l
ipchains -A bon-if -i ! eth1 -j DENY
ipchains -A bon-if -p ICMP --icmp-type ping -j ACCEPT
ipchains -A bon-if -p ICMP --icmp-type pong -j ACCEPT
ipchains -A bon-if -j icmp-acc
ipchains -A bon-if -j DENY -l
ipchains -D input 1
ipchains -D forward 1
ipchains -D output 1
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:35