web-dev-qa-db-fra.com

Comment bloquer tous les ports sauf 80,443 avec iptables?

Il est facile de bloquer tous les ports (entrant et sortant), mais c'est difficile avec le mot "sauf". Je ne connais aucune règle qui remplisse la condition.

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

13
user71169

Premièrement 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 escomptés. Vous supprimez tout, y compris la réponse à la connexion sur le port 80. Par conséquent, vous ne pourrez pas vous connecter à ce serveur pour les besoins d'un serveur Web.

Ces règles autorisent les connexions RELATED et ESTABLISHED. Un serveur Web doit donc fonctionner, si c'est 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
23
cybernard
# 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

Cela devrait vous donner ce dont vous avez besoin

5
Fazer87

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 suit:

# 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 passera par la liste des "exceptions" jusqu'à ce qu'il trouve une correspondance. Il effectuera ensuite l'action spécifiée par le paramètre -j (ACCEPT dans ce cas). S'il ne trouve pas de correspondance, il reviendra à la politique par défaut et abandonnera le paquet.

Notez qu'avec cette solution de contournement, tous les sous-domaines seront verrouillés. Par exemple, avec cette méthode, vous travaillerez bien sur www.mondomaine.com, mais votre sous-domaine, disons que www.mondomaine.com, ne s'ouvrira pas pour les erreurs DNS.

3
mtak