Linux 服务器安全,这些必不可少!🐧 核心诊断清单完美攻略

大家好!您宝贵的Linux服务器今天安好吗? 🖥️ 表面上看起来平静,但在看不见的地方,无数威胁潜伏着。 🕵️‍♂️ 一个小小的安全漏洞就可能导致重大事故。所以今天,我们将详细了解Linux/Unix服务器安全核心诊断清单,以使我们的服务器坚不可摧。请仔细遵循每个项目,检查您服务器的安全状态!


👤 账户管理:所有安全的第一步

账户管理是安全最基本也是最重要的部分。如果权限被窃取,就如同失去了一切。

  • 👑 限制Root账户远程访问 (U-01) 必须阻止直接远程(Telnet, SSH)访问拥有系统所有权限的root账户。如果攻击者窃取了root账户,系统将完全被控制。应养成使用普通账户登录后,再通过su或sudo切换的习惯。
  • 🛡️ 限制Root账户su使用 (U-45) su命令不应被任何人使用。应限制只有特定组(例如:wheel组)的用户才能通过su命令切换到root权限,从而控制权限提升的尝试。
  • 🚨 禁止Root以外的UID ‘0’ (U-44) UID ‘0’是root账户的唯一标识符。如果其他账户拥有UID ‘0’,那么该账户也将拥有与root相同的强大权限。必须立即查找并修改或删除此类账户。
  • 🔑 设置强密码策略 (U-02, U-46, U-47, U-48) 容易猜测的密码就像敞开大门一样危险。
  • 最小长度:设置为8个字符以上。
  • 复杂性:强制使用英文字母、数字、特殊字符组合。
  • 使用期限:设置为最长90天以下,最短1天以上,以促使定期更改。
  • 🤫 保护密码文件 (U-04) 如果加密的密码直接存储在/etc/passwd文件中,将非常危险。请使用影子密码系统将密码安全地保存在/etc/shadow文件中,并务必确认/etc/passwd中的密码字段显示为’x’。
  • 🔒 设置账户锁定阈值 (U-03) 为防止暴力破解攻击,应将登录失败次数限制在10次以下。设置当失败次数达到一定阈值时,账户自动锁定,以挫败攻击者的尝试。
  • ⏳ 设置会话超时 (U-54) 如果您离开座位时有人动了您的电脑,那将是多么可怕的事情。设置在一定时间(建议600秒/10分钟)内无活动时自动注销,以防止未经授权的访问。
  • 🧹 删除不必要的账户 (U-49) 离职人员或不再使用的系统账户是潜在的安全威胁。请定期检查并彻底删除它们。
  • 👨‍✈️ 最小化管理员组 (U-50) root组(GID 0)中应只包含最必要的账户,以减少权限滥用的可能性。
  • 🆔 禁止重复UID (U-52) 如果不同账户使用相同的UID,将导致权限冲突,并使审计追踪变得困难。所有账户都必须拥有唯一的UID。

📂 文件和目录管理:守护重要信息

疏忽重要配置文件权限管理可能导致系统配置被篡改或信息泄露。

  • 🔐 保护重要账户信息文件 (U-07, U-08)
  • /etc/passwd:所有者为root,权限为644以下
  • /etc/shadow:所有者为root,权限为400以下(仅root可读!)通过这些设置,从根本上阻止账户信息文件的篡改。
  • 🌐 保护主机和服务配置文件 (U-09, U-10)
  • /etc/hosts:所有者为root,权限为600(防止通过DNS篡改进行钓鱼攻击)
  • /etc/(x)inetd.conf:所有者为root,权限为600(防止非法服务注册)
  • 📜 保护日志和服务端口文件 (U-11, U-12)
  • /etc/syslog.conf:所有者为root(或bin, sys),权限为640以下(防止日志配置篡改)
  • /etc/services:所有者为root(或bin, sys),权限为644以下(防止服务端口篡改)
  • 🦸‍♂️ 检查SUID, SGID配置文件 (U-13) SUID/SGID是一项强大的功能,允许普通用户以文件所有者/组的权限执行文件,但它也可能成为攻击者提升权限的途径。必须立即删除不必要文件上设置的SUID/SGID。
  • ✍️ 检查World Writable文件 (U-15) 使用`perm -2`选项查找任何人都可以写入的文件。这些文件可能被滥用以植入恶意代码到系统中,因此除非绝对必要,否则必须删除写入权限。
  • 🤝 禁止使用.rhosts, hosts.equiv (U-17) r系列服务(rlogin, rsh等)使用的基于信任的认证文件在安全性上非常脆弱。确保这些文件不存在,以阻止未经认证的远程访问。
  • ❓ 检查无所有者文件/目录 (U-06) 使用`find / -nouser -o -nogroup`命令查找没有所有者的文件或目录。这些处于管理盲区的文件应被删除或指定适当的所有者。
  • 🛤️ PATH环境变量安全设置 (U-05) 如果PATH环境变量中包含当前目录(’.’),特别是位于开头,则存在恶意脚本优先执行的风险。将其添加到PATH的末尾或完全删除更为安全。

⚙️ 服务管理:关闭不必要的端口

不使用的服务应默认关闭!对于正在运行的服务,必须加强安全设置。

  • 🚫 禁用脆弱的r系列服务 (U-21) rlogin, rsh, rwho等服务的认证过程非常脆弱,必须禁用。现在有了SSH,就不用担心了!
  • 🤫 禁用信息泄露服务 (U-19, U-20) 可能泄露用户信息的finger服务,以及允许匿名文件访问的Anonymous FTP,都可能构成重大的安全威胁,因此最好禁用它们。
  • 💥 禁用易受DoS攻击的服务 (U-23) echo, discard, daytime等是可能被用于拒绝服务(DoS)攻击的旧服务。请全部禁用它们。
  • 🚪 NFS服务安全 (U-24, U-25) 如果不使用NFS(网络文件系统),请停止该服务;如果使用,则必须在/etc/exports文件中明确指定允许访问的特定主机,进行严格控制。
  • 📧 加强Sendmail安全 (U-30, U-31, U-70) 旧版本的Sendmail存在安全漏洞。请更新到最新版本,限制垃圾邮件中继,并禁用expn/vrfy等可能泄露信息的命令。
  • 🗺️ 加强DNS安全 (U-33, U-34) 始终保持BIND版本最新,并仅允许授权服务器进行区域传输(Zone Transfer),以防止DNS信息被整体泄露。
  • 🙈 移除Web目录列表 (U-35) 从Web服务器配置(httpd.conf)中移除Indexes选项。此选项会直接显示Web目录的文件列表,可能向攻击者暴露重要信息。
  • 📦 限制Web进程权限 (U-36) Apache等Web服务器守护进程绝不能以root账户运行。应使用apache、nobody等独立的低权限账户运行,以防止即使网站被黑客攻击,整个系统也不会被完全控制的最坏情况发生。
  • ⬆️❌ 禁止访问上级目录 (U-37) 在Web配置中将AllowOverride指令设置为None,可以阻止通过.htaccess文件进行额外配置。通过AuthConfig等适当设置,可以阻止尝试访问上级目录的行为。

📜 补丁和日志管理:持续监控和加固

安全并非一劳永逸,需要持续的关注和管理。

  • ✨ 应用最新安全补丁 (U-42) 操作系统(OS)和主要软件(Apache, PHP, OpenSSL等)的安全漏洞不断被发现。请根据供应商的建议,定期应用最新的安全补丁,以消除已知威胁。
  • 🕵️‍♀️ 定期审查和报告日志 (U-43) 系统日志(wtmp, sulog等)是发现入侵痕迹的重要线索。请定期审查日志,检查异常访问尝试或权限使用记录,并建立在问题发生时能够报告的体系。
  • ✍️ 根据策略配置系统日志 (U-72) 在/etc/syslog.conf(最近是rsyslog.conf)文件中设置明确的日志记录策略,确保所有必要的安全相关日志都被完整记录。

呼,真的很多吧? 😅 但是,如果能持续检查和管理这些项目,您的Linux服务器将会变得更加安全。请记住,安全是“过程”,而不是“事件”。今天就立即检查您的服务器怎么样?


Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注