站内搜索

基于等保三级的Linux服务器安全防护措施

  Linux系统是众多应用程序后端和数据库服务器的主机操作系统。身份验证薄弱、漏洞未修补、服务器错误配置是威胁Linux系统稳定性和安全性的主要因素。网络安全等级保护制度2.0标准体系配合网络安全法的实施和落地,可有效提升应对网络安全风险能力。建立Linux操作系统安全配置基线,应当按照等级保护安全计算环境之服务器三级测评标准,以CentOS7.5为研究对象,围绕身份鉴别、访问控制、安全审计和入侵防范等安全要求,构建安全可信的计算环境。

  Linux is the host operating system for many application back-end and database servers. Weak authentication, unfixed vulnerabilities, and server misconfiguration are the main factors threatening the stability and security of the Linux system. The network security level protection system 2.0 standard system can effectively improve the ability to deal with network security risks with the implementation of the network security law. According to the server three-level evaluation standard of hierarchical protection secure computing environment, this paper takes CentOS7.5 as the research object, and establishes the security configuration baseline of Linux operating system around the security requirements such as identity authentication, access control, security audit and intrusion prevention, so as to improve the security of Linux operating system and build a secure and trusted computing environment.

  网络安全体系布局不仅要关注网络的互通和业务应用的实现,还要重视包括主机、操作系统、中间件等中间层安全问题的加固。根据《2021年中国互联网安全报告》,“主机安全威胁隐匿度提升,将对主机入侵检测能力提出更高要求。”主机层防护措施薄弱将导致操作系统瘫痪或失控,甚至影响传递到上层的应用和数据。因此,做好主机安全防御是防止攻击者提权、横向渗透、后渗透持续控制的有效手段。Linux 是一个多用户、多任务的操作系统,基本安全功能需求以避免不同用户之间相互干扰和禁止非授权访问系统资源为主。本文依据网络安全等级保护2.0系列国家标准,以CentOS7.5为研究对象,从身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范等五个方面对每一个控制点及细分控制项进行梳理,分析其安全机制及常见的安全问题,并给出Linux服务器安全增强技术方法和参考实例,优化Linux服务器三级标准安全防护措施。

一、身份鉴别

  身份鉴别是操作系统安全的第一道关卡,可以解决弱密码、防暴力破解及异常登陆等问题。用户在进入系统之前,首先经过认证系统识别身份,再由系统授权访问系统资源。系统管理员必须对服务器的每个用户或与之相连的服务器设备进行有效标识与鉴别,并赋予合适的权限。

(一)对登录用户进行身份标识和鉴别

  身份标识具有唯一性,身份鉴别信息具有复杂度要求,应当定期更换。服务器基于口令的认证或远程登录的终端认证,均需要采用身份鉴别措施。查看more /etc/shadow文件,shadow文件存储了采用SHA512散列加密算法的密码,密码是单向不可逆的,不能存在空口令用户。Linux系统中UID是代表拥有者的唯一标识。用户信息保存在系统的/etc/passwd文件中,查看more /etc/passwd, 在结果中每行的第三字段(UID)不存在相同数字。密码复杂度方面,编辑/etc/security/pwquality.conf, 修改minlen= 8、dcredit = -1、ucredit=-1、ocredit= -1、lcredit=-1。编辑/etc/pam.d/password-auth和 /etc/pam.d/system-auth文件,在password类模块处添加password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1。密码定期更换方面,编辑/etc/login.defs文件,修改PASS_MAX_DAYS=90、PASS_MIN_DAYS=0、PASS_MIN_LEN=8、PASS_WARN_AGE=7。[5]同时执行命令设置root密码时间:chage—maxdays 90 root, 密码有效期限为90天;chage—mindays 7 root, 密码最少7天才可更改。密码重用受限制方面,在/etc/pam.d/password-auth和/etc/pam.d/system-auth中增加密码出错措施,在password sufficient pam_unix.so 行尾增加“remember=5”,禁止使用最近用过的5个密码。

(二)具有登录失败处理功能

  配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施。配置本地和远程登录失败锁定。本地登录失败锁定编辑/etc/pam.d/password-auth和/etc/pam.d/system-auth文件,远程登录失败锁定编辑/etc/pam.d/sshd文件。在三个文件非注释行的第一行添加auth required pam_tally2.so onerr=fail deny=3 unlock_time=1800 even_deny_root root_unlock_time=1800。登录失败三次,锁定30分钟。远程登录限制。编辑/etc/ssh/sshd_config文件,取消注释符号#,设置MaxAuthTries值为3,远程登录只允许输错3次密码;取消注释符号#,设置PermitRootLogin值为no, 禁止root远程登录;取消注释符号#,设置LoginGraceTime值为30,设置30秒来进行登陆;取消注释符号#,设置ClientAliveInterval值为300,设置ClientAliveCountMax值为0,设置SSH空闲超时时间间隔。登录超时退出。编辑vim/etc/profile, 在“HISTFILESIZE”行的下一行增加“TMOUT=300s”。

(三)防止鉴别信息在网络传输过程中被窃听

  建议采用SSH方式,关闭Telnet方式,并修改SSH默认的端口,限制root远程登录。升级安装[root@localhost~]#ssh yum install openssh-server。开启sshd服务[root@localhost~]#systemctl start sshd。修改sshd的端口[root@localhost~]#vim /etc/ssh/sshd_config, 将“#Port 22”修改为“Port 65528”。semanage命令安装[root@localhost~]#yum-y install policycoreutils-python.x86_6。在SELinux开放65528端口[root@localhost~]# semanage port-a-t ssh_port_t-p tcp 65528。在SELinux开放65528端口[root@localhost~]#firewall-cmd—permanent—add-port=65528/tcp。重新启动操作系统[root@localhost~]#reboot。

(四)应用两种或两种以上组合的鉴别技术

  对用户进行身份鉴别的技术包括口令、密码技术、生物技术等, 且至少其中一种需要使用密码技术来实现。Linux操作系统的鉴别方式为“用户名+口令”,建议企事业单位使用运维安全管理系统(俗称堡垒机)。堡垒机对主账号的认证,支持本地认证、LDAP 认证、RADIUS 认证、USBkey认证、动态令牌认证等多种方式,能够根据用户实际需求,设置混合认证方式,即不同主账号采取不同的认证方式,实现按需设置认证方式。堡垒机通过逻辑上将人与目标设备分离,建立“人->主账号(堡垒机用户账号)->授权->从账户(目标设备账号)->目标设备”的管理模式;通过基于唯一身份标识的集中账号与访问控制策略,与各个服务器、网络设备、数据库服务器等建立无缝连接,实现集中精细化运维操作管控和审计。在Linux服务器的hosts.allow文件配置仅允许堡垒机IP登录服务器;在堡垒机建立管理组织和账户,并将该Linux服务器的远程访问授权上述账户。用户成功登录堡垒机才可以远程访问Linux主机。

二、访问控制

  访问控制解决账户管理、权限管理、强制访问策略管理、敏感信息标记等问题。该测评项要求系统管理员细化每个用户的权限,合理管控系统中存在的用户,保证系统资源受控,杜绝越权行为、多余账户。

(一)分配账户和权限

  用户账号包括超级用户、普通用户、程序用户。系统管理、维护任务使用root用户登录系统,日常事务处理使用普通用户账号,程序用户不允许登录到系统。用户不需要的默认账户,可以禁用或删除。根据等保要求,将root重命名,标识为系统管理员,新建普通用户标识为审计管理员,用于业务的用户禁止登录系统。对于root组用户,除非必要,避免以超级用户登录系统;如果必须以root身份操作系统,首先以普通用户身份登录,然后提升到root身份。

(二)对默认账户进行重命名或删除

  修改root用户名。编辑/etc/passwd、/etc/shadow、/etc/sudoers等三个文件。在passwd、shadow两个文件中将root修改为新的用户名“username”。注意passwd文件输入“:wq”正常保存退出,shadow文件输入“:wq!”强制保存退出。编辑sudoers文件,找到root ALL=(ALL) ALL,将“root”修改为“username”,输入“:wq!”强制保存退出,中间字符中间用“tab键”分隔。新增#useradd sjgly, 并设置复杂密码,分配给审计管理员查看权限#vim /etc/sudoers, 在sudoers文件中新增“sjgly ALL=(root)NOPASSWD:/usr/bin/cat, /usr/bin/less, /usr/bin/more, /usr/bin/tail, /usr/bin/head”。删除默认多余账户。编辑/etc/passwd、/etc/shadow, 删除adm、lp、sync、shutdown、halt、mali、gopher、ftp、news、uucp、operator、games等账户。

(三)避免共享账户的存在

  系统管理员应当了解系统中存在哪些用户,每个用户有什么作用,每个账户有什么权限,可以访问哪些文件,及时删除或停用多余的、过期的账户。系统管理和维护时使用系统管理员,安全审计时使用审计管理员,业务系统部署时每个业务对应一个账号,便于管理和排查。系统管理员应确保系统不存在多余或无用的账户,同时对未被使用的默认账户进行禁用,删除halt、shutdown等账户。

(四)实现管理用户的权限分离

  授予管理用户所需的最小权限。管理员权限分配给系统管理员,系统管理员起配置作用。而审计管理员则对系统管理员的操作进行监督和审计。严格限制具有root级权限的账户。使用sudo赋予普通用户root级权限,可在sudoer.conf文件中进行配置。

(五)授权主体配置访问控制策略

  操作系统的访问控制策略应由授权主机进行配置,非授权主体不得更改访问控制策略,访问控制策略实现对策略系统各用户权限的限制。访问控制策略规定主体对客体的访问规则。操作系统指定系统管理员对访问控制权限进行配置,各账户权限均基于系统管理员的安全策略配置进行访问控制。

(六)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级

  Linux系统对一些默认账户和系统文件分配了不同的权限,也就是说主体已经达到了用户级,客体已经达到了文件级,对于新建用户和文件不能存在权限过大、权限滥用的情况。文件权限的配置原则是配置文件的权限值不大于644,可执行文件的权限值不大于755。设置文件/etc/passwd、/etc/group、/etc/services、/etc/hosts.deny、/etc/hosts.allow、/etc/profile的权限为0644,设置文件/etc/shadow、/etc/gshadow的权限为0400。设置文件/etc/inetd.conf、/etc/lilo.conf、/etc/xinetd.conf、/etc/ssh/sshd_config, 目录/etc/security的权限为0600,防止意外修改和被普通用户查看。防止特殊文件被非授权用户获得权限。chattr +i /etc/passwd、chattr +i /etc/shadow、chattr +i /etc/group、chattr +i /etc/gshadow、chattr +i /etc/services。设置umask值,编辑/etc/profile文件,最后一行增加“umask 027”,即新创建的文件属主拥有读、写和执行权限,同组用户拥有读和执行权限,其他用户无权限。对于在Linux系统上运行的应用程序,管理员必须知道是否会启用SUID特权位设置,并评估可能存在的安全风险。对于安全风险大的SUID特权程序,应尽可能去除SUID特权位的设置,如果确实要使用,必须实时关注其安全状况。即使是安全风险小的SUID特权程序,管理员也要做到“清单式”管理,即对使用的SUID特权程序建立应用清单,及时安装安全补丁。

(七)对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问

  CentOS 7里敏感信息文件包括/etc/下的centos-release、passwd、shadow、group等。Linux没有类似的设置,要想达到要求就必须采用第三方主机加固产品进行安全标记的设置。SELinux是一种通用的、灵活的、细粒度的MAC机制,为用户操作和用户操作对象定义了多种安全策略,能够最大限度地限制进程的权限,保护进程和数据的安全性、完整性和机密性,解决DAC的脆弱性和传统MAC的不灵活性等问题。

三、安全审计

  主机或应用系统被入侵后,安全审计能在日志中查找攻击者操作过程,同时记录操作系统和应用系统的运行情况,记录用户登录和访问行为。审计便于系统管理员及时发现系统入侵行为或系统安全隐患。Linux系统的日志服务由日志守护进程syslog管理。Linux系统的auditd进程用于记录安全信息及对系统安全事件进行追溯,rsyslog进程用于记录系统中的各种信息(如硬件报警信息和软件日志)。Linux系统在安全审计配置文件/etc/audit/audit.rules中配置安全事件审计规则。CentOS在/var/log/messages中存储全局系统活动数据,在/var/log/secure中存储来自可插入身份认证模块(PAM)的日志,包括已成功的登录、失败的登录尝试和认证方式等。

(一)对重要的用户行为和安全事件进行审计

  启用审计功能。#systemctl start rsyslog, 启用日志记录服务;#service rsyslog status, 查看日志记录服务状态;#systemctl start auditd, 启用审计功能,也可#systemctl enable auditd, 确保启用auditd服务;#service auditd status, 查看审计功能状态。[7]启用对在auditd之前启动的进程的审计,编辑/etc/default/grub并将audit = 1添加到GRUB_CMDLINE_LINUX:GRUB_CMDLINE_LINUX=”audit=1″ 运行“# grub2-mkconfig-o /boot/grub2/grub.cfg”更新grub2配置。

  安全事件的配置。编辑/etc/audit/rules.d/audit.rules和/etc/audit/audit.rules文件,添加以下行:收集登录和注销事件:-w /var/log/lastlog-p wa-k logins、-w /var/run/faillock/-p wa-k logins。收集修改用户/组信息的事件:-w /etc/group-p wa-k identity、-w/etc/passwd -p wa-k identity、-w /etc/gshadow-p wa-k identity、-w /etc/shadow-p wa-k identity、-w /etc/security/opasswd-p wa-k identity。收集系统管理员操作事件:-w /var/log/sudo.log-p wa-k actions。收集修改系统的强制访问控制的事件:-w /etc/selinux/-p wa-k MAC-policy、-w /usr/share/selinux/-p wa-k MAC-policy。收集会话启动信息的事件:-w /var/run/utmp-p wa-k session、-w /var/log/wtmp-p wa-k logins、-w /var/log/btmp-p wa-k logins。收集更改系统管理范围的事件:-w /etc/sudoers-p wa-k scope、-w /etc/sudoers.d/-p wa-k scope。

(二)规范审计记录

  审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息。以审计管理员权限的账户身份登录Linux操作系统,执行“ausearch-ts today”命令。其中,-ts表示查看指定时间后的日志。也可以执行“tail -20 /var/log/audit/audit.log”命令来查看审计日志。

(三)保护审计记录

  应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等。[3]日志备份与审计。建立专用日志服务器,将本地日志文件每天备份到日志服务器。部署日志审计安全设备,将本地日志同步到日志审计安全设备进行审计。部署入侵检测安全设备,将系统运行情况与该设备的特征库进行比较,判断系统是否有入侵行为发生。日志文件安全。编辑/etc/audit/auditd.conf文件,设置max_log_file_action为 keep_logs, 确保审核日志不会自动删除。设置max_log_file 为XX,确保已配置审核日志存储大小。chattr +a /var/log/boot.log /var/log/lastlog /var/log/messages /var/log/secure /var/log/btmp /var/log/syslog /var/log/wtmp /var/run/utmp, 更改所有日志文件属性,使文件只可追加不可修改,并赋予640权限。日志文件保留6个月。编辑/etc/logrotate.conf文件,修改为“rotate 24”。

(四)保护审计进程

  防止未经授权的中断。Linux服务器默认开启守护进程。编辑/etc/rsyslog.conf文件,在末尾新增“*.* @172.16.2.2”,该IP为日志服务器IP。网络环境中部署了第三方日志审计工具,可以实时记录审计日志,约定系统管理员不可对日志进行删除操作。

四、入侵防范

  基于服务器的入侵检测可以说是对基于网络的入侵检测的补充,补充检测那些出现在“授权”的数据流或其他遗漏的数据流中的入侵行为。主机入侵检测是指识别主机中发生的入侵事件并分析其入侵迹象的能力,帮助安全人员监控和分析入侵过程,包括执行未经授权的行为、绕过主机或网络安全机制的行为等。

(一)遵循最小安装的原则,仅安装需要的组件和应用程序

  在安装Linux操作系统时,应遵循最小安装的原则,即“不需要的包不安装”。安装的包越多,系统面临的风险就越大,“瘦身”有利于提高系统的安全性。服务器以业务单一、功能单一、服务单一、程序和组件为宜。信息系统以程序和数据分离、分别部署为宜。最小化安装要求包括正版操作系统、RAID5,删除不必要的服务和组件。使用“yum list installed”命令查看操作系统中已经安装的程序包,删除不需要使用的组件和应用程序。

(二)关闭不需要的系统服务、默认共享和高危端口

以下为隐藏内容,登录后可见。

Copyright © XiakeShu.com 版权所有 | 备案号:浙ICP备11004787号-12