我正在学习 Java、PHP、HTML、xml、ajax 和其他与 web 和 Linux 相关的内容。
有时我发现有人给我一些关于安全的神秘而可怕的警告,例如:“...如果连接到互联网,如果您不知道自己在做什么,就不要安装 php...”
到目前为止我还不能说我知道自己在做什么。
那么......我应该学习什么才能获得足够深入和实际的理解,关于如何开发正式安全的服务器和/或互联网暴露的 Linux 系统?
(我说“正式安全”是因为我知道任何系统最终都存在安全漏洞。)
是否有像圣经一样的书?或者推荐主题的列表?
最重要的考虑因素是什么?
什么技术或方法(如果有)最适合测试服务器的安全性?
谢谢
答案1
如果你退房这个问题在 IT Security Stack Exchange 上,那里的答案应该能给你一些想法。最好的解决方案就是经验 - 构建系统、构建网络(如果你没有必要的基础设施,可以在 VM 中构建)并针对它们运行安全攻击工具和方法。如果有人提到 php 漏洞,请构建一个运行 php 的测试服务器,并使用一些已发布的漏洞来观察会发生什么。
如果你需要一个工具来证明这一切对于非技术人员来说是多么容易,Metasploit是你的朋友。
答案2
我想你可能会问涅索斯。这对于快速审计来说是一个良好的开端,但显然我不会将其作为唯一的解决方案。
答案3
看一眼呼噜
我认为任何主动(蜜罐->节流/禁止)方法都可以非常有效。我们仍处于大多数攻击者不认为你会在通用网站上采取主动安全措施的阶段。
另一方面,如果您确实拥有一些有价值的东西,或者预计会遭受更强大(更复杂)的攻击,那么就需要为防御(政策、审计、顾问、IT 安全官员职位等)做好预算。
答案4
无论是 Linux 还是其他,基础都是网络、主机和应用程序安全。
对于网络,您需要确保拥有适当的防火墙规则。即,您不会暴露不需要的端口。在托管服务提供商处拥有私有 VLAN 等。使用 nmap 等工具测试端口是否确实已关闭/过滤。
对于主机,您要确保遵循所运行操作系统的安全勘误表并尽快进行修补。
对于应用程序安全性,您需要确保通过不泄露信息(ServerSignature Off、Apache 的 ServerTokens Prod、php.ini 中的 reveal_php=Off)和使用最小特权授予(MySQL 中没有 GRANT ALL PRIVILEGES)等措施来强化服务(例如 Apache、MySQL)。针对您自己的应用程序运行像 nikto 这样的 Web 漏洞扫描程序。
也可以使用随机密码 - 使用像 Password Gorilla 或其他密码管理器。
当然还有很多东西需要学习,但即使是这些小事也有帮助,可能足以阻止不良行为(当然这取决于您的应用程序是什么以及他们的积极性)。
干杯