Då du ska sätta upp en webbserver i linux så kan du komma att vilja använda den inbyggda brandväggen.
I denna artikeln så kommer jag gå igenom lite enkelt hur en sådan konfiguration skulle kunna se ut.
Svartlista allt
Principen här är att först svartlista allt (förutom redan etablerad anslutning – om du gör detta via ssh t.ex så vill du inte att din anslutning ska brytas).
# Nollställer eventuellt existerande konfigurationer iptables -F iptables -X # För att hålla existerande kopplingar öppna iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -I OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Svartlista allt iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
Svartlista spcifikt IP
Om vi vill svartlista ett särskilt ip så kan vi göra så på följande vis
iptables -A INPUT -s x.x.x.x -j DROP
Vitlista specifkt IP
Kan också hända att du vill vitlista ett särskilt IP..
iptables -A INPUT -s x.x.x.x -j ACCEPT
SSH, HTTP och HTTPS
De enda portarna vi vill ha öppna i brandväggen är ssh, http och https.
iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -j ACCEPT
Loopback
Tillåt din server att ha fri ”loopback” access. Jag har inte riktigt koll på vad detta innebär för att vara ärlig.
iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT
E-post
Öppna upp för trafik via Sendmail eller Postfix.
iptables -A INPUT -i eth0 -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
DoS attacker
Förhindra DoS attacker, i den mån det går..
iptables -A INPUT -p tcp --dport 80 -m limit --limit 60/minute --limit-burst 100 -j ACCEPT
DNS
Tillåt utgående dns trafik, bra om du t.ex. vill kunna använda apt-get kommandot.
iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT
Ping
Eftersom vi har svartlistat allt så kan man inte häller pinga servern vid detta laget, tillåt att domänen pingas på följande sätt:
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
Loggning
Logga aktiviteten från brandväggens tappade paket.
iptables -N LOGGING iptables -A INPUT -j LOGGING iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7 iptables -A LOGGING -j DROP
Kontrollera inställningarna
Kontrollera så att dina inställningar verkligen funkar med en portscanner som nmap t.ex.
Du kan också se ett utdrag via kommandot:
iptables -L
Du borde då få ett output i stil med följande – självklart i relevans till hur just du ställt in din server:
Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere multiport dports ssh,www,https ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere tcp dpt:smtp state NEW,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:www limit: avg 1/sec burst 100 LOGGING all -- anywhere anywhere Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere multiport sports ssh,www,https ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere tcp spt:smtp state ESTABLISHED Chain LOGGING (1 references) target prot opt source destination LOG all -- anywhere anywhere limit: avg 2/min burst 5 LOG level debug prefix `IPTables Packet Dropped: ' DROP all -- anywhere anywhere
Länkar
http://www.thegeekstuff.com/2011/06/iptables-rules-examples
http://codefastdieyoung.com/…/simple-firewall-settings-for-linux-server