Server::Firewall
Firewall Algemeen
IPTables
ClearOS maakt gebruik van Linux iptables, waarmee een volwaardige pakket-filtering firewall geconfigureerd wordt. Deze techniek, op kernelnivaeu en daardoor zeer snel, wordt met name nogal eens ingezet als een router wordt ingericht.
Deze iptables kunnen ook geheel met shell commando's beheerd worden, zie ook #man iptables.
Voor meer informatie is het het eenvoudigste de term 'iptables' in Google los te laten. Er zijn zeer informatieve sites zoals Wikipedia en Firewall met IPTables.
Installeren en activeren
Indien nog niet geïnstalleerd, van Marketplace de 'Firewall' en 'Custom Firewall' Apps downloaden en installeren.
Maak de instellingen om te beginnen op Webconfig >Network> Firewall > Incoming Firewall
Waarschuwing!
Als bij de eerste installatie gekozen is voor 'standalone (no firewall) zijn er per default in de Firewall geen poorten open gezet.
Als we nu in onderstaand scherm ons laten verleiden de firewall te activeren via 'Edit Mode', dan verliezen we communicatie met Webconfig (tcp 81) en puTTY (SSH tcp 22).
Zorg er dus eerst dat voor Webconfig
en/of puTTY de inkomende poorten opengezet zijn.
Noodprocedure
Als we onverhoeds de firewall toch activeren terwijl poorten 22 en/of 81 niet geopend zijn voor inkomend verkeerl dan rest er nog maar één optie en dat is het aansluiten van een monitor en keyboard op de server en in te loggen.
Geef dan het commando: # systemctl stop firewall
Daarna is Webconfig weer beschikbaar om eerst de gewenste poorten in de firewall in te stellen voordat de firewall weer geactiveerd wordt.
Firewall configuratie
Zodra de firewall ingeschakeld is, worden per default alle inkomende verbindingen geblokkeerd en alle uitgaande verbindingen toegestaan. Voor het alsnog toelaten van inkomende verbindingen en het blokkeren van uitgaande verbindingen moet de firewall configuratie in iptables aangepast worden en we doen dit met Webconfig.
![]() |
||
Voor het configuren gaan we naar Webconfig >Network> Firewall voor de volgende opties: |
||
• | Incoming | Configureer regels voor het toestaan van verbindingen op een poort/poorten met specifiek protocol. Voor de meeste standaard diensten zijn de regels 'voorgebakken' te selecteren, maar soms is voor bijzondere situaties meer flexibiliteit nodig. |
• | Custom | Tool voor in- en uitgaande verbindingen met uitgebreide, zelf te formuleren regels voor IP adressen, protocols en poorten. Hier is kennis van het aan de prompt configureren van iptables nodig, maar blijkt helaas noodzakelijk voor enkele belangrijke instellingen voor Windows netwerken met Samba. |
• | Egress | Niet geïnstalleerd. Uitgaand: Tool voor het blokkeren of toestaan (afhankelijk van mode) van bepaalde uitgaande connecties. |
• | Port Forward | Niet geïnstalleerd. Wordt alleen gebruikt als de server dienst doet als gateway voor het doorsturen van verbindingen. |
Vooral de opties 'Inkomend' en 'Custom' zijn kritisch voor een sterke configuratie van de Firewall en worden daarom in de diverse secties nader bekeken.
Notatie IP Adressen
Adres 192.168.1.0/24 is het zelfde als mask 255.255.255.0, dus alle IP's van de LAN 192.168.1.0 t/m 255.
Op de zelfde manier:
192.168.178.0/25 = 192.168.178.0 t/m 192.168.178.127
192.168.178.128/25 = 192.168.178.128 t/m 192.168.178.255
192.168.178.0/26 = 192.168.178.0 t/m 192.168.178.63
192.168.178.64/26 = 192.168.178.64 t/m 192.168.178.127
192.168.178.128/26 = 192.168.178.128 t/m 192.168.178.191
192.168.178.192/26 = 192.168.178.192 t/m 192.168.178.255
Firewall Inkomend
Webconfig pagina Inkomend
Selecteer Webconfig >Network> Firewall > Incoming Firewall > Add
![]() |
||
Er worden drie opties geboden om een regel toe te voegen: |
||
1. | Service | In een drop-down list worden alle standaard services gepresenteerd. Door een service te selecteren en toe te voegen worden automatisch het gebruikte protocol en benodigde poort ingevoerd. |
2. | Port | Hier kunnen protocol en poort zelf ingevoerd worden en een naam (alias) gegeven worden. |
3. | Port Range | Als boven maar nu met een poortbereik. |
4. | Blokked Incoming Con's | Als laatste is er een box om specifieke IP's aan de 'zwarte' lijst toe te voegen en deze te blokkeren voor inkomend verkeer. |
Zie Internet Assigned Numbers Authority IANA of /etc/services voor services en gegeven poortnummers.
Regels Inkomende verbindingen instellen
![]() |
||
1. | ClearSDN | standaard dienst TCP poort 1875: Deze poort is nodig voor de SUVA deamon waarmee secure tunnel connections via het internet gemaakt worden, bijvoorbeeld door ClearSDN voor updates. |
2. | HTTP | standaard dienst TCP poort 80 voor webserver. |
3. | HTTPS | standaard dienst TCP poort 443 secure webserver. |
4. | LDAP | standaard dienst TCP poort 389 voor LDAP. |
5. | LDAPS | standaard dienst TCP poort 636 voor LDAPS. |
6. | SMB | netbios-ssn TCP poort 139 voor Samba. |
7. | SMB_over_TCP | microsoft-ds TCP poort 445 voor Samba. |
8. | SSH | standaard dienst TCP poort 22. |
9. | Webconfig | standaard dienst TCP poort 81. Ook gebruikt voor phpMyAdmin |
Zie kader in Firewall Custom voor de benodigde samba poorten
Resultaat in Webconfig GUI
Na bovenstaande toevoegingen ziet het Webconfig GUI voor Inkomend er als volgt uit
Als we deze instellingen in IPTABLES bekijken met commando # iptables -L -n dan zien we het volgende resultaat:
Chain INPUT (policy DROP) target prot opt source destination ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:1875 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:80 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:443 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:389 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:636 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:139 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:445 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:81 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:1024:65535 state RELATED,ESTABLISHED ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:1024:65535 state RELATED,ESTABLISHED
- Wat hierbij opvalt is dat voor de source alle IP's geaccepteerd worden (0.0.0.0/0) maar dat voor destination automatisch de IP van de server al ingevuld is.
Voor regels waarbij we aanvullende en/of afwijkende instellingen nodig hebben moeten we gebruik maken van de 'CUSTOM' pagina in Webconfig. - Voor SSH (22) en Webconfig (81) wordt voor source elke IP geaccepteerd. Dit moet in de 'CUSTOM' pagina van Webconfig beperkt worden tot de 'trusted' IP's van het LAN
- De High-Ports (1024 en hoger) staan open voor alle INPUT als er de status is van ESTABLISHED en RELATED, dwz dat de packets onderdeel zijn van, of gerelateerd aan een al tot stand gebrachte connectie. Bij Samba worden high-ports (1024-65535) ook vaak gebruikt voor verbindingen en moeten daarom toegelaten worden voor INPUT. Dit moet ook in de 'CUSTOM' pagina van Webconfig verzorgd worden waarbij we de regel beperken tot de hosts op de LAN
Trusted IP's
In de router worden geselecteerde netwerkstations in het thuisnetwerk een vast IP-adres toebedeeld gebonden aan het MAC-adres.
Deze vaste IP's worden geselecteerd in de range 192.168.1.0/26 (192.168.1.0 t/m 92.168.1.63) en zijn bedoeld voor 'trusted' hosts. Zorg ervoor dat bij de router de DHCP pool begint boven deze range van 0-63!
Andere gebruikers krijgen een IP toebedeeld uit de DHCP-pool waardoor ze geen toegang krijgen tot de Samba shares
Voor security is het dus wel belangrijk dat de router beveiligd is met een sterk wachtwoord.
Firewall Custom
Webconfig Custom pagina
Selecteer Webconfig >Network> Firewall > Custom Firewall
Op deze Webconfig GUI-pagina is de gelegenheid zelf inkomende- en uitgaande regels te formuleren voor IP adressen, protocols en poorten.
Op de Samba-site en in het bestand /etc/services staan de regels die refereren naar Samba services en samengevat zijn dat:
|
Voor Windows netwerken met Samba hebben we in het 'Inkomend' scherm al regels aangemaakt voor NETBIOS-SSN (SMB) en Micrsoft-DS (SMB_over_TCP).
De 'voorgebakken' regel van NETBIOS (137:netbios-ns en 138:netbios-dgm) is niet juist. Dit gaan we corrigeren met het maken van individuele Custom regels.
In het bijzonder poort 137 voor Netbios-ns moet niet alleen open voor de server (192.168.178.4) maar ook voor IP 192.168.178.255 zijnde de gereserveerde Nameserver Broadcast IP.
'Custom' Samba regels
Op de 'Incoming Firewall' pagina zijn zoals hierboven uitgelegd enkele regels voor Samba niet correct.
Hiervoor maken we de volgende regels in 'Custom Firewall':
- NETBIOS-NS: iptables -I INPUT -p udp --source 192.168.178.0/24 --destination 192.168.178.0/24 --dport 137 -j ACCEPT
- NETBIOS-DGM: iptables -I INPUT -p udp --source 0.0.0.0/0 --destination 192.168.178.4 --dport 138 -j ACCEPT
- SMB-Highports: iptables -A INPUT -p udp --source 192.168.178.0/24 --destination 192.168.178.4 --dport 1024:65535 -j ACCEPT
Als we IPTABLES nu bekijken ziet het er als volgt uit:
Chain INPUT (policy DROP) target prot opt source destination ACCEPT udp -- 0.0.0.0/0 192.168.178.4 udp dpt:138 ACCEPT udp -- 192.168.178.0/24 192.168.178.0/24 udp dpt:137 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:1875 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:80 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:443 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:389 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:636 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:139 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:445 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 192.168.178.4 tcp dpt:81 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:1024:65535 state RELATED,ESTABLISHED ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:1024:65535 state RELATED,ESTABLISHED ACCEPT udp -- 192.168.178.0/24 192.168.178.4 udp dpts:1024:65535
UDP poort 137 accepteert alleen INPUT van hosts in het LAN (192.168.178.0/24).
De poorten 1024:65535 accepteren INPUT van RELATED en ESTABLISHED verbindingen en van hosts op het LAN.
Als we Samba toegang verder willen beperken tot bijvoorbeeld alleen de trusted PC's van het locale netwerk (LAN) of één specifieke IP dan moet dit gedaan worden in het Samba configuratiebestand /etc/samba/smb.conf. Zie sectie SAMBA Netwerk File Server
Diensten met aanvullende firewall beperkingen
Van sommige diensten waarvoor we een poort open moeten zetten willen we de toegang beperken tot specifieke hosts.
Voor alleen de PC's van het LAN is dat IP-range 192.168.178.0/24 (0-255)
En voor 'trusted' hosts van het LAN is dat de IP-range 192.168.178.0/26 (0-63)
Hiervoor maken we de volgende regels in 'Custom Firewall':
- Webconfig-trusted-IPs (poort 81 voor Webconfig en phpMyAdmin):
iptables -I INPUT -p tcp --source 192.168.178.0/26 --destination 192.168.178.4 --dport 81 -j ACCEPT - SSH-trusted-IPs (Secure Shell voor puTTY):
iptables -I INPUT -p tcp --source 192.168.178.0/26 --destination 192.168.178.4 --dport 22 -j ACCEPT
Let op!
Na de bovenstaande Firewall regels voor Webconfig en SSH ingesteld te hebben, moeten bij de regels voor Inkomende verbindingen Webconfig en SSH verwijderd (disabled) worden.
De bovenstaande extra twee regels zien er in IPTABLES nu uit als volgt:
Chain INPUT (policy DROP) target prot opt source destination ACCEPT tcp -- 192.168.178.0/26 192.168.178.4 tcp dpt:22 ACCEPT tcp -- 192.168.178.0/26 192.168.178.4 tcp dpt:81