一、环境准备
- 使用CentOS7.6作为服务器,此处使用VirtualBox创建了一个虚拟机,网络模式是桥接
- 查看ip执行:
ip addr或者ifconfig, 使用ssh连接虚拟机:ssh root@192.168.1.66
二、Apache服务安装
- 安装:
yum install -y httpd - 查看httpd服务状态:
systemctl status httpd,此时默认是关闭状态; 或者执行:ps -aux | grep httpd查找httpd服务进程; - 开启httpd服务:
systemctl start httpd; 再次查看状态:systemctl status httpd systemctl enable httpd将httpd服务设置为开机自启动;
(systemctl disable httpd关闭开机自启动)
(systemctl is-enable httpd查看httpd是否为开机自启动)- 使用主机的浏览器访问:127.0.0.1, 查看此时不能打开Apache提供的默认页面,这是因为防火墙中http服务的80端口没有放行导致
- 查看目前开放的端口
firewall-cmd --list-ports - 放行80端口:
firewall-cmd --zone=public --add-port=80/tcp --permanent - 重载防火墙配置:
firewall-cmd reload - 查看80端口:
firewall-cmd --zone=public --query-port=80/tcp - 刷新浏览器即可看到网页内容(默认内容就是 /var/www/html/index.html )
三、Apache服务器配置
| 配置文件名称 | 位置 |
|---|---|
| 服务目录 | /etc/httpd |
| 主配置文件 | /etc/httpd/conf/httpd.conf |
| 网站数据目录 | /var/www/html |
| 访问日志 | /var/log/httpd/access_log |
| 错误日志 | /var/log/httpd/error_log |
- 修改Apache服务默认主页:
mkdir /home/web然后echo "Welcome to custom page" > /home/web/index.htmlvim /etc/httpd/conf/httpd.conf,- 将 DocumentRoot “/var/www/html” 修改为 DocumentRoot “/home/web”
- 紧跟着将 <Directory “/var/www/html”> 修改为 <Directory “/home/web”> 保存退出

- 刷新浏览器,仍然看到页面没有变化,原因就是 SELinux 的限制
四、SELinux安全子系统
- 介绍
- SELinux是Security-Enhanced Linux的缩写,表示“安全增强型Linux”
- 美国国家安全局(NSA)在Linux开源社区的帮助下开发的MAC(mandatory access control)的安全子系统
- SELinux的“双重保险”
模式 含义 域限制 (Domain Limitation) 对服务程序的功能进行限制 安全上下文 (Security Context) 对文件资源的访问限制 - SELinux的三种配置模式
配置模式 含义 enforcing 强制启用安全策略模式,将拦截服务的不合法请求 permissive 遇到服务越权访问时,只发出警告而不强制拦截 disabled 对于越权的行为不警告也不拦截
- 设置
sestatus查看状态 (或者使用sestatus -v显示更多信息)
cat /etc/selinux/config查看配置,可以直接修改此配置文件,但是要等系统下次启动时才能生效
getenforce得到 Enforcingsetenforce 0设置为’Permissive’并且立即生效,当系统重启时会失效getenforce得到 Permissive- 刷新网页看到自定义页面

setenforce 1getenforce得到 Enforcing- 刷新网站,又看到了Apache的默认页面
ls -Zd /var/www/html得到安全上下文
ls -Zd /home/web得到安全上下文
对比可以看到差异- 需要将 ‘/home/web’ 的安全上下文修改成和 ‘/var/www/html’一致就行
semanage命令可能没有安装(yum provides semanage得到需要安装’policycoreutils-python’工具)yum install -y policycoreutils-pythonsemanage fcontext -a -t httpd_sys_content_t /home/websemanage fcontext -a -t httpd_sys_content_t /home/web/*- 使修改的上下文立即生效:
restorecon -Rv /home/web ls -Zd /home/web- 刷新页面,即看到新的页面