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版本号httpdv

然后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 配置文件,只允许 getpost 方法。
<Location />
<LimitExcept GET POST CONNECT OPTIONS>  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/24 192.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. 记录日志

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

原文地址:https://blog.csdn.net/u012241616/article/details/128966037

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_6541.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注