安全服务之安全基线及加固(三)Apache篇

时间:2022-07-22
本文章向大家介绍安全服务之安全基线及加固(三)Apache篇,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

此文章为原创连载文章,关注公众号,持续更新,欢迎转载,标明来源作者即可​。

0x01 前言

安全服务工程师大家应该都知道,对于他的岗位职责你可能会说不就是渗透测试啊、应急响应嘛.....实际上正式一点的企业对于安服的要求是包括了漏洞扫描、安全基线检查、渗透测试、安全加固、日志分析、恶意代码检查、应急响应、安全加固等差不多十个方面的内容的。内容多吗?我也觉得多!

对于基线加固说,不管是对于安服还是安全运营人员来说都是被要求的!接着上回的分享,一起来看看呗!

0x02 Apache与Tomcat的区别

1、apache是web服务器,tomcat是应用(java)服务器,它只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展。

2、apache和tomcat都可以做为独立的web服务器来运行。但是apache不能解释java程序(jsp,serverlet)

3、Apache是普通服务器,本身只支持html即普通网页。不过可以通过插件支持PHP,还可以与Tomcat连通(单向Apache连接Tomcat,就是说通过Apache可以访问Tomcat资源。反之不然)

4、两者都是一种容器,只不过发布的东西不同。apache是html容器,功能像IIS一样,tomcat是jsp/servlet容器,用于发布JSP及JAVA的,类似的有IBM的webshere、EBA的Weblogic,sun的JRun等

5、apache和tomcat是独立的,在同一台服务器上可以集成。

(Apache安装啥的就没必要说了叭~)

0x03 日志审核登录

安全基线项说明:设备应配置日志功能,对运行错误、用户访问等进行记录,记录内容包括时间,用户使用的IP地址等内容。

检测操作步骤:

编辑/etc/httpd/conf/httpd.conf配置文件,设置日志记录文件、记录内容、记录格式。

LogLevelnotice
ErrorLoglogs/error_log
LogFormat"%h %l %u %t "%r" %>s %b "%{Accept}i""%{Referer}i" "%{User-Agent}i"" combined
CustomLoglogs/access_log combined

备注:

ErrorLog指令设置错误日志文件名和位置。错误日志是最重要的日志文件,Apachehttpd将在这个文件中存放诊断信息和处理请求中出现的错误。若要将错误日志送到Syslog,则设置:ErrorLogsyslog。

CustomLog指令设置访问日志的文件名和位置。访问日志中会记录服务器所处理的所有请求。

LogFormat设置日志格式。LogLevel用于调整记录在错误日志中的信息的详细程度,建议设置为notice。

0x04 禁止访问外部文件

安全基线项说明:禁止Apache访问Web目录之外的任何文件。

检测操作步骤

1、参考配置操作

编辑httpd.conf配置文件

<Directory/>
OrderDeny,Allow
Denyfrom all
</Directory>

2、补充操作说明

设置可访问目录

<Directory/web>
OrderAllow,Deny
Allowfrom all
</Directory>

其中/web为网站根目录。

0x05 错误页面处理

安全基线项说明:Apache错误页面重定向

检测操作步骤

(1)修改httpd.conf配置文件:

ErrorDocument400 /custom400.html
ErrorDocument401 /custom401.html
ErrorDocument403 /custom403.html
ErrorDocument404 /custom404.html
ErrorDocument405 /custom405.html
ErrorDocument500 /custom500.html

Customxxx.html为要设置的错误页面。

(2)重新启动Apache服务

0x06 目录列表访问限制

(1)编辑httpd.conf配置文件

<Directory"/web">
OptionsFollowSymLinks    
AllowOverrideNone    
Orderallow,deny
Allowfrom all
</Directory>

将OptionsIndexes FollowSymLinks中的Indexes去掉,就可以禁止Apache显示该目录结构。Indexes的作用就是当该目录下没有index.html文件时,就显示目录结构。

(2)设置Apache的默认页面,编辑%apache%confhttpd.conf配置文件

<IfModuledir_module>
DirectoryIndex index.html
</IfModule>

其中index.html即为默认页面,可根据情况改为其它文件。

(3)重新启动Apache服务

0x07 拒绝服务防范

安全基线项说明:拒绝服务防范。

检测操作步骤

(1)编辑httpd.conf配置文件,

Timeout10 KeepAlive On

KeepAliveTimeout15

AcceptFilterhttp data

AcceptFilterhttps data

(2)重新启动Apache服务

0x08 删除无用文件

安全基线项说明:删除缺省安装的无用文件。

检测操作步骤:

删除缺省HTML文件:

#rm -rf /usr/local/apache2/htdocs/*

删除缺省的CGI脚本:

#rm –rf /usr/local/apache2/cgi-bin/*

删除Apache说明文件:

#rm –rf /usr/local/apache2/manual

删除源代码文件:

#rm -rf /path/to/httpd-2.2.4*

根据安装步骤不同和版本不同,某些目录或文件可能不存在或位置不同。

0x09 隐藏敏感信息(版本号)

安全基线项说明:隐藏Apache的版本号及其它敏感信息。

检测操作步骤:

修改httpd.conf配置文件:

  ServerSignatureOff

  ServerTokensProd

0x10 更改Apache服务器默认端口

配置操作

/etc/httpd/conf/httpd.conf
Listen8000

0x11 后记

Apache的相关东西和系统类的相比内容要少很多,主要就是配置文件、日志的分析以及一些关键信息的隐藏。有疑惑的地方,再百度一下分分钟后,你就明白啦~