drik | Bonjour,
Je dois mettre en place un petit firewall sous iptables pr mon reseau local.
J'explique brièvement mes interfaces :
eth0 => chaine wan
La classe d’@IP 192.168.0.0/24 correspond au LAN sur l’interface eth1 => chaine lan
La classe d’@IP 192.168.1.0 correspond à la DMZ sur l’interface eth2 => chaine dmz
J'ai installé un squid en tant que proxy qui fonctionne si l'on active le "masquerading" mais dès que j'active mes règles, impossible de se connecter depuis le LAN, en passant ou pas par le proxy.
En me documentant un peu j'ai vu que ça pouvait venir du dns mais il me semble que ds mes règles (entre les chaines) il devrait passer....
enfin là je coince...
Voici mon script :
Code :
- #!/bin/sh
- # Script Iptables
- # Cree le 15/10/07 by Drik
- # Activation du forwarding
- echo 1 > /proc/sys/net/ipv4/ip_forward
- # Chargement du module ip_tables
- modprobe ip_tables
- # chargement de modules supplementaires
- modprobe iptable_filter
- modprobe iptable_nat
- modprobe iptable_mangle
- # On vide ttes les tables par defaut
- iptables -F
- iptables -t nat -F
- iptables -t mangle -F
- iptables -X
- echo - Vidage des tables : [OK]
- # Politique par defaut
- iptables -P INPUT DROP
- iptables -P OUTPUT DROP
- iptables -P FORWARD DROP
- echo - TT REFUSER PAR DEFAUT : [OK]
- # Creation chaines
- iptables -N lan-wan
- iptables -N lan-dmz
- iptables -N lan-fw
- iptables -N dmz-wan
- iptables -N dmz-lan
- iptables -N dmz-fw
- iptables -N wan-dmz
- iptables -N wan-fw
- echo - Creation des chaines : [OK]
- # ETATS en INPUT
- # On accepte les connexions venant de lo
- iptables -A INPUT -i lo -j ACCEPT
- # Et si la connexion est etablie ESTABLISHED ou assimilable a une connexion etablie RELATED
- iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- # Si l'etat de la connexion est INVALID, on ignore le paquet
- iptables -A INPUT -m state --state INVALID -j DROP
- # Toute communication TCP doit commencer par un paquet comportant le flag SYN et uniquement celui-ci, si ce n'est pas le cas, on rejette la connexion
- iptables -A INPUT -m state --state NEW -p TCP --tcp-flags ! ALL SYN -j DROP
- # Enfin, on trie les connexions entrantes selon les interfaces
- iptables -A INPUT -i eth0 -j wan-fw
- iptables -A INPUT -i eth2 -j dmz-fw
- iptables -A INPUT -j DROP
- echo - Refuser les connexions entrantes en INPUT : [OK]
- # LOGS de ces ETATS
- iptables -A INPUT -m limit --limit 3/s -j LOG --log-prefix "Bad INPUT: "
- iptables -A INPUT -p TCP --tcp-flags ! ALL SYN -m state --state NEW -m limit --limit 3/s -j LOG --log-prefix "INPUT TCP sans SYN: "
- echo - Log des Etats en INPUT : [OK]
- # ETATS et LOG en FORWARD
- iptables -A FORWARD -m state --state INVALID -m limit --limit 3/s -j LOG --log-prefix "INVALID FORWARD: "
- iptables -A FORWARD -m state --state INVALID -j DROP
- iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
- iptables -A FORWARD -p TCP --tcp-flags ! ALL SYN -m state --state NEW -m limit --limit 3/s -j LOG --log-prefix "FORWARD TCP sans SYN: "
- iptables -A FORWARD -p TCP --tcp-flags ! ALL SYN -m state --state NEW -j DROP
- iptables -A FORWARD -i eth2 -o eth0 -j dmz-wan
- iptables -A FORWARD -i eth2 -o eth1 -j dmz-lan
- iptables -A FORWARD -i eth0 -o eth2 -j wan-dmz
- iptables -A FORWARD -i eth1 -o eth2 -j lan-dmz
- iptables -A FORWARD -j LOG -m limit --limit 3/s --log-prefix "BAD FORWARD "
- iptables -A FORWARD -j DROP
- echo - Refuser le FORWARD pr certaines chaines : [OK]
- # ETATS EN OUTPUT
- iptables -A OUTPUT -j ACCEPT
- echo - Autoriser OUTPUT a sortir : [OK]
- # REGLES DE FILTRAGE
- # LAN
- iptables -A lan-wan -j ACCEPT
- iptables -A lan-fw -j ACCEPT
- echo - Autoriser le lan a sortir : [OK]
- # DMZ
- iptables -A lan-dmz -p TCP -d 192.168.1.1 --dport http -j ACCEPT
- iptables -A lan-dmz -p TCP -d 192.168.1.1 --dport https -j ACCEPT
- iptables -A lan-dmz -p TCP -d 192.168.1.1 --dport ssh -j ACCEPT
- echo - Autoriser 22,80,443 a partir du LAN sur 192.168.1.1 - DMZ : [OK]
- iptables -A wan-dmz -p TCP -d 192.168.1.1 --dport http -j ACCEPT
- iptables -A wan-dmz -p TCP -d 192.168.1.1 --dport https -j ACCEPT
- iptables -A wan-dmz -p TCP -d 192.168.1.1 --dport ssh -j ACCEPT
- echo - Autoriser 22,80,443 a partir du WAN sur 192.168.1.1 - DMZ : [OK]
- iptables -A dmz-wan -p TCP -s 192.168.1.1 --dport http -j ACCEPT
- iptables -A dmz-wan -p TCP -s 192.168.1.1 --dport https -j ACCEPT
- iptables -A dmz-wan -p TCP --dport 53 -j ACCEPT
- iptables -A dmz-wan -p UDP --dport 53 -j ACCEPT
- echo - Autoriser la DMZ a sortir sur 80,443 et 53 : [OK]
- # MASQUERADE
- iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
- # NAT DMZ
- iptables -t nat -A PREROUTING -j DNAT -i eth0 -p TCP --dport http --to-destination 192.168.1.1
- iptables -t nat -A PREROUTING -j DNAT -i eth0 -p TCP --dport https --to-destination 192.168.1.1
- iptables -t nat -A PREROUTING -j DNAT -i eth0 -p TCP --dport ssh --to-destination 192.168.1.1
- # PROXY TRANSPARENT
- iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128
- echo - PROXY TRANSPARENT sur 80 : [OK]
|
Je vous remercie. |