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

openSuse - Firewall-Einstellungen für Broadcast/Multicast

Joern_W

Newbie
Hallo Linux-Experten!

Ich versuche bei mir auf mehreren Rechnern (Windows und openSuse) Syncthing zum Laufen zu kriegen. Funktioniert soweit ganz gut, nur die Linux-Rechner sehen einander nicht, solange auf beiden Rechner die Firewall aktiviert ist. Mit Hilfe des Syncthing-Forums konnte ich es zumindest soweit eingrenzen, dass es wohl die openSuse-Firewall in der Standard-Konfiguration die Broadcast/Multicast-Nachrichten blockiert. Gemäß Syncthing-Anleitung habe ich die Ports 22000 für TCP und 21025 für UDP uter Yast/Firewall/erlaubte Dienste/Erweitert eingetragen. Aber das scheint nicht auszureichen.
Im Sycthing-Forum habe ich von den Entwicklern folgende Tipps bekommen:

I think it's todo with the broadcasts/multicasts for local discovery, make sure the firewall permits them too.

und

Allowing incoming UDP packets to port 21025 should be enough. Maybe there's an earlier rule to block broadcasts or packets not destined for a local IP or something.

Mehr konnten sie mir auch nicht sagen, da es ein openSuse-spezifisches Problem zu sein schein. Ich habe unter den Firewall-Einstellungen schon alles mögliche ausprobiert, leider erfolglos. Deshalb wende ich mich heute an Euch openSuse-Experten: Könnt Ihr mit den Aussagen etwas anfangen? Was muss ich an der Firewall einstellen, dass Syncthing ordentlich funktionert?

Danke für Eure Hilfe,
Jörn.
 
OP
J

Joern_W

Newbie
Sorry für meine verspätete Antwort.

iptables-save liefert folgende Ausgabe:

Code:
# Generated by iptables-save v1.4.21 on Thu Jul 23 23:20:07 2015                                                                                                                    
*raw                                                                                                                                                                                
:PREROUTING ACCEPT [4830075:9278818277]                                                                                                                                             
:OUTPUT ACCEPT [3249471:512015260]                                                                                                                                                  
-A PREROUTING -i lo -j CT --notrack                                                                                                                                                 
-A OUTPUT -o lo -j CT --notrack                                                                                                                                                     
COMMIT                                                                                                                                                                              
# Completed on Thu Jul 23 23:20:07 2015                                                                                                                                             
# Generated by iptables-save v1.4.21 on Thu Jul 23 23:20:07 2015                                                                                                                    
*filter                                                                                                                                                                             
:INPUT DROP [0:0]                                                                                                                                                                   
:FORWARD DROP [0:0]                                                                                                                                                                 
:OUTPUT ACCEPT [3230469:507883326]                                                                                                                                                  
:forward_ext - [0:0]                                                                                                                                                                
:input_ext - [0:0]                                                                                                                                                                  
:reject_func - [0:0]                                                                                                                                                                
-A INPUT -i lo -j ACCEPT                                                                                                                                                            
-A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT                                                                                                                               
-A INPUT -p icmp -m conntrack --ctstate RELATED -j ACCEPT                                                                                                                           
-A INPUT -j input_ext                                                                                                                                                               
-A INPUT -m limit --limit 3/min -j LOG --log-prefix "SFW2-IN-ILL-TARGET " --log-tcp-options --log-ip-options                                                                        
-A INPUT -j DROP                                                                                                                                                                    
-A FORWARD -m limit --limit 3/min -j LOG --log-prefix "SFW2-FWD-ILL-ROUTING " --log-tcp-options --log-ip-options
-A OUTPUT -o lo -j ACCEPT
-A input_ext -m pkttype --pkt-type broadcast -j DROP
-A input_ext -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A input_ext -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A input_ext -p tcp -m limit --limit 3/min -m tcp --dport 22000 --tcp-flags FIN,SYN,RST,ACK SYN -j LOG --log-prefix "SFW2-INext-ACC-TCP " --log-tcp-options --log-ip-options
-A input_ext -p tcp -m tcp --dport 22000 -j ACCEPT
-A input_ext -p tcp -m limit --limit 3/min -m tcp --dport 22 --tcp-flags FIN,SYN,RST,ACK SYN -j LOG --log-prefix "SFW2-INext-ACC-TCP " --log-tcp-options --log-ip-options
-A input_ext -p tcp -m tcp --dport 22 -j ACCEPT
-A input_ext -p udp -m udp --dport 21025 -j ACCEPT
-A input_ext -s 192.168.1.0/24 -p tcp -m tcp --dport 22000 -m conntrack --ctstate NEW -m limit --limit 3/min -j LOG --log-prefix "SFW2-INext-ACC " --log-tcp-options --log-ip-options
-A input_ext -s 192.168.1.0/24 -p tcp -m tcp --dport 22000 -j ACCEPT
-A input_ext -s 192.168.1.0/24 -p udp -m udp --dport 21025 -m conntrack --ctstate NEW -m limit --limit 3/min -j LOG --log-prefix "SFW2-INext-ACC " --log-tcp-options --log-ip-options
-A input_ext -s 192.168.1.0/24 -p udp -m udp --dport 21025 -j ACCEPT
-A input_ext -m limit --limit 3/min -m pkttype --pkt-type multicast -j LOG --log-prefix "SFW2-INext-DROP-DEFLT " --log-tcp-options --log-ip-options
-A input_ext -m pkttype --pkt-type multicast -j DROP
-A input_ext -m pkttype --pkt-type broadcast -j DROP
-A input_ext -m limit --limit 3/min -j LOG --log-prefix "SFW2-INext-DROP-DEFLT " --log-tcp-options --log-ip-options
-A input_ext -j DROP
-A reject_func -p tcp -j REJECT --reject-with tcp-reset
-A reject_func -p udp -j REJECT --reject-with icmp-port-unreachable
-A reject_func -j REJECT --reject-with icmp-proto-unreachable
COMMIT
# Completed on Thu Jul 23 23:20:07 2015

und ip6tables-save liefert:

Code:
# Generated by ip6tables-save v1.4.21 on Thu Jul 23 23:27:28 2015
*raw
:PREROUTING ACCEPT [16971:1159156]
:OUTPUT ACCEPT [18761:1352784]
-A PREROUTING -i lo -j CT --notrack
-A OUTPUT -o lo -j CT --notrack
COMMIT
# Completed on Thu Jul 23 23:27:28 2015
# Generated by ip6tables-save v1.4.21 on Thu Jul 23 23:27:28 2015
*mangle
:PREROUTING ACCEPT [16971:1159156]
:INPUT ACCEPT [13783:929620]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [18761:1352784]
:POSTROUTING ACCEPT [22007:1591137]
COMMIT
# Completed on Thu Jul 23 23:27:28 2015
# Generated by ip6tables-save v1.4.21 on Thu Jul 23 23:27:28 2015
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [3444:360476]
:forward_ext - [0:0]
:input_ext - [0:0]
:reject_func - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A INPUT -p ipv6-icmp -m conntrack --ctstate RELATED -j ACCEPT
-A INPUT -p udp -m udp --dport 546 -j ACCEPT
-A INPUT -j input_ext
-A INPUT -m limit --limit 3/min -j LOG --log-prefix "SFW2-IN-ILL-TARGET " --log-tcp-options --log-ip-options
-A INPUT -j DROP
-A FORWARD -m limit --limit 3/min -j LOG --log-prefix "SFW2-FWD-ILL-ROUTING " --log-tcp-options --log-ip-options
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p ipv6-icmp -j ACCEPT
-A input_ext -m pkttype --pkt-type broadcast -j DROP
-A input_ext -p ipv6-icmp -m icmp6 --icmpv6-type 128 -j ACCEPT
-A input_ext -p ipv6-icmp -m icmp6 --icmpv6-type 133 -j ACCEPT
-A input_ext -p ipv6-icmp -m icmp6 --icmpv6-type 134 -j ACCEPT
-A input_ext -p ipv6-icmp -m icmp6 --icmpv6-type 135 -j ACCEPT
-A input_ext -p ipv6-icmp -m icmp6 --icmpv6-type 136 -j ACCEPT
-A input_ext -p ipv6-icmp -m icmp6 --icmpv6-type 137 -j ACCEPT
-A input_ext -p ipv6-icmp -m icmp6 --icmpv6-type 130 -j ACCEPT
-A input_ext -p tcp -m limit --limit 3/min -m tcp --dport 22000 --tcp-flags FIN,SYN,RST,ACK SYN -j LOG --log-prefix "SFW2-INext-ACC-TCP " --log-tcp-options --log-ip-options
-A input_ext -p tcp -m tcp --dport 22000 -j ACCEPT
-A input_ext -p tcp -m limit --limit 3/min -m tcp --dport 22 --tcp-flags FIN,SYN,RST,ACK SYN -j LOG --log-prefix "SFW2-INext-ACC-TCP " --log-tcp-options --log-ip-options
-A input_ext -p tcp -m tcp --dport 22 -j ACCEPT
-A input_ext -p udp -m udp --dport 21025 -j ACCEPT
-A input_ext -m limit --limit 3/min -j LOG --log-prefix "SFW2-INext-DROP-DEFLT " --log-tcp-options --log-ip-options
-A input_ext -j DROP
-A reject_func -p tcp -j REJECT --reject-with tcp-reset
-A reject_func -p udp -j REJECT --reject-with icmp6-port-unreachable
-A reject_func -j REJECT --reject-with icmp6-addr-unreachable
-A reject_func -j DROP
COMMIT
# Completed on Thu Jul 23 23:27:28 2015

Ich werde daraus gar nicht schlau. Aber ich hoffe mal, dass Du darin die Lösung für mein Problem entdecken kannst.

Gruß Jörn.
 

josef-wien

Ultimate Guru
Ich muß vorausschicken, daß ich zu Deinem Produkt und den dadurch entstehenden Sicherheitsrisiken nichts beitragen kann. Hier müssen dich andere Mitglieder unterstützen.

Prinzipiell ist es sinnvoll, daß sofort nach den durch
Code:
-A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m conntrack --ctstate RELATED -j ACCEPT
erlaubten Zugängen für bestehende "Verbindungen" durch
Code:
-A input_ext -m pkttype --pkt-type broadcast -j DROP
alle Broadcast-Pakete verworfen werden. Wenn Du "neue" Broadcast-Pakete empfangen willst, muß diese Definition daher vor dem Verwerfen erfolgen. Ob das mit YaST möglich ist, kann ich nicht sagen. Manuell kannst Du es erreichen, in dem Du in /etc/sysconfig/SuSEfirewall2 mittels FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom" diese Datei aktivierst und dort im Abschnitt fw_custom_after_chain_creation() die gewünschten Definitionen triffst.

Die "generelle" Freigabe eines Ports mit
Code:
iptables -A input_ext -p tcp -m tcp --dport 22000 -j ACCEPT
würde ich nicht machen, die Einschränkung zumindest auf Adressen mit
Code:
iptables -A input_ext -s 192.168.1.0/24 -p tcp -m tcp --dport 22000 -j ACCEPT
halte ich für sinnvoller (beide Besipiele sind Deiner iptables-Ausgabe entnommen). Was Du wirklich brauchst, kann ich nicht beurteilen, gegebenenfalls mußt Du in YaST dafür sorgen, daß alle abgewiesenen Zugriffe protokolliert werden, und das Protokoll auswerten (dmesg, /var/log/firewall, journalctl, ...).

Joern_W schrieb:
schon alles mögliche ausprobiert
So sieht es auch aus. Du solltest zuerst alle bisherigen Definitionen entfernen, bevor Du frisch ans Werk gehst. Etwas Beschäftigung mit ip[6]tables kann nicht schaden.
 
Oben