Routage-Firewall sous Linux

Fermé
chiaze Messages postés 12 Date d'inscription mardi 10 février 2009 Statut Membre Dernière intervention 15 août 2009 - 22 avril 2009 à 23:28
Bonsoir,
Je voudrais réaliser un routeur filtrant à l'aide d'une machine tournant sous Linux, avec mise en place d'une DMZ.
J'ai créé un fichier, je lui ai donné des droits d'exécution, et j'y ai écrit ceci (ce qui est entre parenthèses ce sont mes préoccupations):

J'utilise la version 1.3.5 de iptables (comment la mettre à jour?)
eth0 est l'interface connectée au réseau externe
eth1 est l'interface connectée au réseau interne(192.168.1.0/24)
DMZ (10.0.0.0/8)
Début_fichier

#!/bin/sh
#
# config de base
#
# Vider les tables actuelles
iptables -t filter -F
iptables -t filter -X
echo - Vidage : [OK]

# Initialization de la table NAT
#
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT (est-ce équivalent à MASQUERADE? parceque MASQUERADE ne prend pas)
iptables -t nat -P OUTPUT ACCEPT
echo - Initialisation de la table NAT : [OK]

# Autoriser SSH
iptables -t filter -A INPUT -p tcp ! -s 10.0.0.0/8 --dport 22 -j ACCEPT
echo - Autoriser SSH : [OK]

# Ne pas casser les connexions etablies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -m state --state ! INVALID -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
echo - Ne pas casser les connexions établies : [OK]

# Interdire tout par défaut
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
echo - Interdire tout par défaut : [OK]

#Autoriser toutes les connexions venant du routeur
iptables -A OUTPUT -o eth0 -m state --state ! INVALID -j ACCEPT
echo - Autoriser toutes les connexions venant du routeur : [OK]

# Interdire toute connexion de la DMZ vers l'extérieur
iptables -t filter -I (est-ce que ça pose un problème au lieu de "-A"?) FORWARD -p ALL -s 10.0.0.0/8 -m state --state NEW -j DROP
iptables -t filter -I INPUT -p ALL -s 10.0.0.0/8 -m state --state NEW -j DROP
echo - Interdire toute connexion de la DMZ vers l'extérieur : [OK]

# Autoriser les requetes DNS, FTP, HTTP, NTP (pour les mises a jour)
iptables -t filter -A FORWARD -p tcp -s 0.0.0.0/0 -o eth0 --dport 21 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -s 0.0.0.0/0 -o eth0 --dport 80 -j ACCEPT
iptables -t filter -A FORWARD -p udp -s 0.0.0.0/0 -o eth0 --dport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp -s 0.0.0.0/0 -o eth0 --dport 123 -j ACCEPT
echo - Autoriser les requetes DNS, FTP, HTTP, NTP : [OK]

# Autoriser loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
echo - Autoriser loopback : [OK]

# Autoriser ping
iptables -t filter -A FORWARD -p icmp -s 0.0.0.0/0 -d 10.0.0.0/8 -j ACCEPT
echo - Autoriser ping : [OK]

#Interdire ping vers réseau interne
iptables -t filter -A FORWARD -p icmp -i eth0 -s 0.0.0.0/0 -d 192.168.1.0/24 -LOG
iptables -t filter -A FORWARD -p icmp -i eth0 -s 0.0.0.0/0 -d 192.168.1.0/24 -j DROP
echo - Interdire ping vers réseau interne : [OK]

# Gestion des connexions entrantes autorisées
#
# HTTP
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j ACCEPT --to-destination 10.0.0.1
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j ACCEPT --to-destination 10.0.0.1
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8443 -j ACCEPT --to-destination 10.0.0.1
(ici je voudrais rediriger le trafic http vers le serveur web dans la DMZ, mais une erreur est générée lorsque je tape ces commandes)
iptables -t filter -A FORWARD -p tcp -s 0.0.0.0/0 -d 10.0.0.0/8 --dport 80 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -s 0.0.0.0/0 -d 10.0.0.0/8 --dport 443 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -s 0.0.0.0/0 -d 10.0.0.0/8 --dport 8443 -j ACCEPT

iptables -t filter -A FORWARD -p tcp -i eth1 -o eth0 --dport 80 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth1 -o eth0 --dport 443 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -i eth1 -o eth0 --dport 8443 -j ACCEPT
echo - Autoriser serveur Apache : [OK]


# FTP
modprobe ip_conntrack_ftp
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 20 -j ACCEPT --to-destination 10.0.0.1
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 21 -j ACCEPT --to-destination 10.0.0.1

iptables -t filter -A FORWARD -p tcp -s 192.168.1.0/24 -i eth1 -d 10.0.0.0/8 --dport 20 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -s 192.168.1.0/24 -i eth1 -d 10.0.0.0/8 --dport 21 -j ACCEPT

iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
echo - Autoriser serveur FTP : [OK]

# Mail
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j ACCEPT --to-destination 10.0.0.2
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 110 -j ACCEPT --to-destination 10.0.0.2
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 109 -j ACCEPT --to-destination 10.0.0.2
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 143 -j ACCEPT --to-destination 10.0.0.2

iptables -t filter -A FORWARD -i eth1 -p tcp --dport 25 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -p tcp --dport 110 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -p tcp --dport 109 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -p tcp --dport 143 -j ACCEPT
echo - Autoriser serveur Mail : [OK]

#DNS
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 53 -j ACCEPT --to-destination 10.0.0.0/8
iptables -t filter -A FORWARD -i eth0 -p udp --dport 53 -d 10.0.0.0/8 -j ACCEPT

iptables -t filter -A FORWARD -i eth1 -p udp --dport 53 -d 10.0.0.0/8 -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -o eth0 -p udp --dport 53 -j ACCEPT
echo - DNS : [OK]

# Spoofing
iptables -N SPOOFED
iptables -A SPOOFED -s 127.0.0.0/8 -j DROP
iptables -A SPOOFED -s 169.254.0.0/12 -j DROP
iptables -A SPOOFED -s 172.16.0.0/12 -j DROP
iptables -A SPOOFED -s 192.168.0.0/16 -j DROP
iptables -A SPOOFED -s 10.0.0.0/8 -j DROP
echo - Bloquer le Spoofing : [OK]

Fin_fichier
Pouvez-vous m'aider à corriger mes erreurs et à le rendre meilleur?
Excusez pour le désordre.
De plus, comment configurer une interface en DHCP?
J'ai 2 cartes réseau mais une seule se voit (eth0), l'autre par contre s'appelle sit0. Pourquoi est-ce que cette dernière ne s'appelle pas eth1? Comment y rémédier?
Merci.