Home

 

Server::Firewall

Firewall Algemeen

Linux heeft, net als bijv. Windows, een eigen ingebouwde firewall, namelijk IPtables.
IPtables is een front-end voor de “netfilter hooks” op kernelniveau welke de Linux-netwerkstack kunnen manipuleren.
IPtables werkt door elk pakket dat de netwerkinterface doorkruist te vergelijken met een reeks regels om te beslissen wat te doen, vergelijkbaar met een policy-based ofwel rule-based firewall.

UFW
Uncomplicated FireWall, is een interface met IPtables, dat er op gericht is het configuratieproces van een firewall te vereenvoudigen.
Zie ook How to Set Up a Firewall with UFW on Ubuntu

Hoewel IPtables een solide en flexibel tool is, is het vooral voor beginners moeilijk om te leren hoe ze het moeten gebruiken om een firewall correct te configureren.
Ubuntu maakt gebruik van Linux IPtables, waarmee een volwaardige pakket-filtering firewall geconfigureerd kan worden.
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 Understanding UFW.

Naar index

Trusted IP's en IP Notatie

In het thuisnetwerk van de Home- en Testserver worden de vertrouwde apparaten in de router voorzien van een, aan hun MAC waarde gekoppeld, vast IP adres.
De toe te kennen vaste IP's moeten beperkt worden tot de range 192.168.178.0/26 (0-63). Op de router moeten deze adressen uitgesloten worden van de DHCP-pool.

Fritz!Box > Homenetwork > Network > Networksettings > IP Adresses > IPv4 Settings : DHCP-pool 192.168.178.64-200

Op deze manier kunnen we firewall regels maken die al dan niet van toepassing zijn op vertrouwde apparaten in het netwerk.
Het is nu bijvoorbeeld eenvoudig alle poorten gesloten te houden voor onbekende apparaten, die zich verbinden met het netwerk.

Note:
Als we Samba toegang willen beperken tot 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 Server::Samba > Samba Netwerk File Server

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  # Onze trusted IP-range
 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

UFW activeren

UFW is standaard al geïnstalleerd op Ubuntu.
Als het om een of andere reden gede-ïnstalleerd is, dan kan het opnieuw geïnstalleerd worden met: # apt install ufw.

Waarschuwing!
Bij de eerste installatie van UFW zijn in de Firewall geen poorten open gezet.
Als we nu de firewall te activeren, dan verliezen we communicatie met puTTY (SSH tcp 22).

Zorg er dus dat voor activatie van UFW de inkomende poort voor puTTY opengezet is.

Mocht de fierwal geactiveerd worden met poort 22 gesloten, dan moeten monitor en keyboard op de server aangesloten worden.
Stop nu de firewall met het commando # systemctl stop ufw.service

Check status UFW:

root@testserver:~# ufw status verbose
Status: inactive
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)

Eerst poort 22 voor puTTY open zetten inkomend van trusted IP's:

root@testserver:~# ufw allow from 192.168.178.0/26 to any port 22
Rule added

Check:
Note:
Normaal worden rules geschreven voor beide V4 en V6. Maar omdat we als source V4 IP adressen specificeren, wordt er geen V6 rule aangemaakt

root@testserver:~# ufw show added
Added user rules (see 'ufw status' for running firewall):
ufw allow from 192.168.178.0/26 to any port 22

Naar index

Het is nu veilig de firewall te activeren

root@testserver:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Check:

root@testserver:~# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To              Action      From
--              ------      ----
22             ALLOW IN  192.168.178.0/26 

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.

Naar index

Benodigde SAMBA poorten

In het bestand /etc/services (# grep -i 'NETBIOS\| CIFS' /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
  • 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.
  • 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

Naar index

Voorbeelden bewerken rules

Zie ook Ubuntu UFW

Maak regel voor app (# ufw app list) of service (# less /etc/services):
# ufw allow Postfix (app)
# ufw allow http (service)

Maak regel voor bv webmin inkomend van trusted IP's:
# ufw allow from 192.168.178.0/26 to any port 10000

Maak regel voor bijv. SSH inkomend van Trusted IP's alleen TCP:
# ufw allow from 192.168.178.0/26 to any port 22 proto TCP

Delete regel en vervang met nieuwe regel op zelfde plaats in tabel:
# ufw status numbered (vind nummer)
# ufw delete <nr>
# ufw insert <nr> allow from 192.168.178.0/26 to any port 137 proto udp
# ufw reload
# ufw status

Bekijk status:
# ufw status
# ufw status verbose

Naar index

Benodigde open inkomende verbindingen

1.  WEBMIN TCP/UDP poort 10000 inkomend van trusted ip's (192.168.178.0/26)
2.  HTTP TCP poort 80 voor webserver inkomend van anywhere
3.  HTTPS TCP/UDP poort 443 voor secure webserver inkomend van anywhere.
4.  LDAP TCP/UDP poort 389 voor LDAP inkomend van anywhere.
5.  LDAPS TCP/UDP poort 636 voor LDAPS inkomend van anywhere.
6.  SAMBA UDP poort 137 voor netbios-ns (NetBIOS Name Service), inkomend van trusted ip's
7.  SAMBA UDP poort 138 voor netbios-dgm (NetBIOS Datagram Service), inkomend van anywhere
8.  SAMBA TCP poort 139 voor netbios-ssn (NetBIOS Session Service), inkomend van anywhere
9.  SAMBA TCP poort 445 voor microsoft-ds (Directory Service), inkomend van anywhere
10.  SSH TCP/UDP poort 22 inkomend van trusted ip's (192.168.178.0/26)
11.  POSTFIX TCP poort 25 voor App Postfix inkomend van anywwhere.
12.  phpMyAdmin TCP poort 81 voor phpMyAdmin inkomend van trusted ip's (192.168.178.0/26)
13.  BackupPC TCP poort 81 voor BackupPC inkomend van trusted ip's (192.168.178.0/26)
14.  ReadyMedia TCP poorten 8200 en 1900 voor ReadyMedia inkomend van alle lokale netwerk ip's (192.168.178.0/24)

Naar index

Maak rules Thuis- en Testserver

1. WEBMIN poort 10000 inkomend van trusted ip's

root@testserver:~# ufw allow from 192.168.178.0/26 to any port 10000
Rule added

less /etc/ufw/user.rules:
### tuple ### allow any 10000 0.0.0.0/0 any 192.168.178.0/26 in
-A ufw-user-input -p tcp --dport 10000 -s 192.168.178.0/26 -j ACCEPT
-A ufw-user-input -p udp --dport 10000 -s 192.168.178.0/26 -j ACCEPT

2. HTTP

root@testserver:~# ufw allow http
Rule added

less /etc/ufw/user.rules:
### tuple ### allow tcp 80 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 80 -j ACCEPT

3. HTTPS

root@testserver:~# ufw allow https
Rule added

less /etc/ufw/user.rules:
### tuple ### allow any 443 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 443 -j ACCEPT
-A ufw-user-input -p udp --dport 443 -j ACCEPT

Naar index

4. LDAP

root@testserver:~# ufw allow ldap
Rule added

less /etc/ufw/user.rules:
### tuple ### allow any 389 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 389 -j ACCEPT
-A ufw-user-input -p udp --dport 389 -j ACCEPT

5. LDAPS

root@testserver:~# ufw allow ldaps
Rule added

less /etc/ufw/user.rules:
### tuple ### allow any 636 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 636 -j ACCEPT
-A ufw-user-input -p udp --dport 636 -j ACCEPT

6. SAMBA netbios-ns poort 137 UDP inkomend van trusted ip's

root@testserver:~# ufw allow from 192.168.178.0/26 to any port 137 proto udp
Rule added

less /etc/ufw/user.rules:
### tuple ### allow udp 137 0.0.0.0/0 any 192.168.178.0/26 in
-A ufw-user-input -p udp --dport 137 -s 192.168.178.0/26 -j ACCEPT

Naar index

7. SAMBA netbios-dgm poort 138 UDP

root@testserver:~# ufw allow netbios-dgm
Rule added

less /etc/ufw/user.rules:
### tuple ### allow udp 138 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p udp --dport 138 -j ACCEPT

8. SAMBA netbios-ssn poort 139 TCP

root@testserver:~# ufw allow netbios-ssn
Rule added

less /etc/ufw/user.rules:
### tuple ### allow tcp 139 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 139 -j ACCEPT

9. SAMBA microsoft-ds poort 445 TCP

root@testserver:~# ufw allow microsoft-ds
Rule added

less /etc/ufw/user.rules:
### tuple ### allow tcp 445 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 445 -j ACCEPT

10. SSH poort 22 inkomend van trusted ip's

Naar index

root@testserver:~# ufw allow from 192.168.178.0/26 to any port 22
Rule added

less /etc/ufw/user.rules:
### tuple ### allow any 22 0.0.0.0/0 any 192.168.178.0/26 in
-A ufw-user-input -p tcp --dport 22 -s 192.168.178.0/26 -j ACCEPT
-A ufw-user-input -p udp --dport 22 -s 192.168.178.0/26 -j ACCEPT

11. POSTFIX

root@testserver:~# ufw allow postfix
Rule added

less /etc/ufw/user.rules:
### tuple ### allow tcp 25 0.0.0.0/0 any 0.0.0.0/0 Postfix - in
-A ufw-user-input -p tcp --dport 25 -j ACCEPT -m comment --comment 'dapp_Postfix'

12. phpMyAdmin poort 81 inkomend van trusted ip's

root@testserver:~# ufw allow from 192.168.178.0/26 to any port 81
Rule added

less /etc/ufw/user.rules:
### tuple ### allow any 81 0.0.0.0/0 any 192.168.178.0/26 in
-A ufw-user-input -p tcp --dport 81 -s 192.168.178.0/26 -j ACCEPT
-A ufw-user-input -p udp --dport 81 -s 192.168.178.0/26 -j ACCEPT

13. BackupPC poort 81 inkomend van trusted ip's

root@testserver:~# ufw allow from 192.168.178.0/26 to any port 81
Rule added

less /etc/ufw/user.rules:
### tuple ### allow any 81 0.0.0.0/0 any 192.168.178.0/26 in
-A ufw-user-input -p tcp --dport 81 -s 192.168.178.0/26 -j ACCEPT
-A ufw-user-input -p udp --dport 81 -s 192.168.178.0/26 -j ACCEPT

14. ReadyMedia poorten 1900 en 8200 inkomend van alle netwerk ip's

root@testserver:~# ufw allow from 192.168.178.0/24 to any port 1900
Rule added
root@testserver:~# ufw allow from 192.168.178.0/24 to any port 8200
Rule added

less /etc/ufw/user.rules:
### tuple ### allow any 8200 0.0.0.0/0 any 192.168.178.0/24 in
-A ufw-user-input -p tcp --dport 8200 -s 192.168.178.0/24 -j ACCEPT
-A ufw-user-input -p udp --dport 8200 -s 192.168.178.0/24 -j ACCEPT

### tuple ### allow any 1900 0.0.0.0/0 any 192.168.178.0/24 in
-A ufw-user-input -p tcp --dport 1900 -s 192.168.178.0/24 -j ACCEPT
-A ufw-user-input -p udp --dport 1900 -s 192.168.178.0/24 -j ACCEPT

Naar index