实验环境
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
用户运行,默认符合要求。
-
根据需要,为 Apache 服务创建用户及用户组。如果没有设置用户和组,则新建用户,并在 Apache 配置文件中进行指定。
i. 创建 Apache 用户组。
groupadd apache
ii. 创建 Apache 用户并加入 Apache 用户组。
useradd apache –g apache
iii. 将下面两行设置参数加入 Apache 配置文件 apache2.conf 中:
User apache Group apache
-
检查 apache2.conf 配置文件中是否允许使用非专用账户(如 root 用户)运行 Apache 服务。
默认设置一般即符合要求。Linux 系统中默认使用 apache 或者 nobody 用户,Unix 系统默认使用 daemon 用户。
加固作用:
- 以最小权限运行中间件服务,即使网站被getshell,也能减少影响程度。
扩展阅读:
禁用目录浏览功能
编辑配置文件apache2.conf,指定网站根目录添加Options FollowSymLinks参数。
<Directory /var/www/html>
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
若要启用目录浏览功能,则是Options Indexes FollowSymLinks
,同样禁止目录浏览功能除了删除Indexes
也可以在前面加个减号,即Options -Indexes FollowSymLinks
来表示。
加固作用:
- 不展示目录结构信息,防止敏感文件泄露。
扩展阅读:
Apache Options Indexes FollowSymLinks详解 - callie
启用日志审计
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信息 |
加固作用:
- 记录访问信息,提供溯源证据。
- 帮助开发者排查问题。
扩展阅读:
限制特定目录文件执行权限
编辑配置文件apache2.conf,根据业务需求添加下面内容。
<Directory "/var/www/html/upload">
<FilesMatch ".(php|php3)$">
Order allow,deny
Deny from all
</FilesMatch>
</Directory>
加固作用:
- 通过禁止访问来阻止一些非法文件的执行(恶意攻击者通过任意文件上传漏洞,往往会上传一些可执行文件,如木马文件,从而拿到webshell)。
扩展阅读:
自定义错误页面
编辑配置文件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
加固作用:
- 防止默认报错页面泄露一些敏感信息(开发框架、数据库语句、物理路径、内网IP等)。
扩展阅读:
隐藏Apache版本号
编辑配置文件apache2.conf,添加下面内容
ServerSignature Off
ServerTokens Prod
加固作用:
- 防止中间件版本信息泄露。
限制和允许特定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>
加固作用:
- 使访问受控。
扩展阅读:
扩展阅读
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/