Linux防火墙基础与编写防火墙规则

Iptables采用了表和链的分层结构,每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默认的四个表,raw表,mangle表,nat表,filter表,每个表容器内包括不同的规则链,根据处理数据包的不同时机划分为五种链,而决定是否过滤或处理数据包的各种规则,按先后顺序存放在各规则链中。

1、防火墙:内核中具有包过滤体系

内核态:netfilter

用户态:iptables  管理工具

工作在网络层:可以对ip地址、端口、协议等信息进行处理

2、规则链:规则的集合

五种链:(必须大写)

INPUT:入站

OUTPUT:出站

FORWARD:转发

POSTROUTING:路由后转换

PREROUTING:路由前转换

1)INPUT链:当收到访问防火墙本机地址的数据包(入站),应用此链中的规则。

2)OUTPUT链:当防火墙本机向外发送数据包(出站)时,应用此链中的规则。

3)FORWARD链:当收到需要通过防火墙中转发送给其他地址的数据包(转发)时,应用此链中的规则。

4)PREROUTING链:在对数据包做路由选择之前,应用此链中的规则。

5)POSTROUTING链:在对数据包做路由选择之后,应用此链中的规则。

3、规则表:规则链的集合

有4个表:

Raw:状态跟踪

Mangle:设置标记

Nat:地址转换

Filter:包过滤

1)filter表:用来对数据包进行过滤,表内包含三个链,即:INPUT,FORWARD,OUTPUT

2)Nat表:nat表主要用来修改数据包的ip地址、端口号等信息。包含三个链,即PREROUTING,POSTROUTING,OUTPUT

3)Mangle表:用来修改数据包的TOS、TTL,或者为数据包设置MARL标记,实现流量整形,策略路由等高级应用,包含五个链,PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD

4)Raw表:用来决定是否对数据包进行状态跟踪,包含两个链:即OUTPUT,PREROUTING

4、规则的匹配顺序:

1)规则表的顺序

当数据包抵达防火墙时,将依次应用raw表,mangle表,nat表和filter表中对应链内的规则,应用顺序为raw-mangle-nat-filter

按顺序依次检查,匹配即停止(LOG策略除外),无匹配项,执行默认策略。

2)规则链之间的顺序

入站数据流向:来自外界的数据包到达防火墙后,首先被PRETOUTING链处理,然后进行路由选择,如果数据包的目标地址是防火墙本机,那么内核将其传递给INPUT链进行处理,通过以后再讲给系统的上层应用程序进行响应。

转发数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING链处理,然后再进行路由选择,如果数据包的目的地址是其他外部的地址,则内核将其传递给FORWARD链进行处理,最后交给POSTROUTING链进行处理。

出站数据流向:防火墙本机向外部地址发送的数据包,首先被OUTOUT处理,然后进行路由选择,再交给POSTROUTING链进行处理。

3)规则链内部各条防火墙规则之间的顺序

当数据包经过每条规则链时,依次按第一条规则,第二条规则......的顺序进行匹配和处理,链内的过滤遵循“匹配即停止”的原则,一旦找到一条相匹配的规则,则不再检查本链内后续的其它规则,如果比对完整个链,也找不到与数据包相匹配的规则,就按照规则链的默认策略进行处理。

5、iptables语法:

Iptables  -t  表名  命令选项  链名  条件选项  -j  控制类型

1)不指定表名,为filter表

2)命令选项、链名、控制类型必须大写,其他必须小写

3)条件选项可以设置多项

6、控制类型:

1)ACCEPT:允许

2)REJECT:拒绝,返回信息

3)DROP:丢弃,无信息

4)LOG:记录日志,传给下一条规则

5)SNAT:源地址转换

6)DNAT:目标地址转换

7)MASQUERADE:ip伪装,源地址转换

8)REDIRECT:重定向

7、命令选项:

-A:追加到末尾

-I:插入(默认插入到第一条)

-L:查看

-D:删除(必须加序号)

-F:清空,但默认策略不清空

-P:默认策略,只有ACCEPT或DROP两种

-R:替换

-X:删除自定义链

-N:新建自定义链

-n:以数字方式显示

--line-number:添加序号

8、条件选项:

1)通用匹配:不依赖于任何条件可直接使用

-s:源地址             -d:目标地址

-p:协议                 -i:入口

-o:出口               !:取反

2)隐含匹配:依赖指定的协议

--sport:源端口          --dport:目标端口

--tcp—flags:TCP标记

--icmp-type:icmp类型,有两种:

Echo-request(可用8代替)      请求

Echo-reply(可用0代替)        回应

开启转发功能:

永久有效:vim  /etc/sysctl.conf

Net.ipv4.ip_forward=1

生效:sysctl  -p

临时转发,立即生效

Sysctl  -w net.ipv4.ip_forward=1

Echo “1”  > /proc/sys/net/ipv4/ip_forward

3)显示配置:依赖于指定的功能模块,必须明确指定模块名称才可以使用

多端口匹配:-m  multiport --sports   源端口列表

-m  multiport  --dports  目的端口列表

IP范围匹配:-m  iprange --src-range  ip范围

MAC地址匹配:-m  mac  --mac-source MAC地址

状态匹配:-m  state --state   连接状态

linux编写iptables防火墙规则示例

iptables和asa防火墙类似,作用一样,都是为了保证网络安全,系统安全,服务器的安全,和asa一样也需要建立策略。

下面通过一个案例先了解一下iptables防火墙规则的相关基础操作。(关于防火墙的相关知识概念,请关注微信公众号 L宝宝聊IT  Linux防火墙基础与编写防火墙规则 文章)

实验环境:

网站服务器ip地址是192.168.1.5,网关服务器的内网地址是eth0:192.168.1.254,外网地址是eth1:172.16.16.254,internter测试机是172.16.16.172。实现三台系统之间可以互相ping通。

网管服务器需要开启路由转发功能

也可进入vim /etc/sysctl.conf 修改为 1 永久开启路由转发功能

最后测试可以互相ping通即可

下面介绍各种规则如何应用

一、编写防火墙规则

1、例如:在网站服务器的filter表的INPUT链中插入一条规则,拒绝发送给本机使用的ICMP协议的数据包。

执行:Iptables -t  filter  -I INPUT -p icmp  -j REJECT

查看规则:iptables -L INPUT --line-numbers

然后再次使用172.16.16.172ping192.168.1.5,出现目标端口不可到达,无法ping通

2、添加新的规则

例如:

1)在filter表INPUT链的末尾添加一条规则,接受tcp协议(实验之前在网站服务器上搭建ftp服务,使用internet测试机可以访问ftp服务器)

在internet测试机上访问

默认网站服务器的防火墙开启,所以不能访问,然后执行:

iptables -t   filter  -A INPUT  -p  tcp  -j   ACCEPT

发现依然不能访问,因为-A是在末尾添加一条新的规则

所以执行:Iptables  -I  INPUT  -p tcp  -j  ACCEPT(-I默认是添加在第一条)

再次访问ftp

在网站服务器上查看规则

例:2)添加规则允许udp数据包通过,默认位于filter的第一条

Iptables -I INPUT  -p  udp -j  ACCEPT

例:3)指定顺序号,添加规则允许icmp数据包通过,位于第2条

Iptables -I INPUT 2 -p icmp  -j  ACCEPT

查看规则列表:

3、以数字形式显示规则列表,加快执行速度

Iptables -n  -L  INPUT  (-n  -L  可简写为-nL)

4、删除,清空规则

1)若要删除filter表INPUT链中的第三条规则,执行:

Iptables -D  INPUT 3

2)清空指定链或表中的所有防火墙规则,使用-F

Iptables -F  INPUT

3)清空filter表,nat表,mangle表

Iptables   -F

Iptables   -t   nat   -F

Iptables   -t   mangle  -F

5、设置默认策略:当找不到任何一条能够匹配数据包规则时,则执行默认策略

例如1)将filter表中FORWARD链的默认策略设置为丢弃,OUTPUT链的默认策略设置为允许(默认策略不参与规则的顺序编排,因此在前后并无区别。)

二、规则的匹配条件

对于同一条防火墙规则,可以指定多个匹配条件,这些条件必须都满足规则才能生效。

1、通用匹配:分为三种类型,协议匹配,地址匹配,网络接口匹配。

1)协议匹配

如果在网关服务器上开启防火墙,那么internet测试机是不能访问网站服务器的。

查看网关服务器的FORWARD链,发现只有一条拒绝all。

如果想允许路由转发,执行下面的命令:

iptables -I  FORWARD  -j  ACCEPT,然后在internet测试机上可以访问网站服务器。

然后如果想丢弃通过icmp协议访问防火墙本机的数据包,允许转发经过防火墙的除icmp协议之外的数据包,可以执行:

Iptables -I  INPUT  -p  icmp -j  DROP

Iptables -A  FORWARD  !  -p  icmp -j  ACCEPT

执行之前先在internet测试机上ping网关服务器的172.16.16.254和192.168.1.5都是可以ping通的。执行完之后就不能ping通了,但是依然能够访问网站服务器的ftp。

先在internet测试机上ping,可以ping通

然后在网关服务器上执行以下命令

在internet测试机上ping192.168.1.5和172.16.16.254都不通了,但是ftp依然可以访问。

2)地址匹配

例1)例如:拒绝转发源地址为172.16.16.172的数据,允许转发源地址192.168.1.0的数据包

因为172.16.16.172就是internet测试机,所以internet测试机无法ping通192.168.1.5,也不能访问ftp

例2)如果检测到来自某网段的频繁扫描,登录等不良的企图,可以立即添加防火墙规则进行封锁。

Iptables  -I  INPUT  -s 10.20.30.0/24  -j  DROP

Iptables  -I  FORWARD  -s  10.20.30.0/24  -j  DROP

3)网络接口匹配

例如:若要丢弃从外网接口访问防火墙本机且源地址为私有地址的数据包,执行以下操作:

首先:在172.16.16.172上ping172.16.16.254,使之可以ping通

然后执行以下命令:

再此在172.16.16.172上ping172.16.16.254,无法ping通,因为外网接口是eth1

2、隐含匹配:以指定的协议匹配作为前提条件,相当于子条件。

1)端口匹配

例如:允许网段192.168.1.0/24转发dns查询数据包。

首先在网站服务器上开启dns服务

vim  /var/named/chroot/var/named/google.com.zone

为了实验效果,先在网关服务器上执行以下命令,阻止转发

Iptables -I  FORWARD  -j  REJECT

然后在internet测试机上执行nslookup,不能解析

接下来在网关服务器上执行隐含匹配,允许为172.16.16.0网段转发dns查询包

再次在internet测试机上测试解析

2)ICMP类型匹配

若要禁止从其他主机ping本机,但是允许本机ping其他主机,可以执行以下操作

首先为了实验测试方便,在网关服务器上执行:(执行之前把其它的规则都删掉,关闭防火墙即可编写规则后会自动打开)

nternet测试机和网站服务器之间可以互相ping通,然后执行:

如果实验不通,把上面的最后一条改为iptables -A INPUT -p icmp-j DROP

然后测试:

3、显示匹配

必须调用相应的模块,然后方可设置匹配条件

1)多端口匹配

例如:允许网站服务器本机开放25、80、110、143端口

2)ip范围匹配

例如:禁止转发源地址位于192.168.4.21与192.168.4.28之间的tcp数据包。

3)mac地址匹配

例如:禁止以下mac地址的主机访问网站服务器的任何应用。

4)状态匹配

例如:禁止转发与正常tcp连接无关的非syn请求数据包(如伪造的网络攻击数据包)。

再例如:开放本机的web服务80端口,但对发给本机的tcp应答数据包予以放行,其他入站数据包均丢弃,对应的入站规则如下:

以上就时iptables防火墙规则的基本应用,下面时上机实验部分:

三、上机实验

1、实验环境和上面的一样

网站服务器ip地址是192.168.1.5,网关服务器的内网地址是eth0:192.168.1.254,外网地址是eth1:172.16.16.254,internter测试机是172.16.16.172。实现三台系统之间可以互相ping通。

2、为网站服务器编写入站规则

(1)本例中所有规则均在filter表的INPUT链内添加,默认策略设置为DROP。

(2)使用“-p icmp ! --icmp-type 8 ”的条件匹配非ICMP请求的数据包。

(3)使用“-p tcp --dport 80”的条件匹配对TCP 80端口的访问。

(4)使用“-p tcp -m state --stateESTABLISHED,RELATED”匹配TCP响应数据包。

[[email protected] ~]# iptables -P INPUT DROP

[[email protected] ~]# iptables -A INPUT -p icmp !--icmp-type 8 -j ACCEPT

[[email protected] ~]# iptables -A INPUT -p tcp--dport 80 -j ACCEPT

[[email protected] ~]# iptables -A INPUT -p tcp -mstate --state ESTABLISHED,RELATED -j ACCEPT

(5)测试入站控制效果:从其他主机可以访问本机中的Web服务,但不能访问其他任何服务(如FTP、DNS);从本机可以ping通其他主机,但其他主机无法ping通本机。

[[email protected] ~]# iptables -nL INPUT

Chain INPUT (policy ACCEPT)

target   prot opt source           destination

ACCEPT   icmp --  0.0.0.0/0         0.0.0.0/0    icmp !type 8

ACCEPT   tcp  --  0.0.0.0/0         0.0.0.0/0    tcp dpt:80

ACCEPT   tcp  --  0.0.0.0/0         0.0.0.0/0    state RELATED,ESTABLISHED

…… //其他测试过程略

3、为网关服务器编写转发规则

(1)本例中所有规则均在filter表的FORWARD链内添加,默认策略设置为DROP。

(2)针对TCP协议的80、20、21、25、110、143端口,以及UDP协议的53端口,分别为从局域网访问Internet、从Internet响应局域网请求的过程编写转发规则。

[[email protected] ~]# iptables -P FORWARD DROP

[[email protected] ~]# iptables -A FORWARD -s192.168.1.0/24 -p tcp -m multiport --dport 20,21,

80,25,110,143 -o eth1 -j ACCEPT

[[email protected] ~]# iptables -A FORWARD -i eth1-m state --state ESTABLISHED,RELATED -j ACCEPT

[[email protected] ~]# iptables -A FORWARD -s192.168.1.0/24 -p udp --dport 53 -oeth1 -j ACCEPT

[[email protected] ~]# iptables -A FORWARD -p udp--sport 53 -i eth1-j ACCEPT

(3)执行DNS查询,获知站点web.qq.com、w.qq.com、im.qq.com当前所用的IP地址包括:112.90.141.88、112.90.141.163、112.90.141.164、58.251.149.159、58.251.60.202、123.138.238.100、123.138.238.101。然后依次针对这些IP地址编写转发规则,禁止到TCP协议的80、443端口的访问。

[[email protected] ~]# vi /opt/black_ip.txt            //编写封禁地址列表

112.90.141.88

112.90.141.163

112.90.141.164

58.251.149.159

58.251.60.202

123.138.238.100

123.138.238.101

[[email protected] ~]# for i in `cat/opt/black_ip.txt`; do iptables -I FORWARD -d$i -p tcp -m multiport --dport 80,443 -j DROP ; done  //读取IP地址以插入规则

(4)测试转发控制效果:从局域网中的主机无法访问Internet中的web.qq.com等被封站点,但能够访问其他Web站点,也能够访问DNS、FTP等网络服务。

[[email protected] ~]# iptables -nL FORWARD

Chain FORWARD (policy DROP)

target  prot opt source        destination

DROP    tcp  --  0.0.0.0/0     123.138.238.101     multiportdports 80,443

DROP   tcp  --  0.0.0.0/0     123.138.238.100     multiport dports80,443

DROP   tcp  --  0.0.0.0/0    58.251.60.202       multiport dports80,443

DROP    tcp  --  0.0.0.0/0   58.251.149.159      multiport dports80,443

DROP    tcp  --  0.0.0.0/0     112.90.141.164      multiport dports80,443

DROP    tcp  --  0.0.0.0/0     112.90.141.163      multiport dports80,443

DROP   tcp  --  0.0.0.0/0     112.90.141.88       multiport dports

文章参考微信公众号:L宝宝聊IT

原文地址:https://www.cnblogs.com/L2366/p/9285917.html

时间: 2024-08-10 19:09:30

Linux防火墙基础与编写防火墙规则的相关文章

Linux防火墙基础知识及配置

Linux防火墙基础知识 Linux的防火墙正确的来说并不算是防火墙,只是一种防火墙的功能体现.我们现在来讲解下Linux的这个防火墙功能的详细解释. Linux的防火墙是由iptables与netfilter两个程序组成的,而iptables是一个单独的程序,netfilter是集成到内核中的一个程序,两个程序合作才能拥有完整的防火墙功能. Iptables的功能是向netfiler提供规则,netfilter则是将规则执行起来. Linux防火墙还分为主机防火墙与网络防火墙. 主机防火墙:工

linux防火墙(五)—— 防火墙的规则备份与还原

一.第一种备份还原用法,使用工具 iptables-save >/opt/iprules.txt iptables-restore < /opt/iprules.txt #注意导入的文件必须使用iptables-save工具导出来的才可以. 三.第二种备份还原用法,使用服务脚本 service iptables stop只是清空了用户态的规则,内核态的东西没有动. service iptables save 保存了规则 service iptables start只是又把/etc/syscon

防火墙基础(一)

防火墙基础 防火墙:一套安全隔离工具: 工作在网络边缘,对经过防火墙的数据报文,根据预先定义的匹配规则进行检测,如果能匹配,用预先定义好的处理机制进行处理, 如果不匹配,则用默认的处理机制进行处理的一套安全组件: 防火墙分为两种: 1)软件防火墙: 应用软件处理逻辑利用硬件实现的安全隔离: 2)硬件防火墙: 利用硬件实现安全隔离: 根据服务范围,防火墙分为两种: 1)主机防火墙: 工作在当前主机 2)网络防火墙 工作在当前局域网 Linux中防火墙的实现依赖:iptables/netfilter

防火墙基础知识

防火墙概念 隔离功能,工作在网络或主机边缘,对进出网络或主机的 数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一 组功能的组件,基本上的实现都是默认情况下关闭所有的通过型访问,只开放允 许访问的策略 工作特性(防火墙默认放行两种类型的数据包): 1.企业内网中的主机向外网发送的请求数据包 2.外网主机对内网主机的请求进行响应的数据包 防火墙种类 主机防火墙 网络层防火墙 通过检查数据流中每个数据的源地址,目的地址,所用端口号和协议 状态等因素,或他们的组合来确定是否允许该数

Linux下的配置iptables防火墙增强服务器安全

Linux下的配置iptables防火墙增强服务器安全 实验要求 iptables常见概念 iptables服务器安装及相关配置文件 实战:iptables使用方法 例1:使用iptables防火墙保护公司web服务器 例2:使用iptables搭建路由器,通过SNAT使用内网机器上网 例3:限制某些IP地址访问服务器 例4:使用DNAT功能把内网web服务器端口映射到路由器外网 实验环境 iptables服务端:xuegod-63   IP:192.168.1.63 iptables客户端:x

iptables防火墙基础

一.iptables基础: 1.了解iptables防火墙. (1)iptables的表:按照功能的不同表分为raw(状态跟踪).mangle(标记).nat(地址修改).filter(过滤). (2)iptables规则链:按照不同时机链分为INPUT(入站).OUTPUT(出站).FORWARD(转发).PREROUTING(路由前).POSTROUTING(路由后): 在链中存放规则: filter: INPUT/FORWARD/OUTPUT nat: PREROUTING/POSTROU

深入研究iptables防火墙基础

防伪码:没有比脚更长的路,没有比人更高的山 第十章 iptables防火墙(一) 前言:我们在以前学习过asa防火墙,对防火墙有一定的了解,那么iptables和asa防火墙类似,作用一样,都是为了保证网络安全,系统安全,服务器的安全,和asa一样也需要建立策略,个人觉得比asa的策略要繁琐一点,但"只要功夫深铁杵磨成针". 一.基础概念 1.iptables表.链结构 a.规则表 表的作用:容纳各种规则链 表的划分依据:防火墙规则的作用相似 默认包括4个规则表 raw表:确定是否对该

Linux -- 系统安全之Iptables防火墙(1)

Linux iptables防火墙介绍: 一.防火墙的概述 (一).防火墙的简介 防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性.它通过访问控制机制,确定哪些内部服务允许外部访问,以及允许哪些外部请求可以访问内部服务.它可以根据网络传输的类型决定IP包是否可以传进或传出内部网. 防火墙通过审查经过的每一个数据包,判断它是否有相匹配的过滤规则,根据规则的先后顺序进行一一比较,直到满足其中的一条规则为止,然后依据控制机制做出相应的动作.如果都不满足,则将数据

Linux -- 系统安全之Iptables防火墙(2)

一.iptables防水墙的实现方式及iptables命令的格式 iptables防火墙介绍 netfilter/iptables是Linux系统提供的一个非常优秀的防火墙工具,它完全免费.功能强大.使用灵活.占用系统资源少,可以对经过的数据进行非常细致的控制.本节首先介绍有关iptables防火墙的基本知识,包括netfilter框架.iptables防火墙结构与原理.iptables命令格式等内容. netfilter框架 Linux内核包含了一个强大的网络子系统,名为netfilter,它