Konfigurationsbeispiel eines Notebooks für den Einsatz in unterschiedlichen Netzen mit 'firewalld' und 'NetworkManager'
Achtung dieser Artikel ist noch in Arbeit und dient vorläufig nur als Vorlage. Dieser Beitrag zu Linux oder der Abschnitt ist in Bearbeitung. Weitere Informationen findest du hier. Der Ersteller arbeitet an dem Beitrag oder Abschnitt und entsorgt den Wartungsbaustein spätestens 3 Tage nach der letzten Bearbeitung. Änderungen außer Rechtschreibkorrekturen ohne Absprache mit dem Urspungsautor sind möglichst zu vermeiden, solange dieser Baustein noch innerhalb der genannten Frist aktiviert ist. |
--Gehrke (Diskussion) 22:09, 24. Okt. 2016 (CEST)
Im Folgenden soll eine Beispielkonfiguration für ein Notebook gezeigt werden, welches auf den Einsatz in Netzwerken mit unterschiedlichen Sicherheitsanforderungen eingerichtet ist.
Dieses System soll in vertrauenswürdigen Netzen (wie beispielsweise dem eigenen LAN oder WLAN) mit der Zone 'work' laufen, welche eine bestimmte Netzwerkfunktionalität wie SSH oder den File-Daemon von Bacula auf diesem Notebook erlaubt. In anderen Netzen dagegen soll die Default-Zone 'public' verwendet werden, welche nur eine sehr eingeschränkte Netzwerk-Konnektivität erlaubt.
Dabei soll die Zuordnung anhand der Auswahl des Netzwerkes im NetworkManager erfolgen, welche bei bekannten Netzen in der Regel automatisch durchgeführt wird. Beispielsweise beim Wechsel vom (als sicher eingestuften) heimischen LANs in ein unsicheres öffentliches WLAN nach einem Ruhezustand des Notebooks.
Gewünschte Eigenschaften der Zonen:
- work: SSH und bacula-fd nur vom bacula-Server (172.16.21.10)
- public: Keinerlei Zugriff (auch kein SSH)
Dieses Beispiel basiert auf der Distribution CentOS 7. Um eine effektive und eindeutig dokumentierbare Vorgehensweise darzustellen, soll für alle administrativen Zugriffe auf die verwendeten Tools das jeweilige Command Line Interface (CLI) verwendet werden.
Inhaltsverzeichnis
Konfiguration
Um dieses Ziel zu erreichen, sind zwei Subsysteme zu konfigurieren:
- firewalld: Dieser Dienst übernimmt die dynamische Konfiguration und Steuerung der lokalen Firewall. Die von der Distribution vorgegebenen Templates (XML) für die beiden Zonen werden kopiert und angepasst, so dass die Konfiguration persistent zur Verfügung steht.
- NetworkManager: Der Dienst konfiguriert und steuert die Netzwerkanbindung dynamisch. Bekannten Netzen soll anhand der UUID die Zone 'work' zugewiesen werden. Andere Netze behalten die Default-Zone 'public'. Die Konfiguration erfolgt über das CLI auf der Kommandozeile.
firewalld
Im ersten Schritt werden die durch die Distribution vorgegebenen Zonen-Definitionen kopiert. Die folgenden Änderungen erfolgen auf den hier erzeugten Kopien:
# cp /usr/lib/firewalld/zones/public.xml /etc/firewalld/zones/ # cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/
Die geänderten Definitionen enthalten die Umsetzung für die oben genannten Anforderungen:
# cat /etc/firewalld/zones/work.xml <?xml version="1.0" encoding="utf-8"?> <zone> <short>Work</short> <description>For use in work areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <service name="ssh"/> <rule family="ipv4"> <source address="172.16.21.10"/> <service name="bacula"/> <accept/> </rule> </zone>
# cat /etc/firewalld/zones/public.xml <?xml version="1.0" encoding="utf-8"?> <zone> <short>Public</short> <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> </zone>
Neustart der Firewall:
# systemctl restart firewalld.service
NetworkManager
Vorhandene Netze anzeigen:
# nmcli connection show NAME UUID TYP GERÄT Freifunk fec93f72-3488-4008-abfc-ec372d6f8806 802-11-wireless -- WLAN1 82be9628-2709-495f-a389-d209b74fcd05 802-11-wireless -- VPN1 ec0aa457-d3ec-4089-8c8f-1a53a8a33374 vpn -- LAN1 ee9ee0aa-57b9-4c5d-9c76-d2722986c5d8 802-3-ethernet -- enp2s0 8c1c5b53-0c80-44df-8c49-678b6d122d42 802-3-ethernet enp2s0 WLAN2 1e906b64-4909-4dbe-8d81-705ea64767b4 802-11-wireless wlp8s0 VPN2 23c0b2c5-b5a6-4e82-95b2-9b198074391d vpn --
Man erkennt, dass das Notebook kabelgebunden über das Interface enp2s0 am Netzwerk enp2s0 und per WLAN über wlp8s0 am eigenen Funk-Netzwerk WLAN2 hängt.
Die Zuordnung der Zone 'work' an beide Netze erfolgt über die UUID der Netze im NetworkManager:
# nmcli con mod "8c1c5b53-0c80-44df-8c49-678b6d122d42" connection.zone work # nmcli con mod "1e906b64-4909-4dbe-8d81-705ea64767b4" connection.zone work
Anschließend werden die Verbindungen noch aktiviert:
# nmcli con up uuid 8c1c5b53-0c80-44df-8c49-678b6d122d42 Verbindung wurde erfolgreich aktiviert (aktiver D-Bus-Pfad: /org/freedesktop/NetworkManager/ActiveConnection/38) # nmcli con up uuid 1e906b64-4909-4dbe-8d81-705ea64767b4 Verbindung wurde erfolgreich aktiviert (aktiver D-Bus-Pfad: /org/freedesktop/NetworkManager/ActiveConnection/39)
Überprüfung
Abschließend ist die Konfiguration zu überprüfen.
Die Anzeige im Falle der Verbindung in den heimischen Netzen zeigt, dass die beiden Interfaces enp2s0 und wlp8s0 der Zone 'work' zugeordnet sind:
# firewall-cmd --get-active-zones work interfaces: enp2s0 wlp8s0
Anzeige der Konfiguration dieser Zone:
# firewall-cmd --zone=work --list-all --permanent work interfaces: sources: services: ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: rule family="ipv4" source address="172.16.21.10" service name="bacula" accept
Dagegen sollte bei einer Verbindung zu einem anderen Netzwerk die Default-Zone 'public' zugeordnet sein. Im folgenden Beispiel besteht ausschließlich eine Verbindung zum WLAN 'Freifunk':
# nmcli connection show NAME UUID TYP GERÄT Freifunk fec93f72-3488-4008-abfc-ec372d6f8806 802-11-wireless wlp8s0 enp2s0 8c1c5b53-0c80-44df-8c49-678b6d122d42 802-3-ethernet -- WLAN1 82be9628-2709-495f-a389-d209b74fcd05 802-11-wireless -- VPN1 ec0aa457-d3ec-4089-8c8f-1a53a8a33374 vpn -- LAN1 ee9ee0aa-57b9-4c5d-9c76-d2722986c5d8 802-3-ethernet -- enp2s0 8c1c5b53-0c80-44df-8c49-678b6d122d42 802-3-ethernet -- WLAN2 1e906b64-4909-4dbe-8d81-705ea64767b4 802-11-wireless -- VPN2 23c0b2c5-b5a6-4e82-95b2-9b198074391d vpn --
Dementsprechend zeigt die Prüfung, dass für das WLAN-Interface wlp8s0 die Zone 'public' gesetzt wurde und das derzeit nicht verbundene enp2s0 ohne Zuordnung verbleibt:
# firewall-cmd --get-active-zones public interfaces: wlp8s0
Es ist zu erkennen, dass SSH im Bereich services nicht zugelassen ist:
# firewall-cmd --zone=public --list-all public (default, active) interfaces: wlp8s0 sources: services: ports: masquerade: no forward-ports: icmp-blocks: rich rules:
Dabei erfolgt die Zuordnung der Zonen automatisch in Reaktion auf die Auswahl des Netzwerkes im NetworkManger. Eine manuelle Auswahl der Zone ist hierfür nicht erforderlich.