Sympa Touch13!
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";

Répondre à