Règles Iptables

Salut,

Je viens de monter un petit serveur @home, il doit pouvoir aller chercher quelques sauvegardes sur mon PC @home, ainsi que sur 2 serveurs distants. Le tout via SSH. Il n’y a que le service SSH ainsi que postfix d’installés dessus (et plus tard rsync) mais pas de service web, ni autre chose. Le serveur est derrière une livebox.

Je viens d’installer le serveur, j’ai désactivé le compte root, et changer le port du routeur pour utiliser 23000. Le même que mes serveurs distants (à savoir pour la suite)

J’ai tenté de mettre des règles iptables en lisant ce sujet : isalo.org/wiki.debian-fr/ind … Ressources , du coup, je modifie le script :

TCP_SERVICES="23000" REMOTE_TCP_SERVICES="23000"

Si j’ai bien compris, cela permet d’activer le port 23000 en entrée et sortie.

Si je mets simplement 22 (je souhaitais tester, je tiens à préciser que je me suis permis de faire ce test car j’ai un accès physique au serveur) :
Impossible d’aller sur un serveur distant depuis le serveur @home.
Impossible d’entrer sur le serveur @home via mon PC @home.

Maintenant je change pour 23000 :
Possible d’aller sur un serveur distant depuis le serveur @home.

Mais, impossible d’entrer sur le serveur @home via mon PC @home

Lorsque j’effectue un :

J’obtiens :

[code]Firewall status:Chain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT all – anywhere anywhere
2 ACCEPT all – anywhere anywhere state RELATED,ESTABLISHED
3 LOG icmp – anywhere anywhere LOG level warning
4 DROP icmp – anywhere anywhere
5 ACCEPT tcp – anywhere anywhere tcp dpt:23000
6 LOG all – anywhere anywhere LOG level warning

Chain FORWARD (policy DROP)
num target prot opt source destination

Chain OUTPUT (policy DROP)
num target prot opt source destination
1 ACCEPT tcp – anywhere anywhere tcp dpt:23000[/code]

Mais voilà, je suis un peu perdu, je ne sais pas trop d’où ca vient, j’ai lu différent sujet ici, dont ceux se rapportant au wiki, mais je n’arrive pas trop à savoir d’où vient le problème :unamused: peut être que j’ai manqué d’activer certains ports :confused:

Merci à vous si vous avez une idée !

Donne nous plutôt le résultat de [mono]iptables-save[/mono] qui sera beaucoup plus clair et complet que [mono]iptables -L[/mono].

Mais à vue de nez il te manque au minimum la règle de bouclage et celle pour les connexions existantes dans ta chaîne [mono]OUTPUT[/mono].

-A OUTPUT -i lo -j ACCEPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Sans ça, quand un client tente de se connecter sur ton port 22000 le paquet rentre bien mais la réponse de ton serveur ne passe jamais le firewall car le port client n’est pas le 22000.

Salut,
Voici le résultat de [mono]iptables-save[/mono]

[code]# Generated by iptables-save v1.4.14 on Mon Feb 10 14:20:59 2014
*raw
:PREROUTING ACCEPT [205:59354]
:OUTPUT ACCEPT [68:37928]
COMMIT

Completed on Mon Feb 10 14:20:59 2014

Generated by iptables-save v1.4.14 on Mon Feb 10 14:20:59 2014

*mangle
:PREROUTING ACCEPT [205:59354]
:INPUT ACCEPT [67:5384]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [68:37928]
:POSTROUTING ACCEPT [0:0]
COMMIT

Completed on Mon Feb 10 14:20:59 2014

Generated by iptables-save v1.4.14 on Mon Feb 10 14:20:59 2014

*nat
:PREROUTING ACCEPT [166:57110]
:INPUT ACCEPT [1:60]
:OUTPUT ACCEPT [3:228]
:POSTROUTING ACCEPT [0:0]
COMMIT

Completed on Mon Feb 10 14:20:59 2014

Generated by iptables-save v1.4.14 on Mon Feb 10 14:20:59 2014

*filter
:INPUT DROP [55:3976]
:FORWARD DROP [0:0]
:OUTPUT DROP [67:37796]
:fail2ban-ssh - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j LOG
-A INPUT -p icmp -j DROP
-A INPUT -p tcp -m tcp --dport 23000 -j ACCEPT
-A INPUT -j LOG
-A OUTPUT -p tcp -m tcp --dport 23000 -j ACCEPT
COMMIT

Completed on Mon Feb 10 14:20:59 2014[/code]

Du coup à quel moment dois-je modifier le script pour ajouter ces 2 règles ? (dois-je ajouter une boucle dans la section “# Services à autoriser en sortie” du script)
Est-ce qu’il faut l’appliquer pour chaque service ?

Merci !

Tu n’as pas une histoire de redirection de ports sur ta MachinBox ?

Je viens de vérifier et non aucune redirection de ports!

D’ailleurs tout fonctionne quand je coupe le parefeu, donc je pense que la Box ne pose pas de problème

Ces règles n’étant nécessaires que si on autorise pas tout en sortie, vu comment est fait le script, il me semble judicieux de le mettre dans la condition, donc :

	$IPTABLES -t filter -A INPUT -p icmp -j DROP
 
# Sortie autorisée, si aucun port autorisé en sortie n'est défini
++# Sinon, on autorise le loopback et le connexions déjà établies
        if [ -z "$REMOTE_TCP_SERVICES"] && [ -z "$REMOTE_UDP_SERVICES" ]; then
            $IPTABLES -t filter -P OUTPUT ACCEPT
++        else
++            $IPTABLES -t filter -A OUTPUT -o lo -j ACCEPT
++            $IPTABLES -t filter -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
        fi
 
# Services à autoriser en entrée

J’ai modifié la page wiki, du coup.

Ca fonctionne nikel!

Merci à tous pour vos réponses :038

Grâce à quoi, la modif de Kna :question:

Oui tout à fait, grâce à cette modification dans le script tout fonctionne ! je ne suis plus bloqué, et les règles sont bien établies :007

Merci, il était bon de le préciser pour les futurs lecteurs.