CentOS7 Firewalld防火墙
一、理论部分
CentOS7最大的改变之一firewalld防火墙,FirewallD 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。它支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项。它也支持允许服务或者应用程序直接添加防火墙规则的接口。
下面来看看firewalld的九大区域:
firewalld防火墙有九大区域
丢弃区域(Drop Zone):如果使用丢弃区域,任何进入的数据包将被丢弃。这个类似与我们之前使用iptables -j drop。使用丢弃规则意味着将不存在响应。
阻塞区域(Block Zone):阻塞区域会拒绝进入的网络连接,返回icmp-host-prohibited,只有服务器已经建立的连接会被通过即只允许由该系统初始化的网络连接。
公共区域(Public Zone):只接受那些被选中的连接,默认只允许 ssh 和 dhcpv6-client。这个 zone 是缺省 zone
外部区域(External Zone):这个区域相当于路由器的启用伪装(masquerading)选项。只有指定的连接会被接受,即ssh,而其它的连接将被丢弃或者不被接受。
隔离区域(DMZ Zone):如果想要只允许给部分服务能被外部访问,可以在DMZ区域中定义。它也拥有只通过被选中连接的特性,即ssh。
工作区域(Work Zone):在这个区域,我们只能定义内部网络。比如私有网络通信才被允许,只允许ssh,ipp-client和 dhcpv6-client。
家庭区域(Home Zone):这个区域专门用于家庭环境。它同样只允许被选中的连接,即ssh,ipp-client,mdns,samba-client和 dhcpv6-client。
内部区域(Internal Zone):这个区域和工作区域(WorkZone)类似,只有通过被选中的连接,和home区域一样。
信任区域(Trusted Zone):信任区域允许所有网络通信通过。
Firewalld的基本操作:
1获取firewalld状态
2在不改变状态的条件下重新加载防火墙
如果使用--complete-reload ,状态信息将会丢失。
3获取支持的区域列表
4获取所有支持的服务
想要列出默认有效的服务,也可以进入下面的目录也能够取得。
cd /usr/lib/firewalld/services/
自己创建服务,任选一个服务复制一份,服务名叫rhel 端口号是1937
vim rhel.xml
修改文件内容
prot=1937 第三行改成rhel. [firewall-cmd --reload]
确认服务是否启动:
firewall-cmd --get-services
5、获取所有支持的ICMP类型
二、操作部分
实验拓扑:
实验要求:
一、web主机
1、通过8000端口提供www服务,22端口提供ssh服务
2、其他主机通过80端口访问web服务
3、允许ssh远程管理
4、禁止ping请求
二、gateway主机 开启路由转发
1、通过地址伪装实现内网访问外网
2、外网主机可以访问内网web(通过80端口访问)和ssh(通过222端口访问)
实验步骤:
1、配置Web服务器IP地址并安装httpd服务
yum -y install httpd
2、关闭selinux
永久关闭:编辑
vim /etc/selinux/config
将文件中的SELINUX="" 为 disabled ,然后重启。
如果不想重启系统,使用命令setenforce 0注:setenforce 1 设置SELinux 成为enforcing模式。
临时关闭:输入“setenforce 0” 设置SELinux 成为permissive模式
3、修改httpd端口为8000
修改httpd配置文件:
# vim /etc/httpd/conf/httpd.conf
将Listen的值改为8000后保存退出
重启httpd服务:
systemctl restart httpd
验证效果如下:
5、配置防火墙支持shh访问
firewall防火墙默认允许ssh端口访问,如需设置请输入一下命令:
firewall-cmd [--zone= 区域] --add-service=ssh
6、禁止ping请求
7、配置gateway主机实现通过地址伪装实现内网访问外网
开启路由转发功能:
vim /etc/sysctl.conf
然后将两个网卡分别加入相应的区域
在externet外部区域设置地址伪装
在这里默认就是开启状态,如需开启请输入以下命令:
firewall-cmd --zone=external --add-masquerade
8、实现外网主机可以访问内网web通过80端口访问和通过222端口访问ssh服务
实验效果1:
实验效果2: