J'ai récupéré le script de lea linux, je l'ai adapté à mon installation mais rien ne marche...
Je possède donc un pc sur linux avec modem ppp0 et une carte rézo eth0 pour mon lan.
Voila le script :
#!/bin/sh
# script /etc/firewall.sh
# Firewall d'exemple a but pédagogique
# Arnaud de Bermingham
# duracell@apinc.org
# Activation du forwarding
# C'est pas pour faire joli, on aura des règles
# de forward et il faut bien que les paquets
# traversent la machine, donc on met ce fichier à 1
echo 1 > /proc/sys/net/ipv4/ip_forward
# Alors la, on va appliquer quelques astuces
# pour empêcher les attaques de type spoofing
# et bloquer les réponses ICMP du firewall,
# comme ça c'est très propre. Attention, le
# fait de bloquer le trafic ICMP sur
# le firewall bloque les pings.
# Je veux pas de spoofing
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]
then
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 1 > $filtre
done
fi
# pas de icmp
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# On va utiliser iptables. Si on l'a compilé en module
# dans le kernel, il faut charger le module ip_tables.
/sbin/modprobe ip_tables
# on va charger quelques modules supplémentaires pour
# gérer la translation d'adresse, l'IRC et le FTP
# Tu me fait 4 pompes. Chef oui chef !
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_nat_irc
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_nat
# Pour faire bien, on va vider toutes les règles
# avant d'appliquer les nouvelles règles de firewall
/sbin/iptables -F
/sbin/iptables -X
# On va rajouter 2 nouvelles chaînes.
# Ceci permettra d'ajouter des nouvelles cibles qui
# auront la possibilité de loguer ce qui se passe.
# La on logue et on refuse le paquet,
# on rajoute un préfixe pour pouvoir
# s'y retrouver dans les logs
/sbin/iptables -N LOG_DROP
/sbin/iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : '
/sbin/iptables -A LOG_DROP -j DROP
# ici, on logue et on accepte le paquet,
# on rajoute un préfixe pour pouvoir
# s'y retrouver dans les logs
/sbin/iptables -N LOG_ACCEPT
/sbin/iptables -A LOG_ACCEPT -j LOG --log-prefix '[IPTABLES ACCEPT] : '
/sbin/iptables -A LOG_ACCEPT -j ACCEPT
# On veut faire un firewall efficace,
# donc la politique a appliquer est de tout
# refuser par défaut et rajouter une a une
# les règles que l'on autorise.
# Bien sur, on a RTFM un peu et on a vu que
# l'option -P permet de définir
# la cible par défaut
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -P FORWARD DROP
# Pour éviter les problèmes, on va tout accepter sur
# la machine en local (interface lo).
# Je déconseille de retirer cette règle car
# ça pose pas mal de problèmes et ça peut
# faire perdre la main sur la machine
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
# Bon, la partie initialisation et préparation est
# terminée, passons aux choses sérieuses
# Comme on l'a dit dans la présentation de
# l'architecture réseau, le firewall fait
# également office de proxy grâce par exemple
# à un squid installé dessus. On va donc
# accepter que le proxy ait une connexion
# internet directe. Tant qu'à faire, on va
# mettre des états pour que ça soit bien sécurisé
/sbin/iptables -A OUTPUT -o ppp0 -m state --state NEW,ESTABLISHED -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -i ppp0 -m state --state ESTABLISHED -p tcp --sport 80 -j ACCEPT
# Maintenant, on va faire en sorte que le
# proxy soit totalement transparent pour le LAN
# bénéficiant de la connexion internet.
# L'astuce consiste a rediriger toutes les
# requêtes ayant un port de destination 80
# vers le port 3128 du proxy, ici c'est le
# firewall (qui est sur le firewall et qui
# a l'adresse IP 192.168.2.1 ).
# Une règle de NAT suffira largement pour faire ça.
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1:3128
# Bon, c'est pas trop compliqué ! Maintenant
# on sait que l'on a un serveur web sur la DMZ
# (la machine d'adresse IP 192.168.1.2) sur
# le port 80. On souhaite que toutes les requêtes
# provenant d'internet arrivant sur l'adresse IP
# publique du serveur ( ici 42.42.42.42 ) soit
# redirigées sur le serveur web de la DMZ.
# Rien de bien compliqué. Dans l'exemple,
# on peut retirer le :80 de la target
# --to-destination
#/sbin/iptables -t nat -A PREROUTING -d 42.42.42.42 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1:80
# C'est bien tout ça ! mais le problème c'est
# que les chaînes de la table FILTER sont toutes
# à DENY, donc tout ceci ne fait rien du tout.
# On va donc passer a la configuration du
# firewall proprement dit.
# On va quand même accepter les connexions ssh
# (port 22) provenant d'une machine (la votre en
# l'occurrence, on va dire 192.168.2.42) vers le
# firewall pour pouvoir modifier les règles
# facilement pour bien surveiller, on vas quand
# même loguer les connexions provenant de mon IP
# et à destination du ssh du firewall
/sbin/iptables -A INPUT -i eth0 -s 192.168.0.2 -m state --state NEW,ESTABLISHED -p tcp --dport 22 -j LOG_ACCEPT
/sbin/iptables -A OUTPUT -o eth0 -d 192.168.0.2 -m state --state ESTABLISHED -p tcp --sport 22 -j LOG_ACCEPT
# On veut que le LAN connecté à l'interface
# eth1 ait un accès complet à internet.
# La règle de NAT qui permettait d'avoir
# un proxy transparent sera automatiquement
# appliqué. L'interface correspondant
# à la connexion internet est ici ppp0
/sbin/iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT
/sbin/iptables -A FORWARD -o eth0 -i ppp0 -j ACCEPT
# Maintenant on donne le droit au LAN de
# consulter les pages web du serveur de la DMZ
#/sbin/iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 80 -state --state NEW,ESTABLISHED -j ACCEPT
#/sbin/iptables -A FORWARD -i eth0 -o eth1 -p tcp --sport 80 -state --state ESTABLISHED -j ACCEPT
# Maintenant il n'y a plus qu'à dire au firewall
# d'autoriser à transmettre des paquets TCP à
# destination du port 80 provenant de l'adresse
# IP publique (i.e. d'internet) vers le serveur
# web de la DMZ que nous avons naté précédemment.
/sbin/iptables -A FORWARD -i ppp0 -o eth0 -p tcp --destination-port 80 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -o ppp0 -i eth0 -p tcp --source-port 80 -m state --state ESTABLISHED -j ACCEPT
# Maintenant il ne reste plus grand chose à faire !
# Il faut permettre à l'ensemble du LAN de dialoguer
# sur internet avec la même adresse IP sinon, bien
# évidemment ça ne marchera pas (à moins que vous
# ayez 30 adresses ip !).
# Une petite règle de NAT avec un -j MASQUERADE
# suffira (masquerade = dialoguer avec l'adresse
# IP publique sur firewall)
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.2/24 -j MASQUERADE
# Il faut également que le serveur web de la DMZ
# soit masqueradé sinon, le serveur
# dialoguera sur internet avec son IP privée
#/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
# Toutes les règles qui n'ont pas passé les
# règles du firewall seront refusées et loguées...
# facile :
/sbin/iptables -A FORWARD -j LOG_DROP
/sbin/iptables -A INPUT -j LOG_DROP
/sbin/iptables -A OUTPUT -j LOG_DROP
# Pour faire zoli
echo " [Termine]"
# c'est enfin fini
J'ai de plus des messages d'erreur :
J'ai 3 "commandes not found"
$filtre: ambiguous redirect
iptables: No chain/target/match by that name
Merci de votre aide !
[jfdsdjhfuetppo]--Message édité par Kyle le 01-06-2002 à 23:23:49--[/jfdsdjhfuetppo]