扫描 Linux 服务器是否存在病毒、恶意软件和 Rootkit 的三种工具
连接到互联网的服务器全天都会受到源源不断的攻击和扫描。虽然防火墙和定期系统更新是确保系统安全的良好第一道防线,但您还应该定期检查是否没有攻击者渗透。本教程中描述的工具是为这些测试而设计的,用于扫描恶意软件、病毒和 Rootkit。它们应该定期运行,例如每晚运行,并通过电子邮件向您发送报告。当您发现可疑活动(例如高负载、可疑进程或服务器突然开始发送恶意软件时),您还可以使用 Chkrootkit、Rkhunter 和 ISPProtect 扫描系统。
所有这些扫描程序都必须以 root 用户身份运行。在运行它们之前以 root 身份登录。在 Ubuntu 上,使用:
sudo -s
成为root用户。
chkrootkit - Linux Rootkit 扫描器
Chkrootkit 是一款经典的 Rootkit 扫描程序。它会检查您的服务器是否有可疑的 Rootkit 进程,并检查已知 Rootkit 文件的列表。
安装您的发行版附带的软件包(在 Debian 和 Ubuntu 上您将运行
apt-get install chkrootkit
),或者从 www.chkrootkit.org 下载源代码并手动安装:
wget --passive-ftp ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar xvfz chkrootkit.tar.gz
cd chkrootkit-*/
make sense
之后,您可以将 chkrootkit 目录移动到其他位置,例如到 /usr/local/chkrootkit:
cd ..
mv chkrootkit-<version>/ /usr/local/chkrootkit
并创建一个符号链接以便于访问:
ln -s /usr/local/chkrootkit/chkrootkit /usr/local/bin/chkrootkit
要使用 chkrootkit 检查您的服务器,请运行以下命令:
chkrootkit
常见的误报报告是:
Checking `bindshell'... INFECTED (PORTS: 465)
当您在电子邮件服务器上收到此消息时,请不要担心,这是邮件系统的 SMTPS(安全 SMTP)端口,也是众所周知的误报。
您甚至可以通过 cron 作业运行 chkrootkit 并将结果通过电子邮件发送给您。首先,使用以下命令找出 chkrootkit 在服务器上的安装路径:
which chkrootkit
例子 :
root@server1:/tmp/chkrootkit-0.52# which chkrootkit
/usr/sbin/chkrootkit
Chkrootkit 安装在路径 /usr/sbin/chkrootkit 中,我们在下面的 cron 行中需要此路径:
跑步 :
crontab -e
要创建这样的 cron 作业:
0 3 * * * /usr/sbin/chkrootkit 2>&1 | mail -s "chkrootkit output of my server" [email )
这将在每晚 3:00 运行 chkrootkit。将 chkrootkit 的路径替换为您从上述命令收到的路径,并将电子邮件地址替换为您的实际地址。
Lynis - 通用安全审核工具和 Rootkit 扫描程序
Lynis(以前称为 rkhunter)是一款适用于 Linux 和基于 BSD 的系统的安全审核工具。它对系统的许多安全方面和配置进行详细审核。从 https://cisofy.com/downloads/lynis/ 下载最新的 Lynis 源代码:
cd /tmp
wget https://downloads.cisofy.com/lynis/lynis-3.0.7.tar.gz
tar xvfz lynis-3.0.7.tar.gz
mv lynis /usr/local/
ln -s /usr/local/lynis/lynis /usr/local/bin/lynis
这会将 Lynis 安装到目录 /usr/local/lynis 并创建一个符号链接以便于访问。现在运行
lynis update info
检查您是否使用最新版本。
现在您可以通过运行以下命令来扫描系统中是否存在 Rootkit:
lynis audit system
Lynis 将执行一些检查,然后停下来给您一些时间来阅读结果。按 [ENTER] 继续扫描。
最后,它将向您显示扫描摘要。
要以非交互方式运行 Lynis,请使用 --quick 选项启动它:
lynis --quick
要在晚上自动运行 Lynis,请创建一个如下的 cron 作业:
0 3 * * * /usr/local/bin/lynis --quick 2>&1 | mail -s "lynis output of my server" [email )
这将在每晚 3:00 运行 Lynis。将电子邮件地址替换为您的真实地址。
ISPProtect - 网站恶意软件扫描程序
ISPProtect 是一款针对 Web 服务器的恶意软件扫描程序,它会扫描网站文件和 CMS 系统(如 WordPress、Joomla、Drupal 等)中的恶意软件。如果您运行 Web 托管服务器,那么托管网站是您服务器中最受攻击的部分,并且它是建议定期对其进行健全性检查。 ISPProtect 包含 5 个扫描引擎:
- 基于签名的恶意软件扫描程序。
- 启发式恶意软件扫描程序。
- 显示过时 CMS 系统安装目录的扫描仪。
- 一个扫描仪,可以显示整个服务器上所有过时的 WordPress 插件。
- 数据库内容扫描器,用于检查 MySQL 数据库是否存在潜在的恶意内容。
ISPProtect 不是免费软件,但有一个免费试用版,无需注册即可使用,以检查您的服务器是否存在恶意软件或清理受感染的系统。在您的服务器上使用完整版本软件的免费许可证密钥只是“试用”。
ISPProtect 需要在服务器上安装 PHP 和 ClamAV,大多数托管系统都应该是这种情况。 ISPProtect 在第一级扫描中使用 ClamAV 以及 ISPProtect 自己的恶意软件签名集。如果您尚未安装命令行 PHP,请执行:
sudo apt install php7.4-cli php7.4-curl clamav
在 Debian 11 或 Ubuntu 20.04 上或
yum install PHP php-curl
在 AlmaLinux、Fedora、CentOS 或 Rocky Linux 上。
运行以下命令安装 ISPProtect。
mkdir -p /usr/local/ispprotect
chown -R root:root /usr/local/ispprotect
chmod -R 750 /usr/local/ispprotect
cd /usr/local/ispprotect
wget http://www.ispprotect.com/download/ispp_scan.tar.gz
tar xzf ispp_scan.tar.gz
rm -f ispp_scan.tar.gz
ln -s /usr/local/ispprotect/ispp_scan /usr/local/bin/ispp_scan
要启动 ISPProtect,请运行:
ispp_scan
扫描仪会自动检查更新,然后询问密钥(在此处输入“试用”一词),然后询问网站的路径,通常是 /var/www。
Please enter scan key: <-- trial
Please enter path to scan: <-- /var/www
扫描仪现在将开始扫描。显示扫描进度。扫描结束时,受感染文件的名称显示在屏幕上,结果存储在 ISPProtect 安装目录中的文件中以供以后使用:
要更新 ISPProtect,请运行以下命令:
ispp_scan --update
要将 ISPProtect 作为夜间 cronjob 自动运行,请使用 nano 创建一个 cron 文件:
nano /etc/cron.d/ispprotect
并插入以下行:
0 3 * * * root /usr/local/ispprotect/ispp_scan --update && /usr/local/ispprotect/ispp_scan --path=/var/www --email-results=root@localhost --non-interactive --scan-key=AAA-BBB-CCC-DDD
将“root@localhost”替换为您的电子邮件地址,扫描报告将发送到该地址。然后用您的许可证密钥交换“AAA-BBB-CCC-DDD”。您可以在此处获取许可证密钥。
ISPProtect ispp_scan 命令的命令行选项的完整列表可以通过以下方式获取:
ispp_scan --help