Script IPTABLES

slisko -  
 slisko -
Bonjour,

bon déja je dois commencer par avouer que je suis un gros gros noob en la matière!

je voudrais sécuriser ma machine avec IPTABLES, donc je fais un script pour ça, est ce que vous pourriez m'aider a corriger les erreurs et a améliorer mon script?

donc il s'agit d'une machine d'un lan derrière une freebox.

sur cette station il y a un serveur FTP, APACHE, TOMCAT, SSH.

donc ce que j'ai commencé à faire:

#!/bin/sh
Iptables –I INPUT –p tcp --dport 80 –j ACCEPT
Iptables –I INPUT –p tcp --dport 8080 –j ACCEPT
Iptables –I INPUT –p tcp --dport 20:21 –j ACCEPT
Iptables –I INPUT –p tcp --dport 22 –j ACCEPT

Iptables –I OUTPUT –p tcp --dport 80 –j ACCEPT
Iptables –I OUTPUT –p tcp --dport 5900 –j ACCEPT

iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT

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

voila alors j'hesite sur un point, le traffic sortant, j'ai mis le défaut sur DROP mais du coup je vais devoir autoriser toute mes applis en sortie genre amsn skype les clients ftp, le ports netbios etc...

est-ce que si je place ça sur ACCEPT en défaut je cours un gros risque?

j'ai par défaut accepté tout le traffic sur mon lan puisque c'est une zone de confiance.

voila j'attends vos avis et corrections.

Merci pour votre aide
Configuration: Debian
Firefox 3.0.4

8 réponses

  1. slisko
     
    je me permets de faire une petite mise à jour.

    en fait j'ai mis en place ces règles là, finallement j'ai opter pour un libre traffic des paquets sortants.

    j'ai donc lancé mon script, fait un iptables -L, j'ai bien règles que j'ai mis en place.

    j'ai fait un iptables-save, et j'ai ajouté IPTABLES en default au rc.

    qd je démarre, je lance un iptables -L, j'ai bien la bonne configuration de sauvée, mais par contre impossible de me connecter à distance sur les ports filtré, genre ssh ftp etc...

    quelqu'un saurait me dire pourquoi?

    merci,
    0
  2. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Depuis chez toi ou depuis ailleurs vers chez toi?
    0
    1. slisko
       
      ah merci!

      je commençais à desespérer !

      alors en fait de l'exterieur vers chez moi impossible de se connecter !

      alors j'ai fais ce script là:

      #!/bin/sh


      iptables -F
      iptables -t nat -F
      iptables -X
      iptables -t nat -X


      iptables -A INPUT -i lo -j ACCEPT
      iptables -A OUTPUT -o lo -j ACCEPT


      iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
      iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT


      iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT


      iptables -A INPUT -m state --state NEW -p tcp --dport 20:21 -j ACCEPT

      iptables -A INPUT -m state --state NEW -p tcp --dport 2244 -j ACCEPT

      iptables -A INPUT -m state --state NEW -p tcp --dport 8080 -j ACCEPT

      iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT

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

      j'ai executé le script, ensuite j'ai fais iptables -L et j'obtiens ça:

      Chain INPUT (policy DROP)
      target prot opt source destination
      fail2ban-SSH tcp -- anywhere anywhere tcp dpt:22
      ACCEPT all -- anywhere anywhere
      ACCEPT all -- 192.168.0.0/24 anywhere
      ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
      ACCEPT tcp -- anywhere anywhere state NEW tcp dpts:ftp-data:ftp
      ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:22
      ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http-alt
      ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http

      Chain FORWARD (policy DROP)
      target prot opt source destination

      Chain OUTPUT (policy ACCEPT)
      target prot opt source destination
      ACCEPT all -- anywhere anywhere
      ACCEPT all -- anywhere 192.168.0.0/24

      Chain fail2ban-SSH (1 references)
      target prot opt source destination
      RETURN all -- anywhere anywhere

      ensuite je lance iptables mais le script d'init me dit de d'abord creer des regles puis les sauvegarder, donc ben les règles c'etait fait donc j'ai fait iptables-save, j'ai ajouté iptables au rc au démarrage.

      je reboot je relance un iptables -L et j'ai bien mes règles! par contre de l'exterieur impossible d'attaquer ma machine en ssh en ftp ou en apache...

      et la je sèche completement! qu'est ce que je peux faire?

      merci de ton aide
      0
  3. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    je reboot je relance un iptables -L et j'ai bien mes règles! par contre de l'exterieur impossible d'attaquer ma machine en ssh en ftp ou en apache...

    Et dis moi entre ta machine et l'extérieur, ya un modem? Il est en mode routeur?
    0
  4. slisko
     
    merci pour ta réponse,

    ben oui en fait si tu veux, le pc est dans un LAN derrière une freebox en mode routeur.

    tout marchait tres bien, je pouvais me connecter a distance depuis n'importe quelle station distante.

    mais simplement j'ai constaté des tentatives de brute force dans les log, sur les accès SSH.

    donc je me suis dis que je devais être plus restrictif et plus sécuriser ma machine en utilisant SSH+FAIL2BAN.

    avant ça, rien n'était filtré.

    et maintenant le filtrage m'empeche de passer, mais je ne sais pas pourquoi.

    peut etre que les regles ne sont pas dans le bon ordre ou pas la bonne syntaxe, je n'ai fait aucune modif de peur d'empirer la situation, j'ai toujours les meme règles que dans le post au dessus.
    0
    1. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
       
      Faudrait quand même que tu tente de faire toc toc sur ta machine pour voir.
      Faudrait que tu te procures nmap et que tu fasses un petit test de l'extérieur (ou même de chez toi).

      nmap -sS ton_addresse
      -
      Le gâteau est un mensonge!
      0
    2. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
       
      Mieux, si tu veux pas te prendre la tête, va là https://www.grc.com/x/ne.dll?bh0bkyd2 clique sur proceed et clique sur all service port.
      Et raconte moi la couleur des jolis carrés qu'il te dessine :-)
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. slisko
     
    ok merci pour l'info,

    actuellement je suis sur mon lieu de travail donc je n'ai pas accès a ma station, meme a distance du coup ^^

    je ferai le test ce soir, je ne sais pas a quoi correspond ton lien, je n'y ai pas accès a travers mon proxy.

    si c'est un scanner de port, j'ai deja fait un NMAP de mon IP publique et tout les ports sont flagués comme filtrés.
    0
    1. slisko
       
      alors j'ai suivi ton lien donc en fait oui c'est bien un scanner de ports, le résultat:

      GRC Port Authority Report created on UTC: 2008-11-20 at 17:24:25

      Results from scan of ports: 0-1055

      0 Ports Open
      2 Ports Closed
      1054 Ports Stealth
      ---------------------
      1056 Ports Tested

      NO PORTS were found to be OPEN.

      Ports found to be CLOSED were: 21, 80

      Other than what is listed above, all ports are STEALTH.

      TruStealth: FAILED - NOT all tested ports were STEALTH,
      - NO unsolicited packets were received,
      - A PING REPLY (ICMP Echo) WAS RECEIVED

      donc tout verts sauf 2 bleus :)

      alors pourquoi les ports ou j'ai specifié ACCEPT et sur les lequels il y a des services qui tournent sont ils fermés...
      0
  7. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Ports found to be CLOSED were: 21, 80

    Est ce que ton routeur redirige bien vers le bon ordinateur au niveau du nat?
    Et, certes c'est con mais on ne sait jamais, apache et ton serveur ftp sont bien démarrés?
    0
  8. slisko
     
    oui le nat est bien configuré, les services sont bien lancé je peux me connecter en local sur ma machine.

    tout fonctionnait très bien avant que j'ajoute IPTABLES.

    je vois que toi aussi ça te laisse perplexe, je suis sur que c'est pas grand chose qui empeche que ça marche, je lis de la doc sur IPTABLES depuis hier mais je n'ai pas encore trouvé mon erreur.
    0
  9. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    C'est quand même étrange.
    Port fermé = ports accessible mais pas de service à l'écoute sur ce port.
    Si tu viens de faire ça depuis chez toi, soit ta box ne redirige pas bien les ports, soit tu n'as pas de service à l'écoute. Mais là ce n'est pas un problème lié à tes règles de firewall (pour simuler un port fermé avec iptables on utilise REJECT au lieu de drop, et tu n'as aucune règle comme ça.)

    D'ailleurs commence tes tests avec apache, le protocole ftp est un peu chiant entre le mode actif et passif....

    Ah non attends chuis bête!
    Je crois que le soucis est là:
    iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT 

    Quand un paquet vient de l'extérieur (ton ip publique) pour se connecter à un port il faut que tu lui répondes. Or cette règle n'est pas suffisante.
    Si 80.2.3.4 se connecte chez toi, la réponse sera filtrée.
    Met ton OUTPUT en ACCEPT par défaut pour voir.
    0
    1. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
       
      AH ben non il est en accept :-/
      0
    2. slisko
       
      alors en fait par rapport au 1er post la haut il y a eu des changements comme expliqué un peu plus bas.

      Finallement la default policy en output est ACCEPT

      Chain OUTPUT (policy ACCEPT)
      target prot opt source destination
      ACCEPT all -- anywhere anywhere
      ACCEPT all -- anywhere 192.168.0.0/24

      si je ne dis pas de betises:

      iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
      iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT

      ça ne s'applique qu'au reseau local.

      et dans le cas ou 80.1.2.3 veut se connecter par exemple en SSH.

      pour moi les règles qui s'appliquent sont:

      Iptables –I INPUT –p tcp --dport 22 –j ACCEPT

      puis

      iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

      puisque la connexion sera établie.

      et comme de toute façon j'ai bien

      iptables -P OUTPUT ACCEPT

      normalement la requête ne devrait pas être filtrée en sortie.

      donc la normalement ça réponds bien à ta question? c'est bien ce que tu voulais savoir?

      merci en tout cas pour ton aide c'est tres gentil de ta part.
      0