Home

 

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.

ClearOS heeft ook GUI's in 'Webconfig' meegeleverd waarmee de op iptables gebaseerde firewall eenvoudig ingesteld kan worden.

Naar index

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.

Naar index

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

Naar index

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.

Naar index

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

Naar index

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

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.

Naar index

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.

Benodigde SAMBA poorten

Op de Samba-site en in het bestand /etc/services staan de regels die refereren naar Samba services en samengevat zijn dat:

  1. netbios-ns 137/udp      # NetBIOS Name Service
  2. netbios-dgm 138/udp     # NetBIOS Datagram Service
  3. netbios-ssn 139/tcp     # SMB NetBIOS Session Service
  4. microsoft-ds 445/tcp    # Microsoft Directory Service
  5. 'High-Ports' 1024-65535 # Exchange host namen
  • Dit zijn de poorten waar de Samba serverdaemons naar luisteren
  • De UDP protocollen via poorten 137 en 138 worden gebruikt door de nmbd deamon met naamresolutie en bladerfunctie.
  • De TCP protocollen via poorten 139 en 445 worden gebruikt voor de smbd deamon voor de bestand- en printerdeling, verificatie en autorisatie.
  • Samba heeft poort 135 niet echt nodig en poort 135 is kwetsbaar vooral voor DoS.
  • Bij Samba worden high-ports (1024-65535) ook vaak gebruikt voor verbindingen en moeten daarom toegelaten worden voor INPUT.
  • Met bovenstaande wordt een Linux werkstation een volwaardig lid van een Microsoft-netwerk

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.

Naar index

'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':

  1. NETBIOS-NS:      iptables -I INPUT -p udp --source 192.168.178.0/24 --destination 192.168.178.0/24 --dport 137 -j ACCEPT
  2. NETBIOS-DGM:   iptables -I INPUT -p udp --source 0.0.0.0/0 --destination 192.168.178.4 --dport 138 -j ACCEPT
  3. SMB-Highports:  iptables -A INPUT -p udp --source 192.168.178.0/24 --destination 192.168.178.4 --dport 1024:65535 -j ACCEPT

Naar index

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

Naar index

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':

  1. 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
  2. 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

Naar index