iptables 命令精华:打造安全的过滤规则

需积分: 16 6 下载量 127 浏览量 更新于2024-09-18 收藏 49KB DOCX 举报
"这篇文章主要介绍了iptables的常用语法,作者在阅读多本相关书籍后进行了总结,旨在分享给读者,特别是CSDN社区的朋友们。文章着重于iptables在filter表中的应用,以解决网络安全和服务器管理中的常见问题。" iptables是一个在Linux系统中用于网络流量控制的工具,它通过定义一系列规则来决定数据包如何被处理。本文重点介绍了filter表中的规则配置,这是iptables中最基础且最常用的表,用于决定数据包是否可以进入、离开或者通过防火墙。 1. 清除旧规则:`iptables -t filter -F` 命令用于清空filter表中的所有规则,确保在添加新规则前不会有遗留的影响。 2. 过滤不正常包:`iptables -t filter -A INPUT -p all -m state --state INVALID -j DROP` 这条规则会丢弃状态为INVALID的数据包,这些通常是由于网络异常或攻击产生的。 3. 设置INPUT链默认策略:`iptables -t filter -P INPUT REJECT` 将INPUT链的默认行为设置为拒绝,意味着任何未匹配到规则的数据包都会被拒绝。 4. 允许已建立的连接:`iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT` 允许来自已存在连接的返回数据包,以保持正常通信。 5. 允许特定端口的连接:`iptables -t filter -A INPUT -m state --state NEW -p tcp -m multiport --dports 22:80 -j ACCEPT` 或 `iptables -t filter -A INPUT -p tcp --syn -m state --state NEW -m multiport --dports 21,22,80 -j ACCEPT` 允许新的TCP连接到指定端口(如SSH、HTTP),解决服务器响应延迟问题,并确保DNS和DHCP服务不受影响。 6. 允许ICMP协议:`iptables -t filter -A INPUT -p icmp -j ACCEPT` 允许ICMP数据包通过,通常用于ping等网络诊断。 7. 本地接口输入:`iptables -t filter -A INPUT -i lo -j ACCEPT` 允许来自本地回环接口(lo)的数据包。 8. 拒绝其他所有输入:`iptables -t filter -A INPUT -j REJECT --reject-with icmp-host-prohibited` 对未被前面规则接受的数据包,返回一个"主机禁止"的错误信息。 此外,文中还提到了一些可选规则,如: - 阻止特定类型的ICMP数据包:`iptables -A INPUT -p icmp --icmp-type 8 -j DROP` - 只允许新的TCP连接到SSH端口:`iptables -A INPUT -p tcp --syn -dport 22 -m state --state NEW -j ACCEPT` - 拒绝特定TCP标志组合:`iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN -j DROP` 和 `iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP` - 允许来自特定MAC地址的TCP连接:`iptables -A INPUT -p tcp -dport 3306 -m mac --mac-source 00:02:b3:0c:23:1b -j ACCEPT` - 根据端口和MAC地址组合筛选:`iptables -A INPUT -p tcp --syn -m state --state NEW -m multiport --dports 20,21,22,23,25,80,110,443 -dport 6222 -j ACCEPT` 这些示例展示了iptables的强大功能,可以根据实际需求灵活定制网络安全策略。了解并熟练掌握iptables的语法对于系统管理员来说至关重要,能有效保护系统免受潜在威胁。