firewalld Zone-based firewall
Light · Postcard
102 × 152 mm · PDF
Dark · Postcard
102 × 152 mm · PDF
Ink saver · Postcard
102 × 152 mm · PDF
Light · A4 landscape
297 × 210 mm · PDF
Dark · A4 landscape
297 × 210 mm · PDF
Ink saver · A4 landscape
297 × 210 mm · PDF
Light · A3 landscape
420 × 297 mm · PDF
Dark · A3 landscape
420 × 297 mm · PDF
Ink saver · A3 landscape
420 × 297 mm · PDF
Start here
sudo firewall-cmd --state
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --list-all
sudo firewall-cmd --add-service=<service>
sudo firewall-cmd --permanent
--add-port=<port>/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --runtime-to-permanent
sudo firewall-cmd --get-services
Concepts
- Packet arrives on an interface or from a source
- Zone trust level
- Services, ports, rich rules allowed traffic
- Zone target default: reject
State and reload
firewall-cmd --state
firewall-cmd --reload
firewall-cmd --runtime-to-permanent
systemctl enable --now firewalld
Zones
firewall-cmd --get-zones
firewall-cmd --get-active-zones
firewall-cmd --get-default-zone
firewall-cmd --set-default-zone=<zone>
firewall-cmd --list-all
firewall-cmd --get-zone-of-interface=<iface>
firewall-cmd --zone=<zone> --list-all
firewall-cmd --permanent --zone=<zone>
--set-target=DROP
Services and ports
firewall-cmd --add-service=<service>
firewall-cmd --remove-service=<service>
firewall-cmd --list-services
firewall-cmd --get-services
firewall-cmd --add-port=<port>/tcp
firewall-cmd --add-port=<from>-<to>/udp
firewall-cmd --remove-port=<port>/tcp
firewall-cmd --list-ports
firewall-cmd --add-service=<service>
--timeout=10m
Rich rules
firewall-cmd --add-rich-rule='<rule>'
firewall-cmd --list-rich-rules
firewall-cmd
--remove-rich-rule='<rule>'
| Goal | Rule |
|---|---|
| Block a host |
rule family="ipv4" source
address="<ip>" reject
|
| Port from subnet |
rule family="ipv4" source
address="<cidr>" port
port="<port>" protocol="tcp"
accept
|
| Service with rate |
rule service name="<service>" accept
limit value="1/m"
|
| Log then drop |
rule family="ipv4" source
address="<cidr>" log prefix="fw
" level="warning" drop
|
Interfaces and sources
firewall-cmd --zone=<zone>
--add-interface=<iface>
firewall-cmd --zone=<zone>
--change-interface=<iface>
firewall-cmd --zone=<zone>
--add-source=<cidr>
firewall-cmd --permanent --zone=<zone>
--add-source=ipset:<name>
NAT and forwarding
firewall-cmd --zone=<zone> --add-masquerade
firewall-cmd --add-forward-port=<spec>
firewall-cmd --zone=<zone> --add-forward
Panic and logging
firewall-cmd --panic-on
firewall-cmd --panic-off
firewall-cmd --set-log-denied=all
Definitions
firewall-cmd --permanent --new-ipset=<name>
--type=hash:ip
firewall-cmd --permanent --ipset=<name>
--add-entry=<ip>
firewall-cmd --permanent --service=<name>
--add-port=<port>/tcp
firewall-cmd --permanent --new-policy=<name>
Recipes
sudo firewall-cmd --permanent --add-service=httpsudo firewall-cmd --permanent --add-service=httpssudo firewall-cmd --reloadsudo firewall-cmd --list-services
sudo firewall-cmd --add-port=8080/tcp --timeout=5m# test from another machinesudo firewall-cmd --runtime-to-permanent
sudo firewall-cmd --permanent --remove-service=sshsudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.0/24" service name="ssh" accept'sudo firewall-cmd --reload
sudo firewall-cmd --permanent --add-masqueradesudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toaddr=10.0.0.5:toport=8080sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=external --add-interface=eth0sudo firewall-cmd --permanent --zone=internal --add-interface=eth1sudo firewall-cmd --permanent --zone=external --add-masqueradesudo firewall-cmd --reload



