Built a persistent iptables firewall with a default-DROP policy on INPUT, explicit rules for loopback, established connections and SSH, plus localhost-only access for internal services.
$ iptables -P INPUT DROP
$ iptables -A INPUT -i lo -j ACCEPT
$ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables -A INPUT -p tcp --dport 22 -j ACCEPT
$ netfilter-persistent save
✓ Rules survive reboot
iptables
netfilter-persistent
DROP vs REJECT
network security