在Linux系统中配置防火墙主要可以通过以下工具实现:iptables(传统)、nftables(新一代替代工具)或firewalld(高级动态管理工具)。以下是具体配置方法:
iptables
(基础方法)查看当前规则
sudo iptables -L -n -v # 列出规则(-n禁用DNS解析,-v显示详细信息)
常用规则示例
bash
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
bash
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
bash
sudo iptables -A INPUT -i lo -j ACCEPT
bash
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
bash
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
保存规则
bash
sudo apt install iptables-persistent
sudo netfilter-persistent save
bash
sudo service iptables save
firewalld
(推荐用于RHEL/CentOS/Fedora)基本操作
sudo systemctl enable --now firewalld # 启用并启动
sudo firewall-cmd --state # 检查状态
开放端口/服务
bash
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
bash
sudo firewall-cmd --add-port=8080/tcp --permanent
bash
sudo firewall-cmd --reload
查看活动规则
sudo firewall-cmd --list-all
nftables
(替代iptables的现代工具)基础配置
/etc/nftables.conf
,示例规则:nft
table inet filter {
chain input {
type filter hook input priority 0;
# 允许SSH和HTTP
tcp dport {22, 80, 443} accept
# 允许已建立的连接
ct state established,related accept
# 拒绝其他入站
drop
}
}
bash
sudo nft -f /etc/nftables.conf
查看规则
sudo nft list ruleset
避免锁定自己
DROP
策略前,确保已允许SSH或其他管理端口。cron
或at
设置定时恢复规则。日志记录
bash
sudo iptables -A INPUT -j LOG --log-prefix "DROPPED: "
备份规则
sudo iptables-save > ~/iptables_backup.txt # iptables备份
sudo firewall-cmd --runtime-to-permanent # firewalld保存运行时配置
firewalld
(支持动态更新和区域概念)。iptables
或nftables
。nftables
(长期替代iptables)。根据你的发行版和需求选择合适的工具即可。