一、环境准备
- 使用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.html
vim /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 1
getenforce
得到 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-python
semanage fcontext -a -t httpd_sys_content_t /home/web
semanage fcontext -a -t httpd_sys_content_t /home/web/*
- 使修改的上下文立即生效:
restorecon -Rv /home/web
ls -Zd /home/web
- 刷新页面,即看到新的页面