Si tu n’as pas activé le forwarding IP (ip_forward=1) pour que ta machine serve de routeur tu n’as pas besoin de t’occuper de la chaîne FORWARD d’iptables, aucun paquet n’y passera jamais de toute façon.
Pourquoi utiliser -I au lieu de -A pour insérer la deuxième règle ?
Si le comportement du pare-feu doit être le même quelle que soit l’interface connectée, tu n’as pas besoin de multiplier les règles pour chaque interface, il suffit de créer une règle sans spécifier d’interface :
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Tu peux même combiner les deux ports dans une seule règle :
iptables -A INPUT -p tcp m multiport --dport ssh,80 -j ACCEPT
Je n’en sais rien, ça dépend de ce que tu veux. Néanmois j’aurais quelques observations.
En gros tes règles autorisent toutes les connexions sortantes et seulement les connexions TCP entrantes sur les ports SSH (22) et 80 (HTTP). En général on faut ça quand la machine fait tourner un serveur SSH et un serveur web qu’on veut rendre accessibles de l’extérieur. Si un scan révèle que ces ports sont fermés, c’est qu’aucun de ces service ne tourne sur ces ports, sinon ils seraient ouverts. Alors pourquoi les autoriser dans les règles iptables ?
D’autre part le port FTP devrait être “silencieux” puisqu’il n’y a pas de règle iptables l’autorisant (ACCEPT) ou le rejetant (REJECT). Il se peut qu’un autre pare-feu en amont rejette les connexions FTP entrantes vers ta machine, certains FAI le font.
Pour finir, ton script ne réinitialise pas les chaînes avant de créer les règles. Cela peut avoir des effets de bord s’il y a déjà des règles.
# reinitialisation des chaines de la table filter
# politiques par defaut
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# vidage des chaines
iptables -F
# suppression des chaines utilisateur
iptables -X