保护服务器安全与保护网站和API同样重要。如果他们所依赖的基础架构不牢固,那么您将没有安全的网站(或API)。接下来是一个服务器安全清单,其中包含您需要考虑的5种风险。
1.安全更新
许多漏洞的状态均为零时状态,即在软件供应商有机会填补漏洞之前就发现(并公开)了该漏洞。随后便进行了补丁竞赛(请参阅shellshock示例)。通常只需几个小时,公共漏洞就会变成恶意的自动化漏洞。这意味着,在获取安全更新时,必须“按一下按钮”。
您可能需要考虑自动安全更新(这是针对Ubuntu,Fedora,Red Hat&Centos 6和Centos 7的方法)。但是:请注意,如果自动更新在您不期望的时候发生或引起兼容性问题,则可能导致问题。例如,MySQL的自动更新将导致MySQL重新启动,这将终止所有打开的连接。
我们建议您将程序包管理器配置为仅下载升级(即不进行自动安装),然后发送常规通知以供您查看。我们的政策是每周监控安全列表并应用更新。除非该漏洞很严重,否则我们必须立即做出反应。
2.访问权限
合理化访问权限是关键的安全步骤。它可以防止用户和服务执行意外动作。这包括从删除“ root”帐户以使用SSH登录到禁用用于通常无法访问的默认帐户的Shell的所有内容。例如:
PostgreSQL真的需要/ bin / bash吗? 特权操作可以通过sudo完成吗? cron作业是否已锁定,以便仅特定用户可以访问它们? 3. SSH蛮力僵尸程序最常见的攻击点是通过SSH暴力破解帐户。一些事情要看:
如上一节所述,必须禁用root帐户的远程登录,因为它是最容易受到攻击的帐户。 由于这些漫游器专门针对密码,因此您可以通过使用公共/专用密钥代替密码来减少攻击面。 您可以通过将SSH端口从默认的22更改为其他端口来进一步。当然,可以使用端口扫描程序显示新端口(您可能会考虑使用端口敲击插件),但是,Internet范围内的扫描程序是机会主义的,而且不会走得太远。 更为严厉的措施是阻止所有流量并将白名单中的IP列入白名单。问问自己,整个互联网是否需要访问您的服务器?
通常要注意的是,通过模糊性实现安全永远不是一个好目标,因此请注意引入不必要的复杂性。
4.文件系统权限
考虑这种情况。有人在Web应用程序的某些PHP脚本中发现了远程执行代码漏洞。该脚本由www-data用户提供。因此,黑客注入的任何代码也将由www-data执行。如果他们决定为持久性植入后门,那么最简单的方法就是编写另一个带有恶意代码的PHP文件,并将其放置在网站的根目录中。
如果www-data没有写访问权,则永远不会发生这种情况。通过限制每个用户和服务可以执行的操作(最小特权原则),您可以限制帐户遭到破坏时可能造成的任何损害(纵深防御)。
文件系统权限需要细化。需要考虑的一些示例:
www用户是否需要在webroot中写入文件? 您是否使用单独的用户从git存储库中提取文件?(我们强烈建议您不要通过github Checkout运行您的网站。) www用户是否需要列出webroot中的文件?
我们建议您花一些时间定期检查文件系统权限。
5.服务器监控
任何异常的服务器活动都可能表明存在违规行为。例如:
一个error_log条目的峰值可能是攻击者试图对系统进行漏洞检测的结果。 持续的DDoS(分布式拒绝服务)攻击可能会导致网络流量突然但持续增加。 CPU使用率或磁盘IO的增加可能表明数据泄漏。例如Logica被黑客入侵的时间,从而影响了瑞典和丹麦的税务部门。哎哟。 磁盘使用率的增加是另一个迹象。一旦服务器受到威胁,黑客就将其用作IRC和torrent服务器(成人内容和盗版电影)等。
当确实出现问题并且服务器受到影响时,时间至关重要。那就是可靠的警报和服务器监视(就是我们!)的地方。