你在找一个完整的iptables教程吗?在本文中,我们将向您展示如何在linux系统上安装和使用iptables。通过了解这个Linux防火墙工具,您可以使用命令行界面更好的保护Linux,免受攻击。
一、什么是iptables ,它是如何工作的?
简单地说,iptables是一个Linux防火墙程序。它将使用表(tables)来监视服务器发送及接收的数据包。这些表包含一组称为链(chains)的规则,这些规则将过滤发送和接收的数据包。
当数据包与规则匹配时,将为其指定一个目标,该目标可以是另一个链或下面这些特殊值之一:
在继续学习之前,请确保您对您的计算机具有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您正在向链中添加新规则。然后,可以将该命令与其他选项相结合,例如
如果要使用所有命令,则必须按以下顺序编写命令:
sudo iptables -A -i -p -s
一旦您了解了基本语法,就可以开始配置防火墙,为您的服务器提供更多的安全性。对于这个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协议连接:
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