当前位置:   article > 正文

iptables防火墙基础_防火墙iptables基础

防火墙iptables基础

目录

前言:

一、Linux防火墙基础

1、防火墙简介

2、netfilter和iptables的主要区别如下

3、iptables的表、链结构

3.1、四个规则表

3.2、五个规则链

4、数据包过滤的匹配流程

4.1、规则表之间的优先顺序

4.2、规则链之间的匹配顺序

5、规则链内部各条防火墙规则之间的顺序

二、编写防火墙规则

1、iptabes工具安装

2、iptables防火墙基本语法

2.1、语法格式简介

2.2、数据包的常见控制类型

 3、添加、查看、删除规则等基本操作

3.1、添加新的规则

3.2、查看规则列表

总结:


前言:

       为了保护网络服务器,过滤企业不需要的访问,阻止恶意入侵等都需要防火墙防护。这里将详

CentOS 6系统中的防火墙netfilter和iptables,以及CentOS 7系统中的防火墙firewalld。

一、Linux防火墙基础

1、防火墙简介

       Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,体现在对包内的

IP地址、端口等信息的处理上,属于典型的包过滤防火墙(或称为网络层防火墙)。 Linux系统的

防火墙体系基于内核编码实现,具有非常稳定的性能和极高的效率。

2、netfilter和iptables的主要区别如下

       iptables的作用是为包过滤机制的实现提供规则(或称为策略),通过各种不同的规则,告诉

netfilter对来自某些源、前往某些目的或具有某些协议特征的数据包应该如何处理。netfilter和

iptables均可表示Linux防火墙,但是又有区别。

◆  netfilter:指的是 Linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于

“内核态”( Kernel Space,又称为内核空间)的防火墙功能体系。

◆  iptables:指的是用来管理 Linux防火墙的命令程序,通常位于/sbin/ iptables目录下,属于“用户

态”( User Space,又称为用户空间)的防火墙管理体系。

3、iptables的表、链结构

       其中,每个规则“表”相当于内核空间的一个容器,根据规则集的不同用途划分为默认的四个

表;在每个“表”容器内包括不同的规则“链”,根据处理数据包的不同时机划分为五种链;而决定是

否过滤或处理数据包的各种规则,按先后顺存放在各规则链中。四个规则表分别由独立的内核模块

实现;

3.1、四个规则表

◆  raw:主要用来决定是否对数据包进行状态跟踪。raw表对应的内核模块为iptable_raw,表内包

含两个规则链OUTPUT、PREROUTING。

◆  mangle :  修改数据包内容(TOS服务类型;TTL生存周期);给数据包设置Mark标记,用来实

现流量整形、策略路由等高级应用。mangle表对应的内核模块为iptable_mangle,包含五个规则链

INPUT、 OUTPUT、 FORWARD、 PREROUTING、 POSTROUTING。

◆  nat:负责网络地址转换,用来修改数据包中的源、目标IP地址或端口等信息。net表对应的内核模块为iptable_nat,表内包含三个规则链OUTPUT、PREROUTING、

POSTROUTING。

◆  filter:用来对数据包进行过滤,根据具体的规则要求决定决定是否放行该数据包(过滤)。filter表

对应的内核模块为iptable_ filter,包含三个链,即PREROUTING、POSTROUTING、OUTPUT。

       注意:在iptables 的四个规则表中,mangle 表 和raw表的应用相对较少。

3.2、五个规则链

◆  INPUT:处理入站数据包,匹配目标IP为本机的数据包。即当收到访问防火墙本机地址的数据包时使用此链表规则。

◆  OUTPUT:处理出站数据包,一般不在此链上做配置。即当防火墙本机向外发送数据包时使用

此链表规则。

◆  FORWARD:处理转发数据包,匹配流经本机的数据包。即当接收到需要通过防火墙中转发送

给其它地址的数据包时使用此链表规则。

◆  PREROUTING链:在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于

把内网服务器的IP和端口映射到路由器的外网IP和端口上。

◆  POSTROUTING链:在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内

网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网。

注意:INPUT、 OUTPUT链主要用在“主机型防火墙”中,即主要针对服务器本机进行保护的防火

墙;而FORWARD、 PREROUTING、 POSTROUTING链多用在“网络型防火墙”中,如使用 Linux

防火墙作为网关服务器,在公司内网与 Internet之间进行安全控制。

4、数据包过滤的匹配流程

4.1、规则表之间的优先顺序

       规则表应用顺序依次为:raw → mangle → nat → filter

4.2、规则链之间的匹配顺序

       根据规则链的划分原则,不同链的处理时机是比较固定的,因此规则链之间的应用顺序取决于

数据包的流向。如图示:

4.2.1、主机型防火墙:

       ◆  入站数据流向:来自外界的数据包到达防火墙后,首先被 PREROUTING链处理(是否修改

数据包地址等),然后进行路由选择(判断该数据包应发往何处);如果数据包的目标地址是防火

墙本机(如 Internet用户访问网关的Web服务端口),那么内核将其传递给 INPUT链进行处理(决

定是否允许通过等),通过以后再交给系统上层的应用程序(如 httpd服务器)进行响应。

        入站数据(来自外界的数据包,且目标地址是防火墙本机) : PREROUTING --> INPUT --> 本机

的应用程序。

◆  出站数据流向:防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网DNS服务

时),首先被 OUTPUT链处理,然后进行路由选择,再交给 POSTROUTING链进行处理(是否修

改数据包的地址等)。

        出站数据(从防火墙本机向外部地址发送的数据包):本机的应用程序--

>OUTPUT-.>POSTROUTING

4.2.2、网络型防火墙:

       ◆  转发数据流向:来自外界的数据包到达防火墙后,首先被 PREROUTING链处理,然后再进

行路由选择;如果数据包的目标地址是其他外部地址(如局域网用户通过网关访问QQ服务器),

则内核将其传递给 FORWARD链进行处理(允许转发或拦截、丢弃),最后交给 POSTROUTING

链进行处理(是否修改数据包的地址等)。

        转发数据(需要经过防火墙转发的数据包) : PREROUTING --> FORWARD -->

POSTROUTING。

5、规则链内部各条防火墙规则之间的顺序

       当数据包经过每条规则链时,依次按第一条规则、第二条规则……的顺序进行匹配和处理。链

内的过滤遵循“匹配即停止”的原则,一旦找到一条相匹配的规则(使用L0G日志操作的规则除

外),则不再检查本链内后续的其他规则。如果比对完整个链,也找不到与数据包相匹配的规则,

就按照该规则链的默认策略进行处理(未修改的状况下,默认策略为允许)。

二、编写防火墙规则

1、iptabes工具安装

        CentOS 7默认使用firewalld防火墙,没有安装iptables,若想使用iptables防火墙。必须先关闭

firewalld防火墙,再安装iptables。

  1. [root@kang ~]# systemctl stop firewalld.service #关闭firewalld防火墙
  2. [root@kang ~]# systemctl disable firewalld.service
  3. [root@kang ~]# setenforce 0
  4. [root@kang ~]# yum -y install iptables-services #安装iptables 防火墙
  5. ……
  6. [root@kang ~]# systemctl start iptables.service #开启服务
  7. [root@kang ~]# systemctl enable iptables.service #设置iptables开机自启动

2、iptables防火墙基本语法

2.1、语法格式简介

 

注意:选项、链名、控制类型使用大写字母,其余均为小写。

其中:

◆表名、链名:用来指定 iptables 命令所操作的表和链,未指定表名时将默认使用 filter 表,未指定

链名时,默认指表内的所有链;

◆管理选项:表示iptables规则的操作方式,如插入、增加、删除、查看等;

◆匹配条件:用来指定要处理的数据包的特征,不符合指定条件的数据包将不会处理(必须指

定);

◆控制类型:指的是数据包的处理方式,如允许、拒绝、丢弃等。

2.2、数据包的常见控制类型

        对于防火墙,数据包的控制类型非常关键,直接关系到数据包的放行、封堵及做相应的日志

记录等。在 iptables 防火墙体系中,最常用的几种控制类型如下。

  • ACCEPT:允许数据包通过。
  • DROP:直接丢弃数据包,不给出任何回应信息。
  • REJECT:拒绝数据包通过,必要时会给数据发送端一个响应信息。
  • LOG:在/var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则。(防火墙规则的“匹配即停止”对于LOG操作来说是一个特例,因为LOG只是一种辅助动作,并没有真正处理数据包)。
  • SNAT:修改数据包的源地址。
  • DNAT:修改数据包的目的地址。
  • MASQUERADE:伪装成一个非固定公网IP地址。

 3、添加、查看、删除规则等基本操作

iptables 命令的常用管理选项如下

选项

功能及特点

-A

在指定链末尾追加(--append)一条新的规则

-I

在指定链首行插入(--insert)一条新的规则,未指定序号默认作为第一条规则

-P

设置指定默认策略(--policy)

-D

删除(--delete)指定链中的某一条规则,可指定规则序号或具体内容

-R

修改、替换(--replace)指定链中的某一条规则,可指定规则序号或具体内容

-L

查看,列出(--list)指定链中所有的规则,若未指定链名,则列出表中所有的链

-F

清空(--flush)指定链中所有规则,若未指定链名,则清空表中所有的链

-X

清空自定义链的规则,不影响其他链

-Z

清空链的计数器(匹配到的数据包的大小和总和)

-S

查看链的所有规则或者某个链的规则/某个具体规则后面跟编号

-n

使用数字形式(--numeric)显示输出结果,如显示IP地址而不是主机名

-v

查看规则列表时显示详细(--verbose)信息,常跟-L一起使用

-h

查看命令帮助信息(--help)

--line-number

查看规则列表时,同时显示规则在链中的顺序号

3.1、添加新的规则

  1. [root@kang ~]# iptables -t filter -I INPUT -p icmp -j REJECT
  2. #在filter表(-t filter)中的INPUT链中插入(-I)一条规则,
  3. 拒绝(-j REJECT)发给本机的使用ICMP协议的数据包(-p icmp)。
  4. 使得其他主机无法ping通本机。

 

3.2、查看规则列表

       查看已有的防火墙规则时,使用管理选项“-L”,结合“--line-numbers”选项还可显示各条规则在

链内的顺序号。

  1. [root@kang ~]# iptables -vnL #显示详细信息,,没有指定表都显示默认filter表信息。注意这里语法格式vnL顺序是不能改变的
  2. Chain INPUT (policy ACCEPT 20 packets, 1220 bytes)
  3. pkts bytes target prot opt in out source destination
  4. 0 0 REJECT icmp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
  5. #在filter表input链中添加的规则添加的
  6. ……
  7. [root@kang ~]# iptables -nL #友好显示
  8. Chain INPUT (policy ACCEPT)
  9. target prot opt source destination
  10. REJECT icmp -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
  11. Chain FORWARD (policy ACCEPT)
  12. target prot opt source destination
  13. ……
  14. [root@kang ~]# iptables -t nat -nL #或者指定表查看,
  15. ……
  16. Chain OUTPUT (policy ACCEPT)
  17. target prot opt source destination
  18. Chain POSTROUTING (policy ACCEPT)
  19. target prot opt source destination
  20. RETURN all -- 192.168.122.0/24 224.0.0.0/24
  21. RETURN all -- 192.168.122.0/24 255.255.255.255
  22. ……
  23. [root@kang ~]#

总结:

规则表的作用:容纳各种规则链;表的划分依据:防火墙规则的作用相似。

规则链的作用:容纳各种防火墙规则;规则的作用:对数据包进行过滤或处理 ;链的分类依据:处

理数据包的不同时机。

四表:raw、mangle 、nat、filter

五链:INPUT、 OUTPUT、FORWARD、 PREROUTING、 POSTROUTING

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/631828
推荐阅读
相关标签
  

闽ICP备14008679号