1)firewalld概述
防火墙是指设置在不同网络与网络安全域之间的一系列部件的组合,也是不同安全域之间的信息的唯一出口。通过检测、限制并更改跨越防火墙的数据流,尽可能地对外屏蔽网络内部的信息、结构和运行状态,且有选择地接受外部网络访问。在内外网之间架起一道屏障,以避免发生不可预知或潜在的入侵。
从传统意义上来说防火墙技术分为三类:包过滤(Packet Filtering)、应用代理(Application Proxy)、状态检测(Stateful lnspection)。无论一个防火墙的实现过程有多复杂,归根结底都是在这三种技术的基础上进行扩展的。
Linux的防火墙主要工作在网络层,针对TCP/IP数据包实时过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙。Linux系统的防火墙体系基于内核编码实现,具有非常稳定的性能和高效率,也因此获得广泛的应用。在Centos7系统中几种防火墙共存:firewalld、iptables、ebtables。默认使用firewalld来管理netfilter子系统
- netfilter:指的是Linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于“内核态(Kernel
Space,又称为内核空间)”的防火墙功能体系 - firewalld:指用于管理Linux防火墙的命令程序,属于“用户态(User Space,又称为用户空间)”的防火墙管理体系。
firewalld提供了支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具。它支持ipv4、ipv6防火墙设置以及以太网桥,并且拥有两种配置模式:运行时配置与永久配置。它还支持服务或应用程序直接添加防火墙规则接口。
2)firewalld网络区域
firewalld将所有的网络数据流量划分为多个区域,从而简化防护墙管理。根据数据包的源IP地址或传入网络接口等条件,将数据流量转入相应区域的防火墙规则。对于进入系统的数据包,首先检查的就是其源地址
若源地址关联到特定的区域,则执行该区域所制定的规则。
若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所制定的规则。
若网络接口未关联到特定的区域,则使用默认区域并执行该区域所制定的规则
默认区域不是单独的区域,而是指向系统定义的某个其他区域。默认情况下,默认区域是public,但是系统管理员可以更改默认区域
trusted(信任区域) | 可接收所有的网络链接。 |
---|---|
public(公共区域) | 除非与传出流量相关,或与ssh或dhcpv6-client预定义服务匹配,否则拒绝流量传入,在公共区域内,不能相信网络内的其他计算机不会对计算机造成危害,只能接收经过选择的连接。并且,该区域是新添加网络接口的默认区域 |
work(工作区域) | 除非与传出流量相关,或与ssh、ipp-client、dhcpv6-client预定义服务匹配,否则拒绝流量传入,用于工作区。相信网络内的其他计算机不会危害计算机,仅接收经过选择的连接 |
home(家庭区域) | 除非与传出流量相关,或与ssh、ipp-client、mdns、sambs-client、dhcpv6-client预定义服务匹配,否则拒绝流量传入,用于家庭网络。信任网络内的其他计算机不会危害计算机。仅接收经过选择的连接。 |
internal(内部区域) | 除非与传出流量相关,或与ssh、ipp-client、mdns、samba-client、dhcpv6-client预定义服务匹配,否则拒绝流量传入,用于内部网络。信任网络内的其他计算机不会危害计算机,仅接收经过选择的连接。 |
exernal(外部区域) | 除非与传入流量相关,或与ssh预定义服务匹配,否则拒绝流量传入。通过此区域转发的ipv4传出流量将进行地址伪装,可用于路由器启用伪装的外部网络。 |
dmz(隔离区域也称为非军事区域) | 除非与传出的流量相关,或与ssh预定义服务匹配,否则拒绝流量传入。 |
block(限制区域) | 除非与传出流量相关,否则拒绝所有传入流量。 |
drop(丢弃区域) | 除非与传出流量相关,否则丢弃所有传入流量,并且不产生包含ICMP(互联网控制报文协议)的错误响应。 |
firewalld防火墙类型
1) firewall-config
进入图形化界面调试防火墙
2).firewalld-cmd
进入命令行调试防火墙
例:
firewalld防火墙配置应用
- 网关服务器连接互联网网卡ens36地址为192.168.248.103,为公网IP,分配firewall的external(外部)区域,连接内网网卡ens35地址为192.168.1.1,分配到firewall的trusted(信任)区域;连接服务器网卡ens34地址为192.168.2.1,分配到firewall的dmz(非军事)区域
- 网站服务器和网关服务器均通过SSH来远程管理,为了安全,将SSH默认端口改为12345,
- 网站服务器开启https,过滤未加密的http流量
首先在网关服务器添加三张网卡,依次为ens34、ens35、ens36
开启网关服务器的路由转发功能:
net.ipv4.ip_forward = 1 #1为开启,0是关闭
[root@CentOS ~]# sysctl -p #刷新文件
验证firewalld在网关服务器是是否正在运行。若为为not running则启动firewalld防火墙
[root@CentOS ~]# firewall-cmd --change-interface=ens34 --zone=dmz #将ens34放在dmz区域
[root@CentOS ~]# firewall-cmd --change-interface=ens36 --zone=trusted #将ens36放在trusted区域
[root@CentOS ~]# firewall-cmd --change-interface=ens35 --zone=external #将ens35放在external区域
查看网卡所在区域情况
修改ssh端口号为"123456"
[root@CentOS ~]# vim /etc/ssh/sshd_config
使用ssh远程空控制登陆
移除SSH服务
重新加载firewalld防火墙,激活配置
安装httpd和mod_ssl软件包
从内网访问dmz