Firewall op een Raspberry Pi

Na het installeren van Raspbian is het verstandig om een firewall op een Raspberry Pi in te stellen. Voor de firewall op een Raspberry Pi heb ik gebruik gemaakt van “iptables” om het ip verkeer te limiteren en/of te blokkeren. Deze software is standaard aanwezig op de Raspian installatie. Onderstaande stappen beschrijven de installatie en ‘basis’ configuratie van de firewall. Allereerst controleren we of er al een configuratie actief is:

sudo iptables -L

Controleer het resultaat. Indien er nog geen firewall-regels zijn ingesteld, dan zie je een lege ‘ruleset’

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

De volgende stap is het maken van de ‘basis’ firewall regels

sudo nano /etc/iptables.firewall.rules

Firewall op een Raspberry Pi instellen

Onderstaande is een voorbeeld van enkele basis regels, om je op gang te helpen. Pas deze aan naar je eigen situatie. Kopieer en plak deze regels in het zojuist aangemaakte iptables.firewall.rules bestand.

*filter

#  Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -j REJECT

#  Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#  Allow all outbound traffic - you can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

#  Allow HTTP and HTTPS connections from anywhere (the normal ports for websites and SSL).
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

#  Allow Domoticz connections from anywhere (standard port)
-A INPUT -p tcp --dport 8080 -j ACCEPT

#  Allow SSH connections
#  The -dport number should be the same port number you set in sshd_config
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

#  Allow ping
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT

#  Log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

#  Drop all other inbound - default deny unless explicitly allowed policy
-A INPUT -j DROP
-A FORWARD -j DROP

COMMIT

Let op dat je de regels aanpast, indien je andere onderdelen gaat toevoegen aan je Raspberry / Domoticz installatie. Bewaar bovenstaand bestand (CTRL-X en Y) en activeer de regels:

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

Controleer of de nieuwe configuratie actief is:

sudo iptables -L

Controleer het resultaat, dat moet er ongeveer zo uitzien:

Chain INPUT (policy ACCEPT)
target prot opt source destination
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:omniorb
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT icmp -- anywhere anywhere icmp echo-request
LOG all -- anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
DROP all -- anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere

Automatisch opstarten

De firewall-regels willen we automatisch actief hebben, wanneer de Raspberry Pi opnieuw opgestart wordt. Hiervoor maken we een nieuw script aan:

sudo nano /etc/network/if-pre-up.d/firewall

Kopieer en plak onderstaande regels

#!/bin/sh
/sbin/iptables-restore < /etc/iptables.firewall.rules

Bewaar bovenstaand bestand (CTRL-X en Y) en pas vervolgens de permissions van het script aan:

sudo chmod +x /etc/network/if-pre-up.d/firewall

Let op dat je de regels aanpast, wanneer je andere onderdelen gaat toevoegen aan je Raspberry / Domoticz installatie.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *