在维护 Linux 服务器时,您强烈推荐哪些安全最佳实践?
(即打开防火墙,禁用不必要的服务,提防 suid 可执行文件,等等。)
另外:是否有关于 Selinux 的明确参考?
编辑:是的,我打算把机器放在互联网上,至少有 openvpn、ssh 和 apache(目前,没有动态内容),并为某些人提供 shell 访问。
对于 SELinux,我发现SELinux By Example非常有用。它非常深入地保持服务器尽可能安全,并且针对如此广泛的主题编写得非常好。
但总的来说:
简短的回答是,这取决于。这取决于您使用它的目的,这反过来又会影响您应该投入多少精力来保护它。
这个问题的答案中有一些方便的提示: Securing a linux webserver for public access
如果您不将盒子扔到互联网上,那么其中一些答案将不相关。如果你把它扔到互联网上并在上面托管一些甚至有点有趣的东西,那么这些答案对你来说太自由放任了。
有一个 NSA 文件“RHEL5 的 NSA 安全指南”可在以下位置获得:
http://www.nsa.gov/ia/_files/os/redhat/rhel5-guide-i731.pdf
这很有帮助,至少是系统的。
这或多或少是我会做的。
编辑:我添加了一些我以前忘记命名的想法......
1.) 仅启用必要和相关的端口。
2.) 定期扫描网络数据进出
3.) 定期扫描访问服务器的 IP 地址,并验证是否从日志/跟踪中发现与这些 IP 地址相关的任何异常数据活动
4.)如果一些关键和机密的数据和代码,需要在服务器上存在,可能是可以加密的
-广告
目标:最困难的部分始终是定义您的安全目标。在这一点上,其他一切都相对容易。
探测/研究:考虑攻击者采取的相同方法,即网络侦察(namp 对此非常有帮助)。
更多信息:SELinux by example 是一本很有帮助的书,要找到一个集中的 SELinux 信息来源仍然很困难。我有一小部分有用的链接,我不时觉得这些链接很有用http://delicious.com/reverand_13/selinux
有用的解决方案/工具:正如大多数人所说的,少即是多。对于带有 SELinux 的开箱即用的精简框,我建议使用剪辑 ( http://oss.tresys.com/projects/clip )。我的一个朋友在一个学术模拟中使用了它,在这个模拟中,盒子受到其他参与者的直接攻击。我记得这个故事对这个盒子的结局非常有利。
您将希望熟悉编写 SELinux 策略。模块化策略也可以变得有用。诸如 SLIDE 和 seedit 之类的工具(尚未尝试过)可能会对您有所帮助。
除非必须,否则不要使用 DNS 服务器。BIND 一直是安全问题和漏洞利用的热点。
强化 Linux 服务器是一个庞大的主题,主要取决于您的需求。
通常,您需要考虑以下关注组(我将举例说明每个组中的最佳实践):
引导和磁盘
Ex1:禁用从外部设备引导。
Ex2:为 GRUB 引导加载程序设置密码 - Ref。
文件系统分区
Ex1:将用户分区 ( /home
, /tmp
, /var
) 与操作系统分区分开。
Ex2:nosuid
在分区上设置——为了防止权限升级setuid
。
内核
Ex1:更新安全补丁。
Ex2:在这里阅读更多内容。
联网
Ex1:关闭未使用的端口。
Ex2:禁用 IP 转发。
Ex3:禁用发送数据包重定向。
用户/帐户
Ex1:强制使用强密码 (SHA512)。
Ex2:设置密码的时效和过期。
Ex3:限制用户使用旧密码。
审计和日志记录
Ex1:Configure auditd
- ref。
Ex2:使用 journald- ref配置日志记录。
服务
Ex1:删除未使用的服务,例如:FTP、DNS、LDAP、SMB、DHCP、NFS、SNMP 等。
EX2:如果您使用的是 Apache 或 nginx 之类的 Web 服务器 - 不要以 root 身份运行它们 -在此处阅读更多信息。
Ex3:安全 SSH参考。
软件
确保删除未使用的软件包。
阅读更多:
https://www.tecmint.com/linux-server-hardening-security-tips/
https://cisofy.com/checklist/linux-security/
https://www.ucd.ie/t4cms/UCD%20Linux%20Security%20Checklist.pdf
https://www.cyberciti.biz/faq/linux-kernel-etcsysctl-conf-security-hardening/
https://securecompliance.co/linux-server-hardening-checklist/
现在专门针对 SELinux:
首先,确保在您的机器中启用了 SELinux。