• [^] # Trou de sécurité

    Posté par . En réponse au message firewall iptables. Évalué à 1.

    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 :

    #!/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