iptables 原来这么简单

    你在找一个完整的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协议连接:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章