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

Hoe blokkeer ik alle poorten behalve 80,443 met iptables?

Alle poorten blokkeren (in en uit) is gemakkelijk, maar het is moeilijk met het woord “behalve”. Ik ken geen regels die aan de voorwaarde voldoen.

PS: Ik weet dat deze vraag niets nieuws is. Maar in feite heb ik niets gevonden dat helpt. Dus, help me pls!

Antwoorden (3)

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

Ten eerste is de ! het NIET symbool.

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

Ten tweede, de regels die je schreef hebben misschien niet de verwachte resultaten. Je laat alles vallen, inclusief het antwoord op de verbinding op poort 80. Daarom zul je niet in staat zijn om er verbinding mee te maken zegt voor de doeleinden van een web server.

Deze regels staan RELATED en ESTABLISHED verbindingen toe, zodat een webserver zou moeten functioneren, als dat is wat je in feite probeert te doen.

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

Dit zou je moeten geven wat je nodig hebt

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

Je kunt je standaard actie op DROP zetten, en dan uitzonderingsregels maken om 80 en 443 toe te staan, zoals dit:

# 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 zal de lijst van ‘exceptions’ doorlopen tot het een overeenkomst vindt. Het zal dan de actie uitvoeren die gespecificeerd is door de parameter -j (ACCEPT in dit geval). Als het geen overeenkomst vindt, zal het terugvallen op het standaardbeleid en het pakket laten vallen.

Note dat met deze workaround alle sub-domeinen zullen worden geblokkeerd. Met deze methode zal het bijvoorbeeld wel werken op www.mydomain.com maar je subdomein, laten we zeggen www.sub.mydomain.com zal niet openen voor DNS fouten.