帮助中心

立即注册 咨询客服

当前位置:首页 > 帮助中心> 关于iptables命令的实用示例汇总

关于iptables命令的实用示例汇总

发布时间:2020年06月17日 09:58:48    来源: A5互联

作为一名数据中心Linux系统的管理员,如何管理Linux服务器上的网络流量永远是管理员/工程师的首要任务。

我们经常使用防火墙来管理网络流量,控制进出流量,所以这里我们学习iptables这个基于命令行表的Linux防火墙。

Iptables配置三种类型的表,这些表包含有内置的和用户自定义的规则的链,以控制系统上的I/O流量。

FILTER – 这是iptables的默认表。它包含三个链:

INPUT – 目的地为本地套接字的网络数据包

OUTPUT – 本地生成的网络数据包

FORWARD – 通过系统路由的网络数据包

NAT –这是网络数据包尝试创建新连接时系统参考的表。它具有以下内置链:

PREROUTING – 用于在收到网络数据包后立即对其进行更改

POSTROUTING –用于更改即将出门的网络数据包

OUTPUT – 用于更改本地生成的网络数据包

MANGLE – 这是用于更改网络数据包的表。以前有两个连锁店,但现在有五个:

PREROUTING – 用于更改传入的网络数据包

POSTROUTING – 用于更改传出网络数据包

INPUT – 用于传入数据包

OUTPUT – 用于更改本地生成的数据包

FORWARD – 用于通过盒子路由的数据包

本文旨在学习iptables CLI防火墙的用法。您将在此处看到有用的命令,该命令可为您自己的Linux服务器管理和配置iptables防火墙。

例子:

在这里,我们将使用一些使用示例来解释iptables工具,这些示例可以帮助您了解实际情况下的iptables使用。

1、管理iptables防火墙服务

要管理iptables服务,可以使用常规服务命令,该命令用于管理其他Linux服务。

在基于SystemD的Linux发行版上-

# systemctl start iptables

# systemctl stop iptables

# systemctl restart iptables

在基于SysVinit的Linux发行版上-

# /etc/init.d/iptables start

# /etc/init.d/iptables stop

# /etc/init.d/iptables restart

2、检查所有已配置的iptables防火墙规则

您可以使用以下命令检查现有已配置的iptables规则:

# iptables -L -n -v

您将获得如下输出:

还有一个选项可以检查特定表的已配置规则。要检查特定表的规则,请使用“ -t”选项,后跟表名称。例如,要检查NAT表,请使用以下命令:

# iptables -t nat -L -v -n

3、阻止iptables防火墙中的特定IP地址

您将有很多方式在iptables防火墙上阻止IP,特别是当我们从IP发现系统上任何异常或滥用行为时,我们就会这样做。

要使用iptables阻止IP地址,请使用以下命令:

# iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

您可以将“ xxx.xxx.xxx.xxx”替换为您的IP地址。您可以使用“ -A”选项将规则附加到所选链的末尾。

有时您需要阻止来自IP的TCP通信,并且可以使用“ -p”选项来指定协议,例如以下命令:

# iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP

4、在iptables防火墙中取消阻止IP地址

如果要从iptables规则中删除或取消阻止特定IP,则可以使用以下命令删除阻止规则:

# iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP

“ -D”选项是从所选链中删除一个或多个规则。您也可以使用“-– delete”代替“ -D”。

5、使用Iptables在特定端口上允许IP地址范围

有时您需要允许特定端口用于特定范围的IP或网络。假设您想允许端口25上的传出连接到网络192.160.5.0/24。

您可以使用以下命令执行此操作:

# iptables -A OUTPUT -p tcp -d 192.168.5.0/24 --dport 25 -j ACCEPT

6、使用iptables防火墙阻止社交网站

有时,您可以获得指示,以阻止任何社交媒体网站或办公室或特定系统中的工作网站。

假设我们需要使用iptables防火墙阻止facebook。com(请将com前的。换成.)用于特定系统。您可以使用以下三个步骤阻止facebook。com:

①首先,找到网站的IP地址

要查找facebook。com的IP地址,请使用以下命令。

# host facebook。com

facebook。com has address 31.13.80.36

facebook。com has IPv6 address 2a03:2880:f10e:83:face:b00c:0:25de

②查找该网站使用的网络ip范围

要通过facebook.com查找使用的网络范围,请使用以下命令:

# whois 31.13.80.36 | grep inetnum

inetnum: 31.13.64.0 - 31.13.127.255

在给定IP范围内计算CIDR之后,您将获得31.13.64.0/18。

③配置iptables规则以阻止IP范围

现在,您可以使用以下iptables命令在系统中阻止查找IP范围:

# iptables -A OUTPUT -p tcp --dport xxx -j DROP

7、iptables防火墙上的Blocak特定端口

有时我们需要阻止特定端口上的所有传入或传出流量。当您为Linux服务器进行安全设置时,都必须进行网络安全保护。

您可以使用以下命令来阻止特定端口上的传出连接:

# iptables -A OUTPUT -p tcp --dport xxx -j DROP

与上面的命令类似,您可以使用下面的命令来阻止特定端口上的传入连接:

# iptables -A INPUT -p tcp --dport xxx -j DROP

在下面给出的两个命令中,应将“xxx”替换为实际端口,如果要阻止UDP流量而不是TCP流量,请将“ TCP”更改为“ UDP”

8、在iptables上允许多个端口

iptables具有编写命令以在单个命令中配置多个端口的功能。要执行此操作,请使用以下命令中所示的多端口。

# iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT

# iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT

9、使用iptables配置端口转发

Linux iptables防火墙还支持端口转发,该端口转发功能可将一项服务的流量转发到另一端口。

您可以使用以下命令使用端口转发:

# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525

上面的命令将配置一个iptables规则,该规则将从端口25到2525转发网络接口“ eth0”上的所有传入流量。您可以根据需要更改端口。

10、使用iptables阻止HTTP端口上的网络泛洪

有时您会在网络接口上获得连接数,因为IP地址可能会在您的网站或应用程序的Web端口上请求太多连接。这可能会导致您的网站崩溃。您可以通过使用以下命令在iptables防火墙中添加流量控制规则来防止此类问题:

# iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT

上面的命令将每分钟传入连接限制为100,并将突发限制为200。您可以根据需要设置限制和突发限制。

11、阻止iptables上的传入ping请求

有时出于安全考虑,我们也会在Linux服务器上阻止ping请求。它不会满足至关重要的安全性要求,但是很好地知道如何进行配置。

要在Linux上阻止ping请求,请使用以下命令:

# iptables -A INPUT -p icmp -i eth0 -j DROP

12、允许使用iptables进行回送访问

从IP 127.0.0.1进行的访问称为回送,这是必不可少的,因此我们应始终使用以下命令将其保持活动状态:

# iptables -A INPUT -i lo -j ACCEPT

# iptables -A OUTPUT -o lo -j ACCEPT

13、将丢弃的数据包的日志保存在iptables上

如果要捕获网络接口“ eth0”上丢弃的数据包的日志,可以通过以下命令进行:

# iptables -A INPUT -i eth0 -j LOG --log-prefix "IPtables dropped packets:"

您可以根据需要更改“--log-prefix”的值。该日志将捕获在“ / var / log / messages”中,您可以在其中使用以下命令搜索日志:

# grep "IPtables dropped packets:" /var/log/messages

14、使用iptables阻止特定的MAC地址访问

使用iptables,可以使用以下命令从特定的MAC地址阻止对系统的访问:

# iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP

您可以使用您要阻止的实际MAC地址更改“ 00:00:00:00:00:00”。

15、使用iptables配置每个IP地址的并发连接数

有时您可能想限制传入流量的并发连接。如果要限制来自给定服务或端口上单个IP地址的同时连接,可以使用以下命令进行连接:

# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

上面的命令仅允许从单个IP到端口22的3个并发连接,在这里您可以更改端口号以配置服务。您也可以根据需要更改“ –connlimit-above”的值。

16、定义新的iptables链

iptables可以灵活地定义或配置链并在其中存储自定义规则。

您可以使用以下命令定义链:

# iptables -N custom-filter

现在,您可以使用以下命令检查新过滤器是否在iptables列表中:

# iptables -L

您将获得类似以下的输出:

17、刷新iptables防火墙链或规则

如果要刷新防火墙链,请使用带有“ -F”选项的iptables命令,如下所示:

# iptables -F

您可以选择使用“ -t”选项后跟表名从特定表中清除链,类似于以下命令:

# iptables -t nat -F

您可以在上面的命令中使用所需表更改要刷新的“ nat”。

18、将iptables规则保存或备份到文件中

有时,您需要在文件中保存或备份已配置的iptable规则,以使用它在其他系统中还原或配置相同的规则。

要将配置的规则保存在文件中,请使用“ iptables-save”命令,如下例所示:

# iptables-save > ~/iptables.rules

文件名和位置取决于您要放置的位置和文件名。

19、从文件还原或配置iptables规则

您可以使用“ iptables-restore”命令从文件中还原iptables规则,如下所示:

# iptables-restore < ~/iptables.rules

您可以在上面的命令中使用文件位置。

20、允许使用iptables建立和建立相关连接

网络流量按传入和传出连接类型分隔,您可以允许既建立的流量又相关的流量。

对于传入流量,可以使用以下命令:

# iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

对于传出流量,您可以使用以下命令:

# iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

21、在iptables中丢弃无效的数据包

使用iptables,可以将某些网络数据包标记为无效并将其丢弃。

要使用iptables丢弃无效的网络数据包,可以使用以下命令:

# iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

22、设置iptables规则以实现PCI合规性

如果您的站点具有直接或间接基于支付的解决方案,则需要PCI合规性。如果您需要将服务器配置为符合PCI,则不同的PCI合规供应商有许多要求,但有一些常见的设置规则。

在大多数情况下,您有多个IP地址。您需要为网站的IP地址应用以下规则。在添加规则之前,请确保要做什么,并在确定后执行命令。

23、使用iptables阻止网络接口上的连接

有时您具有多个网络接口,并且您希望根据每个接口来控制流量。您可以限制或阻止网络接口的连接。

您可以使用以下命令来阻止特定IP地址的网络接口连接:

# iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP

您可以使用要在网络接口“ eth0”上阻止的实际IP地址更改“ xxx.xxx.xxx.xxx”。如果您使用其他名称,也可以用网络接口名称替换“ eth0”。

24、通过iptables禁用外发邮件

如果您的系统不需要发送电子邮件,则最好阻止smtp端口以防止滥用。

您可以使用以下命令来阻止smtp端口:

# iptables -A OUTPUT -p tcp --dports 25,465,587 -j REJECT

结论

iptables是Linux操作系统中最有用,功能最强大的工具。它具有典型防火墙所具有的所有功能。对于每个Linux管理员或工程师来说,它都是一个方便的实用程序,而且大多数情况下,我们每天都必须使用它。

如果您想了解有关iptables的更多信息,可以浏览iptables手册页:# man iptables