IPTables handige oneliners
Dit is vooral een note-to-self, maar het is toch tijd om af te komen van het uitzetten van iptables omdat ik de tijd er niet voor neem om uit te zoeken hoe het werkt.
Ik ben fan van de website serversforhackers.com en verwijs je dan ook met alle liefde naar dit iptables-artikel waarop ik ook mijn basis heb gemaakt.
Huidige situatie bekijken
Kijk hoe het er nu voor staat met de volgende vlaggetjes:
-L
list alle rules-v
verbose, toon meer opties
$ sudo iptables -L -v Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 49525 3319K f2b-sshd tcp -- any any anywhere anywhere multiport dports ssh 60539 26M ACCEPT all -- lo any anywhere anywhere 250K 71M ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED 3495 204K ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh 3835 213K ACCEPT tcp -- any any anywhere anywhere tcp dpt:http 5946 339K ACCEPT tcp -- any any anywhere anywhere tcp dpt:https 1919 102K DROP all -- any any anywhere anywhere
Basis neerzetten
Voeg de volgende twee rules toe om local
verkeer toe te staan en om jezelf niet buiten te sluiten als je met SSH ingelogd bent.
# allow all traffic on local port $ sudo iptables -A INPUT -i lo -j ACCEPT # allow traffic which was already there $ sudo sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Afhankelijk van wat je op server doet, kun je de poorten voor SSH en web open zetten
$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT $ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT $ sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Als je verder niets meer toe hoeft te laten, kun je iptables instellen om standaard alles te droppen (tenzij er een rule is opengezet).
NB: let op! Zorg ervoor dat je jezelf niet buitensluit en controleer dat je de rule met RELATED,ESTABLISHED
hebt opgenomen!
$ sudo iptables -A INPUT -j DROP
Een rule later toevoegen
Als je een rule later nog wilt toevoegen, dan moet je hem insert
en in plaats van add
en.
Het verschil tussen add en insert is dat bij add
je rule aan het einde geplaatst wordt (ná de DROP dus!) en met insert
kun je opgeven waar je wilt dat de rule komt (vóór de DROP uiteraard!).
Om een rule op de 3e positie in de lijst toe te voegen, gebruik je volgend commando.
$ sudo iptables -I INPUT 3 -p tcp --dport 8080 -j ACCEPT
Specifieke rules
Verkeer toestaan vanaf een specifiek IP-adres en naar een specifieke port:
$ sudo iptables -I INPUT 5 -s 172.30.0.86 -p tcp --dport 9200 -j ACCEPT
Verwijderen van een rule
# Delete by rulenumber $ sudo iptables -D INPUT 3 # Or delete the rule by matching the parameters $ sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT
Firewall rules opslaan
Let op! Firewall rules overleven een reboot niet! Je moet ze daarom opslaan.
Zie ook https://serversforhackers.com/c/firewall-persisting-iptables-rules
Ubuntu
Het makkelijkste is om iptables-persistent
te gebruiken.
$ sudo apt-get install iptables-persistent
Je rules worden nu opgeslagen in /etc/iptables/rules.4
voor IPv4 en /etc/iptables/rules.6
voor IPv6.
Als je de rules wijzigt, sla ze dan op zodat ze met een volgende reboot weer ingezet worden:
$ sudo iptables-save > /etc/iptables/rules.v4
CentOS
De locatie op CentOS is anders kwam ik achter. Hier gaat het naar /etc/sysconfig/iptables
.
# via service $ sudo service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] # manually $ sudo su root -c 'iptables-save > /etc/sysconfig/iptables’