1.selinux
selinux安全子系统从域限制和安全上下文限制让各个服务都受到约束,使其仅或得本应获取的资源。
域:服务功能限制;
安全上下文:文件权限的限制。
selinux的状态通过配置/etc/selinux/config。建议状态调整为enforcing,配置完毕后可通过重启系统或者执行命令setenforce 0和setenforce 1生效。
2.semanage命令
该命令用于管理selinux策略
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
上面命令用于修改目录的安全上下文值,-a参数表示修改,-t参数表示“类型”,http_sys_content_t表示安全上下文值(目标目录要被修改为该值),/home/wwwroot为目标目录,wwwroot后面不能加“/”(可能是版本的原因)。
restorecon命令用于让安全上下文立即生效。
3.配置虚拟主机功能
虚拟主机功能基于IP地址、主机域名、端口号进行实现。
基于IP地址
[root@linuxprobe ~]# mkdir -p /home/wwwroot/10
[root@linuxprobe ~]# echo "IP:192.168.10.10" > /home/wwwroot/10/index.html
[root@linuxprobe ~]# vim /etc/httpd/conf/httpd.conf
………………省略部分输出信息………………
113 <VirtualHost 192.168.10.10>
114 DocumentRoot /home/wwwroot/10
115 ServerName www.linuxprobe.com
116 <Directory /home/wwwroot/10 >
117 AllowOverride None
118 Require all granted
119 </Directory>
120 </VirtualHost>
[root@linuxprobe ~]# systemctl restart httpd
[root@linuxprobe ~]# systemctl enable httpd
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10/*
[root@linuxprobe ~]# restorecon -Rv /home/wwwroot
首先是创建该IP保存数据的目录(/home/wwwroot/10),编写访问网站的首页文件(index.html),再编辑httpd服务的配置文件,在documentroot要写上变更的网站数据的目录,保持一致。编辑好后,保存并退出。重启并把该服务加入启动项,再设置该目录及目录内文件的安全上下文(不能递归操作,所以多执行几步),通过restorecon命令让安全上下文立即生效。
基于主机域名
该实验用强制解析进行IP地址的访问。(指定该域名对应的IP地址)
[root@linuxprobe ~]# vim /etc/hosts #打开该配置文件,在已有内容后面追加下面的一行内容
192.168.10.10 www.linuxprobe.com bbs.linuxprobe.com tech.linuxprobe.com
[root@linuxprobe ~]# ping -c 4 www.linuxprobe.com #ping一下看是否可以ping通
64 bytes from www.linuxprobe.com (192.168.10.10): icmp_seq=4 ttl=64 time=0.069 ms
--- www.linuxprobe.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.061/0.069/0.077/0.008 ms
[root@linuxprobe ~]# mkdir -p /home/wwwroot/www #创建网站数据保存目录
[root@linuxprobe ~]# echo "WWW.linuxprobe.com" > /home/wwwroot/www/index.html #写入网站首页文件,成功则会显示写入的内容。
[root@linuxprobe ~]# vim /etc/httpd/conf/httpd.conf #编辑httpd服务配置文件
………………省略部分输出信息………………
113 <VirtualHost 192.168.10.10> #虚拟主机IP地址
114 DocumentRoot "/home/wwwroot/www" #网站数据存放目录
115 ServerName "www.linuxprobe.com" #网站服务器域名
116 <Directory "/home/wwwroot/www"> #网站数据目录的权限,跟保存数据目录保持一致
117 AllowOverride None
118 Require all granted #允许所有请求
119 </directory>
120 </VirtualHost>
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot #设置目录及文件的安全上下文
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www/*
[root@linuxprobe ~]# restorecon -Rv /home/wwwroot #让安全上下文立即生效
基于端口号
设置基于端口号的虚拟主机功能,涉及到了selinux域及安全上下文的限制。
[root@linuxprobe ~]# mkdir -p /home/wwwroot/6111 #创建网站数据保存目录
[root@linuxprobe ~]# echo "port:6111" > /home/wwwroot/6111/index.html #写入网站首页文件
[root@linuxprobe ~]# vim /etc/httpd/conf/httpd.conf #编制httpd服务的主配置文件,在43行插入该端口号6111
43 Listen 6111
[root@linuxprobe ~]# vim /etc/httpd/conf/httpd.conf #虚拟主机信息的配置
………………省略部分输出信息………………
113 <VirtualHost 192.168.10.10:6111> #虚拟主机IP地址及端口号
114 DocumentRoot "/home/wwwroot/6111"
115 ServerName www.linuxprobe.com
116 <Directory "/home/wwwroot/6111">
117 AllowOverride None
118 Require all granted
119 </Directory>
120 </VirtualHost>
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot #设置目录及目录内文件安全上下文
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111/*
[root@linuxprobe ~]# restorecon -Rv /home/wwwroot/ #让设置过的安全上下文立即生效
[root@linuxprobe ~]# systemctl restart httpd #重启一下httpd服务,让更改生效,但是会提示以下报错信息,是因为selinux系统域的限制
Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctlxn'for details.
[root@linuxprobe ~]# semanage port -l | grep http #查找系统中关于http服务的布尔值,找到相关策略进行设置。
[root@linuxprobe ~]# semanage port -a -t http_port_t -p tcp 6111 #把6111端口添加到布尔值的允许内。再进行IP:端口号的访问就没有问题了。
来源:oschina
链接:https://my.oschina.net/u/4437431/blog/3194947