You are here

Linux IPTABLES firewall

Linux bevat standaard een firewall, welke met het iptables commando geconfigureerd kan worden.

Even wat standaard dingetjes.

De huidige regels bekijken:

iptables -L -n --line-numbers

De -L geeft aan dat je de listing wilt zien, -n geeft aan dat je ip-adressen wilt zien, en er dus geen name resolving hoeft plaats te vinden voor de listing. Daarnaast zorgt --line-numbers ervoor dat er een regelnummer voor iedere regel wordt geplaatst, wat handig kan zijn als je bijvoorbeeld een regel wilt aanpassen of verwijderen.

Chain policy wijzigen

In onderstaand voorbeeld wijzigen wij de default policy van de chain INPUT naar DROP:

iptables -P INPUT DROP

(Zorg er bij deze regel wel voor dat je van te voren op zijn minst een regel hebt gemaakt om ssh-verbindingen toe te staan, anders wordt de verbinding verbroken en kom je er niet meer in!)

Regels toevoegen

Met het volgende commando voeg je een regel toe, bovenin een chain:

iptables -I [chain] [regel]

En met deze onderaan een chain:

iptables -A [chain] [regel]

Verwijderen van een bestaande regel:

iptables -D INPUT 3

Deze regel zorgt ervoor dat regel 3 uit chain 'INPUT' wordt verwijderd.

Regeltje vervangen:

iptables -R OUTPUT 1 .....

De -R swich gevolgd door de chain naam het het regelnummer vervangt de regel in kwestie met dat wat je daarachter verder op geeft.

Regels opslaan

Een leuk extra'tje van Redhat-achtige systemen is de iptables-service. In feite is dit een script dat de regels uit het geheugen kan opslaan, en bij een reboot de opgeslagen regels automatisch laadt.
Het opslaan van de huidige regels:

service iptables save

Poortje openen:

In dit voorbeeld openen wij poort 1167 voor een specifieke machine, deze poort wordt namelijk door CDP gebruikt voor het voeren van back-up's.

iptables -I INPUT -p tcp --dport 1167 -s 1.2.3.4 -d 1.2.3.180 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -I OUTPUT -p tcp --sport 1167 -s 1.2.3.180 -d 1.2.3.4 -m state --state ESTABLISHED,RELATED -j ACCEPT

In dit voorbeeld is 1.2.3.4 de back-up server en 1.2.3.80 de machine zelf.

Commentaar toevoegen

Je kunt regels labelen door een comment toe te voegen met:

-m comment --comment "verzin iets leuks"

Als je vervolgens een listing opvraagt, komen daar de comments bij te staan, bijvoorbeeld:

ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22 /* verzin iets leuks */

Standaard zaken

Even opletten als je de default policy van chain INPUT wijzigd naar DROP of REJECT.
In dat geval is het handig in ieder geval poort 22 (SSH) open te zetten. Doe dit VOOR dat je de chain dicht zet.

Ook is het handig om dns-antwoorden door te laten, anders ga je veel problemen krijgen:

iptables -A INPUT -p udp --sport 53 --dport 1024:65535 -j ACCEPT

Wil je ook naar buiten kunnen pingen? Dan is icmp echo antwoord ook van belang:

iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT

Als je dan ook zelf nog gepingt wilt kunnen worden, is het ook van belang dat je een echo request door laat. Dit werkt het zelfde als bovenstaande, maar dan accepteer je icmp type 8 ipv 0.

Handige links:

http://www.cyberciti.biz/tips/linux-iptables-9-allow-icmp-ping.html
http://iptables-tutorial.frozentux.net/other/iptables.html