[Debian Squeeze] Lenteur lié à iptables

Bonsoir,

Je viens de prendre un serveur dédié chez OVH. Sur ce serveur j’ai installé Debian Squeeze (/, /usr, /var, /var/log, swap, pert perso, /tmp, /home le tout en ext3, avec / en primaire et les autres en logique).

Une fois l’OS prêt, j’ai créé un iptables et installé apache2. L’affichage de la page “It works!” prend environ 15 secondes avec iptables activé et est instantanné sans iptables.

Ma configuration d’iptables (/etc/init.d/iptables) est peut être buggé, mais je ne vois pas ou. Et si cela ne vient pas de ce module, j’avoue que je suis perdu. Je fais donc appel à vos conseils pour avoir une piste/orientation.

Merci d’avance.

#!/bin/sh

### BEGIN INIT INFO
# Provides:          iptables
# Required-Start:    $remote_fs
# Required-Stop:     $remote_fs
# Should-Start:      $network $syslog
# Should-Stop:       $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start and stop iptables
# Description:       iptables est le firewall de ce serveur,
#        il permet de bloquer les acces aux services non autorises
### END INIT INFO

IP_PUB='@IP_PUB'
IP_LOOP='127.0.0.1'

ETHER_PUB='eth0'

PING_OVH='@OVH1'
IP_OVH='@OVH2'
IP_DNS='@DNS'

start()
{
        iptables -F
        iptables -X

        iptables -P INPUT DROP
        iptables -P OUTPUT ACCEPT
        iptables -P FORWARD DROP

        iptables -A INPUT -i lo -j ACCEPT -m comment --comment "Autoriser tout le trafic entrant sur la loopback"

        iptables -A INPUT -i $ETHER_PUB -d $IP_PUB -p tcp --dport 2200 -j ACCEPT -m state --state NEW,ESTABLISHED -m comment --comment "Autoriser les connexions SSH sur l'interface eth0"

        iptables -A INPUT -i $ETHER_PUB -d $IP_PUB -p tcp --dport 80 -j ACCEPT -m state --state NEW,ESTABLISHED -m comment --comment "Autoriser les connexion HTTP sur l'interface public"

        iptables -A INPUT -i $ETHER_PUB -d $IP_PUB -p icmp --icmp-type echo-reply -j ACCEPT -m comment --comment "Autoriser les ping reply"

        iptables -A INPUT -i $ETHER_PUB -d $IP_PUB -s $IP_OVH -p icmp --icmp-type echo-request -j ACCEPT -m comment --comment "Autorise OVH a nous pinger"
        iptables -A INPUT -i $ETHER_PUB -d $IP_PUB -s $PING_OVH -p icmp --icmp-type echo-request -j ACCEPT -m comment --comment "Autorise OVH a nous pinger (ping.ovh.net)"

        iptables -A INPUT -i $ETHER_PUB -d $IP_PUB -s $IP_DNS -p udp --sport 53 -j ACCEPT -m state --state ESTABLISHED -m comment --comment "Autoriser les reponses aux requetes DNS"
        iptables -A INPUT -i $ETHER_PUB -d $IP_PUB -p tcp --sport 80 -j ACCEPT -m state --state ESTABLISHED -m comment --comment "Autoriser les reponses aux connexions HTTP"
}

stop()
{
        iptables -F
        iptables -X

        iptables -P INPUT ACCEPT
        iptables -P OUTPUT ACCEPT
        iptables -P FORWARD ACCEPT
}

restart()
{
        stop
        start
}

status()
{
        iptables --line-numbers -v --list
}



case "$1" in
start)
        echo ""
        echo "Creation des regles de securitees"

        start

        echo "OK"
        echo ""
        ;;

stop)
        echo ""
        echo "Suppression des regles de securitees"

        stop

        echo "OK"
        echo ""
        ;;

restart)
        echo ""
        echo "Restarting firewall : "
        restart
        echo "iptables"
        ;;

status)
        echo ""
        echo "Liste des regles iptables crees (toutes les tables): "

        status

        echo "OK"
        echo ""
        ;;

*)
        echo "utilisation du service /etc/init.d/iptables : start|stop|restart|status"
        ;;

esac

exit 0

Je me demande s’il s’agit pas d’un problème de résolution DNS?

Ta essayé de remplacer :

IP_PUB=’@IP_PUB

par

IP_PUB=“213.186.33.102” ;<<< il faut mettre l’adresse ip de ton serveur à la place de cette adresse ip

idem pour

PING_OVH=’@OVH1
IP_OVH=’@OVH2
IP_DNS=’@DNS

ou il faut indiquer aussi les adresses ip (en dur) corespondantes :violin:

Ça ralentirait à l’éxécution du script pas à la connexion. C’est vraiment curieux, tu as fait un tcpdump pour voir où ça coince exactement?

Ça peut ralentir les connexions au serveur web si ce dernier fait une requête DNS sur le reverse de l’adresse IP source des connexions.

Accessoirement je trouve que ce n’est pas une approche très saine d’autoriser toutes les requêtes sortantes et filtrer les réponses entrantes. Mieux vaudrait filtrer les requêtes et autoriser toutes les réponses.