段垚
摘要:随着我国信息化建设不断推进信息技术广泛应用,信息安全问题凸显服务器的安全加固是信息系统安全体系建设过程中不可或缺的一环,本文根据《信息安全技术信息系统安全等级保护基本要求》第3级要求,结合作者在实际工作中遇到的各种问题,从用户、审计和安全代码防护三个方面介绍了 iinux服务器的安全加固方法。
关键词:安全Linux 加固 服务器
引言
服务器是信息系统的核心设备,黑客攻击的最终目的就是通过提权操作获取服务器中的重要资源。服务器一般位于系统纵深内部,与外网之间使用安全设备进行隔离,虽然一定程度上为其提供了安全保障,但对服务器自身的安全加固也是不能忽略的。在操作系统默认安装的情况下,均未对安全进行配置,下文将参考《信息安全技术信息系统安全等级保护基本要求》3级要求,结合作者在实际工作中遇到的问题,采用问答的方式浅谈—下Linux服务器的安全加固方法。
1.用户
1.1.系统中应该存在多少账号
在实际测评工作中会发现,一大部分操作系统仅有root 一个账号,而另一部分操作系统因为安装、调试等原因会存在很多账号。到底每个操作系统应该有多少个账号呢,根据三权分立、相互制约的原则,应至少存在超级管理员、配置员和审计员三种类型的用户。为便于安全事件的追溯,系统应为不同用户分配不同账号,严格禁止多用户共享同一个用户名的情况。那么下面让我们检查—下系统中已经存在的账号。
用户的基本信息被存储在/etc/passwd文件中。这个文件的每一行代表一个用户使用cat命令查看文件内容如果存在多余或过期账户,在确认账户状态后应将其删除。如果仅存在root -个账户则应按不同需求建立不同账户,避免用户名共享。
1.2.是否每个用户都配置7口令
在etc目录下,有passwd和shadow两个文件,这是Linux中用于存储用户信息的文件。在早期的版本中,passwd是管理用户的唯一场所,包括用户名和口令在内的所有信息都记录在这个文件中。出于安全考虑,现在用户口令被转存至shadow文件中,Shadow文件仅对root用户可读。使用cat命令查看文件内容,该文件第一个字段为用户名,第二个字段为口令,口令采用加密存储,如果该字段显示“!!”则表示该用户名口令为空,需要为该用户添加口令。
1.3.应该怎么配置口令
为了减小口令被暴力破解的可能性,建议口令长度大于6位,由大小写字母、数字和特殊字符组成,口令应定期进行更换。为了增加执行力度,可通过配置文件进行强制要求。配置方法如下:
/etc/login.defs,增加以下配置
PASSMAXDAYS99999(用户的密码不过期最多的天数);
PASSMIN_DAYSO(密码修改之间最小的天数);
PASS MIN LEN5(密码最小长度);
PASS WARN AGE7(密码过期提醒)。
/etc/pam.d/system-auth,增加以下配置
password
required
pam_cracklib.so retry-3 difok-3minlen-8 ucredit=-l Icredit=-l dcredit=-2
difok-3注:要3个不同字符;
minlen-8(最小密码长度为8位);
ucredit=-l(最1个大写字母);
lcredit=-l(最少1个小写字母);
dcredit=-2(最少2个数字)。
1.4.除口令外是否还需要其它的身份鉴别方式
按照国标及行标要求,等保3级及3级以上的信息系统均应采用两种或两种以上的身份鉴别方式,即除用户名加口令的外还应采取第二种身份鉴别技术。用户可以根据自身实际情况采用证书、动态口令牌、虹膜等身份鉴别方式,其中动态口令牌使用较为广泛。
1.5.登录失败处理应该怎么配置
不增加登录失败处理策略,理论上可以通过暴破方式入侵主机,应采取结束会话、锁定或自动退出等措施限制口令尝试次数。/etc/pam.d/system-auth应增加以下配置
auth
required
pam_tally.so onerr-fail deny-3unlocktime=10
deny-3(登录失败3次)
unlock_time=10(锁定10分钟)
1.6.采用什么样的远程管理手段
Linux服务器一般采用telnet和ssh方式进行远程管理,telnet未对传输过程进行加密,鉴权信息等敏感内容可能会被窃听,顾建议采用ssh的远程管理方式。加固方法如下:
首先使用chkconfig list lgrep telnet命令查看是否啟用了telnet服务,如果启用,用则应停用该服务。使用VI编辑/etc/xinetd.d/telnet文件,将“disable=no”改为“disable=yes”,然后重启计算机。或将telnet安装包直接删除,命令行为“#rmp -e telnet server nodeps”。
使用rpm aq| grep ssh查看是否已安装SSH程序包,如已安装则应将/etc/ssh/sshd.config文件中“port 22”前的 “#”注释符去掉,并把22端口在防火墙上开放。
2.审计
在等级保护3级中对审计要求共有7个控制点,其中:
应对系统中的接口服务器、Web服务器、应用服务器、数据库服务器等重要服务器的操作系统和数据库进行审计,审计粒度为用户级。
审计内容应包括重要用户行为、系统资源的异常使用和重要系统命令的使用及其他与审计相关的信息。
审计记录至少应包括事件的日期、时间、类型、用户名、客户端IP地址、访问对象、结果等。
三个控制点在linux默认配置的情况下,基本符合要求。
应保护审计进程,避免受到未预期的中断。
应保护审计记录,避免受到未预期的删除、修改或覆盖等,审计记录至少保存90天。
应定期对审计记录进行分析,以便及时发现异常行为。
三个控制点需要对hnux进行额外配置。
2.1.如何保护审计进程
为了避免审计进程被未预期的中断,需要对审计进程进行守护,应定时扫描audit进程,当检测到进程中断后应重启,并记录到日志。下为保护进程示例,请读者参考。
#!/bin/sh
auditdPIDCount-0
1rm -f /auditdrestart.log。
#LOOIJ
while true; do
sleep 5
ech0 1date+”%Y%m%d%H:%M:%S”f>/dev/null2>&1
auditdPIDCount-1ps aux grep 'auditdll grep -v 7grepil grep -v 'kauditdl l we l'
if[ $auditdPIDCount -lt l];then
'/sbin/auditd>/dev/null 2>&1&
ech0 1date+”%Y%m%d%H:%M:%S”f auditd Restart>> /auditdrestart.109
r二
done
#exit
ech0 1date+”%Y%m%d%H:%M:%S”exit>>/auditdrestart.109
exit O
2.2.如何保护审计记录
审计记录保存在本机显然是不安全的,审计记录可以被人为恶意删除或因设备故障丢失,在安全事件发生后,没有日志记录很难找到事件原因。因此我们需要在系统中单独搭建日志服务器,将本机日志传送到日志服务器,在日志服务器中保存。
3.恶意代码防护
恶意代码防护包括恶意入侵和病毒,在应用程序部署完成后应及时关闭不必要的服务和端口,安装病毒查杀软件,启用人侵检测功能,保持系统补丁和病毒库及时更新。
3.1.是否必须安装杀毒软件
安装杀毒软件可能会造成系统性能下降,并引发其他位置风险,顾对于核心业务服务器酌情处理,如未安装则应避免通过USB及光驱等设备直接拷贝文件,茌安全域边界处应采用防毒墙对恶意代码进行查杀。如果安装杀毒软件则应在系统内部部署恶意代码升级服务器,通过升级服务器保持客户端恶意代码库的更新。建议系统防病毒网关与杀毒软件采用不同的恶意代码库。
3.2.是否必须对系统补丁进行更新
系统补丁补丁与杀毒软件类似,系统补丁的更新会产生一定的潜在风险,建议在实验系统先行部署,如无异常,再进行生产系统部署。
3.3.入侵防護
建议在系统边界处部署入侵防护设备,对系统的入侵防护进行整体考虑。
4.结束语
因运行应用干差万别,顾服务器有着各自不同的安全需求,在对其进行安全加固时应从易用性、稳定性等多方面进行综合考虑,文中的加固方法并不适用于所有服务器,这里仅是起到抛砖引玉的作用,给服务器管理者提供一些安全加固的思路,文中不妥之处请读者加以指正。
参考文献
[1]GBIT 222392008信息安全技术信息系统安全等级保护基本要求。