Goede dag,
Edit: probleem is intussen verholpen, het had eigenlijk te maken met systeem updates.
Sinds vandaag heb ik een kleine VPS (met Ubuntu 12.04) in mijn bezit en wil ik deze een beetje beveiligen. Iptables leek mij hiervoor geschikt. Op dit moment gaat de VPS gebruikt worden voor een web- en mailserver en moet SSH werken, eventuele andere dingen komen later wel.
Ik had het een en ander geconfigureerd en toen bedacht ik me dat ik eens zou testen wat er gebeurt als de VPS moet herstarten, en toen bleek hij niet meer online te komen. Ik vermoedde dat dit misschien kwam door de iptables configuratie, dus heb ik de VPS opnieuw laten imagen en toen op de kale installatie alleen iptables geconfigureerd. Toen ik hem toen herstartte bleef hij inderdaad weer offline (in ieder geval voor ssh en ping).
Mijn vraag is of iptables hier de beste oplossing voor is, en zo ja wat er mis is met de onderstaande configuratie waardoor inderdaad de server niet meer zou kunnen reageren:
Dit resulteert in de volgende rules:
Edit: probleem is intussen verholpen, het had eigenlijk te maken met systeem updates.
Sinds vandaag heb ik een kleine VPS (met Ubuntu 12.04) in mijn bezit en wil ik deze een beetje beveiligen. Iptables leek mij hiervoor geschikt. Op dit moment gaat de VPS gebruikt worden voor een web- en mailserver en moet SSH werken, eventuele andere dingen komen later wel.
Ik had het een en ander geconfigureerd en toen bedacht ik me dat ik eens zou testen wat er gebeurt als de VPS moet herstarten, en toen bleek hij niet meer online te komen. Ik vermoedde dat dit misschien kwam door de iptables configuratie, dus heb ik de VPS opnieuw laten imagen en toen op de kale installatie alleen iptables geconfigureerd. Toen ik hem toen herstartte bleef hij inderdaad weer offline (in ieder geval voor ssh en ping).
Mijn vraag is of iptables hier de beste oplossing voor is, en zo ja wat er mis is met de onderstaande configuratie waardoor inderdaad de server niet meer zou kunnen reageren:
*filter # Allow N2 for CloudVPS -A INPUT -i eth0 -s 194.60.207.22 -j ACCEPT # Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0 -A INPUT -i lo -j ACCEPT -A INPUT -i !lo -d 127.0.0.0/8 -j REJECT # Accepts all established inbound connections -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Allows all outbound traffic # You could modify this to only allow certain traffic # This is in addition to allowing established and related traffic as listed above -A OUTPUT -j ACCEPT # Allows HTTP and HTTPS connections from anywhere (the normal ports for websites) -A INPUT -p tcp --dport 80 -j ACCEPT -A INPUT -p tcp --dport 443 -j ACCEPT # Allows SSH connections from anywhere (the normal ports for websites) -A INPUT -p tcp --dport 2237 -j ACCEPT -A INPUT -p tcp --dport 22 -j ACCEPT # Allows SMTP connections from anywhere (the normal ports for websites) #-A INPUT -p tcp --dport 25 -j ACCEPT #-A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 202.54.1.20 --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -p tcp -s 0/0 --sport 1024:65535 --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT #-A OUTPUT -p tcp -s 202.54.1.20 --sport 25 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT -A OUTPUT -p tcp --sport 25 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT # Allows outgoing SMTP connections #-A OUTPUT -p tcp -s 202.54.1.20 --sport 1024:65535 -d 0/0 --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -p tcp --sport 1024:65535 -d 0/0 --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT #-A INPUT -p tcp -s 0/0 --sport 25 -d 202.54.1.20 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT -A INPUT -p tcp -s 0/0 --sport 25 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT # Allow ping -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT # log iptables denied calls -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7 # Reject all other inbound - default deny unless explicitly allowed policy -A INPUT -j REJECT -A FORWARD -j REJECT COMMIT
Dit resulteert in de volgende rules:
# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- monitoring.xl-is.net anywhere ACCEPT all -- anywhere anywhere REJECT all -- anywhere loopback/8 reject-with icmp-port-unreachable ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT tcp -- anywhere anywhere tcp dpt:https ACCEPT tcp -- anywhere anywhere tcp dpt:2237 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp spts:1024:65535 dpt:smtp state NEW,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp spt:smtp dpts:1024:65535 state ESTABLISHED ACCEPT icmp -- anywhere anywhere icmp echo-request LOG all -- anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: " REJECT all -- anywhere anywhere reject-with icmp-port-unreachable Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- anywhere anywhere reject-with icmp-port-unreachable Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere tcp spt:smtp dpts:1024:65535 state ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp spts:1024:65535 dpt:smtp state NEW,ESTABLISHED
[ Voor 22% gewijzigd door Jeroen op 28-05-2012 19:09 ]
"I don't always test my code, but when I do, I test on production."