#化鲲为鹏,我有话说# 鲲鹏云服务器 Selinux 设置

举报
wanghan-devops 发表于 2019/11/12 17:43:08 2019/11/12
【摘要】 SELinux是一个额外的系统安全层,目的是防止已遭泄露的系统服务访问用户数据。基于用户/组/权限的安全模型称为自由决定的访问控制基于对象并更加复杂的规则控制称为强制访问控制要允许远程匿名访问WEB服务器。必须打开防火墙端口,恶意人员则有机会通过安全漏洞入侵系统,继而取得用户和组的权限。而SELinux是用于确定哪个进程可以访问那些文件、目录和端口的一组安全规则,每个文件、进程和端口都具有特...

SELinux是一个额外的系统安全层,目的是防止已遭泄露的系统服务访问用户数据。

基于用户/组/权限的安全模型称为自由决定的访问控制

基于对象并更加复杂的规则控制称为强制访问控制

要允许远程匿名访问WEB服务器。必须打开防火墙端口,恶意人员则有机会通过安全漏洞入侵系统,继而取得用户和组的权限。而SELinux是用于确定哪个进程可以访问那些文件、目录和端口的一组安全规则,每个文件、进程和端口都具有特别的安全标签,称为SELinux上下文(是一个名称)。SELinux策略使用上下文来确定某个进程能否访问文件、目录或端口,除非规则授予访问权限。

SELinux标签具有多种上下文:用户、角色、类型(和敏感度)。目标策略会根据第三个上下文(即类型上下文)来制定自己的规则。类型上下文的名称通常以_t结尾。

1)system_u 指的是SElinux用户,root表示root账户身份,user_u表示普通用户无特权用户,system_u表示系统进程,通过用户可以确认身份类型,一般搭配角色使用。身份和不同的角色搭配时有权限不同,虽然可以使用su命令切换用户但对于SElinux的用户并没有发生改变,账户之间切换时此用户身份不变,在targeted策略环境下用户标识没有实质性作用。

2)object_r 一般为文件目录的角色、system_r一般为进程的角色,在targeted策略环境中用户的角色一般为system_r。用户的角色类似用户组的概念,不同的角色具有不同的身份权限,一个用户可以具备多个角色,但是同一时间只能使用一个角色。在targeted策略环境下角色没有实质作用,在targeted策略环境中所有的进程文件的角色都是system_r角色。

3)type 文件和进程都有一个类型,SElinux依据类型的相关组合来限制存取权限。

4)s0:[MLS、MCS]:MCS负责对同类进程进行彼此区分,而MLS则允许一种进程拥有指向另一种进程的支配权限。(也就是说:MLS与MCS非常相似,但它为强制机制添加了"支配"这一概念。MCS标签必须在完全匹配的情况下才能通过,但一条MLS标签可以支配另一条MLS标签从而获得访问许可。)

例如:

httpd_sys_content_t //文件和目录的类型上下文

httpd_port_t //端口的类型上下文

tmp_t //位于/tmp中的文件和目录的类型上下文。

1、查看安全上下文:

[root@localhost ~]# id //可以查看用户的上下文

[root@localhost ~]# ls -dZ /var/www/html/

[root@localhost ~]# ls -dZ /tmp

[root@localhost ~]# ps -axZ

[root@localhost ~]# ps -ZC httpd

2、查看并设置SELinux模式

enforcing //强制模式

permissive //许可模式

disabled //禁用模式

[root@localhost ~]# sestatus -v //查看SELinux状态

1)临时设置

[root@localhost ~]# getenforce

[root@localhost ~]# setenforce 0/1

注:

0  代表permissive(许可模式)

1  代表enforcing(强制模式)

2)永久设置

[root@localhost ~]# vim /etc/selinux/config

修改

SELINUX=enforcing|permissive|disabled

[root@localhost ~]# reboot //重启生效

3、修改SELinux上下文

1)使用chcon命令

[root@localhost ~]#mkdir /www

[root@localhost ~]#ls -dZ /www //查看默认的类型上下文

[root@localhost ~]# chcon -t httpd_sys_content_t /www/

[root@localhost ~]# ls -dZ /www/

注意:

子级文件和目录会继承父级目录的上下文

使用chcon设置后,系统重启之后,将会还原为默认的上下文

2)使用restorecon命令

[root@localhost ~]# restorecon -v /www/ //查看默认上下文

[root@localhost ~]# restorecon /www/ //使用此命令来设置默认上下文

[root@localhost ~]# ls -dZ /www/

3)

[root@localhost ~]#mkdir /www

[root@localhost ~]#touch /www/1.txt

[root@localhost ~]#touch /www/2.txt

[root@localhost ~]#ll -Z /www/

[root@localhost ~]#mv /www/* /var/www/html/

[root@localhost ~]#ls -Z /var/www/html/

[root@localhost ~]#ls -dZ /var/www/html/

[root@localhost ~]#semanage fcontext -l

[root@localhost ~]#semanage fcontext -l  | grep "/var/www/html"

[root@localhost ~]#restorecon -Rv /var/www/html/ //设置上下文

3、修改默认安全上下文并生效

[root@localhost ~]# semanage fcontext -a -t httpd_sys_content_t “/www/html(/.*)?”

//通过正则表达式匹配。

[root@localhost ~]#restorecon -Rv /var/www/html/

4、修改SELinux布尔值

SELinux布尔值是更改SELinux策略行为的开关,SELinux布尔值通过启用和禁用规则,来调整策略。

1)查看布尔值

[root@localhost ~]#getsebool -a

[root@localhost ~]#getsebool -a | grep "ftpd"

2)设置布尔值

[root@localhost ~]#setsebool ftpd_anon_write on   //临时生效

[root@localhost ~]#setsebool -P allow_ftpd_anon_write=1  //永久生效

例:

安装SELINUX的工具包

[root@localhost ~]# rpm -ivh /media/RHEL_5.5\ i386\ DVD/Server/policycoreutils-newrole-1.33.12-14.8.el5.i386.rpm

以搭建vsftpd服务器为例,使用selinux。

[root@localhost ~]# rpm -ivh /media/RHEL_5.5\ i386\ DVD/Server/vsftpd-2.0.5-16.el5_4.1.i386.rpm

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

[root@localhost ~]# service vsftpd restart

[root@localhost ~]# chmod 777 pub/

[root@localhost ~]# getsebool -a | grep ftp

[root@localhost ~]# setsebool -P allow_ftpd_anon_write=1

[root@localhost ~]# chcon -t public_content_rw_t /var/ftp/pub/

3、查看SElinux安全上下文

semanage fcontext -l

semanage fcontext -l  | grep httpd_sys

semanage fcontext -l  | grep httpd_sys_con


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。