Firewalld

-> Zeige die Konfiguration

bash# firewall-cmd --state
bash# firewall-cmd --get-default-zone
bash# firewall-cmd --get-active-zones
bash# firewall-cmd --list-all
bash# firewall-cmd --get-zones
bash# firewall-cmd --zone=home --list-all
bash# firewall-cmd --zone=public --list-ports
bash# firewall-cmd --list-all-zones | less

-> Ping wird nicht beantwortet

bash# firewall-cmd --add-rich-rule='rule protocol value=icmp reject'

-> SSH nur von Source mit Logging

bash# firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 service name=ssh log prefix="SSH Access" level="notice" accept'

“Rich Rules” by akumpf

Eine Source kann nicht mehreren Zonen hinzugefügt werden, denn:

It is important to understand that sources, just like interfaces, are just a way to decide what zone will the packet be sorted into. Both sources and interfaces do not decide whether to filter or allow a package.

firewall-cmd Options:

–permanent schreibt die Regel in Files (Reboot), daher –reload nötig

Die Reihenfolge innerhalb der Zone ist wichtig (der erste Treffer gewinnt):
–forwarding / masquerading
–logging
–deny
–allow

Rich Rule, um z.B. ssh nur von einem IP-Range eines bestimmten Netzwerkinterfaces zuzulassen (hier in der Default-Zone) und nicht nur für ein bestimmtes Interface. 
Gibt es nur ein Interface, kann man natürlich hierüber entweder sources IPs oder interface öffnen und es wird ein bestimmter Service (der aus dem Zoneset entfernt wird) für einen bestimmten, eingeschränkten IP-Range geöffnet.
(Oder man legt verschiedene Zonen für unterschiedliche Anforderungen an):

bash# firewall-cmd --remove-service ssh
bash# firewall-cmd --add-rich-rule='rule family="ipv4" source address="82.130.94.0/24" port port="22" protocol="tcp" accept' 
oder
bash# firewall-cmd --add-rich-rule='rule family="ipv4" source address="82.130.94.0/24" service name="ssh" accept'

Rich Rule, um z.B. Port 19999 nur von einer bestimmten MAC Adresse zuzulassen (dieser Port muss dann aus dem allg. Zone-Set gelöscht werden, sonst ist er ja darüber offen):


bash# firewall-cmd --remove-port=19999/tcp
bash# firewall-cmd --add-rich-rule='rule family="ipv4" source mac="78:31:c1:cd:a5:b0" port port="19999" protocol="tcp" accept'

Manualpages:

bash# man firewalld.richlanguage