Mais je ne sais pas si t'as pig� que j'�tais en train d'apprendre?
Alors, ton script est bien ficel� apparement, mais pas trop p�dagogique-d�butant. Du reste, je viens de me rendre compte que j'ai envoy� ma demande d'info chez les confirmes. Je crois que je vais faire un tour chez debutant.
Merci quand m�me!;-)
Rosaire
Touch13 a �crit :
Le Vendredi 6 Juin 2003 16:44, AMORE Rosaire a �crit :
Salut J'ai le r�seau suivant : une passerelle que je voudrais utiliser comme firewall avec un lan juste derri�re sur eth0. Je n'ai pas de DMZ. Je me connecte par ppp0. Je voudrais tout DROPper sauf : - acc�s � Internet depuis ma passerelle ou mon lan - acc�s depuis n'importe o� par ssh. J'ai construit les r�gles suivantes en m'inspirant du iptables-Howto et du tutorial de lea. Ca marche depuis ma passerelle mais rien depuis mon lan (bien configur�, car, sans les r�gles iptables, j'arrive bien sur internet). ========================= iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD iptables -nL # verif iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -nL iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -nL iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A INPUT -i ppp0 --protocol tcp --source-port 53 -j ACCEPT iptables -A OUTPUT -o ppp0 --protocol tcp --destination-port 53 -j ACCEPT iptables -A INPUT -i ppp0 --protocol udp --source-port 53 -j ACCEPT iptables -A OUTPUT -o ppp0 --protocol udp --destination-port 53 -j ACCEPT iptables -A INPUT -i ppp0 --protocol tcp --source-port 80 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -o ppp0 --protocol tcp --destination-port 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -nL #iptables -A INPUT --protocol tcp --source-port 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT --protocol tcp --source-port 22 -j ACCEPT iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE ========================= Une id�e? Rosaire
Les r�gles INPUT et OUTPUT ne g�rent que les paquets entrants et sortants de la machine concern�e. Pour traiter les paquets en transit par le 'firewall' la r�gle concern�e est 'FORWARD'.
Cependant pour que cela fonctionne il activer le routage.
Voici un exemple de qui fonctionne en production:
# Path to IPTABLES executable IPTABLES=/usr/sbin/iptables
# D�finition des interfaces I_Ext=ppp0 I_Int=eth1
# D�finition des r�seaux Res_Int=192.168.0.0/24 Res_Ext=0.0.0.0/24
# Adresses IP des serveurs IP_Routeur=192.168.0.254 IP_Frw_Int=192.168.0.254 IP_Frw_Ext=`ifconfig $I_Ext | grep inet | cut -d : -f2 | cut -d ' ' -f1`
# D�finition des ports Port_Dns=53 Port_Pop3=110 Port_Smtp=25 Port_Http=80 Port_Ssh=22
######################## # Configuration du noyau ######################## echo echo " -------------------------------------" echo " -- Application des r�gles du firewall" echo " -------------------------------------"
# --- Ignorer les messages ICMP bugg�s (RFC 1122) # ----------------------------------------------- if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ]; then echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses echo " - 1 - Ignorer les messages ICMP bugg�s [OK]" else echo " - 1 - Ignorer les messages ICMP bugg�s [FAILED]" fi
# --- Activation de la redirection des paquets. # --------------------------------------------- if [ -e /proc/sys/net/ipv4/ip_forward ]; then echo "1" > /proc/sys/net/ipv4/ip_forward echo " - 2 - Activation de l'IP Forwarding [OK]" else echo " - 2 - Activation de l'IP Forwarding [FAILED]" fi
# --- Ne pas accepter les redirections ICMP. # ------------------------------------------ # D�sactivation sur toutes les insterfaces. # if [ -e /proc/sys/net/ipv4/conf/all/accept_redirects ]; then # echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects # fi # D�sactivation seulement sur l'interface externe. if [ -e /proc/sys/net/ipv4/conf/$I_Ext/accept_redirects ]; then echo "0" > /proc/sys/net/ipv4/conf/$I_Ext/accept_redirects echo " - 3 - D�sactivation des redirections ICMP [OK]" else echo " - 3 - D�sactivation des redirections ICMP [FAILED]" fi
# --- Log des packets avec des adresses impossibles dans le syst�mes de log. # -------------------------------------------------------------------------- if [ -e /proc/sys/net/ipv4/conf/$I_Ext/log_martians ]; then echo "1" > /proc/sys/net/ipv4/conf/$I_Ext/log_martians echo " - 4 - Log des adresses impossibles [OK]" else echo " - 4 - Log des adresses impossibles [FAILED]" fi
# --- Ignore les requ�tes broadcast d'�cho ICMP. # ---------------------------------------------- if [ -e /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ]; then echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts echo " - 5 - Ignore les requ�tes broadcast d'�cho ICMP [OK]" else echo " - 5 - Ignore les requ�tes broadcast d'�cho ICMP [FAILED]" fi
# --- V�rification de la provenance des paquets, et d�truit ceux venant d'une # --- interface par laquelle il n'auraient pas du arriver (�vite le spoofing). # ---------------------------------------------------------------------------- if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo "1" > $i; done echo " - 6 - Activation des filtres contre le spoofing [OK]" else echo " - 6 - Activation des filtres contre le spoofing [FAILED]" fi
# --- D�sactivation des packets de source de routage. # --------------------------------------------------- if [ -e /proc/sys/net/ipv4/conf/all/accept_source_route ]; then for i in /proc/sys/net/ipv4/conf/*/accept_source_route; do echo "0" > $i; done echo " - 7 - D�sactivation des sources de routage [OK]" else echo " - 7 - D�sactivation des sources de routage [FAILED]" fi
# --- Proctection contre le "SYN Flooding" # ---------------------------------------- if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then echo "1" >/proc/sys/net/ipv4/tcp_syncookies echo " - 9 - Protection contre le SYN Flooding [OK]" else echo " - 9 - Protection contre le SYN Flooding [FAILED]" fi
######################## # Chargement des modules ########################
/sbin/modprobe ip_conntrack_ftp
###################################### # Configuration des r�gles de filtrage ######################################
# --- R�initialisation de 'NETFILTER' --- # --------------------------------------- # On vide les trois tables existantes $IPTABLES -F $IPTABLES -t nat -F $IPTABLES -t mangle -F echo " Les 3 tables existantes sont vide [OK]"
# On efface les cha�nes d�finies par l'utilisateur $IPTABLES -X echo " Les cha�nes d�finies par l'utilsateur sont effac�es [OK]"
# D�finition de la strat�gie (police) par d�faut (rien ne passe!) des cha�nes compil�es.
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
echo " La strat�gie par d�faut est appliqu�e (rien ne passe!!!) [OK]"
# --- Nouvelle cha�ne - Accepter les paquets ICMP # ----------------------------------------------- $IPTABLES -N accepte-icmp $IPTABLES -F accepte-icmp $IPTABLES -A accepte-icmp -p icmp --icmp-type ping -j ACCEPT $IPTABLES -A accepte-icmp -p icmp --icmp-type pong -j ACCEPT echo " D�finition d'une nouvelle cha�ne: 'accepte-icmp' [OK]"
# --- Nouvelle cha�ne - V�rification des paquets # ---------------------------------------------- $IPTABLES -N verification $IPTABLES -F verification # Supprime les paquets dont tous les drapeaux sont position�s ou nul $IPTABLES -A verification -p tcp --tcp-flags ALL ALL -j DROP $IPTABLES -A verification -p tcp --tcp-flags ALL NONE -j DROP echo " D�finition d'une nouvelle cha�ne: 'verification' [OK]"
# --- Configuration de la cha�ne FORWARD # -------------------------------------- # Tous ce qui vient du r�seau interne doit avoir une adresse de ce r�seau! $IPTABLES -A FORWARD -i $I_Int -s ! $Res_Int -j DROP # Les paquets relatifs � une connection �tablie peuvent passer $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT echo " D�finition de la cha�ne 'FORWARD' [OK]"
# --- Paquets � destination du 'FIREWALL'. # --- Nouvelles cha�nes - Paquets en entr�e sur les interfaces r�seaux. # --------------------------------------------------------------------- # Cr�ation des nouvelles cha�nes $IPTABLES -N in-externe # Ajout d'une nouvelle r�gle $IPTABLES -F in-externe # On efface son contenu $IPTABLES -A in-externe -j LOG --log-level error --log-prefix "[in-externe]:" $IPTABLES -A in-externe -j DROP
$IPTABLES -N in-interne $IPTABLES -F in-interne $IPTABLES -A in-interne -p icmp -s $Res_Int -j accepte-icmp $IPTABLES -A in-interne -p tcp -s $Res_Int --dport $Port_Ssh -j ACCEPT $IPTABLES -A in-interne -j LOG --log-level error --log-prefix "[in-interne]:" $IPTABLES -A in-interne -j DROP echo " Cr�ation des nouvelles cha�nes d'entr�s de paquets [OK]"
# Mise en place des nouvelles r�gles d'entr�e de paquets $IPTABLES -A INPUT -i $I_Int -j in-interne $IPTABLES -A INPUT -i $I_Ext -j in-externe echo " Mise en place des nouvelles r�gles d'entr�e de paquets [OK]"
# --- Paquets au d�part du 'FIREWALL'.
# --- Nouvelles cha�nes - Paquets en sortie sur les interfaces r�seau.
# --------------------------------------------------------------------
# Cr�ation des nouvelles r�gles
$IPTABLES -N out-externe # Ajout d'une nouvelle r�gle
$IPTABLES -F out-externe # On efface son contenu
$IPTABLES -A out-externe -p icmp -j accepte-icmp
$IPTABLES -A out-externe -j LOG --log-level error --log-prefix "[out-externe]:"
$IPTABLES -A out-externe -j DROP
$IPTABLES -N out-interne
$IPTABLES -F out-interne
$IPTABLES -A out-interne -p icmp -d $Res_Int -j accepte-icmp
$IPTABLES -A out-interne -p tcp -d $Res_Int -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A out-interne -j LOG --log-level error --log-prefix "[out-interne]:"
$IPTABLES -A out-interne -j DROP
echo " Cr�ation des nouvelles r�gles de sortie de paquets [OK]"
#Mise en place des nouvelles r�gles de sortie de paquets $IPTABLES -A OUTPUT -o $I_Int -d $Res_Int -j out-interne $IPTABLES -A OUTPUT -o $I_Ext -j out-externe echo " Application des nouvelles r�gles de sortie de paquets [OK]"
# --- Redirection des paquets
# ---------------------------
# Cr�ation des nouvelles r�gles
$IPTABLES -N externe-interne
$IPTABLES -F externe-interne
$IPTABLES -A externe-interne -p icmp -j accepte-icmp
$IPTABLES -A externe-interne -p udp --sport $Port_Dns -d $Res_Int --dport \ $Port_Dns -j ACCEPT
$IPTABLES -A externe-interne -p tcp ! --syn --sport $Port_Dns -d $Res_Int \ --dport $Port_Dns -j ACCEPT
$IPTABLES -A externe-interne -p tcp ! --syn --sport $Port_Pop3 -d $Res_Int \
-j ACCEPT
$IPTABLES -A externe-interne -j LOG --log-level error --log-prefix \ '[externe-interne]:'
$IPTABLES -A externe-interne -j DROP
echo " R�gles Externe -> Interne [OK]"
$IPTABLES -N interne-externe
$IPTABLES -F interne-externe
$IPTABLES -A interne-externe -p icmp -j accepte-icmp
$IPTABLES -A interne-externe -p udp -s $Res_Int --dport $Port_Dns -j ACCEPT
$IPTABLES -A interne-externe -p tcp -s $Res_Int --dport $Port_Dns -j ACCEPT
$IPTABLES -A interne-externe -p tcp -s $Res_Int --dport $Port_Smtp -j ACCEPT
$IPTABLES -A interne-externe -p tcp -s $Res_Int --dport $Port_Pop3 -j ACCEPT
$IPTABLES -A interne-externe -p tcp -s $Res_Int --dport $Port_Http -j ACCEPT
$IPTABLES -A interne-externe -j LOG --log-level error --log-prefix \ '[interne-externe]:'
$IPTABLES -A interne-externe -j DROP
echo " R�gles Interne -> Externe [OK]"
echo " D�finition des nouvelle r�gles de redirection de paquets [OK]"
# Mise en place des nouvelles r�gles de redirection $IPTABLES -A FORWARD -i $I_Int -o $I_Ext -s $Res_Int -j interne-externe $IPTABLES -A FORWARD -i $I_Ext -o $I_Int -d $Res_Int -j externe-interne echo " Mise en place des nouvelles r�gles de redirection de paquets [OK]"
# --- Configuration de la translation de source # -------------------------------------------- $IPTABLES -t nat -A POSTROUTING -o $I_Ext -j SNAT --to $IP_Frw_Ext echo " La translation de source est appliqu�e [OK]"
echo " -----------------------------------------" echo " -- Fin d'pplication des r�gle du firewall" echo " -----------------------------------------"
Vous souhaitez acquerir votre Pack ou des Services MandrakeSoft? Rendez-vous sur "http://www.mandrakestore.com"
