On a le choix entre le nouveau nftables (installé par défaut) et iptables.. je préfère le vioc iptables, j'ai pas encore la motivation pour apprendre une nouvelle surcouche de pare-feu en commandes, d'autant plus que c'est du debian, j'en vomis d'avance !
Dans le pire des cas, on peut toujours installer shorewall via l'article sur le blog, c'est de très loin la meilleure surcouche !!!
Pour toute la suite, on se met en root !
On commence par désinstaller nftables puis installer iptables :
apt remove --auto-remove nftables -y
apt purge nftables -y
apt update
apt install iptables -y
iptables est à présent installé et activé, mais il est réglé sur ACCEPT dans tous les sens et sur toutes les interfaces. On va supposer ici que votre serveur a 2 interfaces réseau (pour l'exemple)
Il faut donc le configurer afin de restreindre le périmètre.
D'abord, 2 règles de départ quasi universelles : autoriser le trafic sur l'interface de bouclage puis les connections relatives et établies (quelle que soit l'interface pour cette seconde).
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Autoriser les flux entrants HTTP et HTTPS uniquement :
iptables -A INPUT -i enp0s3 -p tcp --dport 5501 -j ACCEPT
iptables -A INPUT -i enp0s3 -p tcp --dport 5502 -j ACCEPT
Autoriser les flux entrants HTTP, HTTPS, FTPS et SSH uniquement.
Attention car les ports sont aléatoires lors des transferts de fichiers en FTPS, nous allons donc définir le mode de transfert actif dans filezilla et décider d'une étendue de ports spécifiques à ouvrir sur notre pare-feu (6000 à 6010).
Ainsi, Filezilla va 'imposer' des ports précis, qui seront ouverts sur le pare-feu.
Il faut donc également configurer FileZilla et le faire passer du mode passif au mode actif :
Dans le client, sur FileZilla, Aller dans Edition, Préférences, Connexion, FTP (activez le mode actif), Mode actif (activez Limiter les ports locaux utilisés et inscrivez des ports 6000 à 6010)
iptables -A INPUT -i enp0s8 -p tcp --dport 5501 -j ACCEPT
iptables -A INPUT -i enp0s8 -p tcp --dport 5502 -j ACCEPT
iptables -A INPUT -i enp0s8 -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -i enp0s8 -p tcp --dport 6000:6010 -j ACCEPT
iptables -A INPUT -i enp0s8 -p tcp --dport 52333 -j ACCEPT
A présent, il faut refermer le pare-feu et bloquer toute autre accès, quelle que soit l'interface :
iptables -P INPUT DROP
iptables -P FORWARD DROP
Enfin autoriser tous les flux sortants de notre serveur :
iptables -P OUTPUT ACCEPT
A présent, il nous faut rendre nos règles immuables (car oui, en l'état actuel, si on redémarre, il y a tout à refaire).
apt install iptables-persistent -y
Evidemment, choisir de sauvegarder les règles actuelles pour IPv4 (/etc/iptables/rules.v4).. !
iptables -L -v
iptables -P INPUT ACCEPT
iptables -F
iptables -X
iptables -L
iptables -A INPUT -p tcp --dport 55555 -j DROP
vi redir.sh
#!/bin/bash
# tout ce qui ira à destination du port 23456 sera rerouté vers 10.0.1.8 sur le port 44444
sudo iptables -t nat -A PREROUTING -p tcp --dport 23456 -j DNAT --to-destination 10.0.1.8:44444
sudo iptables -t nat -A POSTROUTING -j MASQUERADE