Linux系统(centos7)常见安全风险 问题处理 漏洞修复

服务器安全维护是项目上线后必不可少的一环,安全扫描出的风险大致分为系统风险、软件包版本漏洞、应用版本漏洞、应用风险、账号风险等五类,文中与大家分享了维护过程中的常见问题。
关键词:安全扫描 漏洞修复 系统风险 应用风险 账号风险 yum升级 tomcat升级 运行权限检查 普通用户启动 设置密码尝试次数

一. 系统风险

1.路由转发功能开启

二. 安全补丁

相关软件包的版本存在漏洞,一般需要通过升级软件包的方式来处理。

三. 漏洞检测

1.Tomcat 拒绝服务漏洞(CVE-2020-13934、CVE-2020-13935)

四. 应用风险

1.Tomcat运行权限检查

2.Redis服务以root权限运行

3.vsftpd服务用户可使用其他方式登录操作系统

4.vsftpd服务用户权限可跨目录

五. 账号风险

1.未设置密码尝试次数锁定

2.账户目录任意读写

===========================================================================================

一. 系统风险

1.路由转发功能开启

应用:system

危险程度:高危

风险描述:启用网络接口之间的数据包转发创建一个服务器的路由功能,该功能可以被滥用来创建或进一步的攻击,并能创造威胁的高度载体。如果这个检查失败,路由本身没有明确要求,把net.ipv4.ip_forward的值更改为0来明确禁用IP路由。如果服务器有面向Internet和内部私人的两个接口,这一点就尤其重要。

验证信息:检测/proc/sys/net/ipv4/ip_forward值是否为1,为1表示开启路由转发功能,存在漏洞。
ip_forward值为:1

修复建议:以下两步同时操作

I> 永久修复方案(需重启系统后生效):

对/etc/sysctl.conf手动配置net.ipv4.ip_forward=0,

或复制和粘贴这些命令:

sudo sed -i -e ‘s/#(net.ipv4.ip_forward .)/#\1/i’ /etc/sysctl.conf

echo ‘net.ipv4.ip_forward = 0’ | sudo tee -a /etc/sysctl.conf

II> 临时修复方案

echo 0 > /proc/sys/net/ipv4/ip_forward

修复影响:不需要重启

二. 安全补丁

相关软件包的版本存在漏洞,一般需要通过升级软件包的方式来处理,以kernel升级为例。

I> 查看当前安装版本和可用版本

sudo yum list --showduplicates kernel kernel-devel

[root@linux01 ~]# sudo yum list --showduplicates kernel kernel-devel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Installed Packages
kernel.x86_64             3.10.0-693.el7              @anaconda
Available Packages
kernel.x86_64             3.10.0-1160.el7             base     
kernel.x86_64             3.10.0-1160.el7             updates  
kernel.x86_64             3.10.0-1160.15.2.el7        updates  
kernel-devel.x86_64       3.10.0-1160.el7             base     
kernel-devel.x86_64       3.10.0-1160.el7             updates   
kernel-devel.x86_64       3.10.0-1160.15.2.el7        updates 

II> 升级软件包到最新版本

sudo yum update -y kernel kernel-devel

执行后:

[root@linux01 ~]# sudo yum list --showduplicates kernel kernel-devel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Installed Packages
kernel.x86_64             3.10.0-693.el7              @anaconda
kernel.x86_64             3.10.0-1160.15.2.el7        @updates 
Available Packages
kernel.x86_64             3.10.0-1160.el7             base     
kernel.x86_64             3.10.0-1160.el7             updates  
kernel.x86_64             3.10.0-1160.15.2.el7        updates  
kernel-devel.x86_64       3.10.0-1160.el7             base     
kernel-devel.x86_64       3.10.0-1160.el7             updates  
kernel-devel.x86_64       3.10.0-1160.15.2.el7        updates 

III> 如果需要升级到指定版本,则需要在命令中指定版本

例如,升级到

kernel.x86_64 3.10.0-1160.el7 updates

kernel-devel.x86_64 3.10.0-1160.el7 updates

命令:sudo yum update -y kernel-3.10.0-1160.el7 kernel-devel-3.10.0-1160.el7

IV> 如果需要回退到指定版本,则需要使用downgrade命令

firefox.x86_64 68.12.0-1.el7.centos updates

sudo yum downgrade -y firefox-68.12.0-1.el7.centos

例外:内核允许多个版本并存,并且可以在重启时选择启动所用的内核,不支持降级。

[root@linux01 ~]# sudo yum downgrade -y kernel-3.10.0-1160.el7.x86_64 kernel-devel-3.10.0-1160.el7.x86_64 
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Package kernel-3.10.0-1160.el7.x86_64 is allowed multiple installs, skipping
Package kernel-devel-3.10.0-1160.el7.x86_64 is allowed multiple installs, skipping
Nothing to do

三. 漏洞检测

1.Tomcat 拒绝服务漏洞(CVE-2020-13934、CVE-2020-13935)

应用:tomcat

危险程度:中危

漏洞类型:拒绝服务攻击

漏洞描述:Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

Tomcat上存在拒绝服务漏洞,WebSocket框架中的有效负载长度未正确验证,无效的有效载荷长度可能会触发无限循环,有效载荷长度无效的多个请求可能导致拒绝服务。

受影响应用版本:Tomcat 10.0.0-M1 - 10.0.0-M6, 9.0.0.M1 - 9.0.36,8.5.0 - 8.5.56

(不同操作系统影响的应用版本不同,具体以检测结果为准)

验证信息:版本比对检测原理:检查当前系统中Tomcat版本是否在受影响的版本内|版本比对检测结果:- tomcat

当前安装版本:8.5.51,该主机存在此漏洞。

修复建议:将 Tomcat 升级到 8.5.57、9.0.37、10.0.0-M7 及以上版本,下载地址:http://archive.apache.org/dist/tomcat/

修复方式:

对于tomcat:tomcat升级

I. 停掉tomcat服务

sh tomcat/bin/shutdown.sh

ps -ef |grep tomcat #查到该tomcat服务的进程号;

kill -9 pid进程号 #结束tomcat进程

II. 下载新版tomcat(apache-tomcat-8.5.57.tar.gz)并解压,将旧版的以下内容复制到新版tomcat的目录下

I>tomcat/webapps目录下的所有内容(替换)

II>tomcat/conf/server.xml(替换)

​ tomcat/conf/web.xml(替换)

III>tomcat/conf/Catalina(复制)

IV>tomcat/bin/catalina.sh(替换,如果有改动的话)

​ tomcat/bin/setclasspath.sh(替换,如果有改动的话)

V>启动新版tomcat服务

sh tomcat/bin/startup.sh

对于springboot2.3项目内置的tomcat:修改配置文件pom.xml,在properties标签中指定tomcat版本,并添加依赖

  <properties>
    <tomcat.version>9.0.37</tomcat.version>
  </properties>
  
  <dependencies>
        <!--指定内嵌tomcat版本-->
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-juli</artifactId>
            <version>${tomcat.version}</version>
        </dependency>
    </dependencies>

之后检查maven树,tomcat版本更新后,重新打包上传,启动服务。

修复影响:服务重启

四. 应用风险

1.Tomcat运行权限检查

应用:tomcat

危险程度:高危

风险描述:【漏洞描述】Tomcat以root权限运行时,应用程序(如Struts2、jsp webshell)也拥有了root权限,因此通过漏洞,可以直接以root用户身份控制主机。【检测原理】Tomcat运行权限检查,检查tomcat的运行用户的uid或gid是否为0

验证信息:运行权限说明,tomcat 运行权限 uid为: 0 gid为: 0

修复建议:将tomcat运行账号切换至普通用户以及普通用户组

修复方式:

useradd tom #创建用户,采用默认的用户组tom即可;id tom -u 可以查看用户tom的uid,id tom -g 可以查看tom的gid

chown -R ./tomcat安装目录日志目录文件目录等 tom:tom #将tomcat应用文件的所有者更换为tom

chmod -R 750 ./tomcat安装目录日志目录文件目录等 #将tomcat应用文件的权限改为750

#启动项目,

sudo -u tom sh tomcat/bin/startup.sh

su tom

sh tomcat/bin/startup.sh

修复影响:服务重启

2.Redis服务以root权限运行

应用:Redis

危险程度:高危

风险描述:Redis服务以root权限运行,攻击者可通过Redis对服务器文件进行任意操作或者执行命令。通过查询命令获取敏感信息,通过写入公钥信息获取ssh登录权限等。如果Redis为root权限,攻击者则无需提权直接对服务器进行操作。

验证信息:检查Redis运行的uid和gid是否为0,运行Redis服务的uid为:0,gid为: 0

修复建议:备份数据(bgsave/save)后,在系统中新增加用户(useradd redis) 并给Redis数据文件赋予该新用户的权限,然后使用该新增加的用户(非root权限的用户)运行Redis,使得Redis启动后仍然可以从rdb或aof数据文件中快速建立缓存内容

修复方式:

在root用户下执行

useradd redis #创建用户,采用默认的用户组redis即可

chown -R ./redis安装目录日志目录文件目录等 redis:redis #将redis应用文件的所有者更换为redis

chmod -R 750 ./redis安装目录日志目录文件目录等 #将redis应用文件的权限改为750

#启动redis,root用户下可以用systemctl status/start/stop/restart redis-server.service管理服务,但是改为普通用户(不具备systemctl管理服务的权限)运行后,采用此命令启动

sudo -u redis /usr/bin/redis-server /etc/redis.conf --daemonize yes

su redis

/usr/bin/redis-server /etc/redis.conf --daemonize yes

修复影响:服务重启

3.vsftpd服务用户可使用其他方式登录操作系统

应用:vsftpd

危险程度:高危

风险描述:默认情况下专用于ftp访问的用户没有登录操作系统的权限。如果专用于ftp访问的用户可使用其他方式登录操作系统,会导致攻击者利用ftp用户执行许多系统命令或使用系统的漏洞进行权限提升。当vsftp用户可使用其他方式登录系统会为攻击者提供极大便利,而且不易被管理员发现。

验证信息:如果vsftp使用操作系统帐号进行身份认证,则检查用于ftp认证的操作系统帐号中是否存在能够使用其他方式登录(如ssh)系统的帐号
vsftpd账号允许登录操作系统的用户为:user;

修复建议:设置用户ftp登录的操作系统帐号的bash为/sbin/nologin,或锁定该帐号

修复方式:

vi /etc/passwd #编辑文件,找到对应用户user的行,将/bin/bash改为/sbin/nologin

修复影响:服务重启

4.vsftpd服务用户权限可跨目录

应用:vsftpd

危险程度:高危

风险描述:vsftpd默认禁止跨目录。如果攻击者登录到ftp并且用户权限可跨目录,将会导致普通的vsftpd用户能访问和修改其他目录的某些敏感文件。攻击者可以通过替换某些系统的敏感文件,如/etc/passwd或者LD_PRELOAD,从而获取操作系统的控制权。

验证信息:首先检查配置文件中的chroot_local_user=YES是否被设置为YES,如果为YES,则chroot_list_file=/etc/vsftpd/chroot_list中的用户名为能够chroot的用户;如果未设置或NO,则chroot_list_file=/etc/vsftpd/chroot_list中的用户名为不能chroot的用户
vsftpd存在跨目录的用户为:user

修复建议:

I> 更改chroot配置

Linux命令:vim /etc/vsftpd/vsftpd.conf

chroot_local_user=YES

chroot_list_enable=YES

allow_writeable_chroot=YES

chroot_list_file=/etc/vsftpd/chroot_list

II> 创建允许chroot的用户列表,文件内容必须为空。

Linux命令:touch /etc/vsftpd/chroot_list

修复影响:服务重启

五. 账号风险

1.未设置密码尝试次数锁定

应用:system

危险程度:高危

风险描述:攻击者可无限次尝试登录系统。

验证信息:检测/pam.d/下system-auth,common-auth,password-auth,sshd,login,kde配置文件是否设置密码尝试次数锁定。未设置密码尝试次数锁定的配置文件为:/etc/pam.d/system-auth, /etc/pam.d/password-auth, /etc/pam.d/login, /etc/pam.d/kscreensaver, /etc/pam.d/gdm-password

修复建议:在上述文件中加入指定配置项,使用pam_tally模块或pam_faillock模块对登陆系统失败次数过多的账户进行锁定。

修复方式:

编辑/etc/pam.d/system-auth, /etc/pam.d/password-auth, /etc/pam.d/login等3个文件,加入以下行

auth required pam_tally2.so even_deny_root deny=3 unlock_time= 600 root_unlock_time=600

/etc/pam.d/kscreensaver, /etc/pam.d/gdm-password中,如果引用了以上3个文件的配置,则不用做修改。

注:以上配置含义为,限制三次登录失败后,将账户锁定600秒,even_deny_root表示对root用户也生效。

修复影响:不需要重启

2.账户目录任意读写

应用:system

危险程度:高危

风险描述:用户账号目录可被任意读写,则意味着用户的变量信息或文件均可被任意改写,因此存在系统被提权或越权,或水坑攻击等风险。

验证信息:检测用户账号主目录的用户组及其他用户是否权限最大只具有x权限
用户主目录权限存在问题的为:/var/lib/mysql(rwxr-xr-x)

修复建议:修改用户账户目录的权限,某些应用可能对家目录权限有特殊要求,建议测试验证无误后再进行操作。

修复方式:

chmod -R 711 /var/lib/mysql

修复影响:不需要重启

特别提醒:维护前请做服务器备份,做好修复记录,并且需要在修复完成后,进行业务验证,在必要时进行版本回退。

不妥之处,敬请批评指正。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐