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:
1 |
sudo iptables -L |
Controleer het resultaat. Indien er nog geen firewall-regels zijn ingesteld, dan zie je een lege ‘ruleset’
1 2 3 4 5 6 7 8 |
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
1 |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
*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:
1 |
sudo iptables-restore < /etc/iptables.firewall.rules |
Controleer of de nieuwe configuratie actief is:
1 |
sudo iptables -L |
Controleer het resultaat, dat moet er ongeveer zo uitzien:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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:
1 |
sudo nano /etc/network/if-pre-up.d/firewall |
Kopieer en plak onderstaande regels
1 2 |
#!/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:
1 |
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.