Linux系统提供了多种防火墙解决方案,最常用的是iptables
和nftables
(较新系统)以及firewalld
(用户友好前端)。以下是主要方法:
# 查看当前规则
sudo iptables -L -n -v
# 允许已建立的连接
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# 允许SSH连接(端口22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许HTTP(80)和HTTPS(443)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 默认拒绝所有其他入站连接
sudo iptables -P INPUT DROP
# 允许所有出站连接
sudo iptables -P OUTPUT ACCEPT
# 保存规则(根据发行版不同)
sudo iptables-save > /etc/iptables/rules.v4 # Debian/Ubuntu
sudo service iptables save # CentOS/RHEL
# 查看当前规则
sudo nft list ruleset
# 基本配置示例
sudo nft add table inet filter
sudo nft add chain inet filter input { type filter hook input priority 0 \; }
sudo nft add chain inet filter forward { type filter hook forward priority 0 \; }
sudo nft add chain inet filter output { type filter hook output priority 0 \; }
# 允许已建立的连接
sudo nft add rule inet filter input ct state established,related accept
# 允许SSH
sudo nft add rule inet filter input tcp dport 22 accept
# 默认拒绝
sudo nft add rule inet filter input drop
# 持久化规则
sudo nft list ruleset > /etc/nftables.conf
# 查看状态
sudo firewall-cmd --state
# 查看活动区域
sudo firewall-cmd --get-active-zones
# 添加服务(如http)
sudo firewall-cmd --permanent --add-service=http
# 添加端口
sudo firewall-cmd --permanent --add-port=8080/tcp
# 移除规则
sudo firewall-cmd --permanent --remove-service=ssh
# 重新加载
sudo firewall-cmd --reload
# 列出所有允许的服务
sudo firewall-cmd --list-services
# 启用UFW
sudo ufw enable
# 允许SSH
sudo ufw allow ssh
# 允许特定端口
sudo ufw allow 80/tcp
# 允许IP范围
sudo ufw allow from 192.168.1.0/24
# 拒绝连接
sudo ufw deny http
# 查看状态
sudo ufw status verbose
# 删除规则
sudo ufw delete allow 80/tcp
systemctl status firewalld
等)根据您的Linux发行版和版本选择合适的工具,新系统推荐使用nftables或firewalld。