系列文章目录
RHCSA_3、软件管理(rpm、yum)
RHCSA_4、磁盘管理和文件系统
RHCSA_5、逻辑卷管理
SELinux介绍
- SELinux:Security Enhanceed Linux,即安全增强的Linux ; SELinux是一个Linux内核的安全模型,提供了访问控制安全策略机制,是美国国家安全局(NSA)在Linux社区帮助下开发的一种安全访问控制体系,是Linux历史上最杰出的安全子系统。
- SElinux机制:所有的进程和文件都被标记一种类型,类型定义了进程的操作域,每一个进程都被限制在自己的活动域中,SElinux策略规则定义了进程和文件之间的访问权限,仅当有明确的策略规则时才会被允许。
- SELinux配置文件:/etc/selinux/config
- SELinux工作类型: targeted:用来保护常见的网络服务,仅有限进程受到selinux控制,默认类型 ;minimum:targeted的修改版,只对选择的网络服务,仅对选中的进程生效; mls:提供mls机制的安全性,国防级别的
- SELinux工作模式: enforcing:强制模式,拦截并记录非法访问; permissive:宽容模式,只记录不阻止;disabled:禁用SElinux。
SELinux操作
临时设置
setenforce 0/1 ---- 0表示临时设置为permissive,1表示设置为enforcing
getenforce ---- 查看当前SELinux模式
1、安全上下文
所有文件、端口、进程都会被打上安全标签,这个标签就是安全上下文
安全上下文的组成:
# 查看文件的上下文标签:# ls -lZ
# 查看进程的上下文标签:# ps -auxZ
[root@client html]# ll -Z ----查看文件上下文标签
-rw-r--r--. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 0 9月 21 19:32 index.html
-rw-r--r--. 1 root root unconfined_u:object_r:admin_home_t:s0 0 9月 21 19:45 index.php
标签含义
unconfined_u:object_r:httpd_sys_content_t:s0
用户 : 角色 : 类型 :级别
- 用户:每一个系统账户都被映射到一个selinux用户 semanage login -l --查看系统用户与selinux账户的映射
- 角色:定义数据是程序、用户、还是文件资源
object_r:代表是文件或目录等文件资源
system_r:代表进程 - 类型:重要属性,定义何种类型的进程可以访问何种类型的文件资源
对于进程和文件,类型字段意义不同
在资源文件(object)上称为 type
在主体进程(subject)称为域 domain - 级别:安全级别,从s0到s15,s0是最低级别
2、安全上下文修改
永久修改 :文件不立即生效,刷新后有效
semanage fcontext # [修改默认标签,修改后无法还原]
# 选项
-a 添加
-t 修改类型
[root@client html]# semanage fcontext -a -t httpd_sys_content_t 'index.php' ----修改类型
[root@client html]#restorecon -v index.php ----刷新文件默认值,看到类型改变
Relabeled /var/www/html/index.php from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
临时修改 :文件立即有效,刷新后失效
chcon [options] file #[修改后的标签可以还原]
# 选项:
-R 递归修改
-t 修改类型
-r 修改角色
-u 修改用户
[root@client html]# chcon -t admin_home_t index.html ----临时修改
[root@client html]# ll -Z
-rw-r--r--. 1 root root unconfined_u:object_r:admin_home_t:s0 0 9月 21 19:32 index.html
-rw-r--r--. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 0 9月 21 19:45 index.php
[root@client html]# restorecon -v index.html ----刷新文件后类型还原
Relabeled /var/www/html/index.html from unconfined_u:object_r:admin_home_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
[root@client html]# ll -Z
-rw-r--r--. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 0 9月 21 19:32 index.html
-rw-r--r--. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 0 9月 21 19:45 index.php
3、端口安全配置
查看端口标签
semanage port -l
[root@client ~]# semanage port -l | grep ssh ----查看ssh服务放通的端口号
ssh_port_t tcp 22
向现有的端口标签中添加新的端口,首选修改sshd_conf配置文件,把SSH的访问端口修改为2202,重启sshd服务,发现sshd服务启动失败
向现有的端口标签中添加新的端口
[root@client ~]# semanage port -a -t ssh_port_t -p tcp 2202 ----添加新的端口标签
[root@client ~]# semanage port -l | grep ssh
ssh_port_t tcp 2202, 22
# 选项
-a 添加
-t 类型
-d 删除
-m 修改
-p 协议