Tu n'es pas obligé d'activer le forwarding avant la mise en place des règles, et c'est d'ailleurs peu recommandé car pendant que tes rêgles se mettent en place, ta machine n'est pas sécurisée..
Dans tout bon script iptables, juste après l'initialisation des variables, je faisais ça :
echo 0 > /proc/sys/net/ipv4/ip_forward
Une fois que toutes les rêgles sont activées, j'active le forwarding :
echo 1 > /proc/sys/net/ipv4/ip_forward
Pour faciliter la maintenance et la lisibilité d'un script iptables, je recommande vivement l'usage de variables, voici un exemple de script :
echo Activation de la politique par defaut de chaque chaine
echo
# Comportement par defaut, refuse tous les paquets
#
#-------------------------------------------------
for filter_chains in $FILTER_CHAINS
do
$IPT -t filter -P $filter_chains DROP
done
for nat_chains in $NAT_CHAINS
do
$IPT -t nat -P $nat_chains ACCEPT
done
for all_chains in $ALL_CHAINS
do
$IPT -t mangle -P $all_chains ACCEPT
done
#-------------------------------------------------
# On désactive le forwarding pendant la config...et on masque le traffic interne
echo 0 > /proc/sys/net/ipv4/ip_forward
$IPT -t nat -A POSTROUTING -o $WAN_INT -j MASQUERADE
sleep 1
echo Mise en place des regles de filtrage
echo
# On accepte tout sur le localhost.
$IPT -A INPUT -p ALL -i lo -j ACCEPT
$IPT -A OUTPUT -p ALL -o lo -j ACCEPT
# On accepte tout le traffic en interne avec les utilisateurs.
$IPT -A INPUT -j ACCEPT -p ALL -i $LAN_INT -s $LAN_NET -d $ANYWHERE
$IPT -A OUTPUT -j ACCEPT -p ALL -o $LAN_INT -s $ANYWHERE -d $LAN_NET
# On accepte la retransmission de paquets entre interfaces avec le protocole TCP
# dans les deux sens, sauf pour l'etat NEW de l'exterieur vers l'interieur.
$IPT -A FORWARD -j ACCEPT -i $LAN_INT -o $WAN_INT -s $LAN_NET -d $ANYWHERE \
-p tcp -m state --state NEW,ESTABLISHED,RELATED
$IPT -A FORWARD -j ACCEPT -o $LAN_INT -i $WAN_INT -s $ANYWHERE \
-p tcp -m state --state ESTABLISHED,RELATED
# On accepte le protocole UDP dans les deux sens.
$IPT -A FORWARD -j ACCEPT -i $LAN_INT -o $WAN_INT -s $LAN_NET -d $ANYWHERE -p udp
$IPT -A FORWARD -j ACCEPT -o $LAN_INT -i $WAN_INT -s $ANYWHERE -d $LAN_NET -p udp
# On accepte les paquets provenant de connexion deja etablies.
$IPT -A INPUT -i $WAN_INT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -o $WAN_INT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
[^] # Trou de sécurité
Posté par Dabowl_94 . En réponse au message firewall iptables. Évalué à 1.
Dans tout bon script iptables, juste après l'initialisation des variables, je faisais ça :
echo 0 > /proc/sys/net/ipv4/ip_forward
Une fois que toutes les rêgles sont activées, j'active le forwarding :
echo 1 > /proc/sys/net/ipv4/ip_forward
Pour faciliter la maintenance et la lisibilité d'un script iptables, je recommande vivement l'usage de variables, voici un exemple de script :
#!/bin/bash
IPT="/sbin/iptables"
TABLE="filter nat mangle"
FILTER_CHAINS="INPUT FORWARD OUTPUT"
NAT_CHAINS="PREROUTING POSTROUTING OUTPUT"
ALL_CHAINS="PREROUTING INPUT FORWARD OUTPUT POSTROUTING"
LAN_INT="eth0"
WAN_INT="ppp0"
LAN_NET="192.168.10.0/24"
ANYWHERE="0.0.0.0/0"
case "1ドル"
in start)
# On efface toute regle existante.
clear
echo
echo Effacement des regles existantes
echo
$IPT -F
$IPT -F INPUT
$IPT -F FORWARD
$IPT -F OUTPUT
# Table NAT
$IPT -t nat -F
$IPT -t nat -F PREROUTING
$IPT -t nat -F POSTROUTING
$IPT -t nat -F OUTPUT
# Table Mangle
$IPT -t mangle -F
$IPT -t mangle -F PREROUTING
$IPT -t mangle -F INPUT
$IPT -t mangle -F FORWARD
$IPT -t mangle -F OUTPUT
$IPT -t mangle -F POSTROUTING
echo Mise a zero des compteurs
echo
# Mise a zero des compteurs
$IPT -t filter -Z
$IPT -t nat -Z
$IPT -t mangle -Z
sleep 1
echo Flushage de toute chaine
echo
# Flush toute chaine creee
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
sleep 1
echo Activation de la politique par defaut de chaque chaine
echo
# Comportement par defaut, refuse tous les paquets
#
#-------------------------------------------------
for filter_chains in $FILTER_CHAINS
do
$IPT -t filter -P $filter_chains DROP
done
for nat_chains in $NAT_CHAINS
do
$IPT -t nat -P $nat_chains ACCEPT
done
for all_chains in $ALL_CHAINS
do
$IPT -t mangle -P $all_chains ACCEPT
done
#-------------------------------------------------
# On désactive le forwarding pendant la config...et on masque le traffic interne
echo 0 > /proc/sys/net/ipv4/ip_forward
$IPT -t nat -A POSTROUTING -o $WAN_INT -j MASQUERADE
sleep 1
echo Mise en place des regles de filtrage
echo
# On accepte tout sur le localhost.
$IPT -A INPUT -p ALL -i lo -j ACCEPT
$IPT -A OUTPUT -p ALL -o lo -j ACCEPT
# On accepte tout le traffic en interne avec les utilisateurs.
$IPT -A INPUT -j ACCEPT -p ALL -i $LAN_INT -s $LAN_NET -d $ANYWHERE
$IPT -A OUTPUT -j ACCEPT -p ALL -o $LAN_INT -s $ANYWHERE -d $LAN_NET
# On accepte la retransmission de paquets entre interfaces avec le protocole TCP
# dans les deux sens, sauf pour l'etat NEW de l'exterieur vers l'interieur.
$IPT -A FORWARD -j ACCEPT -i $LAN_INT -o $WAN_INT -s $LAN_NET -d $ANYWHERE \
-p tcp -m state --state NEW,ESTABLISHED,RELATED
$IPT -A FORWARD -j ACCEPT -o $LAN_INT -i $WAN_INT -s $ANYWHERE \
-p tcp -m state --state ESTABLISHED,RELATED
# On accepte le protocole UDP dans les deux sens.
$IPT -A FORWARD -j ACCEPT -i $LAN_INT -o $WAN_INT -s $LAN_NET -d $ANYWHERE -p udp
$IPT -A FORWARD -j ACCEPT -o $LAN_INT -i $WAN_INT -s $ANYWHERE -d $LAN_NET -p udp
# On accepte les paquets provenant de connexion deja etablies.
$IPT -A INPUT -i $WAN_INT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -o $WAN_INT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
;;
esac
dabowl_75