Set up malware scanner LMD Maldet and ClamAV on a RunCloud instance

How to set up a malware scanner with LMD Maldet and ClamAV on a RunCloud server instance.

One of the popular and open source malware scanners is an app called Linux Malware Detect and works well scanning any Linux web server, it keeps a daily updated database of known malware exploits from an updated registry of which it scans against.

The Linux Malware Detect tool can also integrate with Clam AV Scanner which can speed up file scanning.

How to install Linux Malware Detect

SSH into your server as the root user and cd to /root

wget http://www.rfxn.com/downloads/maldetect-current.tar.gz

Extract It

tar -xvf maldetect-current.tar.gz

Remove the Archive

rm maldetect-current.tar.gz

Move in and Run the Installer

cd maldetect-1.6.4/
./install.sh

… this will download the latest hash registry databases, the installation adds maldetect to /usr/local/ …. now to configure

Configure Linux Malware Detect

Using nano…

nano /usr/local/maldetect/conf.maldet

Set up Email Alerts

# [ EMAIL ALERTS ]

##
# The default email alert toggle

# [0 = disabled, 1 = enabled]

email_alert=0



# The subject line for email 
alerts
email_subj="maldet alert from $(hostname)"



# The destination addresses for email alerts

# [ values are comma (,) spaced ]

email_addr="[email protected]"

For the email alert swap the email_alert toggle to 1, adjust the subject line email_subj if desired, add in your email address email_addr.

In order for email alerts to work you will need the postfix app on the server configured to send outgoing emails.

Manual Malware Scans On RunCloud Webapps

You can run a manual scan for a user account on a specific webapp or on all webapps :

maldet -a /home/runcloud/webapps/<webapp_name>/

Or all webapps belonging to the same user,  using a wildcard – ?:

maldet -a /home/runcloud/webapps/?/

Or on all users and webapps using multiple wildcards

maldet -a /home/?/webapps/?/

Automatic Daily Malware Scans

When installed LMD (Linux Malware Detect) adds a cron job to the daily folder:

/etc/cron.daily/maldet

This cron job will update the malware registry it initially downloaded including any new malware threats and also scan all updated and modified files in home directories on the server. If anything is found you will get an email about it telling you the path to the offending file.

The cron has a number of webroot paths for popular control panels but RunClouds does not fit in with one of the existing paths so you need to add it into the cron file script, open the cron file

nano /etc/cron.daily/maldet

Find the else statement below and add in the webroot path /home/?/webapps/?/ in…

 
	
else		
# cpanel, interworx and other standard home/user/public_html setups
	        $inspath/maldet -b -r /home?/?/public_html/,/var/www/html/,/usr/local/apache/htdocs/,/home/?/webapps/?/ $scan_days >> /dev/null 2>&1	
fi

If you rather the maldet scan run weekly instead move the maldet cron into cron.weekly directory instead:

mv /etc/cron.daily/maldet /etc/cron.weekly/

Dealing With Malware Files

Once (…if) you get a file hit on malware you can access your webserver and open the file and clean the malware code out. Then progress to how it got in in the first place – software patching, updating passwords etc

You can also opt to have LMD quarantine any file it finds – this is done back in the config file conf.maldet under the Email Alert section:

# [ QUARANTINE OPTIONS ]

##
# The default quarantine action for malware hits

# [0 = alert only, 1 = move to quarantine & alert]

quar_hits=0



# Try to clean string based malware injections

# [NOTE: quar_hits=1 required]

# [0 = disabled, 1 = clean]

quar_clean=1

The default is just to alert, but you can opt to remove the file from the filing system and have LMD also try and remove the malware code – then you just need to inspect and restore the file.

Maldet Log

You can check all maldet activity with the log command which will show you any latest scans and maldet updates, run it…

maldet --log

For a scan report, you can email it, in the log it appears as…

{scan} scan report saved, to view run: maldet --report 200618-0628.16436

Email it…

maldet --report 200618-0628.16436 [email protected]

Further Options

Check further usage with:

maldet --help

or official documentation

Adding ClamAV

You can use the ClamAV as the scanner engine which speeds up the scanning process a lot (almost double) but it will consume the cpu and memory resources whilst running but this reduces over days as less files are scanned if not modified.

I would recommend not using it on a busy server with less than 2GB of ram, each case may be different, you can always try and see the results with a top command while and if too much resources you can remove it.

ClamAV installs both a binary and a daemon, as LMD uses the clamscan binary but not the daemon you can remove the daemon.

Setting up Clam AV

apt-get install clamav clamav-daemon

This will install ClamAV and put it here…

/usr/bin/clamscan

The above directory is where LMD will look for the Clamscan binary and use it when it scans the file system

If performance is still affected on the server (as suggested in the comments) you can try removing the ClamAV daemon which is more used for email instant on scanning and loads a bunch of malware registry signatures into RAM.

Remove Clamscan Daemon

systemctl disable clamav-daemon.service

systemctl stop clamav-daemon.service

Test Malware Files

You can test that LMD is working properly and that email reports are being sent on file hits with some test malware files which are not malware but will show in a scan, download and use files below to test in a directory that you scan:

wget http://www.eicar.org/download/eicar.com 
wget http://www.eicar.org/download/eicar.com.txt 
wget http://www.eicar.org/download/eicar_com.zip 
wget http://www.eicar.org/download/eicarcom2.zip

Using LMD as a monitoring app

LMD also allows for it to be a monitoring daemon application that can watch files in real time for modification and location changes.

You need to set either home user dirs, paths or files as a source to be monitored.

You need to install an additional app called inotify tools, in Ubuntu the command is:

apt install inotify-tools

If you decide later to remove use:

apt-get remove --auto-remove inotify-tools 

I typically do not use monitoring mode, but if you would like to find out more about it then check the reference links below plus the regular maldet docs and conf files.

Uninstall LMD and ClamAV

To Completely Remove LMD and Clam AV

If you want to remove these apps…

To remove ClamAV

apt-get remove clamav

To Remove Maldet LMD – run the uninstall script…

/usr/local/maldetect/uninstall.sh

More info on LMD

References

  • https://www.theurbanpenguin.com/linux-malware-detection-with-maldet/
  • https://www.woktron.com/secure/knowledgebase/145/Installation-Linux-Malware-Detect-Maldet-On-CentOS.html