• [^] # Re: Commencer par le début

    Posté par . En réponse au message IPtables -configuration. Évalué à 4.

    Les flags

    Concernant les flags TCP, une connection TCP/IP "normale" se déroule ainsi:

    1. client --- SYN ---> serveur
    2. serveur --- SYN,ACK ---> client
    3. client --- ACK ---> serveur

    C'est ce qu'on appele la Three Way Handshake.

    Ensuite le client qui souhaite mettre fin à la connection utilisera un flag FIN.

    Ensuite ce qu'il faut savoir c'est que:

    • Les autres flags peuvent également être utilisés mais de façon plus marginale.
    • Chaque OS traite les paquets "invalides" à sa façon.

    Le truc de base quand on écrit un scanner de port, c'est d'envoyer un paquet avec le flag SYN placé et de voir si:
    * on se prend un SYN/ACK: le port est ouvert.
    * on se prend un FIN ou RST : le port est fermé.
    * on se prend rien : le port est filtré, sur un linux à coup de -j DROP (le -j REJECT aurait pour conséquence de répondre "non" et renverrai donc le port comme fermé).

    L'astuce ici, c'est que des scanneur de ports comme nmap s'appuie justement sur les spécificités d'implémentation de la pile TCP/IP pour chaque OS pour découvrir justement quel OS tourne sur la machine (c'est ce qu'on appelle de l'OS Fingerprinting).

    Tes règles interdisant des paquets avec certains flags visent vraisemblablement à empêcher ce fingerprinting.

    Les bonnes pratiques

    J'ai jeté un oeil rapide à ton jeu de règle, et globalement, tu l'as un peu "écris à l'envers": en effet, tu mixes les règles permettant le traffic (-j ACCEPT) et celle l'interdisant (-j DROP) pour finir par une règle "catchall" de log (-J LOG).
    Le hic avec cette démarche, c'est que si un paquet est droppé par une règle que tu as mis en place, tu ne le verras pas dans ton log ...

    Généralement, on fait plutôt

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

    le -P permet de préciser la "politique par défaut", celle qui est appliqué si aucune des règles n'a matché ton paquet.

    Ensuite, tu autorises chacun des services qui t'intéresse à coup de

    iptables -A [..] -j ACCEPT

    Enfin, tout à la fin, tu mets ta règle de log

    iptables -A INPUT LOG

    Comme ça, tout les paquets qui ne sont pas explicitement autorisés seront entraineront une ligne de log avant d'être droppés.

    Note qu'il est plutôt rare pour un poste de travail de filtrer le "OUTPUT".
    On fait plutôt ça sur les serveurs pour éviter la prise de contrôle par un pirate qui se servirait d'un shellcode avec "connect back" (en gros, le serveur va se connecter à une machine détenue par le pirate).

    Ultime conseil

    As tu bien vérifié que ton routeur/ta box internet/ton modem/ton FAI autorisait par défaut le protocole torrent ?
    Pour t'en assurer, tu dégages toutes tes règles iptables et tu testes. Si avec un iptables vide et les policy à "ACCEPT" ton trafic ne passe toujours pas, il faut plutôt regarder du côté de ta box internet ...