(Linux) Firewall

Aus TippvomTibb
Zur Navigation springen Zur Suche springen

Allgemeines

Viele Jahre habe ich mich an iptables gewoehnt, aber die Zeit scheint reif fuer einen Wechsel auf den "Nachfolger". Ab OpenSuSE 15.x ist firewalld mit an Board. Bei den anderen Distros kuendigt sich der Wechsel auch an. Damit mir die Umstellung nicht ganz so schwer faellt habe ich mir hier die wichtigsten Befehle zusammengestellt.

Firewalld Wiki

Vordefinierte Zone-Configs

  • block Alle eingehenden Netzwerkverbindungen (Versuche) werden abgewiesen. Nur Netzwerkverbindungen die vom eigenen System kommen sind moeglich.
  • dmz – Klassische DMZ, die begrenzten Zugriff auf das LAN und nur bestimmte eingehende Ports erlaubt.
  • drop – Alle eingehenden Netzwerkverbindeungen (Versuche) werden verworfen und nur ausgehende Netzwerkverbindeungen sind erlaubt.
  • external – Nuetzlich fuer Router-Verbindungen. Man benoetigt sowohl ein LAN als auch ein WAN Interface damit das Masquerading (NAT) richtig funktioniert.
  • home – Nuetzlich fure Home-Computer und Laptops im eigenen LAN, in dem sich alle COmputer gegenseitig vertrauen. Es sind nur ausgewaehlte TCP/IP-Ports erlaubt.
  • internal – Zur Verwendung in internen Netzwerken, wenn Sie den anderen Servern oder Computer im LAN größtenteils vertrauen.
  • public – Sie vertrauen keinen anderen Computern und Servern im Netzwerk. Sie vertrauen keinen anderen Computern und Servern im Netzwerk. Sie lassen nur die erforderlichen Ports und Dienste zu. Verwenden Sie für Cloud-Server oder Server, die bei Ihnen gehostet werden, immer die öffentliche Zone.
  • trusted – Alle Netzwerkverbindunegn sind erlaubt. Ich empfehle diese Zone nicht für dedizierte Server oder VMs, die mit dem WAN verbunden sind.
  • work – Zur Verwendung an Ihrem Arbeitsplatz, an dem Sie Ihren Kollegen und anderen Servern vertrauen.

Die Beschreibungen der Zonen dient nur einer groben Einschaetzung. Es bleibt einem wohl nicht erspart in die Zonen-Configs hineinzuschauen.

cat zones

tibb:~ # cat /usr/lib/firewalld/zones/block.xml 
<?xml version="1.0" encoding="utf-8"?>
<zone target="%%REJECT%%">
  <short>Block</short>
  <description>Unsolicited incoming network packets are rejected. Incoming packets that are related to outgoing network connections are accepted. Outgoing network connections are allowed.</description>
</zone>

tibb:~ # cat /usr/lib/firewalld/zones/dmz.xml 
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>DMZ</short>
  <description>For computers in your demilitarized zone that are publicly-accessible with limited access to your internal network. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
</zone>

tibb:~ # cat /usr/lib/firewalld/zones/docker.xml 
<?xml version="1.0" encoding="utf-8"?>
<zone target="ACCEPT">
  <short>docker</short>
  <description>All network connections are accepted.</description>
  <interface name="docker0"/>
</zone>

tibb:~ # cat /usr/lib/firewalld/zones/external.xml 
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>External</short>
  <description>For use on external networks. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <masquerade/>
</zone>

tibb:~ # cat /usr/lib/firewalld/zones/home.xml 
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Home</short>
  <description>For use in home areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="mdns"/>
  <service name="samba-client"/>
  <service name="dhcpv6-client"/>
</zone>

tibb:~ # cat /usr/lib/firewalld/zones/internal.xml 
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Internal</short>
  <description>For use on internal networks. You mostly trust the other computers on the networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="mdns"/>
  <service name="samba-client"/>
  <service name="dhcpv6-client"/>
</zone>

tibb:~ # cat /usr/lib/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>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
</zone>

tibb:~ # cat /usr/lib/firewalld/zones/trusted.xml 
<?xml version="1.0" encoding="utf-8"?>
<zone target="ACCEPT">
  <short>Trusted</short>
  <description>All network connections are accepted.</description>
</zone>

tibb:~ # cat /usr/lib/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"/>
  <service name="dhcpv6-client"/>
</zone>

Befehle

ls -l /usr/lib/firewalld/zones/
ls -l /usr/lib/firewalld/services/
cat /usr/lib/firewalld/zones/public.xml
sudo firewall-cmd --get-default-zone
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all
sudo firewall-cmd --list-all --zone=public
sudo firewall-cmd --remove-service=dhcpv6-client --permanent --zone=public
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --zone=public --add-port=9009/tcp --permanent
sudo firewall-cmd --zone=public --remove-port=23/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=internal --list-ports
sudo firewall-cmd --list-services
sudo firewall-cmd --list-services --zone=public
sudo firewall-cmd --list-services --permanent
firewall-cmd --zone=public --list-all --permanent
sudo firewall-cmd --get-services | grep nfs3
sudo firewall-cmd --state
sudo firewall-cmd --list-services --zone=home
sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
sudo firewall-cmd --zone=public --remove-forward-port=port=80:proto=tcp:toport=8080
sudo firewall-cmd --zone=public --add-masquerade
sudo firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=443:toaddr=192.168.2.42 --permanent 
sudo firewall-cmd --zone=public --remove-masquerade
sudo firewall-cmd --zone=public --remove-forward-port=port=443:proto=tcp:toport=443:toaddr=192.168.2.42 --permanent
sudo firewall-cmd --permanent --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.3.5" port port=22 protocol=tcp accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="11211" accept'
sudo firewall-cmd --remove-rich-rule 'rule family="ipv4" source address="192.168.3.5" port port=22 protocol=tcp accept' --permanent
sudo firewall-cmd --remove-rich-rule 'rule family="ipv4" source address="192.168.2.0/24" port port="11211" protocol="tcp" accept' --permanent
 sudo firewall-cmd --list-rich-rules --permanent

Quelle

[1]