[root@host ~]# firewall-cmd --set-default-znotallow=dmz
Warning: ZONE_ALREADY_SET: dmz
success
[root@host ~]# firewall-cmd --permanent --znotallow=internal --add-source=192.168.0.0/24
success
[root@host ~]# firewall-cmd --permanent --znotallow=internal --add-service=mysql
success
[root@host ~]# firewall-cmd --reload
success
SELinux(Security-Enhanced Linux) 是一个额外的系统安全层。SElinux的主要目标是防止已遭泄露的系统服务访问用户数据。大多数linux管理员都熟悉标准的用户/组/其他权限安全模型。这种基于用户和组的模型为自由决定的访问控制。SElinux提供另一层安全,它基于对象并由更加复杂的规则控制,称为强制访问控制
SElinux实施了一组可以防止一个应用程序的弱点影响其他应用或基础系统的访问规则。
SElinux有三种模式:
强制:SElinux强制执行访问控制规则,计算机通常在该模式下运行。
许可:SElinux处于活动状态,但并不强制执行控制规则,而是记录违反规则的警告。该模式主要用于测试和故障排除。
禁用:SElinux完全关闭-不拒绝任何SElinux违规,甚至不予记录
SElinux是用于确定哪个进程可以访问哪些文件、目录和端口的一组安全规则。每个文件、进程、目录和端口都具有专门的安全标签,称为SElinux上下文。上下文是一个名称,SElinux策略使用它来确定某个进程能否访问文件、目录和端口。
SElinux标签具有多种上下文:用户、角色、类型和敏感度
更改当前selinux模式
[root@host ~]# getenforce
Enforcing
[root@host ~]# setenforce
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
[root@host ~]# setenforce 0
[root@host ~]# geten
getenforce getent
[root@host ~]# getenforce
Permissive
[root@host ~]# setenforce Enforcing
[root@host ~]# getenforce
Enforcing
[root@host ~]#
selinux端口标记
selinux不仅仅是进行文件和进程标记,SElinux策略还严格实施网络流量。SElinux用来控制网络流量的其中一种方法是标记端口
管理SElinux端口标记
在非标准端口上运行服务,SElinux几乎肯定会拦截此流量。在这种情况下,您必须更新SElinux端口标签。在某些情况下targeted策略已经通过可以使用的类型标记了端口;
列出端口标签
要获取所有当前端口标签分配的概述,请运行semanage port -l命令。 -l选项列出当前分配:
输出示例:
[root@host ~]# semanage port -l
SELinux 端口类型 协议 端口号
要优化搜索,使用grep命令:
[root@host ~]# semanage port -l | grep ftp
ftp_data_port_t tcp 20
ftp_port_t tcp 21, 989, 990
ftp_port_t udp 989, 990
tftp_port_t udp 69
管理端口标签:
使用semanage命令可以分配新端口标签、删除端口标签或修改现有端口标签。
要向现有端口标签(类型)中添加端口,使用以下语法,-a将添加新端口标签,-t表示类型,-p表示协议。
例如:要允许gopher服务侦听端口71/TCP:
[root@host~]# semanage port -a -t gopher_port_t -p tcp 71
要查看对默认策略的本地更改,管理员可以在semanage命令中添加-c选项。
SELinux 端口类型 协议 端口号
gopher_port_t tcp 71
删除端口标记
删除自定义端口标签的语法与添加端口标签的语法相同,但不是使用-a选项(表示添加),而是使用-d选项(表示删除)
例如:要删除端口71/TCP与gopher_port_t的绑定:
[root@host ~]# semanage port -d -t gopher_port_t -p tcp 71
修改端口绑定:
要更改端口绑定,请使用-m(修改)选项。这种流程比删除旧绑定并添加新绑定更高效。
例如,要将端口71/tcp从gopher_port_t修改为http_port_t,管理员可以使用如下命令:
[root@host ~]# semanage port -m -t http_port_t -p tcp 71