#化鲲为鹏,我有话说# 鲲鹏云服务器 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
- 点赞
- 收藏
- 关注作者
评论(0)