在Linux中,使用iptables
增加防火墙规则需要管理员权限(root或sudo)。以下是详细操作指南:
iptables -A <链名> [匹配条件] -j <动作>
-A
:追加规则到链的末尾(也可用-I
插入到开头)<链名>
:如INPUT
(入站)、OUTPUT
(出站)、FORWARD
(转发)-j <动作>
:如ACCEPT
(允许)、DROP
(丢弃)、REJECT
(拒绝并回复)iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
bash
iptables -L -n -v # -n禁用DNS解析,-v显示详细信息
bash
iptables -D INPUT 3 # 删除INPUT链的第3条规则
bash
iptables -F
bash
iptables-save > /etc/iptables.rules
bash
service iptables save
iptables -A INPUT -p tcp --dport 5000:6000 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH Attempt: "
DROP
再放行必要规则:
bash
iptables -P INPUT DROP
nftables
或firewalld
(如CentOS 8+)。# 清空现有规则
iptables -F
# 允许本地和已建立连接
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# 允许SSH(限特定IP 192.168.1.100)
iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT
# 允许HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 拒绝其他所有入站流量
iptables -A INPUT -j DROP
# 保存规则(Debian/Ubuntu)
iptables-save > /etc/iptables.rules
通过以上步骤,您可以灵活控制Linux系统的网络流量。如需更复杂配置,可结合iptables
模块(如limit
、recent
)实现防DDoS等高级功能。