SELinux(Security-Enhanced Linux):美国NSA国家安全局提供的一套基于内核的增强的强制保护机制,主要针对用户、进程、文档做了一些安全标签及相关限制。其主要作用就是最大程度的减少系统中服务进程可访问的资源。
下面我们先进行前导知识的学习:
1)SELinux的运行模式:enforcing(强制)、permissive(宽松)、disabled(禁用)
2)查看SELinux模式:getenforce
切换SELinux模式:setenforce 1|0 //只能在强制、宽松之间进行切换
3)开机自动选择SELinux模式:
#vim /etc/selinux/config
SELINUX=enforcing
#reboot
相信大家对SELinux都有一定的了解了,下面将通过一道例题来加深对SELinux的理解:
a.输入命令:systemctl restart httpd,可以看到httpd服务无法启动,报错。进入/etc/httpd/conf/httpd.conf中查看其监听的端口试82。
其实就是SELinux在捣鬼!
b.接下来我们需要进行SELinux排错:
具体的命令如下:
#yum -y install setroubleshoot-server //装了这个服务后,当SELinux出现错误的时候会记录在日志里。
#grep setrouble /var/log/messages //会提示如何查看详细信息
#sealert -l ······ //查看详细警告(根据提示排错)
或者
journalctl -xe //查错:利用系统日志控制工具
如上图所示,装好setroubleshoot-server这个包以后,之后再次启动httpd服务时,会将报错信息写入日志里。这时候我们再次启动httpd服务,并在日志里搜索包含setrouble关键字的信息。
c.复制上图倒数第二行的命令并执行。将命令“semanage port -a -t PORT_TYPE -p tcp 82”中的改成http_port_t执行。这时候就可以顺利启动httpd服务了。
d.或者也可以输入在b中执行httpd服务时报错信息里面“journalctl -xe”这一命令行执行。
e.现在执行systemctl restart httpd就可以成功执行了,这个时候我们在/var/www/html创建三个文件file1、file2、file3。
f.现在打开firefox浏览器,输入http://red.net0.example.com:82,来拿刚进去看到的是测试页面,这个时候我们要删除/etc/httpd/conf.d/目录中welcome.conf这个欢迎页,然后再次重启httpd服务。并在浏览器中刷新页面,就可以看到上一步创建的三个文件的界面了。
有关于SELinux的内容到这里就结束啦,各位小伙伴记得一定啊哟动手实验哦!!