redhat:base-redhat:fw-redhat

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
redhat:base-redhat:fw-redhat [2019/03/06 13:50] michaelredhat:base-redhat:fw-redhat [2019/03/07 10:47] (current) – [Troubleshooting] michael
Line 38: Line 38:
 Die vordefinierten Firewalld Services können unter /usr/lib/firewalld/services gefunden werden, sofern das Package firewalld-filesystem-xx-nn.el7.noarch.rpm installiert ist. Die vordefinierten Firewalld Services können unter /usr/lib/firewalld/services gefunden werden, sofern das Package firewalld-filesystem-xx-nn.el7.noarch.rpm installiert ist.
  
-<sxh bash; gutter: false;>+<sxh plain; gutter: false;>
 [rebermi@vnixeh ~]$ ls -lsa /usr/lib/firewalld/services/ [rebermi@vnixeh ~]$ ls -lsa /usr/lib/firewalld/services/
 total 516 total 516
Line 87: Line 87:
 Ein vordefinierter Dienst erlaubt grundsätzlich einen definierten Port von Quelle 0.0.0.0 bis zum Ziel 0.0.0.0. Es ist nicht möglich, einem vordefinierten Dienst Quellziel hinzuzufügen. Vordefinierte Dienste sind XML-Dateien, die unter /usr/lib/firewalld/services gespeichert sind Ein vordefinierter Dienst erlaubt grundsätzlich einen definierten Port von Quelle 0.0.0.0 bis zum Ziel 0.0.0.0. Es ist nicht möglich, einem vordefinierten Dienst Quellziel hinzuzufügen. Vordefinierte Dienste sind XML-Dateien, die unter /usr/lib/firewalld/services gespeichert sind
  
-<sxh bash; gutter: false;>+<sxh plain; gutter: false;>
 [rebermi@vnixeh ~]$ cat /usr/lib/firewalld/services/http.xml [rebermi@vnixeh ~]$ cat /usr/lib/firewalld/services/http.xml
 <?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
Line 118: Line 118:
 <wrap em>Vorsicht: Ist die Firewall Konfiguration falsch, oder fehlt der Service ssh, so ist es möglich, sich selbst von System auszuschliessen. Es braucht danach Konsole Zugriff, um das Problem zu lösen.</wrap> <wrap em>Vorsicht: Ist die Firewall Konfiguration falsch, oder fehlt der Service ssh, so ist es möglich, sich selbst von System auszuschliessen. Es braucht danach Konsole Zugriff, um das Problem zu lösen.</wrap>
  
-<sxh bash; gutter: false;>+<sxh plain; gutter: false;>
 [root@vtsttc ~]# cat /etc/firewalld/zones/internal.xml [root@vtsttc ~]# cat /etc/firewalld/zones/internal.xml
 <?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
Line 137: Line 137:
 </WRAP> </WRAP>
  
 +----
  
 <WRAP center box 100%> <WRAP center box 100%>
Line 143: Line 144:
 Die Firewalld Zone public beinhaltet default dhcp und ssh. Diese Services dürfen default nicht zugelassen werden in einem Umfeld, wo feste IP Adressierung eingerichtet ist, deshalb muss unter /etc/firewalld/zones die Public Zone ohne Definitionen angelegt werden. Es muss deshalb immer eine leere Konfiguration von public.xml gemacht werden. Die Firewalld Zone public beinhaltet default dhcp und ssh. Diese Services dürfen default nicht zugelassen werden in einem Umfeld, wo feste IP Adressierung eingerichtet ist, deshalb muss unter /etc/firewalld/zones die Public Zone ohne Definitionen angelegt werden. Es muss deshalb immer eine leere Konfiguration von public.xml gemacht werden.
  
-<sxh bash; gutter: false;>+<sxh plain; gutter: false;>
 [root@vtsttc ~]# cat /etc/firewalld/zones/public.xml [root@vtsttc ~]# cat /etc/firewalld/zones/public.xml
 <?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
Line 155: Line 156:
 </WRAP> </WRAP>
  
 +----
  
 <WRAP center box 100%> <WRAP center box 100%>
Line 161: Line 163:
 Der Firewalld ist ein systemd Service Der Firewalld ist ein systemd Service
  
-<sxh bash; gutter: false;>+<sxh plain; gutter: false;>
 [root@vtsttc ~]# systemctl status firewalld.service [root@vtsttc ~]# systemctl status firewalld.service
 ● firewalld.service - firewalld - dynamic firewall daemon ● firewalld.service - firewalld - dynamic firewall daemon
Line 173: Line 175:
 </WRAP> </WRAP>
  
 +----
  
 +<WRAP center box 100%>
 ==== Konfiguration im NIC Script ==== ==== Konfiguration im NIC Script ====
  
-Die konfigurierte Firewalld Zone (ZONE=internal) muss im Netzwerk Interface Script eingetragen sein, damit die Regeln korrekt funktionieren. Wird dieser Eintrag gelöscht, ist man vom System ausgesperrt.+Die konfigurierte Firewalld Zone (ZONE=internal) <wrap em>muss</wrap> im Netzwerk Interface Script eingetragen sein, damit die Regeln korrekt funktionieren. <wrap em>Wird dieser Eintrag gelöscht, ist man vom System ausgesperrt.</wrap>
  
-<sxh bash; gutter: false;>+<sxh plain; gutter: false; highlight: [9];>
 [root@vtsttc ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160 [root@vtsttc ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
 # Generated by parse-kickstart # Generated by parse-kickstart
Line 187: Line 191:
 BOOTPROTO="static" BOOTPROTO="static"
 DEVICE="ens160" DEVICE="ens160"
 +ZONE=internal
 ONBOOT="yes" ONBOOT="yes"
 IPV6INIT="yes" IPV6INIT="yes"
 NM_CONTROLLED=no NM_CONTROLLED=no
-ZONE=internal 
 [root@vtsttc ~]# [root@vtsttc ~]#
 </sxh> </sxh>
 +</WRAP>
  
 +----
  
 <WRAP center box 100%> <WRAP center box 100%>
Line 200: Line 206:
 Für alle interaktiven Konfigurationen ist das Kommando frewall-cmd vorhanden, siehe auch # man firewall-cmd Für alle interaktiven Konfigurationen ist das Kommando frewall-cmd vorhanden, siehe auch # man firewall-cmd
  
-<sxh bash; gutter: false;>+<sxh plain; gutter: false;>
 [root@vtsttc ~]# firewall-cmd --zone=internal --list-all [root@vtsttc ~]# firewall-cmd --zone=internal --list-all
 internal (active) internal (active)
Line 225: Line 231:
  
  
 +<WRAP center box 100%>
 ==== Source Destination Rules (Rich-Rules) ==== ==== Source Destination Rules (Rich-Rules) ====
  
 Müssen komplexe Rules definiert werden, wo eine Source IP auf einen bestimmten IP Port erlaubt werden soll, braucht es Rich Rules Müssen komplexe Rules definiert werden, wo eine Source IP auf einen bestimmten IP Port erlaubt werden soll, braucht es Rich Rules
  
-**Regel Interaktiv setzen**+<wrap em>Regel Interaktiv setzen</wrap> 
 In diesem Beispiel sollen bestimmte IP Adressen auf einen IP Port erlaubt werden.  In diesem Beispiel sollen bestimmte IP Adressen auf einen IP Port erlaubt werden. 
  
Line 240: Line 248:
 ---- ----
  
-**Regel in der Zone Konfiguration internal.xml**+<wrap em>Regel in der Zone Konfiguration internal.xml</wrap> 
 Es wäre auch möglich, eine Rich Rule direkt im Zone Konfigurations File zu editieren. Es ist auch möglich Rules für IPv4 und andere Rules für IPv6 zu setzen Es wäre auch möglich, eine Rich Rule direkt im Zone Konfigurations File zu editieren. Es ist auch möglich Rules für IPv4 und andere Rules für IPv6 zu setzen
  
-<sxh bash; gutter: false;>+<sxh plain; gutter: false;>
 [root@vtsttc ~]# cat /etc/firewalld/zones/internal.xml [root@vtsttc ~]# cat /etc/firewalld/zones/internal.xml
 <?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
Line 272: Line 281:
 [root@vtsttc ~]# [root@vtsttc ~]#
 </sxh> </sxh>
 +</WRAP>
  
 +----
  
 +<WRAP center box 100%>
 ==== Port Ranges mit Source Destination Rule ==== ==== Port Ranges mit Source Destination Rule ====
  
-**Regel interaktiv setzen**+<wrap em>Regel interaktiv setzen</wrap>
  
 <code># firewall-cmd --zone=internal --permanent --add-rich-rule='rule family="ipv4" source address="172.17.146.11" port "port=7001-7010" protocol="tcp" accept' <code># firewall-cmd --zone=internal --permanent --add-rich-rule='rule family="ipv4" source address="172.17.146.11" port "port=7001-7010" protocol="tcp" accept'
Line 283: Line 295:
 ---- ----
  
-**Regel im Zone File** +<wrap em>Regel im Zone File</wrap> 
-<sxh bash; gutter: false;>+ 
 +<sxh plain; gutter: false;>
 [root@vtsttc ~]# cat /etc/firewalld/zones/internal.xml [root@vtsttc ~]# cat /etc/firewalld/zones/internal.xml
 <?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
Line 301: Line 314:
 [root@vtsttc ~]# [root@vtsttc ~]#
 </sxh> </sxh>
 +</WRAP>
  
 +----
 +
 +<WRAP center box 100%>
 ==== Konfiguration mit Port Forwarding ==== ==== Konfiguration mit Port Forwarding ====
  
-**Firewall Rule Interaktiv**+<wrap em>Firewall Rule Interaktiv</wrap> 
 Hier wird der Port 80 von Aussen auf den internen Port 7039 weiter geleitet. Dasselbe für den externen Port 443, welcher auf Port 7040 umgeleitet wird. Hier wird der Port 80 von Aussen auf den internen Port 7039 weiter geleitet. Dasselbe für den externen Port 443, welcher auf Port 7040 umgeleitet wird.
  
Line 314: Line 332:
 ---- ----
  
-**Firewall Rule im Zone File**+<wrap em>Firewall Rule im Zone File</wrap> 
 Im Zone Konfigurationsfile sind die Einträge forward-port to-port gesetzt. Im Zone Konfigurationsfile sind die Einträge forward-port to-port gesetzt.
  
-<sxh bash; gutter: false;>+<sxh plain; gutter: false;>
 [root@vtsttc ~]# cat /etc/firewalld/zones/internal.xml [root@vtsttc ~]# cat /etc/firewalld/zones/internal.xml
 <?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
Line 331: Line 350:
 [root@vtsttc ~]# [root@vtsttc ~]#
 </sxh> </sxh>
 +</WRAP>
  
 +----
 +
 +<WRAP center box 100%>
 ==== Konfiguration Rich Rule Source Destination mit Port Forwarding ==== ==== Konfiguration Rich Rule Source Destination mit Port Forwarding ====
  
-**Firewall Rule Interaktiv**+<wrap em>Firewall Rule Interaktiv</wrap> 
 In diesem Beispiel werden nur Verbindungen von IP 172.17.146.11 auf Port 443 zugelassen und auf Port 7040 weiter geleitet, Dasselbe für Verbindungen auf 80, welche auf Port 7039 umgeleitet werden. In diesem Beispiel werden nur Verbindungen von IP 172.17.146.11 auf Port 443 zugelassen und auf Port 7040 weiter geleitet, Dasselbe für Verbindungen auf 80, welche auf Port 7039 umgeleitet werden.
  
Line 344: Line 368:
 ---- ----
  
-**Firewall Rule im Zone File**+<wrap em>Firewall Rule im Zone File</wrap> 
 Im Zone Konfiguration File sind die Rules pro Port-Forward eingetragen. Es können hier wiederum verschiedene Rules für IPv4 und auch für IPv6 eingetragen sein. Als Source Address braucht es dann eine IPv6 Adresse und rule family = "ipv6" Im Zone Konfiguration File sind die Rules pro Port-Forward eingetragen. Es können hier wiederum verschiedene Rules für IPv4 und auch für IPv6 eingetragen sein. Als Source Address braucht es dann eine IPv6 Adresse und rule family = "ipv6"
  
-<sxh bash; gutter: false;>+<sxh plain; gutter: false;>
 [root@vtsttc ~]# cat /etc/firewalld/zones/internal.xml [root@vtsttc ~]# cat /etc/firewalld/zones/internal.xml
 <?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
Line 366: Line 391:
 </zone> </zone>
 [root@vtsttc ~]# [root@vtsttc ~]#
-</code>+</sxh> 
 +</WRAP>
  
 +----
  
 +<WRAP center box 100%>
 ==== Möglichkeit Outgoing Ports zu sperren ==== ==== Möglichkeit Outgoing Ports zu sperren ====
  
Line 374: Line 402:
 Auf diese Weise könnte eine UDP Kommunikation gesperrt werden. Auf diese Weise könnte eine UDP Kommunikation gesperrt werden.
  
-**Konfiguration interaktiv**+<wrap em>Konfiguration interaktiv</wrap> 
 Hier wird nicht mit der Firewall Zone gearbeitet, sondern mit der Konfiguration direct Hier wird nicht mit der Firewall Zone gearbeitet, sondern mit der Konfiguration direct
  
Line 382: Line 411:
 Die Drop Targets werden nun mit ''# iptables -L -n -v'' in der Chain OUTPUT_direct sichtbar Die Drop Targets werden nun mit ''# iptables -L -n -v'' in der Chain OUTPUT_direct sichtbar
  
-<sxh bash; gutter: false;>+<sxh plain; gutter: false;>
 [root@vtsttc ~]# iptables -L OUTPUT_direct -n -v [root@vtsttc ~]# iptables -L OUTPUT_direct -n -v
 Chain OUTPUT_direct (1 references) Chain OUTPUT_direct (1 references)
Line 393: Line 422:
 ---- ----
  
-**Konfiguration /etc/firewalld/direct.xml**+<wrap em>Konfiguration /etc/firewalld/direct.xml</wrap> 
 Der Eintrag in der "direct" Konfiguration ist  Der Eintrag in der "direct" Konfiguration ist 
  
-<sxh bash; gutter: false;>+<sxh plain; gutter: false;>
 [root@vtsttc ~]# cat /etc/firewalld/direct.xml [root@vtsttc ~]# cat /etc/firewalld/direct.xml
 <?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
Line 405: Line 435:
 [root@vtsttc ~]# [root@vtsttc ~]#
 </sxh> </sxh>
 +</WRAP>
  
 +
 +----
 +
 +<WRAP center box 100%>
 ==== Möglichkeit interaktiv konfigurierte Ports zu sperren ==== ==== Möglichkeit interaktiv konfigurierte Ports zu sperren ====
  
Line 412: Line 447:
 Man kann nun interaktiv, definierte Ports aus dem Zone Konfigurationsfile entfernen mit dem Kommando firewall-cmd --zone=internal --remove-port='portnummer'/tcp  oder port1-port2/tcp. Ports können NICHT von definierten Services entfernt werden! Man kann nun interaktiv, definierte Ports aus dem Zone Konfigurationsfile entfernen mit dem Kommando firewall-cmd --zone=internal --remove-port='portnummer'/tcp  oder port1-port2/tcp. Ports können NICHT von definierten Services entfernt werden!
  
-<sxh bash; gutter: false;>+<sxh plain; gutter: false;>
 [root@vtsttc firewalld]# grep port zones/internal.xml [root@vtsttc firewalld]# grep port zones/internal.xml
   <port protocol="tcp" port="7111"/>   <port protocol="tcp" port="7111"/>
Line 425: Line 460:
 [root@vtsttc firewalld]# [root@vtsttc firewalld]#
 </sxh> </sxh>
 +</WRAP>
  
  
 +----
 +
 +<WRAP center box 100%>
 ==== Besonderheit Service FTP ==== ==== Besonderheit Service FTP ====
  
 Ein FTP Transfer kann im PASV Mode abgehandelt werden. Das ist dann von Vorteil, wenn auf der Server Seite kein Verbindungsaufbau zum Client möglich ist, z.B. hinter einer Firewall. Der Passive (PASV) FTP Mode vom  Client erlaubt es, nach dem ersten Verbindungsaufbau zum Server einen Port > 1023 zur Datenübertragung auszuhandeln. Dann erfolgt der Transfer auf diesem ausgehandelten Port. Für die FTP-Übertragung im PASV-Modus müssen bestimmte Datentransport Ports geöffnet werden. Daher muss ein FTP Conntrack Servicemodul geladen werden. Der standardmässige Red Hat Firewall Service ftp.xml enthält bereits das Contrack-Modul. Wenn FTP über einen anderen Port als 21 erfolgen soll, muss ein OEM-Firewalld-Dienst unter /etc/firewalld/services erstellt werden. Ein FTP Transfer kann im PASV Mode abgehandelt werden. Das ist dann von Vorteil, wenn auf der Server Seite kein Verbindungsaufbau zum Client möglich ist, z.B. hinter einer Firewall. Der Passive (PASV) FTP Mode vom  Client erlaubt es, nach dem ersten Verbindungsaufbau zum Server einen Port > 1023 zur Datenübertragung auszuhandeln. Dann erfolgt der Transfer auf diesem ausgehandelten Port. Für die FTP-Übertragung im PASV-Modus müssen bestimmte Datentransport Ports geöffnet werden. Daher muss ein FTP Conntrack Servicemodul geladen werden. Der standardmässige Red Hat Firewall Service ftp.xml enthält bereits das Contrack-Modul. Wenn FTP über einen anderen Port als 21 erfolgen soll, muss ein OEM-Firewalld-Dienst unter /etc/firewalld/services erstellt werden.
  
-<sxh bash; gutter: false;>+<sxh plain; gutter: false;>
 [root@vtsttc ~]# cat /usr/lib/firewalld/services/ftp.xml [root@vtsttc ~]# cat /usr/lib/firewalld/services/ftp.xml
 <?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
Line 444: Line 483:
 [root@vtsttc ~]# [root@vtsttc ~]#
 </sxh> </sxh>
 +</WRAP>
 +
 +
 +===== Troubleshooting =====
 +
 +Wird mit RedHat Firewall gearbeitet, so steht man oft vor dem Problem, dass eine Kommunikation nicht funktioniert. Folgende Schritte könnten hilfreich sein bei der Problemlösung:
 +
 +Firewalld abschalten: Funktioniert die Verbindung danach? Wenn JA: Ruleset überprüfen.
 +
 +
 +<WRAP center box 100%>
 +==== Port Verbindung überprüfen (nicht telnet, sondern netcat) ====
 +
 +Netcat ist default unter RedHat installiert. Netcat kann viel mehr und hat auch eine Telnet Abfrage für Ports integriert. Weiter verfügt Netcat über eine sehr gute man page!
 +
 +Zum Port debuggung deshalb mit netcat (nc) anstelle telnet arbeiten: [[https://www.digitalocean.com/community/tutorials/how-to-use-netcat-to-establish-and-test-tcp-and-udp-connections-on-a-vps|Link Digitalocean]].
 +
 +----
 +
 +<wrap em>Beispiel 1: Telnet /TCP Port Abfrage</wrap>
 +
 +Beispiele: TCP Port 10250 Verbindung überprüfen -i 1 bedeutet, dass bei einem Connect nach 1s idle Time die Verbindung geschlossen werden soll. Damit ist es möglich, in einem Loop viele Ports, oder viele Server abzufragen. (-t Telnet Abfrage) (-v Verbose)
 +
 +<sxh plain; gutter: false;>
 +[rebermi@vostm1 ~]$ nc -vt vostn1.pnet.ch 10250 -i 1
 +Ncat: Version 7.50 ( https://nmap.org/ncat )
 +Ncat: Connection refused.
 +[rebermi@vostm1 ~]$
 + 
 +[rebermi@vosme1 ~]$ nc -vt vosne1.pnet.ch 10250 -i 1
 +Ncat: Version 7.50 ( https://nmap.org/ncat )
 +Ncat: Connected to 172.18.184.14:10250.
 +Ncat: Idle timeout expired (1000 ms).
 +[rebermi@vosme1 ~]$
 +</sxh>
 +
 +----
 +
 +<wrap em>Beispiel 2: UDP Port Abfrage</wrap>
 +
 +Beispiel UDP Port Verbindung überprüfen (-u UDP Abfrage)
 +
 +<sxh plain; gutter: false;>
 +[rebermi@vostm1 ~]$  nc -vu vostn1.pnet.ch 4789 -i 1
 +Ncat: Version 7.50 ( https://nmap.org/ncat )
 +Ncat: Connected to 172.18.184.19:4789.
 +Ncat: Idle timeout expired (1000 ms).
 +[rebermi@vostm1 ~]$
 +</sxh>
 +</WRAP>
  
  • redhat/base-redhat/fw-redhat.1551876651.txt.gz
  • Last modified: 2019/03/06 13:50
  • by michael