Forum Linux.général [Résolu] Pourquoi les ports internes changent-ils?

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
2
oct.
2014

Bonjour à tous,

Je viens car je souhaiterai avoir quelques tout petits éclaircissements par rapport aux ports réseau.

En paramétrant mon firewall pour un serveur, j'ai voulu être très restrictif.

En autorisant des entrées/sorties de packets sur un port, le 80 par exemple pour mon DynDNS, j'ai rentré ces règles :

(DROP par defaut)

INPUT  -s ip_distante -d ip_local -p tcp --sport 80 --dport 80 -j ACCEPT
OUTPUT -s ip_local -d ip_distante -p tcp --sport 80 --dport 80 -j ACCEPT

Et bisarrement en loggant les DROPs pour comprendre pourquoi ca bloque :

IN=eth0 OUT= SRC=ip_distante DST=ip_local LEN=60 TOS=0x00 PREC=0x00 TTL=52 ID=35450 DF PROTO=TCP SPT=80 DPT=38109 WINDOW=65535 RES=0x00 ACK SYN URGP=0

Et la je remarque que le port interne a changé?!?

Le seul moyen de laisser passer les packets est de retirer le --dport pour INPUT et --sport pour OUTPUT.

Est-ce normal? Est-ce qu'il n'y a pas un risque que quelqu'un se connecte en 80 et passe en 21 par exemple pour un éventuel ftp non ouvert sur l'internet?

Je demande car j'ai vu quelque part qu'on pouvais depuis l'extérieur connaitre l'existante d'un port ouvert avec un nmap sur le port 80.

Voila merci d'avance pour les futurs explications.

  • # Oui

    Posté par  . Évalué à 7.

    Sans vouloir être méchant, un simple conseil, se lancer dans la config d'un firewall avec des connaissances aussi light en TCP/IP… je te conseille de te documenter un peu plus sur le sujet au risque de faire des grosses bétises et te retrouver avec une passoir en voulant faire une ligne Maginot. Je vais tout de même essayer de répondre.

    Alors, oui le port côté client est choisi de manière aléatoire sauf cas TRES spécifique (que je n'ai jamais vu en pratique dans des softs "sérieux" même si les lib le permettent).

    Niveau sécurité, il n'y a pas de problèmes: les ports serveurs sont figés. Il est souvent suffisant de vérifier ce numéro pour faire un filtrage basique. Après si tu veux être sûre que ton client n'est pas un petit malin qui a configurer sont VPN sur le port 443 (le port de https)… Il va falloir sortir un autre genre d'artillerie à base d'analyse de signature de paquets, mais je doute que ce soit ton but.

    Après tu parle de nmap qui verrait des ports ouvert de l'exterieur: on parle ici de port ouvert sur ton routeur/firwall/boite à camenbert connectée directement à internet (après ce port peut avoir été forwardé, mais c'est encore une autre histoire)

    Bon courage et bonne lecture.

    • [^] # Re: Oui

      Posté par  (site web personnel) . Évalué à 3.

      Les ports < 1024 sont réservés à "root".

      Les clients peuvent utiliser les ports entre 1024 et 65535 si dispos.

      Système - Réseau - Sécurité Open Source

    • [^] # Tuto réseau & iptables

      Posté par  (site web personnel) . Évalué à 3.

      je te conseille de te documenter un peu plus sur le sujet au risque de faire des grosses bétises et te retrouver avec une passoir en voulant faire une ligne Maginot

      Il y a quelques années, j'ai écrit un tuto avec les bases de TCP/IP : http://olivieraj.free.fr/fr/linux/information/firewall/fw-01.html

      Et la suite est un tuto sur iptables : http://olivieraj.free.fr/fr/linux/information/firewall/fw-03.html

      Cela devrait être une bonne base assez simple pour commencer.

      • [^] # Re: Tuto réseau & iptables

        Posté par  . Évalué à 1.

        MDR!!!! la coincidence!!

        J'étais justement sur ton site les deux derniers jours. Super en passant!

        J'ai lu pour le moment uniquement les 2-3 pages sur la sécurité mais je comptais bien tout lire :P

      • [^] # Re: Tuto réseau & iptables

        Posté par  (site web personnel) . Évalué à 2. Dernière modification le 04 octobre 2014 à 20:21.

        Bonjour Olivier,

        Je profite de ce fil pour insérer un grand MERCI hors sujet pour ce tuto. Une véritable petite bible pour le jeune que je fus, en 2003~4 et 5. Je sais d'où viennent ce que sont aujourd'hui mes habitudes d'usages.

    • [^] # Re: Oui

      Posté par  (site web personnel) . Évalué à 2.

      Alors, oui le port côté client est choisi de manière aléatoire sauf cas TRES spécifique (que je n'ai jamais vu en pratique dans des softs "sérieux" même si les lib le permettent).

      ntpd

  • # C'est normal

    Posté par  . Évalué à 2.

    Tu ne peux pas prévoir quel port tu vas utiliser en local pour établir une connexion vers un service ftp/www etc…

    Mais iptables peux suivre les connexions avec le module conntrack

    iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
    iptables -A INPUT -p tcp -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

    Ici tu accepte les connexion sur le port 80 en entrée et laisse passer le traffic relative à une connexion préalablement acceptée sur la deuxiéme régles.

    Allez tous vous faire spéculer.

  • # rep

    Posté par  . Évalué à -2. Dernière modification le 02 octobre 2014 à 18:49.

    Merci pour les réponses.

    Non je ne suis pas une bille en réseau mais j'ignorait ces notions de ports internes à l'ordinateurs n'ayant eu qu'à ce jour à configurer des firewalls simplistes.

    Pour info, mon fichier de config:

    #
    #*******************************************************************************************
    #                            Configuration du script FW serveur
    #
    # Ip locale
    IP_LOCAL="192.168.1.100"
    #
    # Réseau local
    RESEAU_LOCAL="192.168.1.0/24"
    #
    # Interface réseau autorisée
    INTERFACE="eth0"
    #
    # Port SSH
    PORT_SSH="22"
    #
    # Port traffic pour la passerelle internet via ssh
    PORT_PASSERELLE="80,443"
    #
    # Adresse DYNDNS
    DYNDNS="dyndns.org"
    #
    #
    #*******************************************************************************************
    
    
    # Suppression de toutes les chaînes pré-définies
    iptables -t filter -F
    iptables -t nat -F
    ip6tables -t filter -F
    
    # Suppression de toutes les chaînes utilisateur
    iptables -t filter -X
    iptables -t nat -X
    ip6tables -t filter -X
    
    # Politique de DROP par défaut
    iptables -t filter -P INPUT   DROP
    iptables -t filter -P OUTPUT  DROP
    iptables -t filter -P FORWARD DROP
    
    # Désactivation IPv6 (DROP)
    ip6tables -t filter -P INPUT   DROP
    ip6tables -t filter -P OUTPUT  DROP
    ip6tables -t filter -P FORWARD DROP
    
    # Déclaration des chaînes pour le log des DROPS
    iptables -N LOGGING_IN
    iptables -N LOGGING_OUT
    iptables -N LOGACCEPT
    
    
    # Pour le DEBUG
    #iptables -t filter -A INPUT -j LOGACCEPT
    #iptables -t filter -A OUTPUT -j LOGACCEPT
    
    # Anti-DDOS
    iptables -t filter -A INPUT -m state --state NEW -m recent --set
    iptables -t filter -A INPUT -m state --state NEW -m recent --update --seconds 30 --hitcount 10 -j LOGGING_OUT
    
    # DROP du multi-cast et UPnP
    iptables -t filter -A INPUT  -p all -d 224.0.0.1 -j DROP
    iptables -t filter -A OUTPUT -p all -d 224.0.0.1 -j DROP
    
    iptables -t filter -A INPUT  -p all -d 239.255.255.250 -j DROP
    iptables -t filter -A OUTPUT -p all -d 239.255.255.250 -j DROP
    
    # DROP des IPs bloquées dans hosts.deny (avec denyhosts)
    #---------------------------------------------------------------------
    # Récupération des IPs
    for x in `cat /etc/hosts.deny | grep -v ^# | cut -d ":" -f 2`; do
    echo "$x" >> blockip_iptables
    done
    #
    # Lecture des IPs et ajout des règles de bloquage
    if [ -f blockip_iptables ]
    then
            while read BLOCK_IP
            do
               iptables -t filter -A INPUT  -s $BLOCK_IP -j LOGGING_IN
               iptables -t filter -A OUTPUT -d $BLOCK_IP -j LOGGING_OUT
            done < blockip_iptables
    
            rm blockip_iptables
    fi
    #---------------------------------------------------------------------
    
    
    # Autorise le loopback
    iptables -t filter -A INPUT  -i lo -j ACCEPT
    iptables -t filter -A OUTPUT -o lo -j ACCEPT
    
    # Autorise toutes les connexions en réseau locale et conserve celles-déjà etablies
    # **** [[[[ A confirmer si ca fonctionne et si c'est sécuritaire ]]]] ****
    iptables -t filter -A INPUT  -i $INTERFACE -s $RESEAU_LOCAL -d $IP_LOCAL -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
    iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $RESEAU_LOCAL -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
    
    # Autorise les envois vers dyndns.org pour le DNS Dynamic
    iptables -t filter -A INPUT  -i $INTERFACE -s $DYNDNS -d $IP_LOCAL -p tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $DYNDNS -p tcp --dport 80 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
    
    # Autorise le DNS
    iptables -t filter -A INPUT  -i $INTERFACE -p udp --sport 53 -j ACCEPT
    iptables -t filter -A OUTPUT -o $INTERFACE -p udp --dport 53 -j ACCEPT
    
    # Autorise l'initialisation et la réception SSH
    # NEW : pour les deux car initialisation de l'exterieur comme de l'intérieur
    iptables -t filter -A INPUT  -i $INTERFACE -d $IP_LOCAL -p tcp --dport $PORT_SSH -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
    iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -p tcp --sport $PORT_SSH -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
    
    # VNC via SSH
    iptables -t filter -A INPUT  -i $INTERFACE -s $RESEAU_LOCAL -d $IP_LOCAL -p tcp --sport 5900 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
    iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $RESEAU_LOCAL -p tcp --dport 5900 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
    iptables -t filter -A INPUT  -i $INTERFACE -s $RESEAU_LOCAL -d $IP_LOCAL -p udp --sport 5900 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
    iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $RESEAU_LOCAL -p udp --dport 5900 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
    
    # Autorise le traffic pour la passerelle internet via ssh
    iptables -t filter -A INPUT  -i $INTERFACE -d $IP_LOCAL -p tcp -m multiport --sports $PORT_PASSERELLE -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -p tcp -m multiport --dports $PORT_PASSERELLE -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
    iptables -t filter -A INPUT  -i $INTERFACE -d $IP_LOCAL -p udp -m multiport --sports $PORT_PASSERELLE -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -p udp -m multiport --dports $PORT_PASSERELLE -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
    
    # Autorise tout ICMP sauf Redirection & divers
    iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 1 -j ACCEPT
    iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 1 -j ACCEPT
    iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 2 -j ACCEPT
    iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 2 -j ACCEPT
    iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 3 -j ACCEPT
    iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
    iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 4 -j ACCEPT
    iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT
    iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 11 -j ACCEPT
    iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
    iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 15 -j ACCEPT
    iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 15 -j ACCEPT
    iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 16 -j ACCEPT
    iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 16 -j ACCEPT
    iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 17 -j ACCEPT
    iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 17 -j ACCEPT
    iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 18 -j ACCEPT
    iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 18 -j ACCEPT
    
    # LOG DROP
    iptables -A INPUT  -j LOGGING_IN
    iptables -A OUTPUT -j LOGGING_OUT
    iptables -A LOGGING_IN  -j LOG --log-prefix "IPTABLES-DROPPED-IN: "  --log-level 4
    iptables -A LOGGING_OUT -j LOG --log-prefix "IPTABLES-DROPPED-OUT: " --log-level 4
    iptables -A LOGGING_IN  -j DROP
    iptables -A LOGGING_OUT -j DROP
    
    # Pour DEBUG
    #iptables -A LOGACCEPT -j LOG
    #iptables -A LOGACCEPT -j ACCEPT

    iptables-save > /etc/iptables/rules.v4
    ip6tables-save > /etc/iptables/rules.v6

    • [^] # Re: rep

      Posté par  . Évalué à 2.

      Yop,

      Vite fait ce que je pense de tes régles, le module state est obsoléte voir conntrack, pour le ddos un bon ids qui rajoute des cibles tarpit peux être bien plus intéressant et chiant pour les méchants, et je limiterai les logs, tu vas en être submergé et ça sera inutilisable " -m limit --limit 3/min --limit-burst 3 ".

      Allez tous vous faire spéculer.

  • # Salut

    Posté par  . Évalué à 3. Dernière modification le 02 octobre 2014 à 16:50.

    Je confirme pour l'usage d'un nombre aléatoire (généralement élevé…) pour le port client (ou sur le serveur également, par exemple pour le FTP passif), c'est comme ça pour la grande majorité des protocoles.

    Tu peux voir les connexions TCP actives à l'aide de la commande netstat -atupn, dont voici une ligne extraite de la sortie de cette commande chez moi maintenant, correspondant à la connexion initiée par mon navigateur vers linuxfr.org

    tcp 0 0 10.200.1.104:56216 88.191.250.176:443 ESTABLISHED 5128/x-www-browser

    retirer le --dport pour INPUT et --sport pour OUTPUT

    Tu as tout compris. Sauf que je dirais l'inverse. Dans le cas du paquet rejeté que tu donnes en exemple :

    IN=eth0 OUT= SRC=ip_distante DST=ip_local LEN=60 TOS=0x00 PREC=0x00 TTL=52 ID=35450 DF PROTO=TCP SPT=80 DPT=38109 WINDOW=65535 RES=0x00 ACK SYN URGP=0

    Ton paquet est rejeté par la règle sur la chaîne INPUT et c'est normal. (spt=80 et dpt=80 impossible)

    Dans le cas de DynDNS :

    Once your server application is installed, you will need to allow visitors to connect to your computer to view your website. Your computer may use a firewall to protect itself from intrusion, so you may need to make an exception for your webserver. For websites, the default port is 80, so you will need to open port 80

    Je pense que tu peux faire, sans le port source (celui de ton visiteur) mais celui de destination (celui de ton serveur que tu sais que c'est le 80) pour ce qui entre, l'inverse pour ce qui sort (les réponses que va faire ton serveur à tes clients)

    INPUT -d ip_local -p tcp --dport 80 -j ACCEPT
    OUTPUT -s ip_local -p tcp --sport 80 -j ACCEPT

    Tu n'as pas besoin de préciser d'adresse pour tes visiteurs à priori, ils peuvent avoir n'importe quelle adresse…

    EDIT: Les règles données par Elie sont mieux !
    ```

  • # rep

    Posté par  . Évalué à 1.

    Oui, j'ai lu que state était obselète mais qu'il appelait en réalité conntack et que si on n'avais pas besoin d'option spéciale de conntrack, on pouvait simplifier par state.

    Pour les logs, effectivement j'ai retiré la limit pour faire un DEBUG, le temps de résoudre mes problème de bloquage.

    Et concernant l'anti DDOS, oui il y a beaucoup mieux mais j'ai fait au plus simple. Pas grave si mon serveur est inccessible un certain temps, j'ai déjà d'autre attack SSH à régler déjà…

    • [^] # Re: rep

      Posté par  . Évalué à 2.

      Pour ssh ça devrais être simple à gérer, tu n'authorise que les identifications par clé plus par mot de passe (et jamais pour root!!!) et tu rajoute du port knocking, la packet knockd fait ça trés bien, la mise en place est extrèmement simple.

      Allez tous vous faire spéculer.

  • # rep

    Posté par  . Évalué à 1.

    Merci Marotte pour les améliorations. Je vais regarder ca de près.

    Dernière question :

    Les packets entrant est-ce qu'ils ont l'ip de ma box ou l'ip des sites webs?

    • [^] # Re: rep

      Posté par  . Évalué à 1.

      non c'est bon trouvé! :P

      • [^] # Re: rep

        Posté par  . Évalué à 2. Dernière modification le 02 octobre 2014 à 17:11.

        Oui j'espère, les paquets ont deux adresses IP ;)

        http://fr.wikipedia.org/wiki/IPv4#En-t.C3.AAte_IPv4

        • [^] # Re: rep

          Posté par  . Évalué à 1.

          je demandais pour l'ip source. J'ai eu un doute autorisant tout le traffic local puissant les trames internet passent par l'ip interne de la box… mais non, ca doit être une question de couche vu que le serveur voit bien les ip internet.

          Sinon, il n'y a plus qu'à faire un script de routine pour ajouter les nouvelles ip de host.deny.

          Et voila!

          #
          #*******************************************************************************************
          #                            Configuration du script FW serveur
          #
          # Ip locale
          IP_LOCAL="192.168.1.100"
          #
          # Réseau local
          RESEAU_LOCAL="192.168.1.0/24"
          #
          # Interface réseau autorisée
          INTERFACE="eth0"
          #
          # Port SSH
          PORT_SSH="22"
          #
          # Port traffic pour la passerelle internet via ssh
          PORT_PASSERELLE="80,443"
          #
          # Adresse DYNDNS
          DYNDNS="dyndns.org"
          #
          #
          #*******************************************************************************************
          
          
          # Suppression de toutes les chaînes pré-définies
          iptables -t filter -F
          iptables -t nat -F
          ip6tables -t filter -F
          
          # Suppression de toutes les chaînes utilisateur
          iptables -t filter -X
          iptables -t nat -X
          ip6tables -t filter -X
          
          # Politique de DROP par défaut
          iptables -t filter -P INPUT   DROP
          iptables -t filter -P OUTPUT  DROP
          iptables -t filter -P FORWARD DROP
          
          # Désactivation IPv6 (DROP)
          ip6tables -t filter -P INPUT   DROP
          ip6tables -t filter -P OUTPUT  DROP
          ip6tables -t filter -P FORWARD DROP
          
          # Déclaration des chaînes pour le log des DROPS
          iptables -N LOGGING_IN
          iptables -N LOGGING_OUT
          iptables -N LOGGING_DDOS
          iptables -N LOGGING_INVALID
          
          iptables -A INPUT -m conntrack --ctstate INVALID -j LOGGING_INVALID
          
          # Pour le debug
          #iptables -t filter -A INPUT -j ACCEPT
          #iptables -t filter -A OUTPUT -j ACCEPT
          
          # Anti-DDOS
          iptables -t filter -A INPUT -m conntrack --ctstate NEW -m recent --set
          iptables -t filter -A INPUT -m conntrack --ctstate NEW -m recent --update --seconds 30 --hitcount 10 -j LOGGING_DDOS
          
          # DROP du multi-cast et UPnP
          iptables -t filter -A INPUT  -d 224.0.0.1 -j DROP
          iptables -t filter -A OUTPUT -d 224.0.0.1 -j DROP
          
          iptables -t filter -A INPUT  -d 239.255.255.250 -j DROP
          iptables -t filter -A OUTPUT -d 239.255.255.250 -j DROP
          
          # DROP des IPs bloquées dans hosts.deny (avec denyhosts)
          #---------------------------------------------------------------------
          # Récupération des IPs
          for x in `cat /etc/hosts.deny | grep -v ^# | cut -d ":" -f 2`; do
          echo "$x" >> blockip_iptables
          done
          #
          # Lecture des IPs et ajout des règles de bloquage
          if [ -f blockip_iptables ]
          then
              while read BLOCK_IP
              do
                 iptables -t filter -A INPUT  -s $BLOCK_IP -j LOGGING_IN
                 iptables -t filter -A OUTPUT -d $BLOCK_IP -j LOGGING_OUT
              done < blockip_iptables
          
              rm blockip_iptables
          fi
          #---------------------------------------------------------------------
          
          # Autorise le loopback
          iptables -t filter -A INPUT  -i lo -j ACCEPT
          iptables -t filter -A OUTPUT -o lo -j ACCEPT
          
          # Autorise toutes les connexions sortantent en réseau locale
          iptables -t filter -A INPUT  -i $INTERFACE -d $IP_LOCAL -s $RESEAU_LOCAL -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
          iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $RESEAU_LOCAL -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
          
          # Autorise les envois vers dyndns.org pour le DNS Dynamic
          iptables -t filter -A INPUT  -i $INTERFACE -d $IP_LOCAL -s $DYNDNS -p tcp --sport 80 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
          iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $DYNDNS -p tcp --dport 80 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
          
          # Autorise le DNS
          iptables -t filter -A INPUT  -i $INTERFACE -d $IP_LOCAL -s $RESEAU_LOCAL -p udp --sport 53 -j ACCEPT
          iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $RESEAU_LOCAL -p udp --dport 53 -j ACCEPT
          
          # Autorise l'initialisation et la réception SSH
          # NEW : pour les deux car initialisation de l'exterieur comme de l'intérieur
          iptables -t filter -A INPUT  -i $INTERFACE -d $IP_LOCAL -p tcp --sport $PORT_SSH -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
          iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -p tcp --dport $PORT_SSH -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
          
          # APPEL VNC direct ou via SSH, sur le reseau local
          iptables -t filter -A INPUT  -i $INTERFACE -s $RESEAU_LOCAL -d $IP_LOCAL -p tcp --sport 5900 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
          iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $RESEAU_LOCAL -p tcp --dport 5900 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
          iptables -t filter -A INPUT  -i $INTERFACE -s $RESEAU_LOCAL -d $IP_LOCAL -p udp --sport 5900 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
          iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -d $RESEAU_LOCAL -p udp --dport 5900 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
          
          # Autorise le traffic pour la passerelle internet via ssh
          iptables -t filter -A INPUT  -i $INTERFACE -d $IP_LOCAL -p tcp -m multiport --sports $PORT_PASSERELLE -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
          iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -p tcp -m multiport --dports $PORT_PASSERELLE -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
          iptables -t filter -A INPUT  -i $INTERFACE -d $IP_LOCAL -p udp -m multiport --sports $PORT_PASSERELLE -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
          iptables -t filter -A OUTPUT -o $INTERFACE -s $IP_LOCAL -p udp -m multiport --dports $PORT_PASSERELLE -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
          
          # Autorise tout ICMP sauf Redirection & divers
          iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 1 -j ACCEPT
          iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 1 -j ACCEPT
          iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 2 -j ACCEPT
          iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 2 -j ACCEPT
          iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 3 -j ACCEPT
          iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 3 -j ACCEPT
          iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 4 -j ACCEPT
          iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT
          iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 11 -j ACCEPT
          iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT
          iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 15 -j ACCEPT
          iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 15 -j ACCEPT
          iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 16 -j ACCEPT
          iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 16 -j ACCEPT
          iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 17 -j ACCEPT
          iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 17 -j ACCEPT
          iptables -t filter -A INPUT  -p icmp -m icmp --icmp-type 18 -j ACCEPT
          iptables -t filter -A OUTPUT -p icmp -m icmp --icmp-type 18 -j ACCEPT
          
          # LOG DROP
          iptables -A INPUT  -j LOGGING_IN
          iptables -A OUTPUT -j LOGGING_OUT
          
          iptables -A LOGGING_IN      -j LOG --log-prefix "IPTABLES-DROPPED-IN: "      -m limit --limit 3/min --limit-burst 3 --log-level 4
          iptables -A LOGGING_OUT     -j LOG --log-prefix "IPTABLES-DROPPED-OUT: "     -m limit --limit 3/min --limit-burst 3 --log-level 4
          iptables -A LOGGING_DDOS    -j LOG --log-prefix "IPTABLES-DROPPED-DDOS: "    -m limit --limit 3/min --limit-burst 3 --log-level 4
          iptables -A LOGGING_INVALID -j LOG --log-prefix "IPTABLES-DROPPED-INVALID: " -m limit --limit 3/min --limit-burst 3 --log-level 4
          
          iptables -A LOGGING_IN      -j DROP
          iptables -A LOGGING_OUT     -j DROP
          iptables -A LOGGING_DDOS    -j DROP
          iptables -A LOGGING_INVALID -j DROP
          
          # Sauvegarde
          iptables-save > /etc/iptables/rules.v4
          ip6tables-save > /etc/iptables/rules.v6

          merci à tous

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.