RHEL简单管理SELINUX
Security Enhanced Linux(SELinux)是一个额外的系统安全层,主要目的是防止已遭泄露的系统服务访问用户数据。
对于一个服务来说,要关注SELinux的三个方面,一是文件SELinux安全上下文中的类型字段要和服务的类型字段匹配,二是服务SELinux允许端口,三是服务某个功能的布尔值。
下面以http服务为例子,一一阐述。
1.安装httpd包,查看是否安装成功 rpm -qa | grep http
httpd-2.4.6-17.el7.x86_64
httpd-tools-2.4.6-17.el7.x86_64
2.编辑配置文件,这里我们需要3个页面,因此需要准备3台虚拟主机,分别提供3个页面做测试。由于虚拟主机不能和本机一起使用,所以关闭本机服务。
vim /etc/httpd/conf/httpd.conf
#DocumentRoot "/var/www/html"
:wq
cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/
vim /etc/httpd/conf.d/httpd-vhosts.conf
<VirtualHost 192.168.1.126:80>
DocumentRoot "/var/www/html"
ServerName www1.example.com
ErrorLog "/var/log/httpd/dummy-host.example.com-error_log"
CustomLog "/var/log/httpd/dummy-host.example.com-access_log" common
</VirtualHost>
Listen 808
<VirtualHost 192.168.1.126:808>
DocumentRoot "/var/www/html2"
ServerName www2.example.com
ErrorLog "/var/log/httpd/dummy-host2.example.com-error_log"
CustomLog "/var/log/httpd/dummy-host2.example.com-access_log" common
</VirtualHost>
Listen 8088
<VirtualHost 192.168.1.126:8088>
DocumentRoot "/html3"
ServerName www3.example.com
ErrorLog "/var/log/httpd/dummy-host2.example.com-error_log"
CustomLog "/var/log/httpd/dummy-host2.example.com-access_log" common
</VirtualHost>
<Directory "/html3">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
:wq
3.由于防火墙规则限制,我们先开放httpd服务
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-port=808/tcp
firewall-cmd --permanent --add-port=8088/tcp
firewall-cmd --reload
4.准备3个页面
vim /var/www/html/index.html
<h1>www1.example.com</h1>
:wq
vim /var/www/html2/index.html
<h1>www2.example.com</h1>
:wq
vim /html3/index.html
<h1>www3.example.com</h1>
:wq
5.重启httpd服务
systemctl restart httpd
Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.重启失败,是什么原因呢,根据系统提示查看日志
6.journalctl -xn
可以看到有段提示,这就是我们前面讲的端口问题,需要在SELinux中允许服务使用此端口
If you want to allow /usr/sbin/httpd to bind to network port 808
Then you need to modify the port type.
7.可以使用命令查看http服务端口的类型名
semanage port -l | grep http
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
8.依据端口名添加使用端口
semanage port -a -t http_port_t -p tcp 808
semanage port -a -t http_port_t -p tcp 8088
9.修改完成后再次重启服务,此时服务正常运行
10.访问80端口的网页,成功访问
11.访问808端口的网页,成功访问
12.访问8088端口的网页,访问失败
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 html2
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 html3
14.修改html3的类型字段
semanage fcontext -a -t httpd_sys_content_t '/html3(/.*)?'
restorecon -vFR /html3/
15.重启服务
16.访问8088端口的网页,访问成功
17.最后一个测试httpd服务某个功能的布尔值
18.一httpd为每个用户提供家目录展示功能为例
19.开启用户家目录访问功能
vim /etc/httpd/conf.d/userdir.conf
# UserDir disabled
UserDir public_html
:wq
20.新建一个用户,并为其准备展示网页
useradd abc
mkdir /home/abc/public_html
vim /home/abc/public_html/index.html
<h1>abc.example.com</h1>
:wq
chmod o+rx /home/abc
21.重启服务
22.访问用户展示网页 http://192.1685.1.126/~abc
23.该访问被禁止的原因是该功能的布尔值为off,需要更改该功能的布尔值
getsebool -a | grep http 查看http服务支持的功能
httpd_enable_homedirs --> off 用户家目录展示功能
setsebool -P httpd_enable_homedirs on 开启该功能
24.重启服务
25.重新访问
26.到此基本管理SELinux已经介绍完毕
RHEL简单管理SELINUX的更多相关文章
- Service系统服务(一):安装一个KVM服务器、KVM平台构建及简单管理、virsh基本管理操作、xml配置文件的应用、为虚拟机制作快照备份、快建新虚拟机
一.安装一个KVM服务器 目标: 本例要求准备一台 RHEL7.2 服务器,将其搭建为KVM平台,主要完成下列操作: 1> 关闭本机的SELinux保护.防火墙服务 2> 挂载RHEL ...
- ssdb主从及双主模型配置和简单管理
ssdb主从及双主模型配置和简单管理 levelDB是一个key->value 的数据存储库,其只能在本地保存数据,支持持久化,并且支持保存非常大的数据,单机redis在保存较大数据的时候数十G ...
- MacOS下对postgresql的简单管理操作
如何安装在另一篇blog中有述,这里不再赘述.本篇简单说一下安装完postgresql之后的一些管理和查询操作. 首先安装完postgresql之后需要初始化数据库: initdb /usr/loca ...
- Centos7管理selinux及使用firewalld管理防火墙
CentOS 7.0默认使用的是firewall作为防火墙 1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status ...
- django admin后台(数据库简单管理后台)
只需要简单的几行胆码就可以生成一个完整的管理后台 这个就是django魅力之一 创建超级用户 python manage.py createsuperuser ---- 之后会提示输入用慕名 ...
- 简单管理用户SESSION小记(个人观点,欢迎斧正)
做了几年码农,记录下一般涉及到用户session管理的方法. 问题说明: a.用户如果点击退出时,可以获取用户动作,这样可以销毁session. b.用户直接关闭浏览器或者直接意外关机情况,无法获取用 ...
- JavaScript学习记录总结(七)——dom对象应用之用户简单管理
<!DOCTYPE html><html><head><title>users.html</title> <meta name=&qu ...
- haproxy配置文件简单管理
版本:python3功能:对haproxy配置文件进行简单的查询.添加以及删除功能操作流程:1.根据提示选择相应的选项2.进入所选项后,根据提示写入相应的参数3.查询功能会返回查询结果,添加.删除以及 ...
- MySQL简单管理
基础入门 ============管理MySQL========== .查看MySQL版本 mysqladmin --version .启动MySQL /etc/init.d/mysqld start ...
随机推荐
- Oracle打印日历功能
Oracle用SQL打印日历 1.1 打印当月日历 , D, NULL)) SUN, , D, NULL)) MON, , D, NULL)) TUE, , D, NULL)) WED, , D, ...
- 开始使用PHPUnit单元测试
何为单元测试: 指对软件中的基本单元进行测试,如函数.方法等,以检查其返回值或行为是否符合预期:实际中软件是很复杂的,由许多组件构成,执行流程连贯在一起,要进行单元片段的测试,就需要为其提供执行上下文 ...
- apache服务器绑定泛解析域名
<VirtualHost *:80> DocumentRoot "E:\web\bubuchu" ServerName bubuchu.com ServerAlias ...
- Java经典编程题50道之三十
有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. public class Example30 { public static void main(String[] arg ...
- php进阶之路--转载
之前有看过相关的文章,觉得还是这篇详细点,有具体的目标实现起来才更有动力 转载自:http://wen.52fhy.com/2016/2016-09-03-PHP-cheng-xu-yuan-xue- ...
- bzoj 1188 [HNOI2007]分裂游戏 SG函数 SG定理
[HNOI2007]分裂游戏 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1394 Solved: 847[Submit][Status][Dis ...
- 修改maven项目jdk版本,并解决Dynamic Web Module 3.1 requires Java 1.7 or newer错误
使用maven的时候,默认会使用1.5版本的JDK,并且创建项目时也会是1.5版本. 但是我想用JDK1.7版本,所以我手动将maven项目JDK改为1.7版本. 手动修改JDK版本为1.7以后,项目 ...
- hdu1061(2015-N1):1.快速幂;2.找规律
1.快速幂 原理:求a的b次方,将b转化为二进制数,该二进制位第i位的权是2^(i-1), 例如 11的二进制是1011 11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1 因此,我们将a¹ ...
- POJ - 1190 生日蛋糕 dfs+剪枝
思路:说一下最重要的剪枝,如果当前已经使用了v的体积,为了让剩下的表面积最小,最好的办法就是让R尽量大,因为V = πR 2H,A' = 2πRH,A' = V / R * 2 ,最大的R一定是取当前 ...
- ACdream 1068
我没有用二分法,直接构造最小数,既然题目保证答案一定存在那么与上界无关. 如给定S=16,它能构成的最小数为79,尽量用9补位,最高位为S%9.如果构造的数大于下界A,那么直接输出,因为这是S能构成的 ...