针对基于Linux操作系统的服务器进行的安全漏洞分析
0 引言
Linux操作系统运行在现如今绝大多数的服务器上,以其高安全性、高稳定性而著称,为现代互联网的发展做出了巨大贡献。随着信息化社会的发展,人类愈发难以离开网络,而以网络为中心的安全体系建设也就显得至关重要。随着技术的不断发展和进步,操作系统面临的攻击方式和手段越来越多种多样,解决这些安全隐患已然迫在眉睫。针对各式的攻击手段和安全漏洞,本文从服务器安全检查与分析的角度,对基于Linux操作系统的服务器安全防护做出一些理解。
1 Linux服务器漏洞分析及其安全隐患
在Linux中,漏洞的存在数量并不显著,这是由于Linux具有人员基数庞大的开发者社区或计算机爱好者社区对其进行检修和维护,Linux中人为设计的失误因素相对较少,因此其运行相对稳定。然而随着操作系统的更新迭代,Linux中仍有可能存在一些安全漏洞,这里本文将分析一些常见的Linux服务器安全漏洞,及其可能会造成的安全隐患。
1.1 Linux系统su命令
在Linux系统的/etc/pam.d/路径下存在su文件,其配置控制着su命令的权限和行为。其中存在语句:“#auth required pam_wheel.so use_uid”。pam_wheel.so是一个PAM(Pluggable Authentication Modules)模块,用于限制哪些用户或用户组可以使用su命令切换到其他用户,特别是切换到root用户。这一语句通常是被“#”注释掉而禁用的。未限制使用su的用户,会导致任何用户都可能尝试使用su命令切换到其他用户,包括root用户。这可能会导致以下安全隐患:任何用户都可以尝试切换为root用户而导致未经授权的更改、数据泄露或系统损坏;访问本不应该访问的用户;加大审计和追踪问题的难度。
1.2 未建立独立安全审计账户
未设置安全员、审计员账户,未实现管理用户的权限分离。此类漏洞可能会导致:系统潜在的安全威胁和漏洞无法及时发现,增加安全风险;审计和追踪困难;因权限分离不足而导致的权限滥用;因不合法规而产生的法律或监管风险;项目运营效率降低。
1.3 用户密码复杂度不足
文件/etc/pam.d//system-auth中未设置密码复杂度策略,/etc/profile未设置超时锁定参数(TMOUT),以上两个配置的缺失可能会导致以下漏洞和安全隐患:用户可能设置非常简单的、易于被字典爆破的密码,从而导致用户账户被盗;用户会话可以在无人操作的情况下保持活跃状态,增加未授权访问的风险;因不合法规而产生的法律或监管风险。
1.4 SELinux禁用状态导致的安全风险
在/etc/selinux/config文件下,SELINUX=disable,为禁用模式,无法对重要主体和客体设置安全标记,并控制主题对有安全标记信息资源的访问。SELinux(Security-Enhanced Linux)是一个Linux内核安全模块,提供强制访问控制机制,允许管理员为系统中的文件、进程和其他资源定义精细的访问控制策略。当期被禁用时,系统无法利用这些策略来增强其安全性,以带来潜在的安全风险。
1.5 未限制远程登录范围
若未限制服务器的登录范围,任何人只要知晓服务器的登陆凭证,都可以从任何地方尝试登陆,加大了未经授权用户访问的风险;攻击者可能会从全球的任何位置发起爆破用户名和密码组合的攻击,增加了攻击的频率和可能性;服务器更容易受到拒绝服务攻击,因为攻击者可以从多个地点同时发起大量的登录请求,导致服务器资源耗尽,无法为合法用户提供服务;若服务器位于一个内部网络中并且未限制远程登陆范围,攻击者一旦获得服务器访问权限,就可能进一步探索和利用内部网络的其他资源;因不合法规而产生的法律或监管风险。
2 Linux服务器系统漏洞防护
2.1 Linux系统su命令漏洞的防护
- 编辑/etc/pam.d/su文件,并且启用pam_wheel模块;
- 配置wheel组,确保只有信任的用户被添加到wheel组,因为只有wheel组的成员才能使用su命令;
- 重启PAM配置或重启系统以确保配置生效,并测试配置。
2. 2 设置安全员与独立审计账户
创建专门的安全员账户,负责监控系统的安全状况,及时发现并应对安全威胁;设置审计员账户,用于对于系统活动和用户行为进行审计和追踪,确保系统的合规性和安全性。实现管理用户的权限分离,实施最小权限原则,避免使用超级管理员账户进行日常操作,以减少因误操作或恶意行为造成的风险。
2.3 加强用户密码复杂度
- 在/etc/pam.d/system-auth文件中,通过配置pam_cracjlib或pam_pwquality模块来强制实施密码复杂度策略。例如该配置要求密码必须包含至少8个字符,其中至少一个小写字母、一个大写字母、一个数字和一个特殊字符:password required pam_pwquality.so minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1.
- 在/etc/proflie文件的末尾添加以下行来设置会话超时时间(单位:秒):export TMOUT=600.这可以使得会话在10分钟的无操作后自动注销。
- 重新加载PAM配置并且进行测试。
2.4 启用SELinux安全模块
- 编辑SELinux配置文件,并且修改其状态:强制模式SELinux=enforcing或宽容模式SELinux=permissive.
- 重启并且验证启用的系统是否生效。
2.5 限制远程登录范围
- 确保服务器上只有必要的用户账户存在,并为每个用户分配适当的权限避免使用root用户进行远程登录,为每个需要远程访问连接的用户创建独立的用户,并设置需要的最小权限。
- 要求用户设置复杂且难以猜测的密码、定期更换密码,并启用密码历史记录功能,以防止密码的重复利用。
- 使用iptables或firewalld等工具设置规则,只允许特定的IP地址或网络访问服务器的远程登录端口(如SSH的22端口)。
- 可以使用VPN或专用网络来限制远程登录的范围。使得用户只有连接到VPN或专用的网络才能访问服务器。
- 编辑/etc/ssh/sshd_config文件,修改PermitRootLogin为no以禁止root用户远程登录,设置PasswordAuthentication为no以禁用密码认证(推荐使用密钥认证)。
- 使用AllowUsers或DenyUsers指令来限制哪些用户可以登录服务器;使用LoginGraceTime和MaxAuthTries等参数来限制登陆的时间和次数。
3 Linux服务器系统安全检查与分析
利用Lynis工具扫描Linux安全性。Lynis是一个非常流行的开源安全审计工具,可以帮助强化基于 Linux 和 Unix 的系统。根据该项目的介绍:它运行在系统本身,可以进行深入的安全扫描。主要目标是测试安全防御措施,并提供进一步强化系统的提示。它还将扫描一般系统信息、易受攻击的软件包和可能的配置问题。Lynis 常被系统管理员和审计人员用来评估其系统的安全防御。在服务器上安装Lynis并且确保可以正常运行后后,进行以下的操作。
3.1 审计Linux系统
要审计Linux系统的安全态势,运行命令./lynis audit system,其将日志保存在/var/log/lynis.log和/var/log/lynis-report.dat,分别是Test and debug information和Report data. Lynis找出了操作系统的完整信息,然后检查是否安装了什么系统工具和插件。
3.2 阅读Lynis报告
在Lynis报告日志的底部Suggestion部分列出了所有可能需要修复以更好地加固系统的项目,以及每个项目的TEST-ID. Suggestion部分的描述可能包含了你需要采取的全部行动,如果没有,使用命令lynis show details TEST-ID.
3.3 深入挖掘
许多的Lynis建议并不直接,使得Linux服务器管理员不容易解决问题。因此需要定位Lynis测试脚本。Lynis支持多种操作系统,这里展示在red Hat Enterprise Linux或Fedora Linux系统中,使用命令rpm -ql lynis来查找测试文件。这将列出所有测试文件,并报告其在lynis/include目录下的位置。可以在这个目录下搜索需要的TEST-ID。