Posted on September 23 2022 under networking, security, and linux
Enterprise Linux (RHEL/CentOS/Fedora/Rocky/Alma) has firewalld installed by default.
To install on Debian, run:
apt install firewall
systemctl enable firewalld
systemctl start firewalld
firewall-cmd --permanent --new-ipset=private-v4 --type=hash:net --family=inet
firewall-cmd --permanent --ipset=private-v4 --set-short="RFC1918"
firewall-cmd --permanent --ipset=private-v4 --set-description="RFC1918 Addresses"
firewall-cmd --permanent --ipset=private-v4 --add-entry=10.0.0.0/8
firewall-cmd --permanent --ipset=private-v4 --add-entry=172.16.0.0/12
firewall-cmd --permanent --ipset=private-v4 --add-entry=192.168.0.0/16
firewall-cmd --permanent --new-ipset=private-v6 --type=hash:net --family=inet6
firewall-cmd --permanent --ipset=private-v6 --set-short="ULA"
firewall-cmd --permanent --ipset=private-v6 --set-description="Unique Local Addresses"
firewall-cmd --permanent --ipset=private-v6 --add-entry=fc00::/7
firewall-cmd --permanent --new-ipset=link-local-v4 --type=hash:net --family=inet
firewall-cmd --permanent --ipset=link-local-v4 --set-short="Link Local"
firewall-cmd --permanent --ipset=link-local-v4 --set-description="Link Local Addresses"
firewall-cmd --permanent --ipset=link-local-v4 --add-entry=169.254.0.0/16
firewall-cmd --permanent --new-ipset=link-local-v6 --type=hash:net --family=inet6
firewall-cmd --permanent --ipset=link-local-v6 --set-short="Link Local"
firewall-cmd --permanent --ipset=link-local-v6 --set-description="Link Local Addresses"
firewall-cmd --permanent --ipset=link-local-v6 --add-entry=fe80::/10
firewall-cmd --permanent --zone=internal --add-source=ipset:private-v4
firewall-cmd --permanent --zone=internal --add-source=ipset:private-v6
firewall-cmd --permanent --zone=internal --add-source=ipset:link-local-v4
firewall-cmd --permanent --zone=internal --add-source=ipset:link-local-v6
firewall-cmd --permanent --zone=internal --add-service=ssh
firewall-cmd --permanent --zone=internal --add-service=cockpit
nmcli connection modify <interface> connection.zone public
systemctl restart NetworkManager
firewall-cmd --permanent --zone=public --add-interface=<interface>
firewall-cmd --permanent --zone=public --set-target=DROP
firewall-cmd --permanent --zone=public --add-icmp-block-inversion
firewall-cmd --permanent --zone=public --add-icmp-block=echo-request
firewall-cmd --permanent --zone=public --remove-service=ssh
firewall-cmd --permanent --zone=public --remove-service=cockpit
firewall-cmd --permanent --info-zone=internal
firewall-cmd --permanent --info-zone=public
firewall-cmd --reload
firewall-cmd --get-active-zones