一、linux防火墙简介
- 防火墙技术种类:
(1)包过滤防火墙 packet filtering
(2)应用代理防火墙 application proxy
(3)状态检测防火墙 stateful inspection
(firewalld是包过滤防火墙,所以这里只讲包过滤防火墙)
- 包过滤防火墙概述:
(1)netfilter: 位于Linux内核中的包过滤功能体系,成为Linux防火墙的“内核态”
(2)firewalld: CentOS7默认的管理防火墙规则的工具,成为Linux防火墙的“用户态”
————上面的两种称呼都可以表示为Linux防火墙
- 包过滤的工作层次:
(1)主要是网络层,针对IP数据包、检查源IP
(2)体现在对包内的IP地址、端口等信息的处理上
————Linux服务器主要用于对互联网提供某种服务或作为内部局域网的网关服务器
二、firewalld简介
- 概述:
防火墙是Linux系统的 主要的安全工具
,可以提供基本的安全防护,在Linux历史上已经使用过的防火墙工具包括:ipfwadm、ipchains、iptables (即Centos6就是使用的iptables)
,而在firewalld中新引入了 区域(Zone)
这个概念
- 特点:
以前的iptables防火墙是静态的,每次修改都要求防火墙完全重启,这个过程包括内核netfilter防火墙模块的卸载和新配置所需模块的装载等,而模块的卸载将会破坏状态防火墙和确立建立的连接,现在firewalld可以动态管理防火墙,firewalld把netfilter的过滤功能集于一身
总结成几个小点:
- firewalld提供了支持 网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。
- 支持 IPv4,IPv6 的防火墙设置以及以太网桥接
- 支持服务或者应用程序直接添加防火墙规则的接口
- 拥有运行时配置和永久配置两种选项。
运行时配置——服务或系统重启后失效
永久配置——服务或系统关机、重启后生效
.
- 网络区域:
firewalld预定义的九种网络区域:
trusted、public、work、home、internal、external、dmz、block、drop
————默认情况就有一些有效的区域,由firewalld提供的区域按照从不信任到信任的顺序排序
(1)丢弃区域(Drop Zone): 如果使用丢弃区域,任何进入的数据包将被丢弃,这个类似于Centos6上的 iptables -j drop ,使用丢弃规则意味着将不存在相应。
(2)阻塞区域(Block Zone): 阻塞区域会拒绝进入的网络连接,返回icmp-host-prohibited,只有服务器已经建立的连接会被通过,即只允许由该系统初始化的网络连接。
(3)公共区域(Public Zone): 只接受那些被选中的连接,默认只允许ssh和dhcpv6-client,这个zone是缺省zone (缺省就是默认的意思,所以公共区域也是默认区域,在没有任何配置的情况下走的是公共区域)
(4)外部区域(External Zone): 这个区域相当于路由器的启动伪装(masquerading)选项,只有指定的连接会被接受,即ssh,而其他的连接将被丢弃或者不被接受
(5)隔离区域(DMZ Zone): 如果想要只允许给部分服务能被外部访问,可以在DMZ区域中定义,它也拥有只通过被选中连接的特性,即ssh, 这个区域又叫做非军事化区域
(6)工作区域(Work Zone): 在这个区域中,我们只能定义内部网络,比如私有网络通信才被允许, 只允许ssh、ipp-client和dhcpv6-client
(7)家庭区域(Home Zone): 这个区域专门用于家庭环境,它同样只允许被选中的连接, 即ssh、ipp-client、mdns、samba-client和dhcpv6-client
(8)内部区域(Internal Zone): 这个区域和 工作区域(Work Zone) 类似,只允许通过被选中的连接,与 家庭区域(Home Zone) 相同
(9)信任区域(Trusted Zone): 信任区域允许所有网络通信通过,因为 信任区域(Trusted Zone)是最被信任的,即使没有设置任何的服务,那么也是被允许的,因为 信任区域(Trusted Zone)是允许所有连接的
————以上是系统定义的所有的区域(Zone),但是,不是所有的区域(Zone)都在使用,只有活跃的区域(Zone)才有实际操作意义
注意:因为默认区域只允许ssh和dhcp,所以在没有任何配置的情况下默认是拒绝ping包的
- 检查原则:
如果一个客户端访问服务器,服务器根据以下原则决定使用哪个区域(zone)的策略去匹配:
(1)如果一个客户端数据包的源IP地址匹配Zone的 来源(sources) 也就是匹配区域的规则,那么该 Zone的规则就适用这个客户端,一个源只能属于一个 Zone,不能同时属于多个区域(Zone)
(2)如果一个客户端数据包进入服务器的某一个接口(如ens33网卡接口)匹配了 Zone的 接口(interfaces),则该Zone的规则就适用这个客户端,一个接口只能属于一个 Zone ,不能同时属于多个Zone
(3)如果上述两个原则都不满足,那么默认的 Zone将被应用 firewalld数据处理流程 ,检查数据来源的源地址,
- firewalld数据处理流程:
检查数据来源的源地址:
(1)若源地址关联到特定的区域,则执行该区域所制定的规则
(2)若源地址未关联到特定的区域,则使用关联网络接口的区域并执行该区域所制定的规则
(3)若网络接口未关联到特定的区域,则使用默认区域并执行该区域所制定的规则
- 数据包处理原则:
检查源地址的处理规则:
- 匹配源地址所在区域
- 匹配入站接口所在区域
- 匹配默认区域
- firewalld防火墙的配置方法:
有三种配置方法,分别是:
- firewall-config图行化工具
- firewall-cmd命令行工具
- /etc/firewalld/中的配置文件
三、配置firewalld防火墙
(1)使用firewall-config图形化工具配置
打开方式: 应用程序——杂项——防火墙 记得先在终端里打开防火墙
主菜单: 文件、选项、查看、帮助
配置: 运行时和永久 (运行时的是服务重启失效,永久的是服务重启生效)
区域:
- 服务 :哪些服务可信
- 端口 :允许访问的端口范围
- 协议 :可访问的协议
- 源端口 :额外的源端口或范围
- 伪装 :私有地址映射为公有ip
- 端口转发 :指定端口映射为其他端口
(本机或者其他主机)
- ICMP过滤器 :设置具体的icmp类型
- 服务:
(只适用于永久模式)
- 模块 :设置网络过滤的辅助模块
- 目标 :如果指定了目的地址,服务则仅限于目的地址和类型,默认没有限制
——可以通过图形化来配置防火墙