Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将python等解释器编译到服务器中,对于apache服务的安全加固往往非常重要,以下简单的探讨apache常见的安全加固思路。
创建专用的apache服务的用户账号和组来运行apache及其服务组件。
如:groupadd apache 创建apache组
useradd apache -g apache 创建apache用户并将该用户加入到apache组中
之后将 User apache 和Group apache 加入到apache的配置文件:httpd.conf中,并且检查httpd,conf配置文件是否使用非专用用户运行apache,默认一般符合要求,Linux下默认apache或者nobody用户,Unix默认为daemon用户。
严格控制Apache主目录的访问权限,非超级用户不能修改该目录中的内容 ,Apache 的服务主目录对应于 配置文件 httpd.conf中的配置的服务主目录,并且我们应该修改httpd.conf中的配置文件使得只有root用户才能够修改apache服务主目录中,如:“Server Root /usr/local/apache” 。
一般主目录为/etc/httpd目录,默认情况下属主为root:root,其它用户不能修改文件,默认一般符合要求 严格设置配置文件和日志文件的权限,防止未授权访问。 方法:chmod 600 /etc/httpd/conf/httpd.conf”设置配置文件为属主可读写,其他用户无权限。 Ø 使用命令”chmod 644 /var/log/httpd/*.log”设置日志文件为属主可读写,其他用户只读权限。 Ø /etc/httpd/conf/httpd.conf默认权限是644,可根据需要修改权限为600。 Ø /var/log/httpd/*.log默认权限为644,默认一般符合要求。
设备应配置日志功能,对运行错误、用户访问等进行记录,记录内容包括时间,用户使用的 IP 地址等内 容。编辑 httpd.conf 配置文件,设置日志记录文件、记录内容、记录 格式。 其中,错误日志配置可参考:
说明:ErrorLog 指令设置错误日志文件名和位置;错误日志是最重要的 日志文件, Apache httpd 将在这个文件中存放诊断信息和处理请求中出现的错误。 若要将错误日志送到 Syslog,则设置: ErrorLog syslog。 CustomLog 指令指定了保存日志文件的具体位置以及日志的格式。访问日志中会记录服务器所处理的所有请求。 LogFormat 设置日志格式,建议设置为 combined 格式。 LogLevel 用于调整记录在错误日志中的信息的详细程度,建议设置为notice。 日志的级别,默认是warn,notice级别比较详细,在实际中由于日志会占用大量硬盘空间,一般没有设置 。
禁止apache访问web目录以外的文件,可配置:
如果目录列出,极可能会导致信息泄露和下载,禁止apache列出目录配置httpd.conf文件:
将Options Indexes FollowSymLinks 中的 Indexes 去掉,就可以禁 止 Apache 显示该目录结构。 Indexes 的作用 就是当该目录下没 有 index.html 文件时,就显示目录结构。 重新启动 Apache 服务 ,可以设置 /etc/httpd/httpd.conf 段中删除Options的Indexes设置。
Apache 错误页面重定向功能防止敏感信息泄露 修改 httpd.conf 配置文件:
根据业务需要,合理设置 session 时间,能够防止拒绝服务攻击 Ø,编辑 httpd.conf 配置文件:
默认Timeout 120 KeepAlive Off,KeepAliveTimeout 15,该项设置涉及服务器性能调整。
一般情况下服务器在和浏览器简历连接后,进行网页数据交互时会携带服务器的版本信息,者极大的增加了服务器被攻击的风险,修改httpd.conf问价你可以避免服务器本版信息泄露:
禁用PUT、DELETE等危险的http请求方法,编辑httpd.conf文件,设置白名单:
rm -rf /usr/local/apache2/htdocs/* 删除缺省安装的无用文件;
rm -rf /usr/local/apache2/cgi-bin/* 删除缺省的CGI脚本;
rm -rf /usr/local/apache2/manual 删除apache说明书;
rm -rf /path/to/httpd-2.2.4* 删除源码文件