RHCE(十八)Linux防火墙——iptables

防火墙概念

防火墙的核心是数据报文过滤,工作在主机或者网络的边缘,对进出的数据报文进行检查,监控,并且能够根据事先定义的匹配条件和规则做出相应的动作的组件,机制或者系统。

linux一般都是作为服务器系统来使用,对外提供一些基于网络的服务,通常我们都需要对服务器进行一些网络访问控制,类似防火墙的功能 。常见的访问控制包括:哪些ip可以访问服务器、可以使用哪些协议、哪些接口,是否通过数据包进行修改等。
如:服务器可能受到来自某个ip攻击,这时就需要禁止所有来自ip的访问。

防火墙分类

根据以下几种形式进行分类:

  1. 从软、硬件形式上分为 软件防火墙和硬件防火墙以及芯片级防火墙。
  2. 从防火墙技术分为 “包过滤型”和“应用代理型”两大类。
  3. 从防火墙结构分为——单一主机防火墙、路由器集成式防火墙和分布式防火墙三种。
  4. 按防火墙的应用部署位置分为 边界防火墙、个人防火墙和混合防火墙三大类。
  5. 按防火墙性能分为 百兆级防火墙和千兆级防火墙两类。

防火墙功能

1.可以保护易受攻击服务;
2.控制内外网之间网络系统的访问;
3.集中管理内网的安全性,降低管理成本;
4.提高网络的保密性和私有性;
5.记录网络的使用状态,为安全规划和网络维护提供依据‘

iptables

iptables 组成Linux平台下的包过滤防火墙,iptables 并不是真正的防火墙,iptables 是一个应用层的应用程序,它通过 Netfilter 放出的接口来对存放在内核内存中的 XXtable(Netfilter的配置表)进行修改。这XXtables由 表tables、链chains、规则rules组成,iptables在应用层负责修改这个规则文件。类似的应用程序还有 firewalld 。netfilter可以对数据进行允许、丢弃、拒绝。

netfilter

netfilter才是防火墙真正的安全框架(framework) ,netfilter位于内核空间。iptables其实是一个命令行工具, 位于用户空间,我们用这个工具操作真正的框架。

Netfilter是Linux操作系统核心层内部的一个数据包处理模块,它具有如下功能:

  • 网络地址转换(Network Address Translate)
  • 数据包内容修改
  • 以及数据包过滤的防火墙功能

iptables的规则

规则(rules) , 规则其实就是网络管理员预定义的条件,规则一般的定义为"如果数据包头符合这样的条件,就这样处理这个数据包"。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、 传输协议(如TCP、 UDP、 ICMP) 和服务类型(如HTTP、 FTP和SMTP)等。
当数据包与规则匹配时,iptables就根据规则所定 义的方法来处理这些数据包,如放行(accept) 、拒绝(reject) 和丢弃(drop) 等。配置防火墙的主要工作就是添加、修改和删除这些规则。

iptables工作原理

在这里插入图片描述
当我们启用了防火墙功能时,根据实际情况的不同,报文经过"链"可能不同。在如下一些常用场景中,报文的流向:

  1. 到本机某进程的报文: PREROUTING --> INPUT
  2. 由本机转发的报文: PREROUTING --> FORWARD --> POSTROUTING .
  3. 由本机的某进程发出报文(通常为响应报文) : OUTPUT --> POSTROUTING

五链

数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或者数条规则。 通俗的说,有很多条规则,把这些规则串到一个链条上的时候,就形成了"链"。
当一个数据包到达数据链时,iptables就会从链中第一条规则开始检查,看数据包是否满足规则所定义的条件。如果满足,系统就会根据该规 则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任意一条规则,iptables就会根据该链预 先定义的默认策略来处理数据包。

有以下五种链:

  • INPUT链:当接收到防火墙本机地址的数据包(入站)时,应用此链中的规则。
  • OUTPUT链:当防火墙本机向外发送数据包(出站)时,应用此链中的规则。
    raw
  • FORWARD链:当接收到需要通过防火墙发送给其他地址的数据包(转发)时,应用此链中的规则。
  • PREROUTING链:在对数据包作路由选择之前,应用此链中的规则,如DNAT。
  • POSTROUTING链:在对数据包作路由选择之后,应用此链中的规则,如SNAT。

四表

每个链中都有众多规则,我们把链中具有相同功能的规则的集合叫做"表”,所以说,不同功能的规则,我们可以放置在不同的表里进行管理,提供特定的功能,iptables内置了4个表。分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。

  • filter表: 负责过滤功能,根据具体的规则决定是否放行该数据包;内核模块: iptables filter
  • nat表: 网络地址转换功能,主要用于修改数据包的IP地址、端口号等信息;内核模块: iptable_ nat
  • mangle表: 拆解报文,做出修改,并重新封装的功能;ptable_ mangle
  • raw表: 原始报文,主要用于关闭nat表上启用的连接追踪机制;;内核模块: iptable_ raw

所以说我们自定义的所有规则,都是这四种分类中的规则。

4个表的优先级由高到低的顺序为:raw–>mangle–>nat–>filter
例:如果PREROUTING链上,即有mangle表,也有nat表,那么先由mangle处理,然后由nat表处理 ,RAW表只使用在PREROUTING链和OUTPUT链上,因为优先级最高。

表与链的关系

每条链的规则都可以存在于哪些表中?

PREROUTING的规则可以存在于: raw表,mangle表,nat表。
INPUT的规则可以存在于: mangle表,filter表。
FORWARD的规则可以存在于: mangle表,filter表。
OUTPUT的规则可以存在于: raw表,mangle表,nat表,filter表。
POSTROUTING的规则可以存在于: mangle表,nat表。

实际的使用过程中,往往是通过表作为操作入口,对规则进行定义,所以换个角度,列出表中的规则可以被哪些链使用,关系如下:
在这里插入图片描述

数据包在规则表、链的匹配流程

在这里插入图片描述

iptables命令格式

在这里插入图片描述
解读
table

-t:指定表,指定添加规则是哪个表里的

command

 -A:新增一条规则,到该规则链列表的最后一行
 -D:从规则链中删除一条规则,要么输入完整的规则,或者指定规则编号加以删除
 -L:查看当前运行的防火墙规则列表(源目IP主机名显示)
 -F:清除所有规则表
 -P:设置某条规则链的默认动作
 -I:插入一条规则,原本该位置上的规则会往后顺序移动,没有指定编号则为1
 -R:替换某条规则,规则替换不会改变顺序,而且必须指定编号。
 -nL:-L、-n,查看当前运行的防火墙规则列表(加-n源目IP地址显示)
 [-i|o 网卡名称]:i是指定数据包从哪块网卡进入,o是指定数据包从哪块网卡输出

chain
指定在哪个链上添加

PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING

parameter & Xmatch

[-p 协议类型]:可以指定规则应用的协议,包含tcp、udp和icmp等
[-s 源IP地址]:源主机的IP地址或子网地址
[--sport 源端口号]:数据包的IP的源端口号
[-d目标IP地址]:目标主机的IP地址或子网地址
[-dport目标端口号]:数据包的IP的目标端口号
-m:extend matches,这个选项用于提供更多的匹配参数

target 执行动作

ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给任何回应信息,过了超时时间才会有反应。
REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息, 客户端刚请求就会收到拒绝的信息。
SNAT:源地址转换,解决内网用户同一个公网地址上网的问题。
DNAT:目标地址转换。
MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。
REDIRECT:在本机做端口映射。
LOG:在/ar/og/messages 文件中记录日志信息,然后将数据包传递给下一条规则, 也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则匹配。

iptables示例

准备

#安装启动iptables服务(需要停掉firewalld服务)
yum install iptables-services
Systemctl stop firewalld 
[root@localhost ~]# systemctl start iptables.service 

示例

1、添加iptables规则禁止用户访问域名为www.baidu.com的网站
iptables -I FORWARD -d www.baidu.com -j DROP

2、添加iptables规则禁止用户访问ip地址为20.20.20.20的网站
iptables -I FORWARD -D 20.20.20.20 -j DROP

3、添加iptables规则禁止IP地址为192.168.171.144的客户机上网
iptables -I FORWARD -s 192.168.171.144 -j DROP

4、添加iptables规则禁止192.168.171.0子网所有的客户机上网
iptables -I FORWARD -s 192.168.171.0/24 -j DROP

5、禁止192.168.171.0子网所有客户机使用ftp协议下载
iptables -I FORWARD -s 192.168.171.0/24 -p tcp --dport 21 -j DROP

6、禁止192.168.171.0子网所有客户机使用telnet协议连接远程计算机
iptables -I FORWARD -s 192.168.171.0/24 -p tcp --dport 23 -j DROP

7、强制所有的客户机访问192.168.171.1这台web服务器
iptables -t nat -I PREROUTING -i eht0 -p tcp --dport 80 -j DNAT --to-destination 192.168.171.1:80

8、禁止internat上的计算机通过ICMP协议ping到nat服务器的ppp0接口,但允许内网的客户机通过ICMP协议ping通
iptables -I INPUT -i ppp0 -p icmp -j DROP
-i eth0:从这块网卡流入的数据(流入一般用在INPUT和PREROUTING上)
-o eth0:从这块网卡流出的数据(流出一般在OUTPUT和POSTROUTING上)

9、发布内网192.168.171.143主机的web服务,internet用户通过访问防火墙的IP地址即可访问该主机的web服务
iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.171.143:80

10、发布内网192.168.171.143主机的终端服务,internat用户通过访问防火墙的IP地址访问该主机的终端服务
iptables -t nat -I PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 192.168.171.143:3389

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值