SELinux
1.SELinux
全称是Security-Enhanced Linux,安全增强的linux;
一套强化linux安全的mac扩展模块;
美国国家安全局主导开发;
SELinux 的运作机制
集成到Linux内核(2.6及以上)
为操作系统提供可定制的策略,管理工具
2.红帽的SELinux策略
SELINUXTYPE=targeted
--仅保护最常见的/关键的网络服务,其他不限制
SELINUXTYPE=mls
--提供多层次,全面的安全防护策略
我们vim /etc/selinux/config进去之后看到的SELINUXTYPE=targeted是比较常用的类型
3.SELINUX的运行模式
修改文件/etc/selinux/config(或者vim /etc/sysconfig/selinux,其实是同一个文件)
设置 SELINUX=disabled 以禁用
设置 SELINUX=permissive 宽松模式 (0):SELinux prints warnings instead of enforcing(警告而不是强制)
设置 SELINUX=enforcing 强制模式 (1)
查看当前运行模式
# getenforce
临时修改运行模式
[root@rhel6-1 html]# setenforce
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
当我们有时候怀疑是selinux的限制,导致某服务不能被访问时,我们可以临时修改selinux的运行模式,设为0,再查看下服务能否被访问,如果想永久修改,就需要修改他的配置文件
4、配置SELINUX的两个主要方面
1、SELINUX上下文环境
(1)查看一个文件的上下文环境值
# ls -Z //通过ls -Z 来查看上下文
(2)修改selinux上下文环境值
把文件恢复到所在目录的默认值
# restorecon -Rv /var/www/html //restrorecon表示恢复
或者设置某个文件的指定值
[root@rhel6-1 html]# chcon -t admin_home_t abc //chcon表示修改
常用选项:
-t,指定访问类型;
-u,-r,分别用来指定用户,角色;
-R,递归修改;
--reference=RFILE,参考指定文件的上下文
2、SELINUX布尔值
使用getsebool查看
#getsebool -a //-a 查看所有布尔值
使用setsebool设置
#setsebool -P allow_httpd_anon_write off //-P,永久更改,重启后仍然有效
设者布尔值的时候可以设为1或者on开启,同理,也可以设者为0或者off关闭
5.SELinux实例:
例一:SELINUX上下文环境
# echo ‘my test web site’ > ~/index.html
# ls -Z ~/index.html
# mv ~/index.html /var/www/html
通过web页面访问,无法访问到这个主页
# restorecon -Rv /var/www/html
# ls -Z /var/www/html/index.html
刷新web页面,可以访问到主页
例二:实现FTP匿名用户上传
(1)# mkdir –m 757 /var/ftp/incoming
(2)修改vsftpd.conf打开匿名上传
(3)上传文件测试,如果已经安装setroubleshoot,屏幕右上角会弹出提示,根据提示修改
# chcon -t public_content_rw_t /var/ftp/incoming
# getsebool -a | grep ftp ->获得与ftp相关的selinux布尔值
# setsebool -P allow_ftpd_anon_write 1(4)再次尝试上传,成功
例三:本地用户ftp登陆
直接用本地用户tom访问ftp,将会提示“不能改变目录”
查看相关的selinux布尔值
# getsebool -a | grep ftp ->获得与ftp相关的selinux布尔值
[root@rhel6-1 ~]# setsebool -P ftp_home_dir on
再次用tom登陆测试,成功
bool值相当于开关
可以装setroubleshooting
例四、windows通过samba访问linux
(1)安装samba
(2)# smbpasswd -a root
(3)启动服务
(4)在windows下用UNC路径访问,能够看到root的家目录,但是双击打不开
(5)# getsebool –a | grep samba
(6)# sebsebool -P samba_export_all_rw 1
(7)再次在windows下用UNC路径访问,可以打开root的家目录
6、图形化管理SELinux,安装setroubleshoot
# yum install –y setroubleshoot*
重启
有任何的selinux违规行为,系统都会给出提示和解决方案。
如果是图形界面下,屏幕右上角会弹出消息。如果是字符终端下,可以查看日志/var/log/message。如:
[root@rhel6-1 log]# tail -2 /var/log/messages
Dec 4 11:39:42 rhel6-1 setroubleshoot: SELinux is preventing /usr/sbin/httpd from getattr access on the file /var/www/html/index.html. For complete SELinux messages. run sealert -l 96114052-1747-4334-873e-3a48c35c514c
Dec 4 11:39:42 rhel6-1 setroubleshoot: SELinux is preventing /usr/sbin/httpd from getattr access on the file /var/www/html/index.html. For complete SELinux messages. run sealert -l 96114052-1747-4334-873e-3a48c35c514c
根据提示,在终端上运行命令:
# sealert -l 96114052-1747-4334-873e-3a48c35c514c ->显示selinux解决方案
7、获得SELINUX设置的帮助
(1)# man ftpd_selinux
# man httpd_selinux
# man samba_selinux
(2)有些服务,配置文件中也有说明
# vim /etc/samba/smb.conf
附:
1.SELinux安全上下文,Security Context,为文件/目录/设备标记访问控制属性;
属性构成 用户:角色:访问类型:选项...
[root@localhost html]# ls -Z /etc/samba/smb.conf
-rw-r--r--. root root system_u:object_r:samba_etc_t:s0 /etc/samba/smb.conf
比如,配置samba共享的时候,共享文件如果不更改上下文环境是不能共享出去的
2.安全上下文的一般规律:
移动的文件,原有的上下文属性不变;
复制的文件,自动继承目标位置的上下文。
1.SELinux
全称是Security-Enhanced Linux,安全增强的linux;
一套强化linux安全的mac扩展模块;
美国国家安全局主导开发;
SELinux 的运作机制
集成到Linux内核(2.6及以上)
为操作系统提供可定制的策略,管理工具
2.红帽的SELinux策略
SELINUXTYPE=targeted
--仅保护最常见的/关键的网络服务,其他不限制
SELINUXTYPE=mls
--提供多层次,全面的安全防护策略
我们vim /etc/selinux/config进去之后看到的SELINUXTYPE=targeted是比较常用的类型
3.SELINUX的运行模式
修改文件/etc/selinux/config(或者vim /etc/sysconfig/selinux,其实是同一个文件)
设置 SELINUX=disabled 以禁用
设置 SELINUX=permissive 宽松模式 (0):SELinux prints warnings instead of enforcing(警告而不是强制)
设置 SELINUX=enforcing 强制模式 (1)
查看当前运行模式
# getenforce
临时修改运行模式
[root@rhel6-1 html]# setenforce
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
当我们有时候怀疑是selinux的限制,导致某服务不能被访问时,我们可以临时修改selinux的运行模式,设为0,再查看下服务能否被访问,如果想永久修改,就需要修改他的配置文件
4、配置SELINUX的两个主要方面
1、SELINUX上下文环境
(1)查看一个文件的上下文环境值
# ls -Z //通过ls -Z 来查看上下文
(2)修改selinux上下文环境值
把文件恢复到所在目录的默认值
# restorecon -Rv /var/www/html //restrorecon表示恢复
或者设置某个文件的指定值
[root@rhel6-1 html]# chcon -t admin_home_t abc //chcon表示修改
常用选项:
-t,指定访问类型;
-u,-r,分别用来指定用户,角色;
-R,递归修改;
--reference=RFILE,参考指定文件的上下文
2、SELINUX布尔值
使用getsebool查看
#getsebool -a //-a 查看所有布尔值
使用setsebool设置
#setsebool -P allow_httpd_anon_write off //-P,永久更改,重启后仍然有效
设者布尔值的时候可以设为1或者on开启,同理,也可以设者为0或者off关闭
5.SELinux实例:
例一:SELINUX上下文环境
# echo ‘my test web site’ > ~/index.html
# ls -Z ~/index.html
# mv ~/index.html /var/www/html
通过web页面访问,无法访问到这个主页
# restorecon -Rv /var/www/html
# ls -Z /var/www/html/index.html
刷新web页面,可以访问到主页
例二:实现FTP匿名用户上传
(1)# mkdir –m 757 /var/ftp/incoming
(2)修改vsftpd.conf打开匿名上传
(3)上传文件测试,如果已经安装setroubleshoot,屏幕右上角会弹出提示,根据提示修改
# chcon -t public_content_rw_t /var/ftp/incoming
# getsebool -a | grep ftp ->获得与ftp相关的selinux布尔值
# setsebool -P allow_ftpd_anon_write 1(4)再次尝试上传,成功
例三:本地用户ftp登陆
直接用本地用户tom访问ftp,将会提示“不能改变目录”
查看相关的selinux布尔值
# getsebool -a | grep ftp ->获得与ftp相关的selinux布尔值
[root@rhel6-1 ~]# setsebool -P ftp_home_dir on
再次用tom登陆测试,成功
bool值相当于开关
可以装setroubleshooting
例四、windows通过samba访问linux
(1)安装samba
(2)# smbpasswd -a root
(3)启动服务
(4)在windows下用UNC路径访问,能够看到root的家目录,但是双击打不开
(5)# getsebool –a | grep samba
(6)# sebsebool -P samba_export_all_rw 1
(7)再次在windows下用UNC路径访问,可以打开root的家目录
6、图形化管理SELinux,安装setroubleshoot
# yum install –y setroubleshoot*
重启
有任何的selinux违规行为,系统都会给出提示和解决方案。
如果是图形界面下,屏幕右上角会弹出消息。如果是字符终端下,可以查看日志/var/log/message。如:
[root@rhel6-1 log]# tail -2 /var/log/messages
Dec 4 11:39:42 rhel6-1 setroubleshoot: SELinux is preventing /usr/sbin/httpd from getattr access on the file /var/www/html/index.html. For complete SELinux messages. run sealert -l 96114052-1747-4334-873e-3a48c35c514c
Dec 4 11:39:42 rhel6-1 setroubleshoot: SELinux is preventing /usr/sbin/httpd from getattr access on the file /var/www/html/index.html. For complete SELinux messages. run sealert -l 96114052-1747-4334-873e-3a48c35c514c
根据提示,在终端上运行命令:
# sealert -l 96114052-1747-4334-873e-3a48c35c514c ->显示selinux解决方案
7、获得SELINUX设置的帮助
(1)# man ftpd_selinux
# man httpd_selinux
# man samba_selinux
(2)有些服务,配置文件中也有说明
# vim /etc/samba/smb.conf
附:
1.SELinux安全上下文,Security Context,为文件/目录/设备标记访问控制属性;
属性构成 用户:角色:访问类型:选项...
[root@localhost html]# ls -Z /etc/samba/smb.conf
-rw-r--r--. root root system_u:object_r:samba_etc_t:s0 /etc/samba/smb.conf
比如,配置samba共享的时候,共享文件如果不更改上下文环境是不能共享出去的
2.安全上下文的一般规律:
移动的文件,原有的上下文属性不变;
复制的文件,自动继承目标位置的上下文。
本文转自Jx战壕 51CTO博客,原文链接:http://blog.51cto.com/xujpxm/1403235,如需转载请自行联系原作者