0


Apache安全加固配置教程(小白篇)

Apache安全加固配置教程(小白篇)

资源宝分享:www.httple.net

在这里插入图片描述
一,Apache服务器的介绍

Apache服务器它是Internet网上应用最为广泛的Web服务器软件之一。Apache服务器源自美国国家超级技术计算应用中心(NCSA)的 Web服务器项目中。目前已在互联网中占据了领导地位。Apache服务器得经过精心配置之后,才能使它适应高负荷,大吞吐量的互联网工作。快速、可靠、通过简单的API扩展,Perl/Python解释器可被编译到服务器中,且完全免费,完全源代码开放。如果你需要创建一个每天有数百万人访问的Web服务器,Apache可能是最佳选择。

二,Apache服务器的主要安全缺陷

正如我们前言所说尽管Apache服务器应用最为广泛,设计上非常安全的程序。但是同其它应用程序一样,Apache也存在安全缺陷。毕竟它是完全源代码,Apache服务器的安全缺陷主要是使用HTTP协议进行的拒绝服务攻击(denial of service)、缓冲区溢出攻击以及被攻击者获得 root权限三缺陷和最新的恶意的攻击者进行“拒绝服务”(DoS)攻击。合理的网络配置能够保护Apache服务器免遭多种攻击。我们来介绍一下主要的安全缺陷:

(1)使用HTTP协议进行的拒绝服务攻击(denial of service)的安全缺陷

这种方法攻击者会通过某些手段使服务器拒绝对HTTP应答。这样会使Apache对系统资源(CPU时间和内存)需求的剧增,最终造成Apache系统变慢甚至完全瘫痪。

(2)缓冲区溢出的安全缺陷

该方法攻击者利用程序编写的一些缺陷,使程序偏离正常的流程。程序使用静态分配的内存保存请求数据,攻击者就可以发送一个超长请求使缓冲区溢出。比如一些Perl编写的处理用户请求的网关脚本。一旦缓冲区溢出,攻击者可以执行其恶意指令或者使系统宕机。

(3)被攻击者获得root权限的安全缺陷

该安全缺陷主要是因为Apache服务器一般以root权限运行(父进程),攻击者会通过它获得root权限,进而控制整个Apache系统。

(4)恶意的攻击者进行“拒绝服务”(DoS)攻击的安全缺陷

这个最新在6月17日发现的漏洞,它主要是存在于Apache的chunk encoding中,这是一个HTTP协议定义的用于接受web用户所提交数据的功能。 利用黑客程序可以对于运行在FreeBSD 4.5, OpenBSD 3.0 / 3.1, NetBSD 1.5.2平台上的 Apache服务器均可进行有效的攻击.

所有说使用最高和最新安全版本对于加强Apache Web服务器的安全是至关重要的。请广大Apache服务器管理员去http://www.apache.org/dist/httpd/下载补丁程序以确保其WEB服务器安全!

正确维护和配置Apache服务器

  1. 选择漏洞较少的apache版本,并打上安全补丁

查看apache版本号:httpd -v

然后在sebug上搜索该版本号有什么漏洞,可根据提示提升版本或者打上补丁

  1. 关闭一些不使用的模块及功能

可在LoadModule前加#,来注释掉一些不使用的模块

  1. 隐藏banner信息
  ServerTokens OS  修改为:ServerTokens Prod (在出现错误页的时候不显示服务器操作系统的名称)
  ServerSignature On 修改为:ServerSignature Off(不回显apache版本信息)
  1. 删除默认网站及页面

删除默认的页面,防止泄露服务器信息

  1. 可修改banner信息
  2. 配置httpd.conf禁止目录浏览
  Options Indexes FollowSymLinks
  改为
  Options -Indexes FollowSymLinks
  1. 配置httpd.conf设置默认文档
DirectoryIndex index.html
  1. 合理配置apache的运行账户

为apache单独建立一个运行账户及账户组,并在httpd.conf配置

  User apache
  Group apache
  1. 合理控制apache运行账户对磁盘的写入,执行权限

取消apache运行账户对网站目录的写入权限,上传目录除外,其他非网站目录尽量不给权限

  1. 合理控制apache运行账户对sh等的执行权限

取消掉了运行账户对sh等的执行权限后能够防止webshell通过默认的sh执行命令

  1. 配置httpd.conf取消对上传目录的php执行权限
<Directory "/var/www/html/aaa"><FilesMatch ".(php|php5)$">
  Deny from all
  </FilesMatch></Directory>
  1. 配置httpd.conf限制禁止访问的文件夹,例如后台目录
<Directory "/var/www/html/aaa">
  Deny from all
  </Directory>
  1. 配置httpd.conf限制一些特殊目录的特定ip访问,如内部接口等。
<Directory "/var/www/html/aaa">
  Order Deny,Allow
  Deny from all
  Allow from 192.168.1.111</Directory>
  1. 配置httpd.conf限制一些文件类型的访问,如txt的日志
<Files ~".txt$">
  Order allow,deny
  Deny from all
  </Files>

15.配置httpd.conf修改修改监听端口来防止一些内部系统被扫描

这样可以防止一些直接扫描80端口的黑客

Listen 12345
  1. 关闭对.htaccess的支持
  AllowOverride All
  改为
  AllowOverride None
  1. 配置httpd.conf记录访问日志

.htaccess常见配置方法参考

首先,不建议使用.htaccess,其次,使用.htaccess需要在httpd.conf中开启,最后,开始.htaccess支持后需要在httpd.conf中配置防止.htaccess文件被下载,下面介绍几个基本配置方法不全,更多的可以参考其他网站专门针对.htaccess 的配置方法。

  1. 定制目录的默认文档
DirectoryIndex index.html index.php index.htm

Apache 错误页面重定向功能可以防止敏感信息泄露。

2.修改 httpd.conf 配置文件:

ErrorDocument 400/custom400.html
ErrorDocument 401/custom401.html
ErrorDocument 403/custom403.html
ErrorDocument 404/custom404.html
ErrorDocument 405/custom405.html
ErrorDocument 500/custom500.html
  1. 控制访问文件和目录的级别
  order deny,allow
  deny from all
  allow from 192.168.0.0/24
  1. 防止列目录
Options -Indexes

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

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

Timeout 10 
KeepAlive On
KeepAliveTimeout 15
AcceptFilter http data
AcceptFilter https data

Timeout 10 #客户端与服务器端建立连接前的时间间隔
KeepAliveTimeout 15 限制每个 session 的保持时间是 15 秒
此处为建议值,具体的参数值需要根据现实际情况设定。
默认值为Timeout 120、KeepAlive Off、KeepAliveTimeout 15,该项设置涉及性能调整。

19、关闭 TRACE功能
关闭 TRACE 功能,防止 TRACE 方法被访问者恶意利用。

在 /etc/httpd/conf/httpd.conf 配置文件中添加以下设置参数:
TraceEnable Off  

20、禁用非法 HTTP 方法
禁用 PUT、DELETE 等危险的 HTTP 方法
您可根据需要进行设置,如果需要用到 PUT 或 Delete 等 HTTP 方法的话,在 /etc/httpd/conf/httpd.conf 配置文件中相应添加即可。


修改 httpd.conf 配置文件,只允许 get、post 方法。
<Location /><LimitExcept GETPOSTCONNECTOPTIONS>  Order Allow,Deny  Deny from all</LimitExcept></Location>

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

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

关闭Trace,防止Trace方法被恶意访问利用,造成信息泄露

TraceEnable off

我们也可以为单独的站点禁用CGI和Include

<Directory "/var/www/html/web1">
Options -Includes -ExecCGI
</Directory>

21.限制请求的大小

Apache默认对HTTP请求的大小没有任何限制。当web服务器对请求没有任何限制是,容易引发拒绝服务攻击。我们可以通过LimitRequestBody为每个目录单独配置请求大小限制。

我们可以将http请求的大小限制在 0(不受限制)~2147483647 (2GB)之间。一般建议将LimitRequestBody的值设置在略大于最大上传文件的大小即可。

<Directory "/var/www/myweb1/user_uploads">
   LimitRequestBody 512000</Directory>

22.DDOS攻击防范,避免僵尸请求

我们可以调整Apache的参数,将DDOS攻击的影响降到最低。

Timeout:指令允许您设置服务器在失败之前等待某些事件完成的时间。默认 300 秒。当收到DDOS攻击时,可以将该值设置到最低。

MaxClients:允许您设置将同时提供的并发连接数的限制。默认值为256,超过的连接请求将会被放在队列中等待执行。它可用于Prefork和Worker两者MPM。

KeepAliveTimeout:服务器在关闭连接之前等待后续请求的时间。默认为5秒

LimitRequestFields:帮助我们设置从客户端接受的HTTP请求的头字段数量的限制,默认值为100.建议适当降低该值。

LimitRequestFieldSize:配置HTTP Request header大小。

23.启用Apache日志

Apache允许您独立于操作系统日志记录进行日志记录。启用Apache日志可以为我们提供更多的有用信息。

TransferLog:创建日志文件。

LogFormat:指定自定义格式。

CustomLog:创建和格式化日志文件。

您还可以为每个虚拟主机指定不同的日志。

<VirtualHost *:80>
  DocumentRoot /var/www/html/example.com/
  ServerName www.example.com
  DirectoryIndex index.htm index.html index.php
  ServerAlias example.com
  ErrorDocument 404/story.php
  ErrorLog /var/log/httpd/example.com_error_log
  CustomLog /var/log/httpd/example.com_access_log combined
</VirtualHost>

其实一个web服务器的保护是分几个层次的

  1. 隐藏自己

要保护一个web服务器首先得学会隐藏自己,对于一些内部系统,如后台,内部接口等,我们可以通过改端口,限制ip等方式来不让黑客发现。

  1. 隐藏身份

对于多数web系统来说,都是提供给外面的访问的,所以想隐藏自己其实是很难的。但是我们还是要学会隐藏身份,可以通过改banner,该返回信息来隐藏身份来加大黑客攻击的难度。

  1. 选用安全的版本及修补一些已知的漏洞

其实前面两步都是很容易突破,然后获知一个web系统所使用的web服务器版本的,此时我们能做的就是选择一个少漏洞的版本,及打上安全补丁。

  1. 做好安全配置

做好基础的安全配置,禁止目录浏览,设定默认文档,上传目录限制php执行等等,来阻挡黑客的入侵。

  1. 合理配置web服务进程账户的权限

当黑客已经通过程序漏洞上传了一个webshell并且已经成功执行了,此时,就只能很好的配置服务进程的账户权限,包括磁盘的读取写入,特殊程序如sh的执行,等等,这样可以讲危害降到最低。

  1. 记录日志

最后,当黑客已经光顾之后,我们也只能通过日志来分析,看问题出在哪里了。

标签: apache 安全 服务器

本文转载自: https://blog.csdn.net/u012241616/article/details/128966037
版权归原作者 云博客-资源宝 所有, 如有侵权,请联系我们删除。

“Apache安全加固配置教程(小白篇)”的评论:

还没有评论