Linux服务器安全措施分析与研究

作者: 李江华 王文 衡友跃 闻顺杰 徐晋

Linux服务器安全措施分析与研究0

摘要:Linux操作系统由于安全性好,运行稳定,已经成为目前最为流行的服务器平台。但其面临的安全形势也日益严峻,针对Linux服务器的攻击手段呈现多样化。该文分析了Linux系统中各种风险产生的原因,介绍了针对Linux服务器使用的各种攻击手段,提出一些有效的防护措施,并对Linux服务器各种防护措施进行了研究。

关键词:Linux服务器;防护措施;漏洞;攻击手段

中图分类号:TP393      文献标识码:A

文章编号:1009-3044(2022)31-0074-04

Linux网络操作系统因为兼具较好的可靠性、超高的安全性、资源占用率低等特点,其已经被各种类型计算机系统首选为操作系统平台,尤其广泛应用于服务器操作系统。据不完全统计,现阶段在服务器应用领域Linux系统早已达到了80%以上的市场占有率[1],在其上常可以搭建网站、虚拟专用网络、域名解析系统、DHCP、数据库系统、电子邮件服务器等。而专门针对Linux主机的攻击方法日趋显现出多元化的特征,能否有效预防形形色色的风险因素、切实增强保护措施是广大计算机系统维护和管理人员面对的长期性研究课题。

1 Linux主机所面对的各类安全风险原因剖析

1) Linux服务器平台经常出现各种不同种类的系统漏洞,例如涉及提权漏洞风险,该漏洞主要借助系统守护进程达到获取根用户权限的目的;也存有DDos漏洞,此类缺陷大多在极短时间里通过向服务器端发送大批的非法连接,从而使服务器丧失响应正常请求的能力,还存在IP欺骗漏洞,该漏洞存在的主要原因是TCP/IP协议自身存在的先天缺陷,攻击者可以对数据包的IP地址进行冒用。

2) Linux系统上运行着许多开源软件如Samba、MySQL、vsftpd、bind、Apache等,而这些开源软件本身也存在漏洞,如利用vsftpd软件配置FTP服务器时,默认配置情况下,存在用户登录服务器后即拥有可浏览整个文件系统的风险。而bind也隐含严重的named安全漏洞,攻击者能够借助它实施畸形的TKEY查询,进而对DNS服务器引发DoS攻击,以至于难以进行域名解析服务[2]。

3) 服务器运维人员技术能力高低不等,很多人员安全意识不强。现阶段服务器牵涉到的许多风险因素相当部分原因归咎于管理人员对系统或服务配置不当,从而造成很多安全隐患存在。如当用户不能对某个文件进行写入操作时,管理员就将文件的权限修改成777,这便造成任意用户对该文件都拥有读写和执行的权限。Linux服务器管理人员除了要掌握扎实的专业知识,还需要具备强烈的安全意识,如要定期养成备份敏感数据、员工离职账号停用、及时安装系统和服务补丁等习惯。

2 Linux服务器的常见攻击技术手段介绍与分析

2.1 端口扫描

利用扫描等辅助工具可查测服务器是否隐含漏洞或对外开放了哪些端口,这样黑客就能够进一步通过漏洞采取爆破注入等技术手段攻击服务器。目前暴露较多的端口多表现为远程访问、数据库系统和WEB服务器类端口,如80和443常用于WEB服务器端口,2222、2223端口多被用作系统远程管理,3306惯用作MySQL数据库端口。

2.2 暴力破解

口令是系统安全的第一道屏障,对于弱口令,暴力破解仍然是最简单和有效的攻击手段,这种攻击手段成本低效率高。很多系统管理员多会使用如root、admin、shell、enable、default这类默认和易记的用户名,而用户口令常使用默认或简单密码如system、root、1234、abc123等。对于弱口令,当攻击者使用高速计算机,配合密码字典,口令很容易被破解。

2.3 木马病毒

相对于Windows系统,在Linux系统中运行的木马和病毒相对较少,但随着智能手机的普及,使用了Linux内核的Android手机操作系统同样遭受越来越普遍的木马与病毒的破坏。1996年Staog病毒程序被编写出来,它是第一个基于Linux系统的病毒程序[3],存在Staog病毒的系统在运行可执行文件时会有提权的危险。Staog的出现也标志着Linux系统仍然有被病毒传染的危险。伴随着比特币的盛行,多种挖矿木马也层出不穷,特别针对Linux系统的挖矿木马程序被大量开发出来。

2.4 拒绝服务攻击

拒绝服务(DoS) 是近些年来计算机网络中最普遍也是最难以预防的一类攻击手段,它大多借助TCP协议先天存在的局限性,通过在网络上传送伪造或篡改的大批TCP连接请求,在TCP协议进行三次握手的过程中, 若Syn半连接的数量达到极值时,系统会因为消耗掉所有资源而崩溃,还会导致系统无法响应合法连接请求。这类攻击方式一般来说不会对系统数据造成损害,其目的是使系统失去响应能力,导致计算机或网络无法正常为客户提供服务。

2.5 缓冲区溢出

当恶意程序运行时向缓冲区存入超过预先分配的存储空间就会形成缓冲区溢出,这可以造成很严重的后果,如程序运行崩溃、系统死机、拒绝服务、获取特权等。不论是系统服务程序还是应用软件都存在缓冲区溢出漏洞,如bind、apache都存在缓冲区溢出的风险。

2.6 网络欺骗

攻击者通过伪装来隐藏自己真实身份从事非法行为,如进行IP欺骗,隐藏真实IP地址让人无法溯源,还可以通过伪装成内部某个合法主机从而逃避用户和密码的身份验证直接登录到系统。黑客借助ARP攻击,可以冒充网关,造成正常的网络通信无法为网关识别,也可以冒充用户与其他主机通信,造成会话被劫持。

3 Linux服务器防护方法及手段

3.1 Linux系统的加固

3.1.1 用户账号管理科学化

用户账号是用户登录系统的身份凭证,科学合理地规划用户账号对提高系统的安全十分必要。

1) 避免root用户远程登录。由于root用户拥有系统最高权限,若允许其远程登录,存在被黑客破解密码的极高风险。通过修改配置文件/etc/ssh/sshd_config,能够约束root远程登录系统。如图1所示,将PermitRootLogin字段的值设置为no,即可完成设置。

如果需要root权限进行远程操作,也可以首先使用普通用户登入系统后再转换到root用户,当然确实需要从网络登录,也最好采用ssh结合认证密钥文件的方式登录。

2) 停止使用不必要的用户。Linux系统安装完成后,会默认提供各类系统用户,账号越多存在的风险也就更大,因此删除或者停用无关的账户对服务器的安全十分重要,如news、lp、sync、shutdown、adm、halt等[4]。对于一些危险账号可以通过更改缺省的shell变量提高安全性,如对于ftp账号,就不能设置/bin/bash或者/bin/sh等shell变量,可以在/etc/passwd文件中将shell变量设为/bin/false或者/dev/null。

3) su、sudo命令的合理选择。Linux系统中普通用户权限受到严格限制,通常没有对系统进行修改的权利,若普通用户暂时需要用户的特权,使用su或者sudo命令就能够满足。su命令切换用户时需要将root密码分享给其他用户,这样做十分不安全,而sudo命令只需要普通用户密码就可运行系统命令。所以执行系统命令尽量避免使用su而应使用sudo命令,但此时需要将普通用户添加到wheel组中。如图2所示,修改/etc/pam.d/su系统文件实现了普通用户执行系统命令的功能。

这样只要将需要执行系统命令的用户加入wheel组中就可以了,因为只有wheel组中的用户才被准许运行su命令。

3.1.2 用户密码设置规范化

1) 设置密码策略。避免出现密码设置简单化,对于弱口令,攻击者很容易通过暴力破解方式获取密码,为了防止系统账户存在弱口令的情况,通常需要对密码缺省参数进行设置,通过修改/etc/login.defs配置文件中的 PASS_MIN_LEN、PASS_MAX_DAYS和PASS_WARN_AGE字段,可以对密码所要求达到的最小长度、密码最长允许使用天数以及密码到期提前提醒的天数进行设置,设置如图3所示。

2) 空口令用户必须增设密码。空口令用户由于创建时没有设置密码,存在重大的风险。首先要找出系统中的空口令用户,使用“awk -F: 'length($2)==0 {print $1}' /etc/shadow”命令能够完成空口令用户的查找[5],最后对该用户设置满足复杂性要求的口令。

3) 严格控制用户登录系统的频次。针对使用暴力破解方式进行重复登录的情形,可以设置用户错误登录的次数,当密码错误输入超过设定数值时自动锁定该用户登录权限,进一步设置再次允许登录的锁定时间。错误登录次数和锁定时间的设置可以通过修改/etc/pam.d/login配置文件实现,修改文件配置如图4所示。

设置后当用户连续输入5次错误密码后,系统将会自动锁定600秒的时间,这样能够有效防止字典暴力破解。另外,若用户使用SSH方式登录系统时,也可以通过修改/etc/pam.d/password-auth-ac(或/etc/pam.d/sshd)配置文件来对账户进行锁定,方法同上。

3.1.3 文件权限设置合理化

1) 给敏感文件设置不可更改属性(i参数),如passwd、shadow等文件,日志文件设置只可追加属性(a参数),如cron、syslog、messages等文件。

2) 对于存放临时文件的文件夹如/tmp、/var/tmp权限设置需谨慎,由于临时文件夹对所有用户都开放了读写和执行的权限,为了安全起见,此时应取消普通用户的执行应用程序的权限。

3) 文件特殊权限设置,对于SUID、SGID、SBIT三类特殊权限设置时要谨慎,如某些可执行文件设置了SUID权限后,当其他用户执行该文件时,就能够暂时获得与所有者同等的权限。黑客常利用这种权限进行提权操作,以SUID权限配上root账号,让普通用户暂时拥有所有者权限,为了避免这种情况的产生,可以删除部分系统文件的SUID和SGID权限,如/usr/bin/chage、/usr/bin/gpasswd、/bin/mount等文件。

3.1.4 系统服务最小化

服务器的本质是为各种服务提供访问功能,当Linux系统安装后,会默认启动很多不会使用的服务。服务器运行的服务越多,存在的安全风险也会变得更高,此时管理员可以开启维持服务器运行所需的基础服务,停用非必要或长期空闲的服务。这样不仅能够释放被不必要服务占用的系统资源,而且也会使服务器变得更加安全。比如,如果Linux服务器只用于WWW应用,那么除了httpd服务和系统运行的必要服务外,其他的服务都可以关闭。如果系统没有与Windows网络共享连接需求,就可以关闭Samba服务。

3.1.5 环境变量设置要合规

环境变量主要用于设置操作系统运行过程中的某些参数。通常环境变量越少越安全,环境变量中最好不要使用通配符。Linux系统中通常采用以下三种方法来设置环境变量。一是使用export命令修改PATH变量,该方法只对当前会话有效,当用户退出或系统注销设置失效;二是更改profile配置文件,这种方法对所有用户都是有效的,修改后所有用户都有权使用这些环境变量,所以该方法安全隐患较大;三是修改.bashrc文件,此方法设置环境变量能够做到不同用户能够分配不同的权限,安全性相对较高[6]。

上一篇 点击页面呼出菜单 下一篇