Apache服务安全加固及Apache优化_apache扩展名解析加固

学习路线:

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
在这里插入图片描述

需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

三、日志设置

Apache 设备应配置日志功能,对运行错误、用户访问等事件进行记录,记录内容包括时间,用户使用的 IP 地址等内容。

修改 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 /web

说明: 其中 /web 为网站根目录。

3、默认配置如下,可根据您的业务需要进行设置。

 Options FollowSymLinks
 AllowOverride None

五、禁止目录列出

目录列出会导致明显信息泄露或下载,建议禁止 Apache 列表显示文件。在 /etc/httpd/httpd.conf 配置文件中删除 Options 的 Indexes 设置即可。

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

 #Options Indexes FollowSymLinks #删掉Indexes
 Options FollowSymLinks
 AllowOverride None
 Order allow,deny
 Allow from all

将Options Indexes FollowSymLinks中的Indexes去掉,就可以禁止 Apache 显示该目录结构。Indexes的作用就是当该目录下没有 index.html 文件时,自动显示目录结构。

重新启动 Apache 服务。

六、错误页面重定向

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

1、修改 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

注意: Customxxx.html 为要设置的错误页面。

2、重新启动 Apache 服务。

注意: 此项配置需要应用系统设有错误页面,或者不在 httpd 中设置,而完全由业务逻辑实现。

七、拒绝服务防范

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

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

 Timeout 10 #客户端与服务器端建立连接前的时间间隔
 KeepAlive On
 KeepAliveTimeout 15 #限制每个 session 的保持时间是 15 秒 注:此处为一建议值,具体的设定需要根据现实情况。

2、重新启动 Apache 服务。

注意: 默认值为Timeout 120,KeepAlive Off,KeepAliveTimeout 15,该项设置涉及性能调整。

八、隐藏 Apache 的版本号

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

修改 httpd.conf 配置文件:

ServerSignature Off ServerTokens Prod

九、关闭 TRACE功能

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

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

TraceEnable Off

注意: 该参数适用于 Apache 2.0 以上版本。

十、禁用 CGI

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

如果没有CGI程序,可以修改 /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
#

十一、绑定监听地址

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

执行以下命令查看是否绑定 IP 地址。

 cat /etc/httpd/conf/httpd.conf|grep Listen

修改 /etc/httpd/conf/httpd.conf 配置文件。

 Listen x.x.x.x:80

监听功能默认监听所有地址,如果服务器只有一个 IP 地址可不修改该项设置,如果有多个 IP 可根据需要进行设置。

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

  • 删除缺省 HTML 文件:
  # rm -rf /usr/local/apache2/htdocs/\*

  • 删除缺省的 CGI 脚本:
  # rm –rf /usr/local/apache2/cgi-bin/\*

  • 删除 Apache 说明文件:
  # rm –rf /usr/local/apache2/manual

  • 删除源代码文件:
# rm -rf /path/to/httpd-2.2.4\*

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

注意: 根据安装步骤不同和版本不同,某些目录或文件可能不存在或位置不同。

十三、禁用非法 HTTP 方法

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

修改 httpd.conf 配置文件,只允许 get、post 方法。

<Location />  
<LimitExcept GET POST CONNECT OPTIONS> 
  Order Allow,Deny 
  Deny from all 
</LimitExcept> 
</Location>

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

apache日志分析

1.查看apache的进程数

ps -aux | grep httpd | wc -l

2.分析日志查看当天的ip连接数

cat default-access_log | grep “10/Dec/2010″ | awk ‘{print $2}’ | sort | uniq -c | sort -nr

3.查看指定的ip在当天究竟访问了什么url

cat default-access_log | grep “10/Dec/2010″ | grep “218.19.140.242″ | awk ‘{print $7}’ | sort | uniq -c | sort -nr

4.查看当天访问排行前10的url

cat default-access_log | grep “10/Dec/2010″ | awk ‘{print $7}’ | sort | uniq -c | sort -nr | head -n 10

5.看到指定的ip究竟干了什么

cat default-access_log | grep 218.19.140.242 | awk ‘{print $1″\t”$8}’ | sort | uniq -c | sort -nr | less

6.查看访问次数最多的几个分钟(找到热点)

awk ‘{print $4}’ default-access_log |cut -c 14-18|sort|uniq -c|sort -nr|head

十四、Apache解析漏洞(换行解析+多后缀解析)复现

Apache两个解析漏洞环境在httpd目录下:

一个是换行解析漏洞(CVE-2017-15715),另一个是多后缀解析。(ssi的rce本次不复现)
在这里插入图片描述

复现一:换行解析

一、原理

Apache可以通过mod_php来运行PHP网页。

其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,解析到下面例子时候:

  1.php\x0A

将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。(%0a即编码中的换行符,于是这个解析漏洞叫换行解析)

二、复现过程

首先进入到换行解析漏洞环境目录下开启环境:

service docker start

docker-compose build

docker-compose up -d

在这里插入图片描述
接着访问虚拟机ip:8080即可:
在这里插入图片描述
先上传一个简单的小马看看:
在这里插入图片描述

被拦了,开始尝试下换行符后缀:

在Hex编码下查看,该处插入(insert byte)0a作为换行符
在这里插入图片描述
放包,访问 ip/2.php%0A:
在这里插入图片描述
phpinfo():
在这里插入图片描述
退出docker环境:
docker-compose down

在这里插入图片描述

复现二:多后缀解析

一、原理

Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令。比如,如下配置文件:

AddType text/html .html
AddLanguage zh-CN .cn

其中,.html后缀增加了media-type,值为text/html;给.cn后缀增加了语言,值为zh-CN。此时,如果用户请求文件index.cn.html,他将返回一个中文的html页面。

以上就是Apache多后缀的特性。

如果运维人员给.php后缀增加了处理器:

本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。

最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。

最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。

需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)

学习路线图

其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。

相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。

网络安全工具箱

当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。

项目实战

最后就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~

面试题

归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 20
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值