War*_*ner 26
Netfilter 网站上提供了指向官方和推荐文档的链接。
这不是一个新课题,资源是无限的。
大多数基本命令都相当直观,可以很容易地参考联机帮助页。
netfilter 是启用包过滤的内核级技术,非常先进。还有一些额外的表可以处理数据包、转换数据包以及以其他方式影响路由。该iptables实用程序是用于与 netfilter 交互的用户空间工具。如果您想了解高级功能,我建议您参考上述文档。有关基本功能的介绍,请进一步阅读。
列出所有现有规则:
iptables -L -n
-n 防止 iptables 解析 ips,从而产生更快的输出。
默认表是filter表,用于将基本防火墙规则应用于三个链。在这三个默认链filter表INPUT,OUTPUT和FORWARD。
链在很大程度上是不言自明的。INPUT 链影响进入的数据包,OUTPUT 链影响本地生成的数据包,最后 FORWARD 用于通过系统路由的任何数据包。
在你可以指定的目标中,你可以DROP包,这意味着简单地忽略而不响应。您可以REJECT发送数据包,其中 icmp 响应将发送到拒绝源。最后,您可以使用ACCEPT它们,这允许数据包继续路由。
通常,对于面向外部的防火墙,默认选择将DROP与 相对REJECT,因为它减少了您的网络在 Internet 上的可见足迹。例如,以其他方式将服务限制到特定主机的 IP 使用DROP.
注意,-A意味着附加到链的末尾。如果你想插入到顶部,你可以使用-I. 所有规则都是自上而下处理的。 -D用于删除。
为了DROP从未来的传入数据包192.168.235.235:
iptables -A INPUT -s 192.168.235.235 -j DROP
这将跳转到DROP来自该 IP 的所有协议的目标。
接受:
iptables -A INPUT -s 192.168.235.235 -j ACCEPT
要防止从本地服务器或网络访问该 IP:
iptables -A OUTPUT -d 192.168.235.235 -j DROP
您可以指定-p协议、-s数据包的源、数据包的-d目标、目标端口--dport、源端口--sport以及许多其他会影响规则处理数据包方式的标志。
如果您的默认INPUT策略是DROP并且您希望允许192.168.123.0/24子网中的每个人都 访问您服务器上的 SSH,则这里是一个示例:
iptables -A INPUT -s 192.168.123.0/24 -p tcp --dport 22 -j ACCEPT
没错,您也可以使用CIDR 表示法!
一般来说,最好的默认策略是DROP针对所有链。每个链都有一个默认策略,由-P标志指定。即使您将策略设置为 default DROP,仍然建议将链中的最后一个条目也设为 a DROP。
例如,要将DROPINPUT、FORWARD 和 OUTPUT 链的策略更改为:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
Run Code Online (Sandbox Code Playgroud)
请注意,如果您在远程系统上为 INPUT 指定默认的 DROP 策略,而没有先允许自己 SSH 访问,则可能会阻止自己访问系统。如果在远程系统上,您可以指定一个临时 crontab 每 5 分钟刷新所有规则作为故障保护。
删除所有规则并允许所有流量:
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -X
iptables -F
Run Code Online (Sandbox Code Playgroud)
注意,-X删除所有创建的链。 -F刷新所有规则。
有本地工具可以保存和恢复规则。特别是,iptables-save和iptables-restore。大多数现代Linux发行版save和restore一个iptables中的函数初始化提供的系统文件。
还有其他防火墙最佳实践,例如丢弃格式错误的数据包和其他类型的不良流量。这是使用诸如Shorewall 之类的前端实用程序的优势之一,因为默认情况下它将实现其中的许多策略。尽管如此,我同意你的方法,并且更喜欢直接维护我自己的规则,并且这些相同的最佳实践可以在没有前端的情况下实现。
| 归档时间: |
|
| 查看次数: |
3279 次 |
| 最近记录: |