如何使用IPTables

对于希望保护Linux服务器安全的任何人来说,IPTables都是无价之宝。 它可以根据任意数量的标准,外部端口来阻止或接受数据包,并执行许多网络分析任务。 这在防御攻击时特别有用,因为它可以基于子网和其他条件执行所有操作。 但是,这种灵活的实用程序由于是命令行实用程序,因此非常复杂且令人困惑。 幸运的是,通过一些基本示例,可以使它的许多“有用性”变得更易于访问。

IPTables入门

默认情况下,该服务已安装在大多数Linux发行版上。 但是,为方便起见,本教程假定您拥有运行最新版本的Ubuntu或CentOS的专用服务器或虚拟服务器。

教科书

让我们逐步看一下可以使用该服务完成的一些任务示例。 这些命令使您感觉这是可能的,并且应该易于适应其他情况。

我们将从检查防火墙的状态开始。 该命令对于诊断问题非常有用,您可以使用它来确定哪些规则当前处于活动状态,以及给定条目是否可能意外阻止流量。

iptables -L -nv

现在,在这种情况下,我们仅显示防火墙规则的子集,仅显示NAT链。

iptables -t nat -L -nv

IPTable通常可以启动,停止或重新启动。 如果流量路由严重混乱,并且您想在出现问题时关闭整个子系统以进行调试,则此功能特别有用。

service iptables start
service iptables stop
service iptables restart

如果防火墙完全损坏,则可以一次清除所有IPTables规则。 请注意,在某些情况下,这可能会破坏高级设置和连接重定向,但通常不会破坏任何内容,您没有使用高级功能。 这是将其备份并重新启动的好方法。

iptables -F

假设您已经找到了一套很好的规则,并希望保留它们。 重新启动服务器后,它们将自动恢复。 在CentOS / Redhat下,输入以下命令,规则将保存在/ etc / sysconfig / Iptables中。

service iptables save

此命令可与其他发行版一起使用,并且保留/ root / myrules规则:

iptables-save > /root/myrules

如果您的规则在启动时未自动还原,请使用以下命令来还原它们。 在CentOS / Redhat上:

service iptables restart

在其他发行版中:

iptables-restore < /root/myrules

现在让我们继续创建特定类型的防火墙规则。 假设您要阻止来自10.01.10.1或10.01.10.0/24子网的所有流量。

iptables -A INPUT -s 10.10.10.1 -j DROP
iptables -A INPUT -s 10.10.10.0/24 -j DROP

现在,让我们阻止所有传入的SSH访问。 请注意这一点,如果您已通过SSH连接,则会终止当前连接:

iptables -A INPUT -p tcp --dport 22 -j DROP

现在,我们将结合前面的两个规则,阻止来自特定IP地址的SSH访问:

iptables -A INPUT -s 10.0.10.1 -p tcp --dport 22 -j DROP

该命令的作用恰恰相反。 它允许SSH流量从远程IP 10.01.10.1到本地IP 192.168.0.1。

iptables -A INPUT -s 10.10.10.1 -d 192.168.0.1 -p tcp --dport 22 -j ACCEPT

假设您需要为IP电话或游戏流量打开一系列TCP端口。 此命令打开端口30000-50000。

iptables -A INPUT -p tcp --dport 30000:50000 -j ACCEPT

或者您想阻止所有ICMP数据包。 出于各种原因,不建议这样做,但是以下命令显示了如何执行此操作。

iptables –A INPUT –p icmp –icmp-type echo-request –j DROP

也许您想转发港口? 您将端口1234转发到端口80。用实际的网络接口替换eth0。

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1234 -j REDIRECT --to-port 80

输出量

尽管这些示例是特定的,但很容易修改细节以实现各种相关目标。 以上命令足以构建响应型防火墙。 如果本指南对您有所帮助,请与可能也有兴趣的其他人分享。

Sidebar