目录
一、防火墙是什么?
防火墙是指设置在不同网络之间(企业内网和公网)或不同安全域之间,对外部传入到内部的网络流量进行安全检测、限制等以此来保护企业内网安全,不会被攻击。
二、防火墙类型
1、硬件防火墙:使用专用的硬件和安全操作系统来专门保护网络安全的防火墙设备。
2、软件防火墙:普通的计算机上系统自带的防火墙。
1、包过滤防火墙:根据传入数据包中的5元组来指定一些规则,对其进行丢弃或转发。
2、应用级代理防火墙:根据数据包的应用服务的协议类型(如:http等)来使用指定的数据过滤规则,并对数据包进行分析、统计、登记来形成报告,当检测出有攻击行为是时,将报警给网络管理员。当内部用户访问外网服务时,数据包经过防火墙时会对其进行分析,如果规则允许用户访问外网站点,则由代理防火墙做为原用户访问外网站点,并将返回的包转发给内网用户。
三、firewalld防火墙概述
说明:只对传入的流量进行过滤,本机主动传出的流量或回流不做限制。
一.linux内核中包含netfilter功能模块,用于数据包过滤、网络地址转换、端口转发,其iptables命令是此功能模块的管理工具。到了红帽7引用了nftfilter防火墙内核模块(兼容netfilter),更快的数据包处理、规则集更新、相同规则同时处理ipv4和ipv6,其命令行管理工具是firewalld。
1、使用旧版的iptables指定规则时,会先删除正在使用的之前的旧规则,然后在添加新的规则,之后再从/etc/syscoonfig/iptables配置文件中读取所有规则并重新载入,导致在使用iptables指定规则时,先前使用的规则会临时消失,导致系统服务连接受阻,等配置好规则后,其它服务才能正常工作。
2、使用firewalld时任何规则 的变化都不会对防火墙的整个规则进行重新加载,因此可以在服务运行过程中改变设置而不丢失现有连接。
四、firewalld的配置
1、firewalld的区域
防火墙中的一些区域其实就是firewalld防火墙安装后,自动预先生成的一些规则策略集合。用户可以通过把计算机中的不同网卡接口和来自不同网络的IP主机绑定到不同的区域下,来应用此区域内预先制定好的规则,来对传入本机的数据包进行过滤,限制。
说明:
@firewalld防墙安装后,默认系统内所有物理网卡接口都使用(绑定)的是public区域策略规则。因此public区域是firewalld的默认区域。
@firewall有2种模式:
runtime临时模式:修改规则临时有效,重启服务失效
permanent持久模式:永久有效,需重启服务
- target目标:当本区域中的所有规则不匹配时,使用target指定的默认处理动作。
default:不做任何事情。
drop:进入到此区域的流量都将被拒绝,无响应
reject:也是拒绝,会告诉来源者,拒绝理由
accep: 表示允许流量放行
- icmp黑白名单:yes为白名单若没指定icmp报文类型则拒绝该协议报文,no黑名单若没指定表示允许icmp协议报文通过。
- masquerade(SNAT): ip地址伪装,将接收到的数据包源地址改为路由转发出接口(公网)的IP地址,类似于源NAT地址转换。
- 端口转发(DNAT):类似路由器的NAT端口映射功能,把原本访问本机的数据包的目的地址端口号改为内部网络其它目标主机的iP地址端口号,并进行路由转发功能(类似于外网客户端访问内网服务器做目的DNAT地址转换)。
五、防火墙的工作流程(匹配顺序从1-3)
1.检查传入数据包的源地址,若其关联到指定区域,则使用关联区域内的规则
2.若源地址未进行关联则数据包从本机哪个网卡接口进入的,就使用那个接口所在区域的策略规则。
3.若网络接口未划分到某个区域,则使用默认区域(初始化状态使用的区域)内制定的规则进行匹配。
六、firewalld默认配置文件
- /usr/lib/firewall/----- 系统配置预定义的区域规则、 供用户来调用载入用户配置文件、尽量莫修改。
- /etc/firewalld/-------用户配置
七、firewalld富规则
说明:区域下优先级最高的策略规则----用于制定详细规则
八、firewall-cmd相关配置命令
实验拓扑:
firewall端:
1、查看防火墙当面所使用的默认区域
2、查看主机内网卡所使用的策略区域
3、把ens160网卡的默认区域改为internal,并在系统重启后生效。分别查看当前和永久模式下的此网卡所在区域。
*在更改网卡所属区域时,不管是永久配置模式还是实时模式都会立即生效。
4、把firewall的当前默认区域设置为work
5、开启和关闭防火墙服务的应急模式
6、查看public策略区域是否放行了ssh服务。
7、在默认区域中,把firewalld服务中请求http协议的流量设置为永久允许,并立即生效。
8、移除public策略区域中的放行的http协议流量,使系统拒绝用户访问系统的http站点。
注意:在不使用“--permanent”选项编辑策略规则时,在系统重启或使用“--reload”选项重新加载/etcc/firewalld/zones配置文件中的永久策略规则时,系统当前实时模式创建的规则会删除掉,仅保留加载文件中制定的策略规则。
9、把访问系统8080和8081的服务端口的外来流入流量设置为允许访问,并立即生效。
10、把访问本机80端口的流量转发到本机的22端口,并永久立即有效(端口转发)。
客户机测试:
*防火墙主机在响应客户端的请求数据包时,所使用的源端口号并不是22端口,而是用户访问的80端口。
11、将公网用户访问防火墙主机的22端口的流量转发给内网主机,使外网用户在通过ssh远程登录防火墙主机时,实则登录的是内网用户的主机(端口转发DNAT)。
防火墙操作:
公网客户端测试:
原理:
- 公网用户将数据报文发送给了防火墙------>防火墙的外网卡ens224收到外网进来的流量后,检查目的mac地址是发给自己的于是就接收了报文---->由于此报文是从ens224网卡进来的流量(网卡绑定的是public策略区域),所以交给了防火墙的public区域进行规则适配------>此报文匹配public的端口转发规则,因此将报文的目的端口号、目的IP地址都分别改成了防火墙规则指定的转发端口和转发的目的IP----->修改完报文目的IP和端口号之后开始查询路由,发现是发给内网主机的报文-------->防火墙将其报文转发给内网主机。
- 内网主机收到报文后,根据报文的源IP地址是公网用户的IP地址,于是向其公网主机响应的回包的目的IP也是公网主机的IP地址、源地址是内网主机的IP地址。由于目的IP与内网非同网段,内网主机会借助网关默认路由将其回包发给默认网关主机(防火墙)----->防火墙的ens160接口收到报文后,检查目的mac是自己的、接收报文----->由于此报文是经防火墙主动转出发送的回包,因此不进行防火墙区域策略检测---->接下来防火墙查看报文的目的IP并不是本地接口IP,开始查路由表转发,经查此数据包从外网卡发出,由于外网卡的所属策略区域开启了DNAT目的端口转发功能,经查此数据包的源IP地址匹配之前的DNAT转发记录,于是将数据包的源IP地址由内网主机改为了防火墙公网IP地址,然后将其转发给了公网用户。
总结:
公网到内网(请求):公网客户机(S_ip是公网客户端 ,D_ip是请求IP地址)------>firewalld防火墙(S_ip不变,D_ip由客户端请求的ip,改为防火墙规则指定的ip)---->内网客户机(S_ip公网客户机,D_ip是自己本地接口ip)。
内网到公网(回复):内网客户端(S_ip地址是内网主机IP,D_ip保持公网客户机ip)
------->firewalld防火墙(S_ip由内网客户机ip改为出接口公网ip,D_ip保持公网客户机)
------>公网客户机(S_ip是firewalld公网ip,目的ip是自己不变)。
12、在public默认策略区域下制定富规则,来禁止源地址为10.0.1.0/24的远程主机使用ssh登录到本地防火墙主机。
使用公网客户机登录到防火墙进行测试,看是否被拒绝远程登录:
@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!