靳志成,王静雅
(国家计算机网络与信息安全管理中心新疆分中心 新疆 乌鲁木齐 830000)
随着互联网时代的到来,Linux操作系统通过其开源和免费的优势,已从实验室逐步走到家庭用户和企业中,虽然同比其他通用操作系统具有良好的稳定性和安全性,但根据近年来勒索病毒等黑客的攻击数据[1]显示,不论是Linux系统或者用户使用方式等方面,还是存在某些漏洞和错误。迫切需要研究解决有效提高操作系统的安全性,这就要求使用者必须相应地对系统加强安全防范措施,确保数据和信息的存储安全。
目前很多学者针对Linux操作系统的常见安全隐患及漏洞进行了研究,并探讨了安全防范措施。一些学者认为系统安全隐患包括合法用户非法使用或操作不当、攻击者入侵、root用户权限过大、恶意程序威胁等,在进行加固时可引入三权分立原则(设置系统管理员、安全审计员和安全管理员)、设置强制访问控制、加密存储数据、增强安全审计等措施[2]。一些学者从Linux系统登录安全性设置、网络访问限制、病毒防治、补丁安装和攻击防范方面研究Linux系统安全防范措施[3]。一些学者专门针对Linux系统的网络安全防范策略及其进行研究,提出相关保护措施,如将不用的端口及服务关闭、确保安全的网络远程连接及利用防火墙技术保障网络安全[4]。
本文综合上述学者对Linux操作系统安全及防范策略的研究内容,综合考虑普通大众从系统使用效率和舒适度出发,将安全和便利两者权衡考虑,分别从身份鉴别、访问控制、安全审计和入侵防范等方面进行分析,提出一套系统性且适用于大众用户的Linux系统通用的基本加固方法。
随着互联网应用技术的不断提高,近年来类似勒索病毒等安全事件不断出现,如用户终端被攻击或控制、重要资料被窃取、用户数据被篡改、隐私泄露甚至金钱上的损失等。面对不断出现的安全隐患,安全加固显得越来越重要。本文主要研究一种适用于普通用户Linux操作系统的安全加固方法,通过此方法可以提高Linux操作系统的安全性,确保被存储的数据和信息安全有效,防止黑客利用用户登录身份信息、远程登录权限、系统漏洞等进行系统攻击,保护用户隐私信息,可以提高信息系统安全性,增强健壮性,增加攻击入侵的难度,大幅提升信息系统安全防范水平。
安全稳定的Linux操作系统需要进行身份鉴别,身份标识要具有唯一性,鉴别信息应具有一定复杂度,且复杂度应按时更换[5];同时具有密码使用限定、登录超时退出、限制账号登录次数等措施。根据上述要求,建议完成如下安全加固配置。
2.1.1 建议禁止使用旧密码
方法是在/etc/pam.d/system-auth中写入:password sufficient pam_unix.so sha 512 shadow nullok tryfirstpass useauthtok remember=7
2.1.2 建议启用密码最短长度
方法是在/etc/pam.d/system-auth 文件写入:password requisitepam_cracklib.so retry=5 difok=5 minlen=10
2.1.3 建议启用密码复杂度
密码必须至少包含大写字母、数字和符号各一个和两个小写字母,在包含“password”和“pam_cracklib.so”字段中后输入命令:“ucredit=1 lcredit=2 dcredit=1 ocredit=1”
2.1.4 建议启用密码过期时限
方法是在etc/login.defs中写入:passmaxday14 passminday5 passwarnage 7,设定密码使用的最长时限为90天,口令失效前7天通知用户更改密码。
2.1.5 登录超时退出
修改账号TMOUT值,设置自动注销时间。通过执行vim/etc/profile命令增加TMOUT=600,确保600 s内无操作则立即目前账号注销。
2.1.6 设置账号锁定登录失败次数、锁定时间
用户登录超过限制的次数后即将账号锁定。方法:a.ssh 远程方面限制# vim /etc/pam.d/sshd#%PAM-1.0;b.tty 终端方面限制# vim /etc/pam.d/login#%PAM-1.0。
安全的Linux操作系统需要划分角色、锁定系统中多余的自建账号、检查空口令账号、禁用root之外的超级用户;需要合理设置SSH安全登录,防止信息在网络传输过程中被窃听;还需规定访问控制权限。建议进行如下安全加固配置。
2.2.1 锁定系统中多余的自建账号
通过执行cat/etc/passwd和cat/etc/shadow命令,查看账户、密码,根据需求确定用户,再通过passwd -l<用户名>锁定不必要的账户,使用命令userdel<用户名> 删除不必要的账号。
2.2.2 检查shadow中空口令账号
可使用awk -F:'($2=="")' /etc/shadow命令检查是否有空口令账户。若有,则通过passwd<用户名>命令设置密码,其次设置密码系统策略,通过#vi/etc/login.defs命令修改配置文件。
2.2.3 禁用root之外的超级用户
禁止普通用户su为root用户权限,通常查看是否有auth required/libsecurity/pam whell.so配置条目,若有将其添加至其他组,并将test用户加入到该组即可。
2.2.4 合理设置SSH安全登录
通过vi etc/ssh/sshd_config PermitRootLogin no禁止root 账户远程登录。通过#vi etc/ssh/sshd_config更改服务端口,Port自定义。再次通过屏蔽SSH登陆banner信息,在vi etc/ssh/sshd_config中添加banner NONE。
2.2.5 访问控制策略及设置安全标记
使用chgrp命令给组添加权限,具体如下:chgrp文件夹或用户组文件。使用chown改变文件拥有者,参考方法:chown 用户名 文件名。文件拥有者用chmod命令可以改变文件权限。
Linux采用了syslog工具来实现系统审计、监测追踪和分析功能,记录全部操作记录。首先对ssh、su登录日志进行记录使用命令:vi/etc/syslog.conf Authpriv.* /var/log/secure、/etc/rc.d/init.d/syslog restart。开启系统审计日志功能使用命令:Service auditd start;/var/log/audit/audit.log。查看服务是否启用,日志是否存在使用命令:ps-aef|grep syslog。在审记录中开启详细审计,包括登录时间、登录IP等内容,可以保护和备份审计日志,开启审计守护进程用于审计进程保护。
主机层的入侵防范是操作系统安全的基本保障,网络层无法防止所有攻击,主机层的入侵防范与恶意代码防范就成为系统安全最后的安全保障。为防止黑客进行入侵防范,建议做如下安全加固配置。
2.4.1 建议关闭不使用的服务、端口和共享
通过chkconfig-list,检查已启用的服务。用systemctl stop postfix.service命令关闭Anancron、Apmd、Autofs等服务。用systemctl disable<服务名>命令设置服务不自动启动,如普通服务和xinetd服务,降低风险。对于部分老版本的Linux操作系统(如CentOS 6),可使用chkconfig--level
2.4.2 限制终端或网络地址范围
Linux系统可以对终端或网络地址范围进行限制,用iptables命令查验IP地址,参考方式如下:iptables-A INPUT-p tcp-s X.X.X.X-destination-port 22-j ACCEPT;iptables-A INPUT-p tcp-destination-port 22 -j DROP。
2.5.1 设置BASH保留历史命令的条目
为了兼顾工作的效率、便利性和安全性,通过执行vim/etc/profile,修改HISTSIZE=5即保留最新执行的5条命令,即可快速提取当下常用命令,也可保障黑客无法回溯多条历史命令。
2.5.2 设置注销时删除命令记录
注销时删除命令可以提高系统的安全性的。可以通过执行vim/etc/skel/.bash_logout文件,增加如下行:rm-f $HOME/.bash_history,实现系统中的用户在注销时删除其命令记录的功能。
2.5.3 阻止系统响应ping请求
普通用户使用过程中一般不涉及ping请求,通过执行echo 1>/proc/sys/net/ipv4/icmp_echo_ignore_all禁止ping请求回应。
2.5.4 禁止Traceroute 探测
使用iptables-A FORWARD-p icmp-j DROP命令,禁止Traceroute探测。
2.5.5 重要文件属性管理
可使用UGO等方法给重要文件加上不可改变属性,限定用户分组权限或者加上不可改变属性。
2.5.6 设置文件访问权限
修改/etc/profile配置文件,添加“umask=027”并保存。
2.5.7 限制某些策略配置
如单个用户多重并发会话、最大并发会话连接数等。
经过上述加固后的Linux操作系统,使用OpenVAS漏洞扫描器和Nessus系统漏洞扫描与分析软件进行扫描,结果均未扫描出高、中、低漏洞和系统及应用的相关漏洞。
通过上述加固操作可以确保:(1)黑客无法通过获得root账户权限,窃取用户信息或传播病毒,成功避免成为攻击目标;(2)黑客难以利用应用服务漏洞(如Web服务中的Gern和NCSA漏洞和 FTP文件服务表单漏洞[6])攻击,从而造成内部隐私信息丢失;(3)黑客无法进行口令爆破攻击,通过访问控制策略设置账号登录失败次数,防止黑客多次进行用户登录破解口令,窃取用户信息;(4)防止黑客进行端口扫描攻击,通过关闭不必要端口和进程,可以有效防止黑客通过扫描用户主机端口获得数据,转而分析用户主机存在的漏洞,并针对漏洞采取攻击,最终入侵用户系统[7]。
复杂度分析:根据专刊《杂》提供的数据对比:增加1个字符,可直接避免字典攻击。根据以下具体的测试数据,得出密码复杂度建议使用数字+特殊字符+字母,见表1。
表1 不同密码复杂度测试表
针对密码过期期限、登录超时退出、最短密码长度和账号锁定登录失败次数、锁定时间分析:通过对30位人员相同条件下,不同加固参数的对比,得出较为适宜普通用户加固的方式方法和参数,见表2。
表2 不同加固参数对比分析表
本文通过风险分析、实际应用等综合分析,提出适合大众普通用户行为习惯的操作系统加固方法,但是用户也不能大意,新病毒或者新漏洞随着技术将不断被发现和利用,有必要不断地综合考虑分析各类加固方式方法,既需考虑到工作效率和便利性,也要保障用户的信息安全,避免财产损失,同时希望本文能对部分用户提供帮助。