当前位置:首页 > IT技术 > Web编程 > 正文

Apache安全加固
2021-09-19 22:43:14

实验环境

root@NF:~# apache2 -version
Server version: Apache/2.4.29 (Ubuntu)
Server built:   2020-03-13T12:26:16
root@NF:~# cat /etc/issue
Ubuntu 18.04.3 LTS 
 l

关注官网更新公告

https://httpd.apache.org/security_report.html

以最小权限运行Apache进程

注意:本环境下的Apache默认就是以www-data用户运行,默认符合要求。

  1. 根据需要,为 Apache 服务创建用户及用户组。如果没有设置用户和组,则新建用户,并在 Apache 配置文件中进行指定。

    i. 创建 Apache 用户组。

    groupadd apache

    ii. 创建 Apache 用户并加入 Apache 用户组。

    useradd apache –g apache

    iii. 将下面两行设置参数加入 Apache 配置文件 apache2.conf 中:

     User apache
     Group apache
    
  2. 检查 apache2.conf 配置文件中是否允许使用非专用账户(如 root 用户)运行 Apache 服务。

    默认设置一般即符合要求。Linux 系统中默认使用 apache 或者 nobody 用户,Unix 系统默认使用 daemon 用户。

image

加固作用:

  • 以最小权限运行中间件服务,即使网站被getshell,也能减少影响程度。

扩展阅读:

查看和修改运行 Apache 的用户与用户组 - 荒原之梦

linux 下修改 apache 启动的所属用户和组 - 天涯雪

apache2为什么有多个进程? - muru

禁用目录浏览功能

编辑配置文件apache2.conf,指定网站根目录添加Options FollowSymLinks参数。

<Directory /var/www/html>
	Options  FollowSymLinks
	AllowOverride None
	Require all granted
</Directory>

若要启用目录浏览功能,则是Options Indexes FollowSymLinks,同样禁止目录浏览功能除了删除Indexes也可以在前面加个减号,即Options -Indexes FollowSymLinks来表示。

image

加固作用:

  • 不展示目录结构信息,防止敏感文件泄露。

扩展阅读:

Apache Options Indexes FollowSymLinks详解 - callie

AllowOverride参数详解 - upupw

Apache的Order Allow,Deny 详解 - 与时俱进

Apache2.4使用require指令进行访问控制 - leoyu

启用日志审计

apache2默认启用了错误日志和访问日志的记录,可看配置文件apache.conf有无以下内容。

ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn

LogFormat "%v:%p %h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" vhost_combined
LogFormat "%h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

apache默认日志路径:/var/log/apache2

一条标准的访问日志内容如下:

192.168.56.1 - - [30/Mar/2020:16:34:56 +0800] "GET /test/index.php HTTP/1.1" 200 277 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
格式 含义
%h 远端主机(访问网站的客户端地址)
%l 远端登录名,用了短横代替
%u 远端用户名,用了短横代替
%t 时间,包括访问的日期、时间、时区
%r 请求起始行,包括请求方法、访问的文件路径
%>s HTTP状态码
%O 响应包数据大小,单位是字节
%{Referer}i 来源
%{User-Agent}i 远端主机浏览器的UA信息

加固作用:

  • 记录访问信息,提供溯源证据。
  • 帮助开发者排查问题。

扩展阅读:

Apache日志详解 - long9617

限制特定目录文件执行权限

编辑配置文件apache2.conf,根据业务需求添加下面内容。

<Directory "/var/www/html/upload">
	<FilesMatch ".(php|php3)$">
		Order allow,deny
		Deny from all
	</FilesMatch>
</Directory>

image

加固作用:

  • 通过禁止访问来阻止一些非法文件的执行(恶意攻击者通过任意文件上传漏洞,往往会上传一些可执行文件,如木马文件,从而拿到webshell)。

扩展阅读:

apache禁止访问文件或目录执行权限、禁止运行脚本PHP文件的设置方法(转)

自定义错误页面

编辑配置文件apache2.conf,添加下面内容

ErrorDocument 403 /custom403.html
ErrorDocument 404 /custom404.html
ErrorDocument 500 /custom500.html

其中customxxx.html为要设置的错误页面,需提前写好放网站根目录下。

root@NF:~# ls -lah /var/www/html/ | grep html
-rw-r--r--  1 ubuntu ubuntu  688 1月  19 15:00 403.html
-rw-r--r--  1 ubuntu ubuntu  685 1月  19 14:57 404.html
-rw-r--r--  1 ubuntu ubuntu  665 1月  19 15:01 500.html

image

加固作用:

  • 防止默认报错页面泄露一些敏感信息(开发框架、数据库语句、物理路径、内网IP等)。

扩展阅读:

APACHE_自定义404错误页面 - epsilon1

隐藏Apache版本号

编辑配置文件apache2.conf,添加下面内容

ServerSignature Off
ServerTokens Prod

image

加固作用:

  • 防止中间件版本信息泄露。

限制和允许特定IP访问

编辑配置文件apache2.conf,添加下面内容。

若使用IP白名单,则根据业务需求添加下面内容

<Directory "/var/www/html/test">
	Options All
	AllowOverride None
	Order Deny,Allow
	Deny From all
	Allow From 192.168.1.0/24 192.168.3.0/24
	Allow From 127.0.0.1
</Directory>

若使用IP黑名单,则根据业务需求添加下面内容

<Directory "/var/www/html/test">
	Options All
	AllowOverride None
	Order Deny,Allow
	Deny From 192.168.1.0/24 192.168.3.0/24
	Deny From 192.168.56.1
</Directory>

image

加固作用:

  • 使访问受控。

扩展阅读:

Apache中限制和允许特定IP访问 - we will rock you

扩展阅读

http://httpd.apache.org/docs/current/zh-cn/
https://blog.51cto.com/ww123/1639424
https://www.cnblogs.com/xiaozi/p/10117715.html
https://www.jianshu.com/p/a8bab3f50c7b
https://bbs.ichunqiu.com/thread-35736-1-1.html
http://www.defvul.com/apache/
https://www.alibabacloud.com/help/zh/faq-detail/52981.htm
https://blog.csdn.net/my98800/article/details/51740389

本文摘自 :https://www.cnblogs.com/

开通会员,享受整站包年服务立即开通 >