使用DevSecOps改进Linux安全性
问问现在管理IT部门的人员,是什么让他们夜不能寐,他们可能会告诉你是安全——或者说是缺乏安全。随着针对从医院到财富500强企业的恶意攻击呈爆炸式增长,安全——而不是硬件、软件甚至人员——是目前让人感到痛苦的根源。
这就是为什么各种规模的组织都在寻求从根本上改变他们处理安全问题的方式。确保系统安全不再是单个团队的工作,内部审计也不足以识别和缓解攻击。如今,每个人都对安全负责,这是DevSecOps的指导原则。
正如DevOps旨在通过改进协作和平衡运营团队与开发人员之间相互竞争的利益来加速软件开发一样,DevSecOps旨在让每个人一起并提前考虑安全性。在系统构建完成和代码部署之后才试图加入安全性为时已晚。
打造更安全的Linux环境的步骤幸运的是,您可以通过使用一些常用工具和实践,从设计上使事情更安全。您不需要“安全倡议”来降低漏洞和黑客攻击的风险。您可以从小处着手,分享您所知道的,并立即降低风险。
建立基线改进安全性的最佳方法之一是首先了解您拥有的东西。安全专家感叹,大多数组织(其中许多组织随着时间的推移有机地发展)没有花时间为他们的系统定义可以重复和共享的标准规则。例如,良好的基线将包括
机器级防火墙规则:防火墙不仅仅用于边缘。您应该在机器级别为裸机、虚拟机和本地及异地容器部署防火墙。一种尺寸也不适合所有情况。Web服务器防火墙应与应用服务器防火墙有所不同。如果考虑到您管理的服务器数量,这听起来像是一个巨大的挑战,那么您需要认真考虑自动化。
更周密的端口规则:哪些端口对谁以及对哪里开放和关闭?端口22在您的所有系统上都开放吗?有必要吗?如果是,访问是否仅限于某些子网?
限制访问:哪些用户和组可以访问哪些系统?开发人员是否需要访问所有开发服务器,还是只需要访问一部分?哪些机器可以相互访问?Web服务器可能应该能够与您的数据库服务器通信,但它们需要与其他应用服务器通信吗?
通过提出一些像这样的日常问题,您可以开始定义和实施一些可靠的基线。在wiki上使用MediaWiki、TikiWiki或PmWiki共享它们,使更新变得轻而易举。Wiki使文档编写更容易,从而使采用和使用更容易——也更有效。
机器级防火墙通过设置一些良好的防火墙规则,您可以阻止许多恶意活动——即使在看不到外部世界的系统上也是如此。毕竟,并非所有安全问题都来自外部。
Iptables功能强大、无处不在且相对易于管理,即使从命令行也是如此。因此,如果您只想为单个特定子网提供对Linux服务器的shell访问权限,您可以添加如下规则
# sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
如果您正在运行IPv6(并且许多Linux发行版默认情况下都这样做),请务必安装iptables-persistent并添加相同的规则。锁定一种协议而不锁定另一种协议是没有意义的
# ip6tables -A INPUT -p tcp -s fe80::e65:2f8e:4f60::1/128 --dport 22 -j ACCEPT
用户、组和最小权限原则
每个人都知道如何快速向Linux系统添加用户,但是您多久会采取额外的步骤来创建组来管理这些用户的权限?通过将用户添加到组并将这些组的权限授予某些服务、目录和文件,您可以更有效地控制访问权限和不可避免的更改。从DevSecOps的角度来看,您可以与其他团队共享有关您创建的组的信息,这有助于他们理解您的方法,而无需猜测。
还要记住,如果某人不需要访问系统,请不要授予访问权限。只添加您必须添加的用户。
通过自动化获得更大的控制权如果您管理少量的服务器,您可以手动进行更新、添加用户、设置防火墙等。但是,一旦您管理的系统超过25或30个,您就需要认真考虑自动化。
Puppet、Chef和Ansible等工具可以在这方面为您提供帮助。每种工具的工作方式略有不同,但基本原则是相同的:自动化处理日常事务,并使您的系统更加一致和透明。
Puppet使用manifests来定义您要管理的任何主机的期望状态。因为您可以定义您想要的内容——这些防火墙端口打开,那些关闭;这些用户存在,那些不存在;这些服务正在运行,那些未运行——您可以创建保持这种状态的安全系统。Puppet工具(如Facter和Resource)还提供有关您系统的详细信息,使您可以使用正则表达式轻松地为不同的服务器定义不同的配置。
Lumogon是一个强大的新工具,可为您提供有关Docker容器的大量数据,提供干净的JSON报告或将报告发布到私有Web门户。如果您担心容器内部的黑暗,Lumogon可以提供很多光明。
通过数据挖掘和可视化工具获得更大的控制权对安全性更有信心可能只是获得对正在发生的事情的更好了解。当然,命令行可以在您的shell中为您提供一些不错的输出,但图形可视化工具将其提升到可操作的情报和共享的全新水平。
Splunk用户喜欢它可以监控和深入挖掘的机器生成数据的深度。它的报告也非常适合共享,为不同的团队提供他们需要的数据——以及需要考虑的数据。
Puppet Enterprise提供了许多实时可视化工具,包括“节点图”,该图显示了所有受管理节点之间的关系。它的基本仪表板绝非如此,让您可以一目了然地查看问题节点。
结论如果安全问题让您夜不能寐,请采取一些简单的步骤来改变您最初对安全性的看法。退后一步,考虑如何让每个人都参与进来并参与其中,并考虑可以提供帮助的工具和实践。如果您能够更好地共享信息、建立可重复的实践并让组织中的所有团队都参与进来,您将拥有更好的安全性,并且可以更好地准备避免真正破坏您一天的问题。