赞
踩
Lesson31 linux中firewalld的图形化管理和命令的使用
防火墙(Firewalld)是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出
防火墙是系统的第一道防线,其作用是防止非法用户的进入
centos 7 中防火墙Firewalld是一个非常强大的功能,Firewalld提供了支持网络/防火墙区域(zone)定义网络连接以及接口安全等级的动态防火墙管理工具,它支持IPv4,IPv6防火墙设置以及以太网桥接,并拥有运行时配置和永久配置选项它也支持允许服务或者应用程序直接添加防火墙规则的接口
以前的system-config-frewall/lokkit防火墙模型是静态的,每次修改都要求防火墙完全重启
这个过程包括内核netfilter防火墙模块的卸载和新配置所需模块的装载等,而模块的卸载将会破坏状态防火墙和确立的连接;
相反firewall deamon动态管理防火墙,不需要重启防火墙便可以更改,因此也就没有必要重新加在所有的内核防火墙模块了
不过要使用firewall deamon就要求防火墙的所有变更都要通过改守护进程来实现。以确保守护进程中的状态和内核里的防火墙是一致的
另外firewall deamon无法解析由 ip*tables和ebtables 命令行工具添加防火墙的规则
将server虚拟机和desktop虚拟机reset,保持实验环境纯净,给desktop虚拟机再添加一块虚拟网卡做服务器,配置eth0的静态ip为172.25.254.114,配置eth1=192.168.0.114,给server虚拟机的一块网卡的ip设置为192.168.0.214,配置172.25.254.114的yum源,将desktop当作防火墙服务器
给desktop安装firewalld服务
yum install firewalld #安装火墙服务
安装火墙图形化界面的软件
yum install firewall-config -y
systemctl start firewalld #开启firewalld服务
systemctl enable firewalld #设置开启启动
查看火墙的状态,可以看到,火墙正在运行
通过网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流
例如,互联网是不可信的区域,而内部网络是高度信任的区域
网络安全模型可以在安装,初次启动和首次建立网络连接时选择初始化
该模型描述了主机所连接的整个网络环境的可信级别,并定义了连接的处理方式
firewalld的默认区域是public
区域名称 | 作用 |
---|---|
阻塞区域block | 任何传入的网络数据包都会被阻止(有回显) |
工作区域work | 相信网络上的其他计算机,不会损害自己的计算机 |
家庭区域home | 相信网络上的其他计算机,不损害自己的计算机 |
公共区域public | 不相信网络上的任何计算机,只选择接受传入的网络连接 |
隔离区域 DMZ | 隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用,对于隔离区域,只有选择接受传入的网络连接 |
信任区域trusted | 所有网络连接都可以接受 |
丢弃区域drop | 任何传入的网络连接都被拒绝(不回显) |
内部区域internal | 信任网络上的其他计算机,不会损害自己的计算机,只有选择接受传入的网络连接 |
外部区域external | 不相信网络上的其他计算机不会损害自己计算机,只有选择接受传入的网络连接 |
firewall-config
#输入这个命令,firewall图形化管理工具就显示出来了,可以在里面进行修改,并且修改的参数可以通过命令查看
firewall-cmd --get-active-zones #查看正在使用的域
在图形化界面中将172.25.254.114主机加入block域
可以看到,block域里已经成功添加了ip为172.25.254.114的主机
用命令行可以查看到
用命令可以查看到新添加进block的域
firewall-cmd --get default-zone 查看默认域
firewall-cmd --get-service
#列出所有服务
firewall-cmd --list-all-zones #列出所有的域的详细信息
firewall-cmd --get-zones #列出所有的域名
firewall-cmd --set-default-zones=trusted #设置默认于为trusted
firewall-cmd --get-zones #列出默认的域名
firewall-cmd --zone=public --list-all #列出public域的所有信息
在desktop服务器端配置好yum源,安装Apache服务
编辑yum源的安装指向文件
安装Apache软件
安装成功
实验:public域是不允许访问apache,现在做特殊指定,就可以让真机访问的到114火墙端的apache了
设置默认域为public,在来源里加入172.25.254.14,允许真机访问服务器端
开启apache服务
在desktop服务器端:
外来的主机进入自己的trust域
firewall-cmd --add-sources=172.25.254.14 --zone=trusted
此时默认域仍是public,不允许http服务
firewall-cmd --add-sources=172.25.254.14 --zone=trusted
此时在主机的浏览器地址栏输入172.25.254.14,可以看到apache的默认发布目录
server访问不到的原因是因为,desktop上的eth0和eth1两块网卡均在public域里面,不允许外来主机访问apache
firewall-cmd --remove-interface=eth1 --zone=public #把eth1从public域中移走
把eth1网卡添加到trusted域,可以看到,public域里已经没有eth1网卡了
在真机端的浏览器地址栏输入172.25.254.114,可以看到,不能访问apache的默认发布目录
而在server虚拟机中可以访问到apache的默认发布页面
firewall-cmd --change-interface=eth1 --zone=public
#将eth1网卡的域改为public
可以看到,eth1网卡已经在public域里了
firewalld防火墙主要涉及两个文件:
1. /usr/lib/firewalld/ #火墙工作时访问的数据文件
2. /etc/firewalld/ #火墙工作时访问的策略文件
在/usr/lib/firewalld/services文件中,保存着多个以.xml结尾的文件,每个文件以它所提供的服务命名, 火墙在工作时访问这些数据文件,就可以通过这些服务
由于我们对apache服务比较熟悉,我们使用vim命令来查看一下.xml中写入的内容
可以看到,里边包含.xml文件的版本信息,编码方式,服务名称,服务描述,使用的协议及端口号
如果我们自己想在firewalld的数据文件中添加相同格式的服务文件,那么,防火墙也就能够提供相应的服务,我们可以看到,防火墙的默认服务中并没有iscsi网络磁盘共享服务,先将apache服务的文件复制一份,名称为iscsi.xml
对这个文件的内容进行修改,可以删除描述性的内容,添加服务名称,端口号修改为3260
修改完文件之后需要重启火墙服务才能生效
firewall-cmd --get-services #查看防火墙可以使用的服务,可以看到,现在已经包含了iscsi服务
在防火墙中永久添加iscsi服务,重新加载使其生效
在防火墙的信息列表中也可以看到已经添加了iscsi服务
切到/etc/firewall/zones目录下,查看域文件中存在的文件
使用vim命令查看公共域文件的内容
可以看到,里边包含 <service name="http">的行就代表着公共域允许这个服务
使配置修改生效,查看http服务是否添加成功
firewall-cmd --reload
firewall-cmd --list-all
可以看到,public域已经添加了http服务
firewall-cmd --list-ports #列出已经存在的端口
firewall-cmd --add-port=8080/tcp #将以tcp协议的方式传输数据的3260端口添加进firewald
firewall-cmd --list-ports #再次查看端口是否已经添加进firewalld
firewall-cmd --remove-port=8080/tcp #将8080端口从firewalld中移除
firewall-cmd --list-ports #列出已经存在的端口,看8080端口是否成功移除
从上图可以看到,8080端口已经成功添加
从上图可以看到,8080端口已经成功移除
desktop服务器端:
首先查看firewald中public域已经添加的服务
可以看到,firewalld中含有ssh服务,将ssh服务移除,使用–reload重新加载
再次查看列表发现,ssh服务已经不在firewalld里
查看desktop服务器的ip为172.25.254.114
在真机端测试:
用真机测试,使用ssh root @172.25.254.114
命令来测试firewalld服务器到底是否允许ssh服务
输入密码之后发现,能够登陆desktop服务器,说明在desktop服务器端虽然使用firewall-cmd --reload命令重新加载使其生效,并且列表里也已经看不到ssh服务,但是实际上ssh服务依然存在
desktop服务器端:
再次使用firewall-cmd --complete-reload
重新加载使移除生效
在真机端测试:
用真机sshdesktop虚拟机,此时可以发现,终端被占用,无法进行操作,说明ssh服务已经被彻底移除了
总结:
reload: 管理当前火墙状态,重新加载使其生效,不会终止任何当前已经建立的到达服务器的链接
complete-reload: 管理当前火墙状态,重新加载生效,并且会断掉访问服务器的连接
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。