Raspberry pi avec le firewall iptables

Fermé
jackyc_french - 18 févr. 2021 à 18:13
 jackyc_french - 3 mars 2021 à 09:26
Bonjour,
Cela ne fait pas très longtemps que je possède mon Rasberry pi 4, et je ne trouve aucun tuto digne de ce nom pour faire marcher iptables.
Avez vous une idée s'il vous plait? :)
Merci d'avance et à bientôt.

10 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 21 févr. 2021 à 01:30
Bonjour,

Tu te connectes avec putty en ssh ? Y a-t'il des règles résiduelles (voir
iptables -L
) ?

Même si normalement
iptables -P
est sensé définir la politique par défaut, j'aurais tendance à l'écrire en premier, puis ensuite ouvrir les ports adéquats avec
iptables -A
.

Ce tutoriel montre comment n'ouvrir que ssh, ce qui donnerait en gros :

iptables -F
iptables -X
iptables -t filter -A INPUT -p TCP --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p TCP --sport 22 -j ACCEPT
iptables -t filter -A INPUT -j DROP
iptables -t filter -A OUTPUT -j DROP
iptables -L


Ce que je te recommande c'est de faire grossir ton script petit à petit en y ajoutant progressivement des règles, ça te permettra de trouver celle qui bloque.

Bonne chance
1
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
19 févr. 2021 à 01:54
Bonjour,

Cette page de documentation couvre la plupart des règles
iptables
dont on peut avoir besoin pour des utilisations classiques. Il faut bien sûr être
root
(ou précéder les commandes
iptables
de
sudo
) pour pouvoir les exécuter.

Si cela ne suffit pas, précise nous ta question ou les problèmes que tu rencontres.

Bonne chance
0
Voilà, j'ai fait un fichier iptables exécutable. Je me connecte avec PuTTY sur Windows 10, puis, j'éxécute mon fichier iptables
#!/bin/bash
iptables-restore < /etc/iptables.test.rules

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp -i eth0 --dport https -j ACCEPT
sudo iptables -A INPUT -p tcp -i eth0 --dport 6144 -j ACCEPT
sudo iptables -A INPUT -p tcp -i eth0 --dport 58950 -j ACCEPT
sudo iptables -A INPUT -p tcp -i eth0 --dport 58966 -j ACCEPT
sudo iptables -A INPUT -p tcp -i eth0 --dport 23 -j ACCEPT
sudo iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT
sudo iptables -A INPUT -p tcp -i eth0 --dport 8080 -j ACCEPT
sudo iptables -A INPUT -p tcp -i eth0 --dport 21 -j ACCEPT
sudo iptables -A INPUT -p tcp -i eth0 --dport 5901 -j ACCEPT
sudo iptables -P INPUT DROP
sudo iptables -I INPUT 2 -i lo -j ACCEPT
sudo iptables -A OUTPUT -p icmp -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p icmp -j ACCEPT




Mais au bout d'un moment PuTTY se déconnecte, iptables le bloque. :(
J'aurais besoin, ce que je dois faire pour autoriser PuTTY à continuer à fonctionner, et à distance aussi je me serts de VNC client pour le bureau (d'où le port 5901).
Merci d'avance
0
jackyc_french
21 févr. 2021 à 01:40
Ok. Merci bien, le tuto me semble intéressant et complet. Je vais le lire sérieusement, et je te dirais si j'ai réussi ou pas. :)
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 21 févr. 2021 à 01:45
Ok :-) Bonne chance !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jackyc_french
21 févr. 2021 à 03:16
Et dis moi mon ami, sais tu comment ouvrir une plage de ports? Par ex, ports 58900 à port 59000 sont ouverts? Parce-que j'ai l’impression que j'aurais besoin de cela pour faire foncionner PuTTY, car j'ai l’impression qu'il se sert de ces ports là, je sais pas trop pourquoi, mais je l'ai vu avec netstat.
Merci d'avance.
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 26 févr. 2021 à 18:06
Bonjour,

Pour moi "ouvrir un port" signifie juste ne pas le rejeter. C'est ce que font tes règles
iptables ... -j ACCEPT
. Ensuite pour putty, vu que tu te connectes vraisemblablement en ssh, il suffit que le port 22 soit ouvert en entrée et en sortie (voir ce message).

Il faut bien entendu qu'un service écoute sur ce port (e.g.
sshd
écoute traditionnellement sur le port 22) et que sa
bind-address
(voir netstat -ntlp) accepte le trafic sur l'interface par laquelle il est contacté.

Exemple : Ici
sshd
accueille le trafic IPv4 et IPv6 sur le port 22 et l'ensemble des interfaces (
0.0.0.0:22
et
:::22
)

(root@silk) (~) # netstat -ntlp
Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1250/cupsd          
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1108/exim4          
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/init              
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      10913/sshd: /usr/sb
tcp6       0      0 ::1:631                 :::*                    LISTEN      1250/cupsd          
tcp6       0      0 :::25                   :::*                    LISTEN      1108/exim4          
tcp6       0      0 :::111                  :::*                    LISTEN      1/init              
tcp6       0      0 :::1716                 :::*                    LISTEN      1498/kdeconnectd    
tcp6       0      0 :::22                   :::*                    LISTEN      10913/sshd: /usr/sb


Si la connexion n'est pas établie, il y a probablement proxy ou un firewall qui filtre la communication entre le client et le serveur. Ça peut alors valoir le coup de regarder les logs du service en question (ici avec
sudo tail -f /var/log/auth.log
), en logguant les paquets filtrés. Tu peux aussi regarder avec
wireshark
ce qui se passe au niveau du client (idem au niveau du serveur).

Dans ton cas si ça marche sans tes règles
iptables
, c'est que le problème vient de là. En particulier, dans ton message typiquement, seul le trafic entrant sur le port 22 était autorisé, mais pas le trafic sortant (donc les paquets de putty arrivaient jusqu'à
sshd
, mais pas le contraire).

Bonne chance
0
jackyc_french
27 févr. 2021 à 18:09
Merci bien, je regarderais encore ça à tête reposée.
@++
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
1 mars 2021 à 15:10
Bonjour,

S'il s'agit d'un problème de freeze de la connexion SSH, le coupable n'est pas forcément iptables :
https://www.thegeekdiary.com/how-to-stop-ssh-session-from-getting-timed-out/
0
jackyc_french
2 mars 2021 à 15:14
Ah oki merci, c'est bon à savoir.
Mais j'ai aucun problème quand je lance pas iptables, et après l'avoir lancé avec le script que j'ai présenté plus haut (connections entrantes déjà actives sont gardés), PuTTY se déconnecte et seulement après avoir lancé le script.
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
Modifié le 2 mars 2021 à 15:33
Ok merci pour la précision, j'ai posté cette solution car j'ai été embêté plusieurs fois car SSH n'était pas configuré par défaut pour faire durer la connexion plusieurs heures.

Bonne journée.
0
jackyc_french
3 mars 2021 à 09:26
Ok, merci de participer et de faire avancer le shmilblick. lool
Bonne journée. :)
0