加固 Linux 服务器
确定所需的应用程序和进程并应用清单以避免安装它们,或者在初始构建后卸载它们。
在这里,我在想那些默认情况下似乎仍然存在太多发行版的常见罪魁祸首!
- NFS 服务:nfsd、lockd、mountd、statd、portmapper
- telnet 服务器和 ftp 服务器
- R 服务:rlogin、rsh、rcp、rexec
- BIND 和 DNS 服务器,除非需要
- 邮件服务器,例如 sendmail
- X11(除非需要桌面)
- 手指守护进程等
下一步是检查潜在的弱服务并限制对它们的访问
- 使用 at.allow 和 cron.allow 限制对 crontab 的访问
- 确保所有设备都是普通用户不可读不可写的(不包括/dev/tty和/dev/null等)
- 密钥文件——这些文件的权限应该由 root 拥有:/etc/fstab、/etc/password、/etc/shadow
- 仔细检查 hosts.equiv - 这里是一个很好的访问来源 :-)
- 同样,如果需要,NFS 配置将被锁定
- 禁用不需要的系统帐户。
- 查看文件系统 - 所有可执行文件和公共目录的粘性位。
- 检查所有 root 要求(PATH 环境变量、不能以 root 身份进行远程访问、组成员身份、密码要求)
- 检查所有用户要求(特权组的成员资格、有效的 shell、umask、SUID、SGID 要求
- 当然,SANS 指南是一个非常好的来源!
“Linux 服务器”空间包括大量发行版,每个发行版都有自己的默认配置更新策略、包管理工具链以及默认服务和开放端口的方法。还有广泛的部署场景:加固 Web 服务器与加固基于 linux 的路由器完全不同。通过询问您最关心的发行版和用例,您可能会获得更好的建议。
在这种情况下,我将在这里通过指向一些相关来源来解决Ubuntu 安全问题,尽管其中大部分内容对其他情况很有用。
一个很好的介绍在这里:http ://www.andrewault.net/2010/05/17/securing-an-ubuntu-server/
社区在这里描述了一些更严格的默认设置和强化提示,即使可用性受到影响,它们也更倾向于安全性:https ://help.ubuntu.com/community/StricterDefaults
这是 Ubuntu 安全功能的矩阵和摘要,以帮助人们研究您在其他地方找到的清单:https ://wiki.ubuntu.com/Security/Features
要了解如何自己进行一些测试,请查看http://people.canonical.com/~kees/demo/ec2-session.log中由http://people.canonical 中的演示代码驱动的成绩单.com/~kees/demo/
执行以下操作所需的摘要:https ://wiki.ubuntu.com/Security/Privileges
Ubuntu 的安全团队在他们的 wiki 上有一些其他有用的东西:https ://wiki.ubuntu.com/Security/
时间点系统强化是一项有益的壮举,但真正定义安全部署服务器的是为维护该状态所做的工作。
选择任何质量清单(请参阅下面的链接),其中详细说明了建议的配置修改,以加强服务器的安全性并应用对您的设置有意义的更改。更好的是,通过Puppet ( http://www.puppetlabs.com/ ) 编写建议:这是双赢的,您将部署更安全,并且您将给自己一个战斗的机会,随着时间的推移维持强化的配置。
奖励:进行攻击建模/威胁建模 ( http://taosecurity.blogspot.com/2007/06/threat-model-vs-attack-model.html ) 以集中防御工作。例如,问自己以下问题:
攻击者如何获得对这些服务器的访问权限?
我可以做些什么来减少他们成功的机会?
将您对第二个问题的回答转化为特定的配置更改(强化)或实施额外的控制。当然,游戏是为了尽量减少任何威胁成功的可能性。这需要时间,但您会对所做的更改以及为什么而不是因为有人说这样做很好而随意进行更改感觉更好。
擅长记录和审查。预防总是失败 - 为了应对这一现实,您希望增加日志记录,以便您可以更快地识别和响应事件并更快地恢复。我最喜欢在 Linux 上增强防御和增强日志记录的工具是OSSEC ( http://www.ossec.net/ )。花额外的时间定制OSSEC中包含的规则来监视您更关心的事情是一项值得的活动(例如,列出其他目录和文件以在它们被修改时发出警报、添加规则或提升现有规则的严重性以发出警报您要验证异常,添加规则以监视 mysql 用户表的更改(http://blog.rootshell.be/2011/01/07/auditing-mysql-db-integrity-with-ossec/),无限)。Richard Bejtlich 刚刚发布了一篇及时的博客文章,标题为为防御者提供的七个很酷的开源项目( http://taosecurity.blogspot.com/2011/01/seven-cool-open-source-projects-for.html )
为了支持对服务器防御的持续验证,您可以使用 Internet 安全中心 (CIS) Linux 审核模板持续运行Nessus ( http://www.nessus.org/nessus/ )。使用结果作为基准,观察变化并修复发现的弱点。
回顾一下:
1) 利用现有的受人尊敬的安全强化清单来帮助您起草一个适用于您的环境的自定义清单(希望在执行攻击/威胁建模活动并选择配置管理框架之后)
2) 提升观察能力:增强日志记录(即调整系统以生成足够的日志以供您要观察的活动),部署 HIDS(例如OSSEC),部署日志分析工具(例如logwatch - http://sourceforge.net/projects /logwatch/),可能捕获网络流(例如通过softflowd)
3) 让某人有责任成为系统的孜孜不倦的捍卫者
4) 持续审核和测试以验证您认为正在做的事情正在做
基准/清单资源:。
http://cisecurity.org/互联网安全中心 (CIS) 是一家非营利性企业,其基准和度量部门帮助组织降低因技术安全控制不足而导致业务和电子商务中断的风险。该部门为企业提供一致的安全配置最佳实践标准,以及衡量信息安全状态和做出合理安全投资决策的资源。
http://iase.disa.mil/stigs/checklist/国防信息系统局 (DISA)
http://web.nvd.nist.gov/view/ncp/repository
http://csrc.nist.gov/fdcc/faq-common_security_configurations.html
由 NIST SP 800-70 定义的国家清单计划 (NCP) Rev. 1 是美国政府公开的安全检查表(或基准)存储库,提供有关设置操作系统和应用程序安全配置的详细低级指导。
你可以做的比从Sans 清单开始要糟糕得多。
我对此的唯一批评是它没有足够重视管理已部署系统的安全性——特别是确保供应商补丁是最新的、规划良好的权限模型、管理 IDS 异常报告等。