学习啦>学习电脑>电脑安全>系统安全>

教你Apache安全如何加固

时间: 若木635 分享

  一.账号设置

  以专门的用户帐号和组运行 Apache。

  1、根据需要为 Apache 创建用户、组

  2、参考配置操作 如果没有设置用户和组,则新建用户,并在 Apache 配置文件中指定

  (1) 创建 apache 组:groupadd apache

  (2) 创建 apache 用户并加入 apache 组:useradd apache –g apache

  (3) 将下面两行加入 Apache 配置文件 httpd.conf 中

  User apache

  Group apache

  3、检查 httpd.conf 配置文件。 检查是否使用非专用账户(如 root)运行 apache

  默认一般符合要求,Linux下默认apache或者nobody用户,Unix默认为daemon用户

  二.授权设置

  严格控制Apache主目录的访问权限,非超级用户不能修改该目录中的内容

  1、Apache 的 主目录对应 于 Apache Server

  配置文件 httpd.conf 的

  Server Root控制项中,

  应为:

  Server Root /usr/local/apache”

  2、判定条件

  非超级用户不能修改该目录中的内容

  3、检测操作

  尝试修改,看是否能修改

  4、一般为/etc/httpd目录,默认情况下属主为root:root,其它用户不能修改文件,默认一般符合要求

  严格设置配置文件和日志文件的权限,防止未授权访问

  1、chmod 600 /etc/httpd/conf/httpd.conf”设置配置文件为属主可读写,其他用户无权限。

  2、使用命令”chmod 644 /var/log/httpd/*.log”设置日志文件为属主可读写,其他用户只读权限。

  3、/etc/httpd/conf/httpd.conf默认权限是644,可根据需要修改权限为600。

  4、/var/log/httpd/*.log默认权限为644,默认一般符合要求。

  三.日志设置

  设备应配置日志功能,对运行错误、用户访问等进行记录,记录

  内容包括时间,用户使用的 IP 地址等内容。

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

  其中,错误日志:

  LogLevel notice #日志的级别

  ErrorLog /…/logs/error_log #日志的保存位置(错误日志)

  访问日志:

  LogFormat %h %l %u %t \”%r\” %>s %b “%{Accept}i\”%{Referer}i\” \”%{User-Agent}i\””

  combined

  CustomLog /…/logs/access_log combined (访问日志)

  ErrorLog 指令设置错误日志文件名和位置。错误日志是最重要的 日志文件,

  Apache httpd 将在这个文件中存放诊断信息和处理请 求中出现的错误。

  若要将错误日志送到 Syslog,则设置: ErrorLog syslog。

  CustomLog 指令指定了保存日志文件的具体位置以及日志的格式。访问日志中会记录服务器所处理的所有请求。

  LogFormat 设置日志格式,建议设置为 combined 格式。

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

  日志的级别,默认是warn,notice级别比较详细,在实际中由于日志会占用大量硬盘空间,一般没有设置

  四.禁止访问外部文件

  禁止 Apache 访问 Web 目录之外的任何文件。

  1、参考配置操作

  编辑 httpd.conf 配置文件,

  Order Deny,Allow

  Deny from all

  2、设置可访问目录,

  Order Allow,Deny

  Allow from all

  其中/web 为网站根目录

  3、默认配置是

  Options FollowSymLinks

  AllowOverride None

  一般可根据需要设置

  五.目录列出

  禁止 Apache 列表显示文件

  编辑 httpd.conf 配置文件。

  Options Indexes FollowSymLinks #删掉

  Indexes

  AllowOverride None

  Order allow,deny

  Allow from all

  将Options Indexes FollowSymLinks 中的 Indexes 去掉,就可以禁 止 Apache 显示该目录结构。

  Indexes 的作用就是当该目录下没 有 index.html 文件时,就显示目录结构。

  2、重新启动 Apache 服务

  3、可以设置 /etc/httpd/httpd.conf 段中删除Options的Indexes设置 一般可根据需要设置

  六.错误页面重定向

  Apache 错误页面重定向

  1、修改 httpd.conf 配置文件:

  ErrorDocument 400 /custom400.html

  ErrorDocument 401 /custom401.html

  ErrorDocument 403 /custom403.html

  ErrorDocument 404 /custom404.html

  ErrorDocument 405 /custom405.html

  http://www.013188.com

  ErrorDocument 500 /custom500.html Customxxx.html 为要设置的错误页面。

  2、重新启动 Apache 服务

  3、此项需要应用系统设有错误页面,或者不在httpd中设置完全由业务逻辑实现,可不做

  七.拒绝服务防范

  根据业务需要,合理设置 session 时间,防止拒绝服务攻击

  1、编辑 httpd.conf 配置文件,

  Timeout 10 #客户端与服务器端建立连接前的时间间隔

  KeepAlive On

  KeepAliveTimeout 15 #限制每个 session 的保持时间是 15 秒 注:此处为一建议值,具体的设定需要根据现实情况。

  2、重新启动 Apache 服务

  3、默认Timeout 120 KeepAlive Off,KeepAliveTimeout 15,该项设置涉及性能调整,一般不做。

  八.隐藏 Apache 的版本号

  隐藏 Apache 的版本号及其它敏感信息。

  1、配置操作

  修改 httpd.conf 配置文件: ServerSignature Off ServerTokens Prod

  2、默认是 ServerSignature On,ServerTokens OS,可以设置

  九.关闭 TRACE

  关闭 TRACE,防止 TRACE 方法被访问者恶意利用

  1、 配置修改vim /etc/httpd/conf/httpd.conf

  添加 “TraceEnable Off”

  注:适用于 Apache 2.0 以上版本

  2、默认没有该项设置,可以做。

  十.禁用 CGI

  如果服务器上不需要运行 CGI 程序,建议禁用 CGI

  1、 修改配置vim /etc/httpd/conf/httpd.conf

  把 cgi-bin 目录的配置和模块都注释掉

  #LoadModule cgi_module modules/mod_cgi.so

  #ScriptAlias /cgi-bin/ “/var/www/cgi-bin/”

  #

  #AllowOverride None

  # Options None

  #Order allow,deny

  #Allow from all

  #

  2、 根据需要设置,如果没有CGI程序,可以关闭

  十一.监听地址绑定

  服务器有多个 IP 地址时,只监听提供服务的 IP 地址

  1、 修改配置vim /etc/httpd/conf/httpd.con

  修改

  Listen x.x.x.x:80

  2、检测操作

  使用命令”cat /etc/httpd/conf/httpd.conf|grep Listen”查看是否 绑定 IP 地址

  3、默认设置是Listen 80监听所有地址,如果服务器只有一个IP地址可不做该项设置,如果有多个IP可以按照需要设。

  十二.删除缺省安装的无用文件

  删除缺省安装的无用文件。

  1、参考配置操作删除缺省 HTML 文件:

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

  删除缺省的 CGI 脚本:

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

  删除 Apache 说明文件:

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

  删除源代码文件:

  ( http://www.620788.com )

  # rm -rf /path/to/httpd-2.2.4* 根据安装步骤不同和版本不同,某些目录或文件可能不存在或位置不同。

  2、可根据实际情况删除,一般是 /var/www/html /var/www/cgi-bin 默认就是空的

  十三.禁用非法 HTTP 方法

  禁用PUT、DELETE等危险的HTTP 方法;

  1、 编辑 httpd.conf 文件。

  只允许 get、post 方法

  Deny from all

  2、检测操作

  查看 httpd.conf 文件,

  检查如下内容,是否只允许 get、post

  方法

  Deny from all

  3、根据需要可设置,如果没有不需要用到put delete HTTP 方法的话,

  加在/etc/httpd/conf/httpd.conf的段中。

139772