1)firewalld概述
防火墙是指设置在不同网络与网络安全域之间的一系列部件的组合,也是不同安全域之间的信息的唯一出口。通过检测、限制并更改跨越防火墙的数据流,尽可能地对外屏蔽网络内部的信息、结构和运行状态,且有选择地接受外部网络访问。在内外网之间架起一道屏障,以避免发生不可预知或潜在的入侵。
从传统意义上来说防火墙技术分为三类:包过滤(Packet Filtering)、应用代理(Application Proxy)、状态检测(Stateful lnspection)。无论一个防火墙的实现过程有多复杂,归根结底都是在这三种技术的基础上进行扩展的。
Linux的防火墙主要工作在网络层,针对TCP/IP数据包实时过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙。Linux系统的防火墙体系基于内核编码实现,具有非常稳定的性能和高效率,也因此获得广泛的应用。在Centos7系统中几种防火墙共存:firewalld、iptables、ebtables。默认使用firewalld来管理netfilter子系统
firewalld提供了支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具。它支持ipv4、ipv6防火墙设置以及以太网桥,并且拥有两种配置模式:运行时配置与永久配置。它还支持服务或应用程序直接添加防火墙规则接口。
2)firewalld网络区域
firewalld将所有的网络数据流量划分为多个区域,从而简化防护墙管理。根据数据包的源IP地址或传入网络接口等条件,将数据流量转入相应区域的防火墙规则。对于进入系统的数据包,首先检查的就是其源地址
默认区域不是单独的区域,而是指向系统定义的某个其他区域。默认情况下,默认区域是public,但是系统管理员可以更改默认区域
firewalld的预定义区域说明:
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(互联网控制报文协议)的错误响应。 |
要求:
配置网关服务器
首先在网关服务器添加三张网卡,依次为ens33、ens37、ens38
开启网关服务器的路由转发功能:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 #在文件中添加此条代码
sysctl -p #更新文件
1、在网关服务器上配置firewalld防火墙:
验证firewalld在网关服务器是是否正在运行。若为为not running则启动firewalld防火墙。
2、设置默认区域为external区域,并查看配置结果
firewall-cmd --set-default-zone=external #设置默认区域为external区域
firewall-cmd --list-all #检查配置结果
3、将ens37网卡配置到trusted区域,将ens38网卡配置到dmz区域。
firewall-cmd --change-interface=ens37 --zone=trusted #指定ens37网卡到trusted区域
firewall-cmd --change-interface=ens38 --zone=dmz #指定ens38网卡到dmz区域
firewall-cmd --get-active-zones #查看配置情况
4、更改SSH的侦听端口,并重启服务(需要关闭SELinux)
vim /etc/ssh/sshd_config
systemctl restart sshd #重启sshd服务
5、配置external区域移除SSH服务和配置external区域禁止ping
firewall-cmd --zone=external --remove-service=ssh --permanent #移除SSH服务
firewall-cmd --zone=external --add-icmp-block=echo-request --permanent #external区域禁ping
firewall-cmd --reload #重新加载firewalld防火墙,激活配置
网站服务器firewalld防火墙配置
1、安装httpd和mod_ssl软件包
yum -y install httpd mod_ssl
systemctl start httpd #启动httpd服务
echo "this is a test web
" > /var/www/html/index.html #建立测试页
同样需要更改SSH的监听地址,并重启sshd服务。
2、在网站服务器上启动并配置firewalld防火墙,并禁用ping
systemctl start firewalld #启动firewalld防火墙
firewall-cmd --zone=dmz --add-service=https --permanent #为dmz区域打开https服务
firewall-cmd --zone=dmz --add-port=12345/tcp --permanent #添加TCP端口12345
firewall-cmd --add-icmp-block=echo-request --zone=dmz --permanent #禁ping
3、因为预定义的SSH服务已经更改默认端口,所以将预定义SSH服务移除
firewall-cmd --zone=dmz --remove-service=ssh --permanent
4、重新加载firewalld防火墙
firewall-cmd --reload #重新加载firewalld防火墙
firewall-cmd --list-all --zone=dmz #查看配置
验证
在internet测试机上通过SSH登录网关外部接口地址12345端口
ssh -p 12345 192.168.248.10
在企业内网测试机上通过SSH登录web网站服务器的12345端口
ssh -p 12345 192.168.2.10