Linux服务器安全措施分析与研究
2022-05-30李江华王文衡友跃闻顺杰徐晋
李江华 王文 衡友跃 闻顺杰 徐晋
摘要: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]。
3.2 网络访问控制
3.2.1 远程管理应使用SSH方式
管理员通常使用远程登录方式来对服务器进行维护和管理,由于telnet是采用明文传输的协议,很容易被嗅探,存在安全风险,所以远程登录应取消telnet而采用ssh方式,SSH协议通过对数据流进行加密,保证了数据的安全性和完整性,避免了网络欺骗的发生。
默认情况下,SSH是允许root用户登录到系统的,这样十分危险,应该修改sshd服务不允许使用root用户登录,如需远程执行管理员权限操作,应先使用普通用户身份登录,登录后再通过身份切换更改到root用户。另外将默认的sshd监听端口号22替换成5位以上的非知名端口号如12345,可以避免服务器遭受大量的暴力攻击。SSH服务配置文件为/etc/ssh/sshd_config,修改方法如图5所示。
3.2.2 不定期监测端口
管理员要对系统开放的端口情况做到清楚明了,通过netstat 命令能够了解开放了哪些端口及正在运行的端口状态,如图6所示。尽可能关闭无须开放的端口,这样就能很大程度上降低被攻击的概率,若要关闭端口,可以在/etc/sysconfig/iptables配置文件中进行。
3.2.3 资源限制
为了应对如DoS类型的攻击行为,系统需要对用户使用的资源数量进行限制就显得十分必要,包括用户能够创建的最大进程数、使用的内存大小、文件个数等。通过修改配置文件 /etc/security/limits.conf就能做到对用户资源使用进行约束,如图7所示,设置完成后,用户创建的进程数量限制在20个,并且内存只能使用5M。
3.2.4 安装防火墙
防火墙可以对网络流量进行精准控制,保障了局域网的安全, Redhat Linux 7以后Linux自带firewalld防火墙,它通过将网络划分成不同的区域,针对不同区域之间数据流,制定相应的访问控制策略,从而实现数据流的精准流向。
firewalld防火墙可以控制服务的访问或拒绝、端口的连接或断开,还可以控制主机(网段)的访问是放行或阻止,制定科学合理的防火墙策略对实现服务器的安全尤为重要。如图8所示,该设置表示防火墙允许所有对http和https服务、80端口的访问,同样也准许源自192.168.0.0/16网段的访问流量。
3.3 善用系统及应用程序日志文件
Linux的系统日志文件主要用于描述操作系统运行状况以及资源使用的情况,管理员通过日志文件能够及早准确获取系统实时的运行状况、异常信息及用户登录信息等。如借助日志文件能够查询到现在及以前登录过系统的终端信息,包括登录时间、登录主机的IP地址及用户进行的操作等,这就有利于管理员明确非法入侵行为提供证据支持。常见的日志有系统日志和应用程序日志,如系统有message、secure、cron、mail系统日志等;应用程序有Apache日志、Nginx日志、FTP日志、MySQL日志等[7]。
首先要配置系统日志策略文件,如保证日志服务开启,使用ps命令确认系统进程中syslog是否运行,如图9所示。
确定syslog运行后,还要为审计产生的数据分配合理的存储空间以及日志更新时间,通过修改配置文件/etc/logrotate.conf能够设置以上属性,修改后如图10所示。
这样每周依次保存4份日志文件,当生成第5个日志文件时会删除最早的日志文件,这样做也能够节约系统存储空间。当然,黑客完成入侵行为后为避免被发现行迹,通常会采取清除入侵痕迹的手段,通过删减或更改日志文件的方式达到目的。针对这种情况,管理员可以设置远程日志功能,将需要重点关注的日志内容传输到日志服务器进行保存。
3.4 其他安全措施
1) 要确保运行在Linux服务器上的服务安全。例如Nginx服务器,为了预防针对缓冲区溢出攻击,需要合理设置client_max_body_size和client_body_buffer_size两个字段的属性值。再比如黑客攻击Apache 服务器时经常需要获知Linux系统版本号及其他敏感信息,为了避免此类情况发生,可以对httpd.conf配置文件进行修改,在文件中添加如下两行:
ServerSignature Off
ServerTokens Prod
2) 阻止对ping请求的响应。由于Linux默认是允许ping响应的,这样就为Dos攻击提供了便利。阻止对ping命令的响应可以修改/etc/sysctl.conf文件加以实现,在文件中添加一行,使net.ipv4.icmp_ignore_all字段赋值为1[8],这样就可以实现永久阻止响应来自任何外部或者内部的ping请求,极大地提高服务器的安全性。
3) 进一步提高系统管理人员和用户的专业技能及风险意识。大部分的系统风险都来源于人员的错误操作,由于缺乏专业知识,对种种安全问题的防范意识不够,缺乏对系统的基本维护能力,因此必须适时对各类相关人员开展专业技能辅导,不断提高风险管控处置能力,不断增强风险防范意识。
4 结束语
由于移动终端使用Linux系统的情形愈发普遍, Linux系统面临的风险也日益严峻,只有不断提高系统管理员的专业技术和能力,增强全体网络参与者的风险意识,才能保障服务器的安全平稳运行。
参考文献:
[1] 谭彬,杨明,梁业裕,等.Web安全漏洞研究和防范[J].通信技术,2017,50(4):795-802.
[2] 高晓连.Linux服务器存在的安全问题[J].信息与电脑(理论版),2018(2):159-160.
[3] 余飞,刘思宏.Linux下基于Netfilter的内容过滤防火墙的设计与实现[J].牡丹江大学学报,2016,25(6):137-139.
[4] 胡冠宇,杨明.Linux服务器安全问题的分析与研究[J].软件工程师,2014,17(8):7-9.
[5] 张春晖.SNMP协议的分析与应用[J].计算机应用研究,2000,17(1):55-57.
[6] 陈斌.病毒防护技术在计算机网络安全防护中的应用研究[J].网络安全技术与应用,2017(6):13-14.
[7] 胡海明,董绍经,姜有田,等.第四代移动通信技术浅析[J].计算机工程与设计,2011,32(5):1563-1567.
[8] 陈汇远.计算机信息系统安全技术的研究及其應用[D].铁道部科学研究院,2004.
【通联编辑:梁书】
收稿日期:2022-05-13
基金项目:铜陵职业技术学院科学研究自然重点项目“基于Linux操作系统安全问题研究”(项目编号:tlpt2020NK018) ;2020年度安徽省高校教学研究重点项目“移动应用开发专业人才培养质量标准研究”(项目编号:2020jyxm1712) ;铜陵职业技术学院科学研究自然重点项目“鲸鱼智能算法在工程设计优化中的应用研究”(项目编号:tlpt2020NK013)
作者简介:李江华(1977—) ,男,讲师,研究方向为网络安全。