不允许远程 root 登录。这可以通过配置文件来控制,例如/etc/securetty。删除任何以 “pts” 开头的行。这是一个很大的安全漏洞。
避免在不受信任的网络(如 Internet)上使用需要明文登录的程序。Telnet 就是一个典型的例子。ssh 更好。如果支持 SSL(安全套接字层),请使用它。例如,您的 ISP 是否通过 SSL 提供 POP 或 IMAP 邮件?最新的发行版应该包含 openssl,许多 Linux 应用程序可以在支持 SSL 的情况下使用它。
设置资源限制。有多种方法可以做到这一点。对于访问给定系统的用户数量越多,可能越需要这样做。对磁盘空间等内容设置限制不仅可以防止故意的恶作剧,还可以帮助处理意外行为不端的应用程序或进程。quota (man quota) 可用于设置磁盘空间限制。Bash 包括 ulimit 命令 (man ulimit或man bash),可以限制每个用户的各种功能。
此外,这里没有详细讨论,但 PAM(可插拔身份验证模块)对于控制各种系统功能和资源有一种非常复杂的方法。请参阅man pam开始使用。PAM 通过以下方式配置:/etc/pam.conf或/etc/pam.d/*。还有文件在/etc/security/*,包括/etc/security/limits.conf,在那里可以再次施加各种合理的限制。深入了解 PAM 超出了本文档的范围。《用户身份验证 HOWTO》(https://tldp.cn/HOWTO/User-Authentication-HOWTO/index.html)对此有更多介绍。
确保有懂行的人收到 root 的邮件。这可以通过“别名”来完成。通常,邮件服务器会有一个文件,例如/etc/aliases可以在其中定义。如果需要,这可能是另一台机器上的帐户
# Person who should get root's mail. This alias # must exist. # CHANGE THIS LINE to an account of a HUMAN root: hal@bigcat |
记住之后运行 newaliases(或等效命令)。
小心从哪里获取软件。使用可信来源。您对完全陌生的人有多信任?如果正在寻找特定的软件包,请首先检查您的供应商。无论如何,它可能最适合您的系统。或者,原始软件包的项目站点也不错。从原始源代码(tarball 或 src.rpm)安装至少让您能够检查代码。即使您不理解它 ;-) 虽然这似乎不是 Linux 软件站点普遍存在的问题,但对于某人来说,添加几行代码,将看似无害的二进制文件变成“特洛伊木马”,从而打开通往您系统的后门,这是非常容易的。然后就完蛋了。
所以有人扫描了您,探测了您,或者以其他方式似乎想进入您的系统?不要报复。很有可能源 IP 地址是一个被入侵的系统,而所有者已经是受害者。此外,您可能违反了某人的服务条款,并给您自己的 ISP 带来麻烦。您能做的最好的事情是将您的日志发送到源 IP 的 ISP 或所有者的滥用部门。这通常类似于“abuse@someisp.com”。只是不要期望得到太多回复。一般来说,除非实际发生了闯入,否则这种活动在法律上不是犯罪行为。此外,即使是犯罪行为,除非能证明重大损失(读作:大笔美元),否则永远不会受到起诉。
Red Hat、Mandrake 和 Debian 用户可以安装 “Bastille Hardening System”,http://www.bastille-linux.org/。这是一个用于“强化” Red Hat 和 Mandrake 系统安全的多用途系统。它具有 GUI 界面,可用于从头开始构建防火墙脚本并配置 PAM 以及许多其他功能。Debian 支持是新增的。
所以您通过有线调制解调器或 DSL 拥有全职 Internet 连接。但您总是使用它,或者总是需要它吗?有一句老话说“唯一真正安全的系统是断开连接的系统”。好吧,这当然是一种选择。因此,断开该接口,或停止控制守护进程(dhcpcd、pppoed 等)。或者甚至可以设置 cron 作业,以便根据您的正常计划和使用情况来启动和关闭您的连接。
通常被宣传为“防火墙”的有线和 DSL 路由器怎么样?价格较低的设备主要将 NAT(网络地址转换)以及通过它为端口打开漏洞的能力等同于防火墙。虽然 NAT 本身确实为 NAT 网关后面的系统提供了一定程度的安全性,但这仅仅构成了一个非常简陋的防火墙。如果漏洞被打开,仍然存在风险。此外,您依赖于路由器的固件和实现没有缺陷。在这些路由器后面设置某种额外的保护是明智的。
无线网卡和集线器怎么样?不安全,尽管制造商可能声称如此。像对待 Internet 连接一样对待这些连接。仅使用安全协议,如 ssh!即使只是一个 LAN 框到另一个 LAN 框。
如果您发现需要运行某项特定服务,并且该服务仅供您自己或可能相对较少的人员使用,请使用非标准端口。大多数服务器守护程序都支持此功能。例如,sshd 默认在端口 22 上运行。所有蠕虫和脚本小子都会期望它在那里,并在那里寻找它。因此,在另一个端口上运行它!请参阅 sshd 手册页。
根据应用程序阻止 Internet 连接的防火墙(如 Windowsdom 中的 ZoneAlarm)怎么样?这些防火墙的设计初衷主要是因为 MS 操作系统中常见的病毒和木马过多。这在 Linux 上实际上不是问题。因此,目前 Linux 上实际上不存在这样的应用程序。而且似乎没有足够的需求让人们花时间去实现它。通过遵循本文档中的其他建议,可以在 Linux 上获得更好的防火墙。
最后,了解您的系统!让我们面对现实,如果您是 Linux 新手,您不可能已经了解您从未使用过的东西。可以理解。但在学习的过程中,学习如何以正确的方式做事,而不是最简单的方式。在“正确的方式”做事背后有几十年的历史。这经受住了时间的考验。现在看起来可能不必要或繁重的,在适当的时候就会变得有意义。
熟悉您正在运行的任何服务,以及如果出现问题,这些服务可能对您的系统整体健康产生的影响。阅读您能找到的资料,并提出问题。不要因为“仅仅因为我可以”,或者因为安装程序将其放在那里,就将某些东西作为服务运行。您显然不能一开始就成为经验丰富的系统管理员。但是您可以努力学习足够多的关于您自己系统的知识,以便您能够掌控一切。这是 *nix 系统与 MS 系统的一个区别:我们永远无法完全控制 MS 系统,但我们可以控制 *nix 系统。反之,如果发生不好的事情,我们往往只能责怪自己。