• # installer un pare feu

    Posté par . En réponse au message debian 3.1: installer un pare feu. Évalué à 2.

    Je n'ai pas la prétention d'être un expert ern sécurité mais néanmoins, je me suis déjà intéressé au sujet, je vais donc te passer le script que j'emploie.

    En premier lieu, un conseil : ton script, lance-le via les directives post-down et pre-up dans ton fichier /etc/network/interfaces. Cela te permettera d'avoir un firewall fonctionnel avant que n'importe quel service soit lancé.

    Ensuite voici mon script (un peut plus long)

    #!/bin/sh

    # Début configuration
    ICMP_PER_SEC=5 # Nombre max d'icmp par seconde
    SCAN_PER_SEC=5 # Nombre max de scan de port par seconde
    WAN_INTERFACE="eth0" # Interace(s) pour le wan (wired area network) : zone externe
    LAN_INTERFACE="eth1" # Interface(s) pour le lan (Local area network) : zone interne
    LOCAL_NETWORK="192.168.8.0/255.255.255.0" # Adresses du reseau local
    LOCAL_BROADCAST="192.168.8.255" # Adresse locale de broadcast
    LOG_PREFIX='[iptables DROP]' # Tag à ajouté lors du log de paquet droppé
    # Fin configuration

    init()
    {
    if [ `whoami` != "root" ]
    then
    echo "Vous devez être root pour éxecuter ce script"
    exit 1
    fi
    # D'abord charger les modules nécessaires : dépend du kernel
    # Réinitialisation
    iptables -F # Supprime les chaînes de la table filter (INPUT, FORWARD et OUTPUT)
    iptables -X # Supprime les chaînes personnelles de la table filter
    iptables -t nat -F # Supprime les chaînes de la table nat (PREROUTING, OUTPUT et POSTROUTING)
    iptables -t nat -X # Supprime les chaînes personnelles de la table nat
    }

    start()
    {
    init
    # Politique par défaut
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP

    # Définition du comportement géneral de netfilter
    echo 1 > /proc/sys/net/ipv4/ip_forward # Active le forwarding des ip
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # Refuse l'icmp broadcasting
    echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects # Refuse les redirections (protection contre les attaques mim) : changement de route
    echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses # Ignorer les paquets icmp invalide
    echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route # Refuse le routage par la source
    echo 1 > /proc/sys/net/ipv4/conf/all/log_martians # Log des martiens activé
    echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter # Activation du filtre rp (protection contre ip spoofing)
    echo 1 > /proc/sys/net/ipv4/tcp_syncookies # Protection contre les syn flood
    echo 0 > /proc/sys/net/ipv4/tcp_timestamps # Suppression des timestamps

    # Evite quelques DOS avec des limites temporelles
    echo 60 > /proc/sys/net/ipv4/tcp_fin_timeout
    echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
    echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
    echo 0 > /proc/sys/net/ipv4/tcp_sack
    echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog

    # Gestion de la chaine INPUT
    iptables -A INPUT -m state --state INVALID -j DROP
    iptables -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT # Autoriser la communicatio sur lo
    iptables -A INPUT -i $WAN_INTERFACE -s $LOCAL_NETWORK -j DROP # Refuse tous paquets depuis l'extérieur prétendant être du réseau interne.
    iptables -A INPUT -p icmp -d $LOCAL_BROADCAST -j DROP # Refuse le ping sur une adresse de broadcast
    iptables -A INPUT -i $WAN_INTERFACE -p icmp --icmp-type echo-request -j DROP # Refuse les pings de l'extérieur
    iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit $ICMP_PER_SEC/s -j ACCEPT # Nombre de ping accepté par sec.
    iptables -A INPUT -s $LOCAL_NETWORK -j ACCEPT # Accepte les paquets du reseau local
    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Autoriser le trafic local

    # Gestion de la chaine FORWARD
    iptables -A FORWARD -m state --state INVALID -j DROP
    iptables -A FORWARD -p icmp --icmp-type echo-request -o $LAN_INTERFACE -j DROP # Refuser les pings externes vers le reseau local
    iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit $SCAN_PER_SEC/s -j ACCEPT # Protection contre les scans de ports
    iptables -A FORWARD -s $LOCAL_NETWORK -j ACCEPT # Autoriser le trafic local
    iptables -A FORWARD -d $LOCAL_NETWORK -m state --state RELATED,ESTABLISHED -j ACCEPT

    # Activation du routage / masquerade
    iptables -t nat -A POSTROUTING -o $WAN_INTERFACE -j MASQUERADE

    iptables -A OUTPUT -m state --state INVALID -j DROP
    # Autorise l'ouverture de connexion vers l'extérieur
    iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

    # Loggé tout ce qui est droppé
    iptables -A INPUT -j LOG --log-prefix "$LOG_PREFIX"
    iptables -A OUTPUT -j LOG --log-prefix "$LOG_PREFIX"
    iptables -A FORWARD -j LOG --log-prefix "$LOG_PREFIX"
    }

    stop()
    {
    init
    # Politique par défaut : tout accepter ! Dangereux !
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    # Activation du routage / masquerade
    iptables -t nat -A POSTROUTING -o $WAN_INTERFACE -j MASQUERADE
    }


    case 1ドル in
    start)
    start
    ;;
    stop)
    stop
    ;;
    restart)
    stop
    start
    ;;
    *)
    echo "Usage : 0ドル {start | stop | restart}"
    exit 1
    ;;
    esac

    exit 0


    Voila déjà une bonne base de travail.