Difference between revisions of "Iptables"

From HackerNet
Jump to: navigation, search
(Dynamisk IP)
Line 32: Line 32:
  
 
'''Exempel'''
 
'''Exempel'''
 +
<syntaxhighlight lang="bash">
 
  sudo dd of=/etc/iptables.firewall.rules << EOF
 
  sudo dd of=/etc/iptables.firewall.rules << EOF
 
  *filter
 
  *filter
Line 53: Line 54:
 
  COMMIT
 
  COMMIT
 
  EOF
 
  EOF
 +
</syntaxhighlight>
  
 
Rules activate!
 
Rules activate!
 
  sudo iptables-restore < /etc/iptables.firewall.rules
 
  sudo iptables-restore < /etc/iptables.firewall.rules
 
  sudo iptables -L
 
  sudo iptables -L
 
  
 
'''Behåll regler efter omstart, Debian/Ubuntu'''
 
'''Behåll regler efter omstart, Debian/Ubuntu'''
sudo dd of=/etc/network/if-pre-up.d/firewall << EOF
+
<syntaxhighlight lang="bash">
#!/bin/sh
+
sudo dd of=/etc/network/if-pre-up.d/firewall << EOF
/sbin/iptables-restore < /etc/iptables.firewall.rules
+
#!/bin/sh
EOF
+
/sbin/iptables-restore < /etc/iptables.firewall.rules
sudo chmod +x /etc/network/if-pre-up.d/firewall
+
EOF
 +
sudo chmod +x /etc/network/if-pre-up.d/firewall
 +
</syntaxhighlight>
  
 
=Dynamisk IP=
 
=Dynamisk IP=

Revision as of 22:41, 23 July 2015

Källa och väldigt bra läsning: http://www.lysator.liu.se/~kjell-e/tekla/linux/security/iptables/

Sätt upp en brandvägg för att begränsa och blockera oönskad inkommande trafik till din server, detta är valfritt men rekommenderat. Kommandot iptables används för att kontrollera netfilter, den underliggande tekniken som funnits med i linuxkärnan sedan 2.4.

Tables

Tables är de stora delarna av netfilter, och består av FILTER, NAT, och MANGLE. FILTER används för vanlig hantering av paket, och är standardtabellen om ingen annan anges. NAT används för att skriva om source och/eller destination för paket. MANGLE används för att på annat sätt modifiera paket, t.ex. modifiera olika delar av en TCP header.

Chains

Chains är sedan associerade med varje table. Chains är listor av regler inom en table, och de är associerade med platser där man kan avlyssna trafiken och vidta åtgärder.

Dessa chains finns:

PREROUTING: Immediately after being received by an interface.

POSTROUTING: Right before leaving an interface.

INPUT: Right before being handed to a local process.

OUTPUT: Right after being created by a local process.

FORWARD: For any packets coming in one interface and leaving out another.

Kombinationer

FILTER: Input, Output, Forward

NAT: PREROUTING, POSTROUING, Output

MANGLE: PREROUTING, POSTROUING, Input, Output, Forward

Targets

Targets bestämmer vad som kommer att hända med ett paket i en kedja om en matchning hittas med en av dess regler. De två vanligaste är DROP och ACCEPT.

Exempel

 sudo dd of=/etc/iptables.firewall.rules << EOF
 *filter
 
 # Standard
 -A INPUT -i lo -j ACCEPT
 -A INPUT -d 127.0.0.0/8 -j REJECT
 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
 # Portar och protokoll
 -A INPUT -p tcp --dport 80 -j ACCEPT
 -A INPUT -p tcp --dport 443 -j ACCEPT
 -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
 -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
 
 # Catch all
 -A INPUT -j DROP
 -A FORWARD -j DROP
 -A OUTPUT -j ACCEPT
 
 COMMIT
 EOF

Rules activate!

sudo iptables-restore < /etc/iptables.firewall.rules
sudo iptables -L

Behåll regler efter omstart, Debian/Ubuntu

sudo dd of=/etc/network/if-pre-up.d/firewall << EOF
#!/bin/sh
/sbin/iptables-restore < /etc/iptables.firewall.rules
EOF
sudo chmod +x /etc/network/if-pre-up.d/firewall

Dynamisk IP

Att ha dynamisk IP suger men så är det ibland. Som tur är kan iptables uppdatera sina regler automatiskt även om en IP-adress ändras. Det som behövs är ett DNS-namn mot IPn.

iptables -N DYNDNS
iptables -A INPUT -p tcp -m tcp --dport 22 -j DYNDNS

Sedan ett script som körs enligt schemaläggning

sudo dd of=/etc/dyndns.sh << EOF
#!/bin/bash
iptables -F DYNDNS 
iptables -A DYNDNS -s dyndns.exempel.se -j ACCEPT
EOF
sudo chmod +x /etc/dyndns.sh
crontab -e
0 * * * * /etc/dyndns.sh

Uppdatering en gång i timmen

IPset

IPset är ett verktyg för att hantera regler. Det är en extension till iptables som tillåter skapandet av regler som matchar mot grupper med t.ex. IP-adresser, nätverk och portar. Med grupper kan man få ner antalet regelrader vilket förenklar uppsättning och felsökning samt ökar skalbarhet och prestanda.

ipset -N myset iphash
ipset -A myset 1.1.1.1
ipset -A myset 2.2.2.2
iptables -A INPUT -m set --set myset src -j DROP