Linux防火墙规则核心在于理清数据包流向、匹配条件与动作逻辑,需先明确放行/拒绝策略及处理环节;iptables由filter、nat、mangle三表及五链构成,链内规则顺序匹配且命中即止,未匹配时依默认策略处理;配置前须查规则、备份、设超时回滚。

Linux防火墙规则的核心是理解数据包流向、匹配条件和动作逻辑,不是死记命令。真正写好规则,关键在“想清楚要放行什么、拒绝什么、在哪一环处理”。下面从基础概念到实际配置,一步步讲透。
iptables不是单一工具,而是由表(table)和链(chain)组成的规则容器:
每条链按顺序逐条匹配,一旦命中即执行动作并停止后续匹配(除非用-j跳转)。默认策略(policy)决定未匹配时的行为,比如iptables -P INPUT DROP表示INPUT链默认丢弃所有包——这很安全,但必须先放通SSH等必要流量,否则可能锁死远程连接。
别急着敲命令,先确认环境、理清需求、留好退路:
iptables -L -n -v(-n禁DNS解析,-v看包/字节计数);更清晰用iptables-save
iptables-save > /root/iptables-backup-$(date +%F).rules
(sleep 300; iptables-restore ,5分钟后若没手动确认,自动恢复
以下规则均基于filter表,假设你已设iptables -P INPUT DROP,需显式放行:
iptables -A INPUT -i lo -j ACCEPT(-i指定入接口,lo是loopback)iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT(现代内核推荐用-m conntrack --ctstate替代state模块)iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT(-s指定源IP,--dport目标端口)iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --rcheck --seconds 60 --hitcount 4 -j REJECT,再加一行-A INPUT -p tcp --dport 22 -m recent --name ssh --set -j ACCEPT(首次访问记录,1分钟内超3次就拒绝)iptables -A INPUT -s 203.0.113.45 -j DROP(DROP静默丢弃,REJECT会发RST/ICMP提示)重启后规则消失?被拒绝却不知原因?这些是真实运维痛点:
iptables-persistent,运行netfilter-persistent save;CentOS/RHEL 7+用service iptables save或直接写入/etc/sysconfig/iptables
iptables -A INPUT -p tcp --dport 80 -j LOG --log-prefix "HTTP-DENIED: ",日志出现在/var/log/messages或journalctl -k | grep HTTP-DENIED
tcpdump -i eth0 port 22看SSH包是否真被拦截,再对比iptables计数器变化(-v输出里的pkts字段)iptables -I INPUT 1 ...插到第1位基本上就这些。规则不在多,在准;不求炫技,但求可读、可维护、可回滚。真正上线前,在测试机上模拟攻击(如用nmap扫端口、hydra试爆SSH)、关掉再开网络服务验证连通性,比背一百条命令都管用。
以上就是Linux防火墙规则如何编写_从基础到进阶全流程讲透【教学】的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号