• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[geklärt] Nmap zeigt andere Ports als von firewalld als offen deklariert

f.gruber

Hacker
Hallo,

scanne ich meinen Rechner mit nmap 10.0.0.60 auf offene Ports, so erhalte ich folgende Ausgabe:

Code:
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
111/tcp  open  rpcbind
2049/tcp open  nfs
3306/tcp open  mysql

Egal, ob die Firewall läuft oder nicht läuft.

Die Konfiguration der Firewall zeigt etwas anderes an:
Code:
firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: ssh dhcpv6-client kdeconnect-kde
  ports: 5938/tcp 5938/udp 443/tcp
  protocols: tcp udp
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

Wie gesagt, wenn ich die Firewall einschalte, ändert sich nichts an der Ausgabe von nmap (von einem anderen Rechner).

Ich habe überprüft, ob die Firewall tatsächlich läuft:
Code:
systemctl status firewalld
   firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2019-11-13 11:03:24 CET; 25min ago

Sonderbar ist allerdings, dass folgender Befehl eine leere Ausgabe zeigt:
Code:
firewall-cmd --get-active-zones

Das YAST Modul für die Firewall zeigt aber, dass der Schnittstelle eth0 die Zone public zugeordnet ist.

Liegt es etwa am NetworkManager, mit dem ich das Netzwerk an meinem Rechner konfiguriert habe, damit er schneller bootet? Werde jetzt einmal versuchsweise auf wicked als Netzwerk Service umstellen und dann posten, was es gebracht hat.

Nein, am NetworkManager liegt es nicht. Das Problem bleibt bestehen, egal ob ich das Netzwerk mit wicked oder mit dem NetworkManager verwalte.

Danke für jeden Denkanstoß.
 

StephanS

Member
Laut (leerer) Ausgabe von firewalld-cmd ist deinem Interface keine Zone zugeordnet. Ich glaube, dass es dabei auf die Reihenfolge von Starten des firewalld und Aktivierung der Netzwerkinterfaces ankommt. Sieh dazu auch https://bugzilla.novell.com/show_bug.cgi?id=1120380.
Zuordnen der public-Zone geht mit
Code:
firewall-cmd --zone=public --add-interface=eth0
Ich habe inzwischen /etc/systemd/system/wickedd.service geändert (siehe obigen Link) und mache das firewalld-cmd stündlich als Cronjob, weil es bei jedem Paket-Update wieder falsch herum gestartet wird.
 
OP
F

f.gruber

Hacker
Habe jetzt einmal das Netzwerk Management auf wicked umgestellt.
Da sehe ich jedenfalls eine aktive Firewall Zone
Code:
firewall-cmd --get-active-zones
public
  interfaces: eth0
Im Verzeichnis /etc/systemd/system ist bei mir ein Link zu /usr/lib/systemd/wicked.service
Code:
network.service -> /usr/lib/systemd/system/wicked.service
Also denke ich, hat es keinen Sinn, wenn ich /usr/lib/systemd/system/wickedd.service nach /etc/systemd/system kopiere.
Sehe ich das richtig?

Ich habe versuchsweise - wie du oben beschrieben hast - in /usr/lib/systemd/system/wickedd.service folgende Zeile geändert:
Code:
# After=local-fs.target dbus.service isdn.service rdma.service SuSEfirewall2_init.service
After=local-fs.target dbus.service isdn.service rdma.service firewalld.service
Da sich dadurch nichts geändert hat an den falsch angezeigten offenen Ports, habe ich das wieder rückgängig gemacht, weil es ja ohnehin beim nächsten Update überschrieben würde.

Ich habe den Eindruck, firewalld ist bei Suse noch eine Baustelle. Dass da immer noch was von SuSEfirewall2_init.service herumschwirrt, obwohl das schon längst deinstalliert ist, stärkt diese Vermutung ...
 

StephanS

Member
f.gruber schrieb:
Also denke ich, hat es keinen Sinn, wenn ich /usr/lib/systemd/system/wickedd.service nach /etc/systemd/system kopiere.
Sehe ich das richtig?
...
Da sich dadurch nichts geändert hat an den falsch angezeigten offenen Ports, habe ich das wieder rückgängig gemacht, weil es ja ohnehin beim nächsten Update überschrieben würde.
Wenn du wickedd.service von /usr/lib/systemd/system nach /etc/systemd/system kopierst, hast du das Problem mit dem Überschreiben beim Update gerade nicht. Deshalb habe ich es so gemacht. Aber wenn es bei dir jetzt funktioniert, dann lass es so :D
 
OP
F

f.gruber

Hacker
Wenn du wickedd.service von /usr/lib/systemd/system nach /etc/systemd/system kopierst, hast du das Problem mit dem Überschreiben beim Update gerade nicht.
Der Link in /etc/systemd/system
Code:
network.service -> /usr/lib/systemd/system/wicked.service
zeigt auf /usr/lib/systemd/system/wicked.service.
In dieser Datei befinden sich Verweise auf wickedd.service:
Code:
cat wicked.service 
[Unit]
Description=wicked managed network interfaces
Wants=network.target wickedd.service wickedd-nanny.service
After=network-pre.target wickedd.service wickedd-nanny.service
...
Daher glaube ich, dass es nichts bringt, /usr/lib/systemd/system/wickedd.service nach /etc/systemd/system zu kopieren, solange obiger Link existiert.

Aber wenn es bei dir jetzt funktioniert, dann lass es so :D
An meinem Problem hat sich nichts geändert: Nmap zeigt andere offene Ports an als in der Firewall definiert :???:
 

StephanS

Member
Du hast oben stehen:
f.gruber schrieb:
...
Code:
firewall-cmd --zone=public --list-all
public (active)
...
  protocols: tcp udp
  masquerade: no
...

Bei mir steht:
Code:
  protocols: 
  masquerade: no

Kann es sein, dass du damit alle tcp- und udp-Ports erlaubst? Probier mal das zu entfernen.
 
OP
F

f.gruber

Hacker
StephanS schrieb:
Du hast oben stehen:
f.gruber schrieb:
...
Code:
firewall-cmd --zone=public --list-all
public (active)
...
  protocols: tcp udp
  masquerade: no
...

Bei mir steht:
Code:
  protocols: 
  masquerade: no

Kann es sein, dass du damit alle tcp- und udp-Ports erlaubst? Probier mal das zu entfernen.

Nein, daran liegt es nicht. Ich habe diese Zeile entfernt, es hat aber keinen Effekt auf das Problem.
 
OP
F

f.gruber

Hacker
Code:
iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
INPUT_direct  all  --  anywhere             anywhere            
INPUT_ZONES_SOURCE  all  --  anywhere             anywhere            
INPUT_ZONES  all  --  anywhere             anywhere            
LOG        all  --  anywhere             anywhere             ctstate INVALID LOG level warning prefix "STATE_INVALID_DROP: "
DROP       all  --  anywhere             anywhere             ctstate INVALID
LOG        all  --  anywhere             anywhere             LOG level warning prefix "FINAL_REJECT: "
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
FORWARD_direct  all  --  anywhere             anywhere            
FORWARD_IN_ZONES_SOURCE  all  --  anywhere             anywhere            
FORWARD_IN_ZONES  all  --  anywhere             anywhere            
FORWARD_OUT_ZONES_SOURACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:5938 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpt:5938 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https ctstate NEWCE  all  --  anywhere             anywhere            
FORWARD_OUT_ZONES  all  --  anywhere             anywhere            
LOG        all  --  anywhere             anywhere             ctstate INVALID LOG level warning prefix "STATE_INVALID_DROP: "
DROP       all  --  anywhere             anywhere             ctstate INVALID
LOG        all  --  anywhere             anywhere             LOG level warning prefix "FINAL_REJECT: "
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
OUTPUT_direct  all  --  anywhere             anywhere            

Chain FORWARD_IN_ZONES (1 references)
target     prot opt source               destination         
FWDI_public  all  --  anywhere             anywhere            [goto] 
FWDI_public  all  --  anywherACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:5938 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpt:5938 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https ctstate NEWe             anywhere            [goto] 

Chain FORWARD_IN_ZONES_SOURCE (1 references)
target     prot opt source               destination         

Chain FORWARD_OUT_ZONES (1 references)
target     prot opt source               destination         
FWDO_public  all  --  anywhere             anywhere            [goto] 
FWDO_public  all  --  anywhere             anywhere            [goto] 

Chain FORWARD_OUT_ZONESACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:5938 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpt:5938 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https ctstate NEW_SOURCE (1nmap Rechnername references)
target     prot opt source               destination         

Chain FORWARD_direct (1 references)
target     prot opt source               destination         

Chain FWDI_public (2 references)
target     prot opt source               destination         
FWDI_public_log  all  --  anywhere             anywhere            
FWDI_public_deny  all  --  anywhere             anywhere            
FWDI_public_allow  all  --  anywhere             anywhere            
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:5938 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpt:5938 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https ctstate NEW
Chain FWDI_public_allow (1 references)
target     prot opt source               destination         

Chain FWDI_public_deny (1 references)
target     prot opt source               destination         

Chain FWDI_public_log (1 references)
target     prot opt source               destination         

Chain FWDO_public (2 references)
target     prot opt source               destination         
FWDO_public_log  all  --  anywhere             anywhere            
FWDO_public_deny  all  --  aACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:5938 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpt:5938 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https ctstate NEWnywhere             anywhere            
FWDO_public_allow  all  --  anywhere             anywhere            

Chain FWDO_public_allow (1 references)
target     prot opt source               destination         

Chain FWDO_public_deny (1 references)
target     prot opt source               destination         

Chain FWDO_public_log (1 references)
target     prot opt source               destination         

Chain INPUT_ZONES (1 references)
target     prot opt source      ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:5938 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpt:5938 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https ctstate NEW         destination         
IN_public  all  --  anywhere             anywhere            [goto] 
IN_public  all  --  anywhere             anywhere            [goto] 

Chain INPUT_ZONES_SOURCE (1 references)
target     prot opt source               destination         

Chain INPUT_direct (1 references)
target     prot opt source               destination         

Chain IN_public (2 references)
target     prot opt source               destination         
IN_public_log  all  --  anywhere             anywhere            
IN_public_deny  all  --  anywACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:5938 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpt:5938 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https ctstate NEWhere             anywhere            
IN_public_allow  all  --  anywhere             anywhere            
ACCEPT     icmp --  anywhere             anywhere            

Chain IN_public_allow (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:5938 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpt:5938 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             ctstate NEW
ACCEPT     udp  --  anywhereACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:5938 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpt:5938 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https ctstate NEW             anywhere             ctstate NEW

Chain IN_public_deny (1 references)
target     prot opt source               destination         

Chain IN_public_log (1 references)
target     prot opt source               destination         

Chain OUTPUT_direct (1 references)
target     prot opt source               destination
Ganz unten sehe ich die Einträge, wie mit dem YAST firewall Modul gesetzt:
Code:
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpts:sesi-lm:cft-3 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:5938 ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             udp dpt:5938 ctstate NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https ctstate NEW
Warum aber zeigt in meinem LAN das Kommando
Code:
nmap 10.0.0.60
ganz andere Ports, nämlich diese:
Code:
nmap 10.0.0.60
Starting Nmap 7.70 ( https://nmap.org ) at 2019-11-26 10:34 CET
Nmap scan report for suserver (10.0.0.60)
Host is up (0.00025s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
111/tcp  open  rpcbind
2049/tcp open  nfs
3306/tcp open  mysql
MAC Address: 00:22:15:9F:53:AA (Asustek Computer)

Versthe ich da irgendetwas ganz falsch? :irre:
 

spoensche

Moderator
Teammitglied
In der iptables Chain Chain_IN_public_allow sorgt folgende Regel:

Code:
ACCEPT     tcp  --  anywhere             anywhere             ctstate NEW

dafür, dass sämtlicher TCP Traffic akzeptiert wird. Daher liefert dir Nmap zu den explizit freigegebenen Ports auch noch die Ports für rpcbind, nfs und mysql in der Ausgabe.

Wenn du diese Regel löschst, dann sind in der Nmap Ausgabe auch nur die freigegebenen Ports vorhanden.

Arbeitet das System auch als Router? Wenn nein, dann sind sämtliche FORWARD Regeln überflüssig und können gelöscht werden.

Aus Sicherheitsgründen sollte die Default Policy der Standard Chains DROP sein und nicht ACCEPT.
 
OP
F

f.gruber

Hacker
spoensche schrieb:
In der iptables Chain Chain_IN_public_allow sorgt folgende Regel:
Code:
ACCEPT     tcp  --  anywhere             anywhere             ctstate NEW
dafür, dass sämtlicher TCP Traffic akzeptiert wird.
Woher kommt so eine Regel wohl?
Mit dieser Regel wird ja die Firewall mehr oder weniger deaktiviert, sehe ich das richtig.

Aus Sicherheitsgründen sollte die Default Policy der Standard Chains DROP sein und nicht ACCEPT.
Ich habe da jetzt nichts mehr geändert. Der Rechner befindet sich ja hinter einem Router, also ist die Firewall ja nicht wirklich notwendig.
Mich hat nur dieser geschilderte Widerspruch interessiert bzw. irritiert.

Vielen Dank für die Hinweise.

Ich habe die FORWARD Regeln gelöscht:

Code:
iptables -F FORWARD_IN_ZONES
iptables -F FORWARD_IN_ZONES_SOURCE
iptables -F FORWARD_OUT_ZONES
iptables -F FORWARD_OUT_ZONES_SOURCE
iptables -F FORWARD_direct

Dann habe ich noch die letzte (7.) Regel der CHAIN
Chain_IN_public_allow entfernt
Code:
iptables -D IN_public_allow 7

Nun entspricht die Ausgabe von nmap schon mehr dem, was zu erwarten ist:
Code:
Nmap scan report
PORT     STATE  SERVICE
22/tcp   open   ssh
1717/tcp closed fj-hdnet
1718/tcp closed h323gatedisc
1719/tcp closed h323gatestat
1720/tcp closed h323q931
1721/tcp closed caicci
1723/tcp closed pptp
1755/tcp closed wms
1761/tcp closed landesk-rc
Damit gebe ich mich zunächst einmal zufrieden.
Wirklich blicke ich ohnehin nicht durch :roll:
 
Oben