FIREWALLD详解,linux上开启防火墙

目录

1. 定义

1.从软、硬件形式上分为 软件防火墙和硬件防火墙以及芯片级防火墙。
2.从防火墙技术分为 “包过滤型”和“应用代理型”两大类。
3.从防火墙结构分为 < 单一主机防火墙、路由器集成式防火墙和分布式防火墙三种。
4. 按防火墙的应用部署位置分为 边界防火墙、个人防火墙和混合防火墙三大类。
5. 按防火墙性能分为 百兆级防火墙和千兆级防火墙两类。
linux防火墙
6.防火墙的核心是数据报文过滤
工作在主机或者网络的边缘,对进出的数据报文进行检查,监控,并且能够根据事先定义的匹配条件和规则做出相应的动作的组件,机制或者系统
linux一般都是作为服务器系统来使用,对外提供一些基于网络的服务
通常我们都需要对服务器进行一些网络访问控制,类似防火墙的功能

2.访问控制列表

指令
Iptables -A INPUT -s 172.16.20.85 -d 172.16.20.78 -p icmp --icmp-type 8 -j REJECT

Iptables -A OUTPUT -s 172.16.20.78 -d 172.16.20.85 -p icmp --icmp-type 0 -j REJECT

3. 防火墙功能

常见的访问控制包括:哪些ip可以访问服务器、可以使用哪些协议、哪些接口,是否通过数据包进行修改等
如:服务器可能受到来自某个ip攻击,这时就需要禁止所有来自ip的访问
防火墙功能:
1.可以保护易受攻击服务;
2.控制内外网之间网络系统的访问;
3.集中管理内网的安全性,降低管理成本;
4.提高网络的保密性和私有性;
5.记录网络的使用状态,为安全规划和网络维护提供依据

包过滤防火墙原理

在这里插入图片描述

linux内核

linux内核集成了网络控制功能。通过netfilter模块来实现
linux内核通过netfilter模块实现网络访问控制功能在用户 层我们可以通过iptables程序对netfilter进行控制管理。iptables 是一个应用层的应用程序,它通过 Netfilter 放出的接口来对存放在内核内存中的 XXtables(Netfilter的配置表)进行修改。这个XXtables由表tables、链chains、规则rules组成,iptables在应用层负责修改这个规则文件。类似的应用程序还有 firewalld 。
netfilter可以对数据进行允许、丢弃、修改操作
netfilter支持通过以下方式对数据包进行分类:
源ip地址
目标ip地址
使用接口
使用协议(TCP UDP ICMP)
端口号
连接状态 (new established related invalid)

iptables service

首先对旧的防火墙规则进行了清空,然后重新完整地加载所有新的防火墙规则,而如果配置了需要 reload 内核模块的话,过程背后还会包含卸载和重新加载内核模块的动作,而不幸的是,这个动作很可能对运行中的系统产生额外的不良影响,特别是在网络非常繁忙的系统中。
如果我们把这种哪怕只修改一条规则也要进行所有规则的重新载入的模式称为静态防火墙的话,那么 firewalld 所提供的模式就可以叫做动态防火墙,它的出现就是为了解决这一问题,任何规则的变更都不需要对整个防火墙规则列表进行重新加载,只需要将变更部分保存并更新到运行中的 iptables 即可,它具备对 IP v4 和 IP v6 防火墙设置的支持。

网络各层技术点

在这里插入图片描述

五元组 (保障网络安全)

  1. 源ip 数据报文从哪来
  2. 目ip 数据报文从哪去
  3. 3.源端口 1–1024预定义端口
  4. 目的端口
  5. 传输协议
    (Hook Point,我们可以理解为回调函数点,数据包到达这些位置的时候会主动调用我们的函数,使我们有机会能在数据包路由的时候改变它们的方向、内容)内核通过钩子函数实现(hook function)

五个位置的钩子函数:

定义及介绍

**规则:**就是指网络管理员预定义的条件,规则一般的定义为“如果数据包投符合这样的条件,就这样处理这个数据包“。规则存储在内核空间的信息包过滤的表中,这些规则分别指定了源地址、目的地址、传输协议
(如TCP,UDP,ICMP)和服务类型(http,ftp,SMTP等)。当数据包与规则匹配时iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加,修改删除这些规则。
**链:**数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或者数条规则。当一个
数据包到达数据链时,iptables就会从链中第一条规则开始检查,看数据包是否满足规则所定义的条件。如果满足,系统就会根据该规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任意一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。
**表:**提供特定的功能,iptables内置了4个表。分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。

五链

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

四表

1.filter表 数据包过滤
主要用于对数据包进行过滤,根据具体的规则决定是否放行该数据包(如DROP、ACCEPT、REJECT)。filter 表对应的内核模块为iptable_filter
2.nat表 地址转换
主要用于修改数据包的IP地址、端口号等信息(网络地址转换SNAT、DNAT)。属于一个流的包(因为包的大小限制导致数据可能会被分成多个数据包)只会经过这个表一次。
3.mangle表 报文重构
拆解报文,作出修改并重新封装的功能Qos
4.raw表 原始报文(相关服务的包要传输可以定义raw表可以快速查询)是自1.2.9以后版本的iptables新增的表,主要用于决定数据包是否被状态跟踪机制处理。(关闭nat表中的连接追踪机制)在匹配数据包时,raw表的规则要优先于其他表。包含两条规则链——OUTPUT、PREROUTING

4个表的优先级由高到低的顺序为:raw–>mangle–>nat–>filter
例:如果PREROUTING链上,即有mangle表,也有nat表,那么先由mangle处理,然后由nat表处理 。RAW表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。一但用户使用了RAW表,在某个链上,RAW表处理完后,将跳过NAT表和MANGLE表处理,即不再做地址转换和数据包的链接跟踪处理了.

动作

ACCEPT 接受数据包
DROP 丢弃数据包
REJECT 丢弃数据包并向发送者返回错误消息

在这里插入图片描述

4.防火墙的核心

防火墙的核心是数据报文过滤
网络模块由内核实现,而过滤的实现必须在内核中,而用户是无法直接访问内核,更别说把过滤规则放置到内核中,因此在TCP/IP协议栈上,选取了几个不同的位置,开放给用户空间的应用程序,该应用程序可以通过系统调用将规则发送到指定的内核位置。

工作流程:

网口数据包由底层的网卡NIC接收,通过数据链路层的解包之后(去除数据链路帧头),就进入了TCP/IP协议栈(本质就是一个处理网络数据包的内核驱动)和Netfilter混合的数据包处理流程中了。数据包的接收、处理、转发流程构成一个有限状态向量机,经过一些列的内核处理函数、以及Netfilter Hook点,最后被转发、或者本次上层的应用程序消化掉。

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

在这里插入图片描述

命令格式及说明

在这里插入图片描述说明
在这里插入图片描述

5.案例详细讲解

安 装iptables

#yum install iptables-sevices
Systemctl stop firewalld
[root@localhost ~]# systemctl start iptables.service

功能讲解:

#iptables -L (协议状态)
#iptables-save

1、搭建web服务,并且能够访问
#开放web服务端口
[root@mail html]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
#列出规则表中的编号
#iptables -L --line-numbers
#删除刚刚添加的规则,并进行测试
[root@mail html]# iptables -D INPUT 1

2、禁止所有人ssh远程登陆该服务器
[root@mail html]# iptables -I INPUT -p tcp --dport 22 -j REJECT -s 192.168.24.0/24 -d
#删除刚刚添加的规则,并进行测试
[root@mail html]# iptables -D INPUT 1

3、禁止某个主机地址ssh远程登陆该服务器
#拒绝144主机访问服务器的22端口
[root@mail ~]# iptables -I INPUT -p tcp -s 192.168.171.144 --dport 22 -j REJECT
#开启服务器的web服务,并用144客户端进行访问
[root@mail html]# iptables -I INPUT -p tcp -s 192.168.171.144 --dport 80 -j ACCEPT
#查看所有规则
Iptables -t filter -P INPUT DROP
Iptables -A INPUT -s 172.16.30.128 -d 172.16.30.200 -p tcp --dport 22 -j ACCEPT
Netstat -lntup | grep 80 查看开放的端口
案例练习:
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

开放端口示例

在这里插入图片描述

服务和区域

FirewallD 使用服务(service) 和区域(zone)来代替 iptables 的规则(rule)和链(chain)。
/usr/lib/firewalld service ssh.xml
在这里插入图片描述默认情况下,有以下的区域(zone)可用:
1.drop – 丢弃所有传入的网络数据包并且无回应,只有传出网络连接可用。
2.block — 阻塞区:拒绝所有传入网络数据包并回应一条主机禁止的 ICMP 消息,只有传出网络连接可用。
3.public — 只接受被选择的传入网络连接,用于公共区域。
4.external —外部区 用于启用了地址伪装的外部网络,只接受选定的传入网络连接。
5.dmz — DMZ 隔离区,外部受限地访问内部网络,只接受选定的传入网络连接。
6.work — 对于处在你工作区域内的计算机,只接受被选择的传入网络连接。
7.home — 对于处在你家庭区域内的计算机,只接受被选择的传入网络连接。
8.internal —内部网络 对于处在你内部网络的计算机,只接受被选择的传入网络连接。
9.trusted — 受信任区所有网络连接都接受。

预定义服务

在这里插入图片描述

6.软、硬、芯片防火墙了解

第一种:软件防火墙
软件防火墙运行于特定的计算机上,它需要客户预先安装好的计算机操作系统的支持,一般来说这台计算机就是整个网络的网关。俗称“个人防火墙”。软件 防火墙就像其它的软件产品一样需要先在计算机上安装并做好配置才可以使用。防火墙厂商中做网络版软件防火墙最出名的莫过于Checkpoint。使用这类 防火墙,需要网管对所工作的操作系统平台比较熟悉。

第二种:硬件防火墙
这里说的硬件防火墙是指“所谓的硬件防火墙”。之所以加上"所谓"二字是针对芯片级防火墙说的了。它们最大的差别在于是否基于专用的硬件平台。目前 市场上大多数防火墙都是这种所谓的硬件防火墙,他们都基于PC架构,就是说,它们和普通的家庭用的PC没有太大区别。在这些PC架构计算机上运行一些经过 裁剪和简化的操作系统,最常用的有老版本的Unix、Linux和FreeBSD系统。 值得注意的是,由于此类防火墙采用的依然是别人的内核,因此依然会受到OS(操作系统)本身的安全性影响。
传统硬件防火墙一般至少应具备三个端口,分别接内网,外网和DMZ区(非军事化区),现在一些新的硬件防火墙往往扩展了端口,常见四端口防火墙一般将第四个端口做为配置口、管理端口。很多防火墙还可以进一步扩展端口数目。

第三种:芯片级防火墙
芯片级防火墙基于专门的硬件平台,没有操作系统。专有的ASIC芯片促使它们比其他种类的防火墙速度更快,处理能力更强,性能更高。做这类防火墙最 出名的厂商有NetScreen、FortiNet、Cisco等。这类防火墙由于是专用OS(操作系统),因此防火墙本身的漏洞比较少,不过价格相对比 较高昂。

发布了33 篇原创文章 · 获赞 29 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40993864/article/details/100520184