为了保护Apache服务器,需要阅读哪些最佳实践,建议和建议?

评论

您可能还想检查Red Hat Linux 5.1上Apache Web Server(Apache服务器版本1.3.3)的安全配置。这是NSA的指南

“确保您的Apache安全,这样我们就不能偷东西”文章? ; P

尽管此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能会无效。

死链接!...有点....

#1 楼

获取Internet安全中心(CIS)指南以保护Apache(详细描述了如何增强安全性):

编辑:更新了链接
CIS HTTP HTTP Server 2.2.x Benchmark

如果您拥有Nessus的许可证,则可以通过获取其审核模板来运行自动检查:



评论


可以在github.com/cismirror/benchmarks上获得所有CIS Benchmarks PDF文件。

– Quinn Comendant
20-05-28在23:29

#2 楼


使用基于SSH密钥的登录信息
保护MySQL
禁用phpMyAdmin,webmin等
关闭所有不需要的端口/进程
使用文件完整性检查器
使用mod_security
设置适当的权限/组

这是一个很好的指南:https://serverfault.com/questions/212269/tips-for-securing-a-lamp-server

强化基本指南:
http://www.wpsecure.net/server-guide/

如果您正在运行php:
http://www.madirish.net/?article=229

在apache日志awk ' == 404 {print }' access_log | uniq -c | sort -rn | head中找到404(或其他状态代码)

评论


基于密钥的登录非常有用,除非您不知道将密钥保留在何处。

–munchkin
15年7月22日在7:17

#3 楼

最初接受该问题的最高投票答案被删除,因为它直接抄袭了20种保护Apache配置的方法。该页面是一个很棒的资源。

@RoryMcCune还将其发布为该答案的链接:有一个OWASP项目可以在此处开发ModSecurity核心规则集。

评论


关于20种方式的链接的最后评论是从2014年开始,确认它是好信息,所以我认为该信息仍是最新的并且是良好的做法?只是从这里开始使用Apache。

–lowtechsun
16年11月4日在23:08



#4 楼

这里有很多好的建议,所以我不再重复已经提到的事情。但是我要说的是:

不要忘记用不放弃Web Server版本或内核修订版的内容替换默认错误页面。我倾向于将每个默认html替换为1个衬里,例如“ Error 400”。它对系统的影响很小。该原理适用于所有能够显示自定义错误页面的Web服务器,它们几乎都默认提供过多的信息。您可能会认为ServerSignature会隐藏它,但是在许多情况下却不会。

此外,不要忘记删除所有默认的HTML内容(特定于语言等),因此指纹识别要难得多。

就广为人知的是,Apcon 2008的白皮书值得一读。

Mod_Security提到过几次,它更适合于Web应用程序,因此如果仅提供静态内容,则不会对您有太大帮助,尽管在请求处理过程中可以帮助抵御可能影响静态Web服务器的某些攻击。

我要提到的另一件事是良好的日志管理,如果您不清除日志并密切关注系统,则可能会遭受攻击者不加破坏地破坏它的风险。对它的任何了解。

#5 楼

所有一般安全原则都适用:仅运行所需的模块,关闭不需要的功能,整理权限/所有权(大多数内容都是只读的,为什么文件需要400个以上的权限?)。

Apache特有的东西,例如CGI作业,或不同的虚拟主机两次使用相同的安全机制在同一内容上提供两次相同的安全性,这很难发现。不完全是自动检查,您实际上已经知道Apache,底层操作系统以及Apache中运行的应用程序在做什么。

为了完整起见,这是DISA的Apache 2.2安全清单。更新:这是他们整个网络服务器强化文档集合的链接。

评论


不幸的是,返回404现在找不到。您是否恰巧拥有它的副本(假设它是公共领域,并且您可以共享它)?

–sa289
15年7月21日在16:21

@ sa289好收获,更新链接

–马辛
15年7月21日在16:58

#6 楼

值得一看Apache mod_security。

最近我一直在我的一些服务器上使用它,它不仅对Apache本身执行一些配置调整,例如更改版本号等,而且还充当Web应用程序防火墙,有助于防止各种各样的攻击,例如SQL注入等。

#7 楼


如何确保Apache Web服务器的安全性


如果您问“如何驾驶喷气式飞机”或“如何进行脑部手术”,您希望得到什么答案? -确保网络服务器安全的方法同样如此-您需要进行1000个小时的培训,实践和研究。但是由于每个人都必须从某个地方开始...

互联网上有很多关于如何加固服务器的基本清单-但是根据我在其他地方的评论,它们的质量差别很大。

我建议使用sans作为一个很好的来源。

一旦您遵循了清单,就需要建立可以用来

验证服务器的完整性(您肯定需要基于主机的IDS,例如tripwire以及rootkit检测器)
注意并应用补丁程序
将系统恢复到已知的良好状态

如果发生安全事件,请不要计划如何处理。规划发生问题时的处理方法。

完成系统设置和配置后,换出硬盘,看看多长时间才能启动并重新运行该服务而无需使用原始磁盘。

#8 楼

这不仅与apache相关(并且也计入nginx + php-fpm),但经常被遗忘:php-eastereggs,可以通过php.ini进行切换。

  expose_php = off


它不如留下phpinfo.php可怕,但通常是非常懒惰的系统管理的提示。

请参见Easter-eggs

#9 楼

使用最新版本的apache,修补OS以及opensl或任何其他第三方的第三方。

阻止不需要的端口。

这将保护您免受某些已知漏洞的侵害。 ,但是您总是容易受到0天的影响。

#10 楼

螺纹转好。很多人都说实话。

他们忘记了一种OpenBSD的方式:


在OpenBSD中,Apache httpd(8)服务器已被chroot(2)修改。默认


OpendSD中默认包含httpd(Apache的v.1),默认情况下chroot。

您可以在apache2或nginx上轻松地重复它任何其他类似Unix的操作系统。

#11 楼

这里有6个关键步骤:


保护您的应用程序代码
禁用所有未使用的模块。尝试禁用所有功能,然后一个接一个地添加模块。
删除web文件夹中的所有脚本和备份文件。使用modsecurity保护您的应用程序不受应用程序的侵害-级别的攻击。<​​br />使用Fail2ban触发HTTP错误(403、404)。

不要依赖您的网络防火墙,在谈论Web安全时它是无用的。