selinux总结
DAC(自由访问控制):环境下进程是无束缚的 MAC(强制访问控制):环境下策略的规则决定控制的严格程度selinux的四种工作类型:
(1)strict:centos5,每个进程都受到selinux的控制 (2)targrtd:用来保护常见 的网络服务,仅有限进程受到selinux控制,只监控容易被入侵的进程。 (4)minimum :centos7,修改targeted,只对选择的网络服务 注:targeted为默认类型,minimum和mls稳定性不足,未加以应用,strict已不再使用。 selinux中的五个元素: (1)User:指定登陆系统的用户类型,多数本地进程都属于自由(unconfined)进程 (2)Role:定义文件,进程和用户的用途:文件:object_r,进程和用户:system_r (3)Type:指定数据类型规则中定义何种进程类型访问何种文件Target策略基于type实现多服务公用public_content_t (4)Sensitivity:限制访问的需要,由组织定义的分层安全级别,一个对象有且只有一个sensitivity (5)Category:对于特定组织划分不同的分类,一个对象可以有多个categroy selinux的状态: enforcing:强制,每个受限的进程都必须受限 permissive:允许,每个受限的进程违规操作不会被禁止,但是会被记录于审计日志。 disabled:禁用 selinux状态设置的相关命令: getenforce : 获取selinux当前状态 sestatus :查看selinux状态 setenforce 0|1 0:设置为permissive 1:设置为enforcing 注:仅限制在selinux开启状态下切换,如果设置为disable改为其他两个选项则需要重启后生效。 selinux相关配置文件:/boot/grub/grub.conf /etc/selinux/config /etc/sysconfig/selinux
查看文件标签:ls -Z ps -Z
给文件重新打标签:chcon [option]..[-u user] [-r role] [-t type] file
例如: chcon -t httpd_sys_content_t file
-R:递归打标签 恢复目录或文件默认的安全上下文:restorecon [-R] /path/to/somewhere 例如: restorecon -Rv /var/ftp/pub/ 安全上下文的查询和修改: (1)查询: semanage fcontext -l 查看所有服务默认的服务可以配合|grep 使用。 (2)添加安全上下文:semanage fcontext -a -t httpd_sys_content_t '/testdir(/.*)?' 例如: semanage fcontext -a -t public_content_rw_t '/var/ftp/pub(/.*)?' (3)删除安全上下文: semanage fcontext -d -t httpd_sys_content_t '/testdir(/.*)?' 例如:semanage fcontext -d -t public_content_rw_t '/var/ftp/pub(/.*)?'以apach的启用为例: (1)首先我们安装httpd 并启动服务,关闭防火墙。 (2)在touch /var/www/html/index.html 并编辑内容 (3)[root@localhost html]# cp index.html /app[root@localhost html]# ls -Z /app/index.html -rw-r--r--. root root unconfined_u:object_r:etc_runtime_t:s0 /app/index.html(4)[root@localhost html]# mv /app/index.html .mv: overwrite ‘./index.html’? y[root@localhost html]# ls -Z-rw-r--r--. root root unconfined_u:object_r:etc_runtime_t:s0 index.html此时我们会发现网页是不能访问的。(5)解决方法[root@localhost html]# restorecon -Rv /var/www/html/index.html restorecon reset /var/www/html/index.html context unconfined_u:object_r:etc_runtime_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0[root@localhost html]# ls -Z-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html如此就解决了问题。(6)如果想改变网站默认访问主目录则编辑vim /etc/httpd/conf/httpd.conf 更改其中的:DocumentRoot "/var/www/html"和将地址改为我们想要的地址。(7)地址改完我们还是不能访问的因为这个地方的期望值是不对的,我们使用semanage fcontext -l 查出期望值然后使用semanage fcontext -a -t httpd_sys_content_t '/app/webset(/.*)?' 增加期望值,然后再使用restorecon -Rv /app/webset/index.html 即可完成对路径的更改。(8)如果想更改网站的服务端口,同样也是进入vim /etc/httpd/conf/httpd.conf 将端口改为我们想要的端口号然后使用semanage port -l |grep http查出端口,再使用:semanage port -a -t http_port_t -p tcp 9527 最后重启服务就可以正常使用了。删除要先将文件中的改回去然后semanage port -d -t http_port_t -p tcp 9527 即可删除。(9)使vsftp可以匿名上传文件1.安装vsftp软件使用远程连接后是可以下载文件,但是不能上传文件2.这时我们可以查看是否是selinux的问题3.编辑vim /etc/vsftpd/vsftpd.conf 取消其中的上传选项使其生效然后可以上传文件4.问题任然没有解决但报错发生了改变5.ls -ld /var/ftp/pub 查看权限 然后添加权限chmod 777 pub/ 6.修改/var/ftp/pub 的setsebool 值为开启先使用:getsebool -a |grep ftp 然后使用:setsebool ftp_anon_write on 开启布尔值7.设置semanage fcontxt -a -t public_content_rw_t '/var/ftp/pub(/.*)?'8. restorecon -Rv /var/ftp/pub/ 即可完成。 (10)通过网页访问用户家目录: (1)[root@localhost conf.d]# vim /etc/httpd/conf.d/userdir.conf 更改配置 (2)systemctl restart httpd (3)useradd liubei (4)cd /home/liubei/ mkdir public_html
(5) setfacl -m u:apache:x liubei 查看:getfacl liubei/ (6)getsebool -a |grep http |grep home (7)setsebool -P httpd_enable_homedirs on到此完成。