Firewall

Ubuntu Firewall (UFW) Secure Baseline Configuration


sudo ufw reset  
sudo ufw default deny incoming  
sudo ufw default allow outgoing  

SSH (adjust port if not using 22)


sudo ufw allow 22/tcp comment 'SSH access'

HTTP/HTTPS (for web servers)


sudo ufw allow 80/tcp comment 'HTTP'  
sudo ufw allow 443/tcp comment 'HTTPS'

DNS


sudo ufw allow 53 comment 'DNS'

NTP (Time sync)


sudo ufw allow 123/udp comment 'NTP'

SMTP (Email)


sudo ufw allow 25/tcp comment 'SMTP'  
sudo ufw allow 587/tcp comment 'SMTP Submission'  
sudo ufw allow 465/tcp comment 'SMTPS'  

Rate limiting for SSH (prevent brute force)


sudo ufw limit 22/tcp

ICMP (ping) - enable carefully


sudo ufw allow proto icmp comment 'ICMP (ping)'

Block common attack vectors


sudo ufw deny 23/tcp comment 'Block Telnet'  
sudo ufw deny 135:139/tcp comment 'Block NetBIOS'  
sudo ufw deny 445/tcp comment 'Block SMB'  
sudo ufw deny 1433:1434/tcp comment 'Block MS-SQL'  

Application-Specific


sudo ufw allow 2375/tcp comment 'Docker API'  
sudo ufw allow 2376/tcp comment 'Docker TLS'


sudo ufw allow 6443/tcp comment 'Kubernetes API'
sudo ufw allow 10250/tcp comment 'Kubelet API'

Finalize


sudo ufw enable  
sudo ufw status numbered  
sudo systemctl enable ufw  

Check logs


sudo tail -f /var/log/ufw.log

To delete a rule:


sudo ufw delete [RULE_NUMBER]

My ufw


sudo ufw reset  
sudo ufw default deny incoming  
sudo ufw default allow outgoing
sudo ufw allow 22/tcp comment 'SSH access'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw allow 123/udp comment 'NTP'
sudo ufw allow 25/tcp comment 'SMTP'  
sudo ufw allow 53 comment 'DNS'
sudo ufw allow 587/tcp comment 'SMTP Submission'  
sudo ufw allow 465/tcp comment 'SMTPS'  
sudo ufw limit 22/tcp
sudo ufw deny 23/tcp comment 'Block Telnet'  
sudo ufw deny 135:139/tcp comment 'Block NetBIOS'  
sudo ufw deny 445/tcp comment 'Block SMB'  
sudo ufw deny 1433:1434/tcp comment 'Block MS-SQL'  
sudo ufw enable  
sudo ufw status numbered  
sudo systemctl enable ufw