iptables 原来这么简单 快来打我* 2021-09-21 04:54 379阅读 0赞 你在找一个完整的iptables教程吗?在本文中,我们将向您展示如何在linux系统上安装和使用iptables。通过了解这个Linux防火墙工具,您可以使用命令行界面更好的保护Linux,免受攻击。 一、什么是iptables ,它是如何工作的? 简单地说,iptables是一个Linux防火墙程序。它将使用表(tables)来监视服务器发送及接收的数据包。这些表包含一组称为链(chains)的规则,这些规则将过滤发送和接收的数据包。 当数据包与规则匹配时,将为其指定一个目标,该目标可以是另一个链或下面这些特殊值之一: * ACCEPT- 允许数据包通过。 * DROP -不允许数据包通过。 * RETURN–阻止数据包穿过某一个链,并它返回到上一个链。 在继续学习之前,请确保您对您的计算机具有SSH root 或sudo访问权限。强调一点,iptables规则仅适用于ipv4。如果要为ipv6协议设置防火墙,则需要使用ip6tables。 二、如何安装和使用Iptables Linux防火墙 我们将把这个iptables教程分为三个步骤。首先,你将学习如何在Cent OS上安装这个工具。其次,我们将向您展示如何定义规则。最后,我们将指导您在iptables中进行持久的更改。 (一) 安装防火墙 Iptables在大多数Linux发行版中都是预先安装的。但是,如果默认情况下在Cent OS系统中没有,请执行以下步骤: 1、通过SSH连接到服务器“” 2、逐个执行以下命令: sudo yum update sudo yum install iptables 3、通过运行以下命令检查当前iptables配置的状态: sudo iptables -L -v 在这里,-L选项用于列出所有规则,-v用于以更详细的格式显示信息。 下面是输出示例: Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 现在您已经安装了Linux防火墙。如上图,您可以注意到所有的链都被设置为接受并且没有规则。这是不安全的,因为任何包都无需过滤,可以通过。接下来将讲解如何在iptables教程中定义规则。 (二)定义 chain 规则 定义规则意味着将其附加到链中。为此,需要在iptables命令后面插入-A选项(Append),如下所示: sudo iptables -A 它会提醒iptables您正在向链中添加新规则。然后,可以将该命令与其他选项相结合,例如 * \-i(interface)-要过滤其流量的网络接口,如eth0、lo、ppp0等。 * \-p(protocol)-过滤需要过滤的网络协议。包括tcp、udp、udplite、icmp、sctp、icmpv6等等。或者,您可以键入all来选择每个协议。 * \-s(source)-流量来自的地址。您可以添加主机名或IP地址。 * –dport(目标端口)-协议的目标端口号,如22(SSH)、443(https)等。 * \-j(target)-目标名称(ACCEPT、DROP、RETURN)。每次制定新规则时都需要插入此项。 如果要使用所有命令,则必须按以下顺序编写命令: sudo iptables -A <chain> -i <interface> -p <protocol (tcp/udp) > -s <source> --dport <port no.> -j <target> 一旦您了解了基本语法,就可以开始配置防火墙,为您的服务器提供更多的安全性。对于这个iptables教程,我们将以输入链(Input Chain)为例。 1 在本地主机上启用通信:要允许本地主机上的通信,请键入以下命令 sudo iptables -A INPUT -i lo -j ACCEPT 对于这个iptables教程,我们使用lo或loopback接口。它用于本地主机上的所有通信。上面的命令将确保数据库和同一台计算机上的web应用程序之间的连接正常工作。 2 在HTTP、SSH和SSL端口上启用连接 接下来,我们希望http(端口80)、https(端口443)和ssh(端口22)连接正常工作。为此,我们需要指定协议(-p)和相应的端口(–dport)。您可以逐个执行这些命令: sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT 现在是检查规则是否已附加到iptables的时候了: sudo iptables -L -v 它应返回以下结果,这意味着将接受来自指定端口的所有TCP协议连接: ![20200321151728270.PNG][] 3 基于源的包过滤 Iptables允许您根据一个IP地址或一系列IP地址过滤数据包。您需要在-s选项之后指定它。例如,要接受来自192.168.1.3的数据包,命令将是: sudo iptables -A INPUT -s 192.168.1.3 -j ACCEPT 您还可以通过将ACCEPT目标替换为DROP来拒绝来自特定IP地址的数据包。 sudo iptables -A INPUT -s 192.168.1.3 -j DROP 如果要从一系列IP地址中DROP数据包,必须使用-m选项和IP range模块。然后,使用–src range指定IP地址范围。记住,连字符应该分隔没有空格的ip地址范围,如下所示: sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP 4 拒绝所有其它的流量 定义–dport规则后,对所有其他流量使用DROP目标是至关重要的。这将防止未经授权的连接通过其他打开的端口访问服务器。为此,只需键入: sudo iptables -A INPUT -j DROP 现在,指定端口之外的连接将被断开。 5 删除规则 如果要删除所有规则,进行防火墙配置初始化,可以使用-F选项(flush) sudo iptables -F 此命令将删除所有当前规则。但是,要删除特定规则,必须使用-D选项。首先,您需要输入以下命令来查看所有可用的规则: sudo iptables -L --line-numbers 您将得到一个包含数字的规则列表: Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- anywhere anywhere 2 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh 3 ACCEPT tcp -- anywhere anywhere tcp dpt:http 4 ACCEPT tcp -- anywhere anywhere tcp dpt:https 5 ACCEPT all -- 192.168.1.3 anywhere 6 DROP all -- anywhere anywhere source IP range 192.168.1.100-192.168.1.200 7 DROP all -- anywhere anywhere 要删除规则,请从列表中插入相应的链和编号。假设对于这个iptables教程,我们想要去掉输入链中的第三条规则。命令应该是: sudo iptables -D INPUT 3 三、保存更改 我们创建的iptables规则保存在内存中。这意味着我们必须在重启时重新定义它们。要使这些更改在重新启动服务器后保持不变,可以使用以下命令: sudo /sbin/iptables-save 它会将当前规则保存在系统配置文件中,每次服务器重新启动时都会使用该文件重新配置表。 请注意,每次更改规则时都应始终运行此命令。例如,如果要禁用iptables,则需要执行以下两行: sudo iptables -F sudo /sbin/iptables-save 您将看到以下结果: # Generated by iptables-save v1.4.21 on Sat Mar 21 16:26:27 2020 *filter :INPUT ACCEPT [18:2344] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [17:2206] COMMIT # Completed on Sat Mar 21 16:26:27 2020 四、结论 Iptables是一个强大的防火墙程序,您可以使用它来保护您的Linux服务器或 虚拟专用服务器(VPS)。最棒的是你可以根据自己的喜好定义各种规则。 在本iptables教程中,您已经学习了如何安装和使用该工具。现在,我们希望您可以管理您的规则集来过滤传入和传出的数据包。 是你自己测试的时候了,祝你好运! 参考: [https://www.hostinger.com/tutorials/iptables-tutorial][https_www.hostinger.com_tutorials_iptables-tutorial] [20200321151728270.PNG]: /images/20210920/68cbc08e631a40dda1477a48c96d3240.png [https_www.hostinger.com_tutorials_iptables-tutorial]: https://www.hostinger.com/tutorials/iptables-tutorial
还没有评论,来说两句吧...