如何配置 Apache 防止目录遍历与文件包含漏洞?

结论:为了避免 Apache 漏洞,应该消除目录遍历和文件包含。

禁用目录浏览: 在主配置文件中添加选项索引。
-Invalidate直接关闭目录列表,使用+FollowSymLinks时要小心。

限制对文件的访问: 使用 chown-Rwww-data:www-data/var/www/。
使用 chmod-R7 5 5 /var/www/。
将目录权限赋予Apache用户,其他用户只能查看,不能修改。

禁用 SSI: 如果未使用 ServerSideIncludes,则 Options-Includes 将被禁用。
如果使用,请严格限制文件类型。

使用 .htaccess 进行控制: 将 .htaccess 放入目录中并写入 Options-Indexes 以禁用该目录。
在主配置文件中,AllowOverride 设置为 All。
如何安装WAF: 安装mod_security模块并添加规则拦截。
示例:阻止对 /etc/passwd 的访问: SecRuleREQUEST_URI"/etc/passwd" "id:1 00,deny,msg:'尝试访问/etc/passwd'"
检测路径遍历: SecRuleREQUEST_URI"@contains '../'" "id:1 01 ,deny,msg:'尝试遍历路径'"
改进的输入: 使用白名单机制仅识别 .php 或 . 不要直接使用用户输入来拼写文件路径。

标准路径处理: 使用 realpath() 更改路径并检查它是否在允许的目录中。
示例: $path=realpath($_GET['文件']); if(strpos($path,'/var/www//') !== 0) die('无效路径');
及时更新: 定期升级 Apache、PHP 和 mod_security。

避免错误: 不要给 Apache 用户太多的权限。
不要将文件直接包含在用户输入中。
检查AllowOverride 设置。
更改默认配置。

使用工具测试: Nikto 扫描漏洞。
OWASPZAP 执行渗透测试。
BurpSuite 检测恶意请求。
手动尝试访问 /etc/passwd 或 ../request。

自己掂量一下。

apache403错误Forbidden解决方法

哦,我最近帮助一个朋友获得了一个 Apache 服务器,他获得了 2 .2 .8 版本,但是在配置 PHP 时出现了问题。
他打开 localhost 并收到 4 03 错误,指出访问被拒绝并且他没有权限。
这让我笑了,权限足够了。

然后我打开Apache的配置文件httpd.conf并检查了一行。
嘿我看到一个真正的问题。
配置 PHP 后,“Denyfromall”更改为拒绝所有连接。
我不知道为什么我的朋友搬回来了。
我将这行代码更改为“Allow from all”,重新启动 Apache,再次打开 localhost,嘿!有用。

这件事提醒了我,如果以后Apache遇到4 03 错误,我应该首先检查httpd.conf文件中是否有“Denyfromall”之类的内容。
有时,重新启动Apache后,修复文件会自动转换;这可能会有问题。

顺便说一句,我还看到了一个 4 03 错误的示例,内容是“您无权查看此网页”。
然后他表示这可能是身份问题。
我查看了一下,发现配置文件中的“denyfromall”没有改变。
我将“拒绝”保存为“允许”并重新启动,访问变得正常。

到版本2 .2 升级后,Apache支持了很多新模块,性能和安全性也得到了提升。
不过,由于配置比以前问题多了,所以必须特别注意这些细节。

另外,如果遇到 4 03 错误,请不要忘记检查文件夹的安全属性。
有时权限设置正确,但安全上下文错误,可能会出现问题。
然后我得到的文件夹的安全状态是错误的。
看起来权限没问题,但实际上还是无法访问。

总之,服务器运行时,细节非常重要。
你必须要有耐心,一步步检查。
不用担心,慢慢来总能解决的。