Apache服务器安装配置与SELinux安全子系统


一、环境准备

  1. 使用CentOS7.6作为服务器,此处使用VirtualBox创建了一个虚拟机,网络模式是桥接
  2. 查看ip执行: ip addr 或者ifconfig, 使用ssh连接虚拟机:ssh root@192.168.1.66

二、Apache服务安装

  1. 安装: yum install -y httpd
  2. 查看httpd服务状态:systemctl status httpd,此时默认是关闭状态; 或者执行:ps -aux | grep httpd查找httpd服务进程;
  3. 开启httpd服务:systemctl start httpd; 再次查看状态:systemctl status httpd
  4. systemctl enable httpd将httpd服务设置为开机自启动;
    (systemctl disable httpd关闭开机自启动)
    (systemctl is-enable httpd查看httpd是否为开机自启动)
  5. 使用主机的浏览器访问:127.0.0.1, 查看此时不能打开Apache提供的默认页面,这是因为防火墙中http服务的80端口没有放行导致
  6. 查看目前开放的端口firewall-cmd --list-ports
  7. 放行80端口:firewall-cmd --zone=public --add-port=80/tcp --permanent
  8. 重载防火墙配置:firewall-cmd reload
  9. 查看80端口:firewall-cmd --zone=public --query-port=80/tcp
  10. 刷新浏览器即可看到网页内容(默认内容就是 /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
  1. 修改Apache服务默认主页:
    1. mkdir /home/web然后 echo "Welcome to custom page" > /home/web/index.html
    2. vim /etc/httpd/conf/httpd.conf,
    3. 将 DocumentRoot “/var/www/html” 修改为 DocumentRoot “/home/web”
    4. 紧跟着将 <Directory “/var/www/html”> 修改为 <Directory “/home/web”> 保存退出
    5. 刷新浏览器,仍然看到页面没有变化,原因就是 SELinux 的限制

四、SELinux安全子系统

  1. 介绍
  • SELinux是Security-Enhanced Linux的缩写,表示“安全增强型Linux”
  • 美国国家安全局(NSA)在Linux开源社区的帮助下开发的MAC(mandatory access control)的安全子系统
  • SELinux的“双重保险”
    模式 含义
    域限制 (Domain Limitation) 对服务程序的功能进行限制
    安全上下文 (Security Context) 对文件资源的访问限制
  • SELinux的三种配置模式
    配置模式 含义
    enforcing 强制启用安全策略模式,将拦截服务的不合法请求
    permissive 遇到服务越权访问时,只发出警告而不强制拦截
    disabled 对于越权的行为不警告也不拦截
  1. 设置
  • sestatus查看状态 (或者使用 sestatus -v显示更多信息)
  • cat /etc/selinux/config 查看配置,可以直接修改此配置文件,但是要等系统下次启动时才能生效
  • getenforce 得到 Enforcing
  • setenforce 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
  • 刷新页面,即看到新的页面

文章作者: XiaoSenMao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 XiaoSenMao !
  目录