Apache安全加固配置教程(小白篇)
Apache服务器它是Internet网上应用最为广泛的Web服务器软件之一。Apache服务器源自美国国家超级技术计算应用中心(NCSA)的 Web服务器项目中。目前已在互联网中占据了领导地位。Apache服务器得经过精心配置之后,才能使它适应高负荷,大吞吐量的互联网工作。快速、可靠、通过简单的API扩展,Perl/Python解释器可被编译到服务器中,且完全免费,完全源代码开放。如果你需要创建一个每天有数百万人访问的Web服务器,Apache可能是最佳选择。
正如我们前言所说尽管Apache服务器应用最为广泛,设计上非常安全的程序。但是同其它应用程序一样,Apache也存在安全缺陷。毕竟它是完全源代码,Apache服务器的安全缺陷主要是使用HTTP协议进行的拒绝服务攻击(denial of service)、缓冲区溢出攻击以及被攻击者获得 root权限三缺陷和最新的恶意的攻击者进行“拒绝服务”(DoS)攻击。合理的网络配置能够保护Apache服务器免遭多种攻击。我们来介绍一下主要的安全缺陷:
(1)使用HTTP协议进行的拒绝服务攻击(denial of service)的安全缺陷
这种方法攻击者会通过某些手段使服务器拒绝对HTTP应答。这样会使Apache对系统资源(CPU时间和内存)需求的剧增,最终造成Apache系统变慢甚至完全瘫痪。
该方法攻击者利用程序编写的一些缺陷,使程序偏离正常的流程。程序使用静态分配的内存保存请求数据,攻击者就可以发送一个超长请求使缓冲区溢出。比如一些Perl编写的处理用户请求的网关脚本。一旦缓冲区溢出,攻击者可以执行其恶意指令或者使系统宕机。
该安全缺陷主要是因为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服务器安全!
然后在sebug上搜索该版本号有什么漏洞,可根据提示提升版本或者打上补丁
ServerTokens OS 修改为:ServerTokens Prod (在出现错误页的时候不显示服务器操作系统的名称)
ServerSignature On 修改为:ServerSignature Off(不回显apache版本信息)
Options Indexes FollowSymLinks
改为
Options -Indexes FollowSymLinks
DirectoryIndex index.html
为apache单独建立一个运行账户及账户组,并在httpd.conf配置
User apache
Group apache
取消apache运行账户对网站目录的写入权限,上传目录除外,其他非网站目录尽量不给权限
取消掉了运行账户对sh等的执行权限后能够防止webshell通过默认的sh执行命令
<Directory "/var/www/html/aaa">
<FilesMatch ".(php|php5)$">
Deny from all
</FilesMatch>
</Directory>
<Directory "/var/www/html/aaa">
Deny from all
</Directory>
<Directory "/var/www/html/aaa">
Order Deny,Allow
Deny from all
Allow from 192.168.1.111
</Directory>
<Files ~ ".txt$">
Order allow,deny
Deny from all
</Files>
15.配置httpd.conf修改修改监听端口来防止一些内部系统被扫描
Listen 12345
AllowOverride All
改为
AllowOverride None
首先,不建议使用.htaccess,其次,使用.htaccess需要在httpd.conf中开启,最后,开始.htaccess支持后需要在httpd.conf中配置防止.htaccess文件被下载,下面介绍几个基本配置方法不全,更多的可以参考其他网站专门针对.htaccess 的配置方法。
DirectoryIndex index.html index.php index.htm
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
order deny,allow
deny from all
allow from 192.168.0.0/24
- 防止列目录
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 GET POST CONNECT OPTIONS> Order Allow,Deny Deny from all</LimitExcept>
</Location>
<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>
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:创建日志文件。
<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服务器首先得学会隐藏自己,对于一些内部系统,如后台,内部接口等,我们可以通过改端口,限制ip等方式来不让黑客发现。
- 隐藏身份
对于多数web系统来说,都是提供给外面的访问的,所以想隐藏自己其实是很难的。但是我们还是要学会隐藏身份,可以通过改banner,该返回信息来隐藏身份来加大黑客攻击的难度。
其实前面两步都是很容易突破,然后获知一个web系统所使用的web服务器版本的,此时我们能做的就是选择一个少漏洞的版本,及打上安全补丁。
- 做好安全配置
做好基础的安全配置,禁止目录浏览,设定默认文档,上传目录限制php执行等等,来阻挡黑客的入侵。
当黑客已经通过程序漏洞上传了一个webshell并且已经成功执行了,此时,就只能很好的配置服务进程的账户权限,包括磁盘的读取写入,特殊程序如sh的执行,等等,这样可以讲危害降到最低。
- 记录日志
最后,当黑客已经光顾之后,我们也只能通过日志来分析,看问题出在哪里了。
原文地址:https://blog.csdn.net/u012241616/article/details/128966037
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_6541.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!