2014-06-17 09:06:40 +0000 2014-06-17 09:06:40 +0000
15
15

Comment bloquer tous les ports sauf 80.443 avec iptables ?

Bloquer tous les ports (d'entrée et de sortie) est facile, mais c'est difficile avec le mot “sauf”. Je ne connais pas de règles qui remplissent cette condition.

PS : Je sais que cette question n'est pas nouvelle. Mais en fait, je n'ai rien trouvé qui puisse m'aider. Alors, aidez-moi PS !

Réponses (3)

25
25
25
2014-06-18 01:46:30 +0000

D'abord le ! est le symbole NOT.

iptables -A INPUT -p tcp -m tcp -m multiport ! --dports 80,443 -j DROP

Deuxièmement, les règles que vous avez écrites peuvent ne pas avoir les résultats attendus. Vous laissez tout tomber, y compris la réponse à la connexion sur le port 80. Par conséquent, vous ne pourrez pas vous y connecter, dit-on, pour les besoins d'un serveur web.

Ces règles autorisent les connexions RELATIVES et ÉTABLIES de sorte qu'un serveur web devrait fonctionner, si c'est effectivement ce que vous essayez de faire.

iptables -A INPUT -p tcp -m tcp -m multiport --dports 80,443 -j ACCEPT
<insert further allowed list here>
iptables -A INPUT -m conntrack -j ACCEPT --ctstate RELATED,ESTABLISHED
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j DROP
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -j DROP
5
5
5
2014-06-17 09:12:54 +0000
# Set the default policy of the INPUT chain to DROP
iptables -P INPUT DROP

# Accept incomming TCP connections from eth0 on port 80 and 443
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT

Ceci devrait vous donner ce dont vous avez besoin

3
3
3
2014-06-17 09:11:51 +0000

Vous pouvez définir votre action par défaut sur DROP, puis créer des règles d'exception pour autoriser 80 et 443, comme cela :

# Setting default policies:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Exceptions to default policy
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # HTTP
iptables -A INPUT -p tcp --dport 443 -j ACCEPT # HTTPS

iptables va parcourir la liste des “exceptions” jusqu'à ce qu'il trouve une correspondance. Il effectuera alors l'action spécifiée par le paramètre -j (ACCEPTER dans ce cas). S'il ne trouve pas de correspondance, il reviendra à la politique par défaut et abandonnera le paquet.

Notez qu'avec ce contournement, tous les sous-domaines seront verrouillés. Par exemple, avec cette méthode, vous pouvez faire fonctionner www.mydomain.com, mais votre sous-domaine, disons www.sub.mydomain.com, ne s'ouvrira pas pour les erreurs DNS.