微信订阅号二维码

本页内容二维码:

本栏目热门内容
  • Windows 系统安全基线及软...
  • CIS-CAT 配置评估工具介绍...
  • 修改audispd.conf解决审计...
  • 详细了解微软安全合规工具...
  • 从甲方角度介绍“CIS互联...
  • 2022年甲方个人网络安全运...
  • 业务导向安全策略#5员工培...
  • CIS关键安全控制措施#1总...
  • 微软安全合规工具包(SCT...
  • 安装RHEL/CentOS时如何选...
  • CIS关键安全控制措施#16应...
  • SELINUX介绍连载#3:什么...
  • CIS关键安全控制措施#17突...
  • CIS RAM风险评估方法5篇目...
  • 网络安全日志收集甲方基础...
  • SELINUX介绍连载#1:基础...
  • CIS关键安全控制措施#6访...
  • SELINUX介绍连载#2:模式...
  • 关于OpenSCAP/SCAP安全策...
  • CIS RAM#4实施防护措施、...
  • 什么是网络行为异常检测(...
  • CIS关键安全控制措施集18...
  • CIS关键安全控制措施#14安...
  • 网络攻防中的色彩象征
  • DNS子域名发掘工具两项
  • CIS RAM#1风险评估方法核...
  • 内网DNS服务器安全性能基...
  • 业务导向安全策略#1数据管...
  • CIS关键安全控制措施#8审...
  • 更多...

    网络安全等保加固之Linux服务器恶意代码防范

    作者:Sender  来源:WaveCN.com  发布日期:2022-09-27  最后修改日期:2022-10-04

    笔者最近更新放缓了,原因是各种折腾等保加固,各种应对攻防演练,各种过程记录和复盘(画外音:你单兵作战复个什么)......

    言归正传。等保测评要求必须在服务器上部署恶意代码防范措施,简单说就是要安装防病毒软件。

    笔者的工作环境一直是Linux和Windows混合的环境,实际主力都在Linux环境,所以首先就要考虑如何在Linux环境下实现恶意代码防范。

    如果上网搜索,基本都可以找到关于如何在Linux环境下安装ClamAV这个免费杀毒软件的教程。

    安装确实简单,只需要两条命令,首先安装EPEL仓库,然后安装ClamAV即可,以下以Rocky Linux 8为例:

    [root@rocky-vm /]# dnf install epel-release
    [root@rocky-vm /]# dnf install clamav clamav-update clamd
    

    总共会安装:clamav clamav-data clamav-filesystem clamav-lib libprelude clamav-update clamd等7个软件包。安装软件包后,如果操作系统启用了SELinux,需要设置允许扫描的参数,否则SELinux会拦截ClamAV的执行:

    [root@rocky-vm /]# setsebool -P antivirus_can_scan_system on
    

    顺带一提,可以通过getsebool命令查看设置,比如:

    [root@rocky-vm /]# getsebool -a | grep scan
    antivirus_can_scan_system --> on
    

    然后就可以对指定目录进行扫描,并输出扫描结果:

    [root@rocky-vm /]# clamscan /home
    LibClamAV Warning: **************************************************
    LibClamAV Warning: *** The virus database is older than 7 days! ***
    LibClamAV Warning: *** Please update it as soon as possible. ***
    LibClamAV Warning: **************************************************
    ----------- SCAN SUMMARY -----------
    Known viruses: 8624196
    Engine version: 0.103.7
    Scanned directories: 1
    Scanned files: 0
    Infected files: 0
    Data scanned: 0.00 MB
    Data read: 0.00 MB (ratio 0.00:1)
    Time: 43.047 sec (0 m 43 s)
    Start Date: 2022:09:26 23:01:32
    End Date: 2022:09:26 23:02:15
    

    从上面的输出会发现需要更新病毒数据库。很显然,ClamAV作为一个传统的基于特征扫描的杀毒软件,需要更新病毒数据库才能应对新出现的病毒。该命令是freshclam:

    [root@rocky-vm /]# freshclam --show-progress
    ClamAV update process started at Mon Sep 26 23:38:08 2022
    daily database available for update (local version: 26614, remote version: 26670)
    Current database is 56 versions behind.
    Downloading database patch # 26615...
    Time:    2.8s, ETA:    0.0s [========================>]   26.34KiB/26.34KiB
    Downloading database patch # 26616...
    Update process terminated [==============>          ]   20.93KiB/34.53KiB
    

    这也太慢了,毅然一个^C停掉。这个更新操作,显然不应该靠手工去进行。因此,我们设置一个定时更新任务,在/etc/cron.d下面创建定时每天早上4点执行的任务项目clamav-update:

    [root@rocky-vm /]# cat /etc/cron.d/clamav-update
    # Run the clamav daily update job
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    00 04 * * * root /usr/bin/freshclam > /dev/null
    

    不过,在实践中发现,由于ClamAV的特征库升级服务器实在是慢,升级进程还会在后台挂起,进而导致新一天的定时升级任务无法正常启动,特征库升级持续失败。因此,在定时更新的任务项目运行之前,还要先杀掉可能已经存在的升级进程,于是在/etc/cron.d下面创建定时每天早上3点55分执行的任务项目clamav-kill:

    [root@rocky-vm /]# cat /etc/cron.d/clamav-kill
    # KILL the freshclam program
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    55 03 * * * root /opt/clamav-kill.sh
    

    然后创建杀升级进程的脚本/opt/clamav-kill.sh:

    [root@rocky-vm /]# cat /opt/clamav-kill.sh
    #!/bin/sh
    /bin/ps ax | /bin/grep freshclam | /bin/grep -v grep | /bin/awk '{print $1}' | /bin/xargs /bin/kill -9
    

    注意要设置运行属性:

    [root@rocky-vm /]# chmod u+x /opt/clamav-kill.sh 
    

    3点55分杀掉挂起的更新进程,4点开始新的一次更新,就这样。

    回到扫描杀毒这件事本身。和特征库升级一样的是,仅靠手工运行扫描杀毒是没有意义的。那么,如果要相对有效地发挥ClamAV的作用,那就要设置它每天定时进行一次全盘扫描。

    于是,我们需要设置定时任务,在/etc/cron.d目录中加入定时任务项目clamav-dailyscan,定义每日的凌晨2点进行扫描,文件内容如下:

    [root@rocky-vm /]# cat /etc/cron.d/clamav-dailyscan
    # Run the clamav daily scan jobs
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    00 02 * * * root /opt/dailyscan.sh
    

    预估2个小时内能扫描完指定的文件夹,4点开始的特征库更新任务不会对扫描产生影响。

    编写扫描脚本,这个脚本会把扫描发现有问题的文件情况记录到日志,并通过邮件发送给管理员ROOT用户方便查阅。注意脚本中的指定扫描位置参数定义了 /home /var /opt /tmp 四个笔者认为会比较频繁被修改的目录或者是外来程序、文件会存放的目录,如有需要也可以自行修改。脚本存放在/opt目录就可以了:

    [root@rocky-vm /]# cat /opt/clamav-dailyscan.sh
    #!/bin/bash
    CLAMSCANTMP=`mktemp`
    /usr/bin/clamscan --infected -r -l /var/log/clamav/clamscan.log /home /var /opt /tmp>$CLAMSCANTMP
    [ ! -z "$(/usr/bin/grep FOUND $CLAMSCANTMP)" ] && /usr/bin/grep FOUND $CLAMSCANTMP | /usr/bin/mail -s "Virus Found !" root&&
    /usr/bin/rm -f $CLAMSCANTMP
    

    也是不忘记设置运行属性:

    [root@rocky-vm /]# chmod a+x /opt/clamav-dailyscan.sh 
    

    这样就实现了每天定时扫描了。

    ClamAV也提供了后台扫描功能,可以通过systemctl启用clamd@scan服务,并以clamdscan程序去调用运行查杀任务。但该程序作为守护进程运行的目的只是可以随时调用进行查杀,节省启动加载特征库的时间而已,并不是实时对系统的读写进行监控检查,对于专用于中间件或数据库运行的Linux服务器而言并无启动这个服务的必要。需要时可通过clamonacc命令实现。

    最后小结一下,我们总共创建了三个定时任务项目:

    [root@rocky-vm /]# ll /etc/cron.d/clam*
    总用量 20
    -rw-r--r--. 1 root root 142 9月  26 23:46 clamav-dailyscan
    -rw-r--r--. 1 root root 130 9月  27 00:41 clamav-kill
    -rw-r--r--. 1 root root 146 9月  27 00:40 clamav-update
    

    两个脚本:

    [root@rocky-vm /]# ll /opt/clam*
    总用量 8
    -rwxr-xr-x. 1 root root 286 9月  27 00:44 clamav-dailyscan.sh
    -rwxr--r--. 1 root root 115 9月  27 00:42 clamav-kill.sh
    
    欢迎关注微信公众号后私信讨论文章内容!
    本栏目相关
  •  2022-03-16 Windows 系统安全基线及软件工具介绍
  •  2022-05-11 CIS-CAT 配置评估工具介绍及操作实践
  •  2022-03-17 详细了解微软安全合规工具包(SCT)
  •  2022-03-25 从甲方角度介绍“CIS互联网安全中心”
  •  2022-05-10 2022年甲方个人网络安全运维基础工具
  •  2022-06-06 业务导向甲方网络安全策略设计#5员工培训及系列总结
  •  2022-03-28 如何应用CIS互联网安全中心发布的《CIS关键安全控制措施集》之一:总览
  •  2022-03-18 微软安全合规工具包(SCT)操作实战
  •  2022-03-11 安装RHEL/CentOS时如何选择配置安全策略?
  • 返回页首