Kártevő keresése a szerveren ClamAV és Maldet segítségével

Ha egy weboldal váratlanul átirányít, spam leveleket küld, ismeretlen fájlok jelennek meg rajta, vagy a böngésző figyelmeztet, hogy veszélyes, valószínűleg feltörték. A szerveren a fertőzött fájlok megkeresésére két ingyenes eszközt javaslunk:

  • ClamAV: általános, nyílt forráskódú vírusirtó, sokféle kártevőt felismer;
  • Linux Malware Detect (Maldet): kifejezetten a tárhelyszervereken jellemző PHP kártevőkre (webshellekre, befecskendezett kódokra) specializálódott, és a ClamAV-t is fel tudja használni a vizsgálathoz.

Ez a cikk saját VPS-t vagy dedikált szervert üzemeltetőknek szól. Megosztott tárhelyen nem telepíthet ilyen programokat; ha ott gyanít fertőzést, írjon ügyfélszolgálatunknak.

ClamAV

Telepítés

AlmaLinux, Rocky Linux (az EPEL tárolóból):

sudo dnf install epel-release
sudo dnf install clamav clamav-update

Ubuntu, Debian:

sudo apt install clamav clamav-freshclam

A vírusadatbázis frissítése

sudo freshclam

Ubuntun és Debianon a clamav-freshclam szolgáltatás a háttérben automatikusan frissít; ha a freshclam parancs szerint a naplófájl zárolva van, a szolgáltatás éppen fut, és nincs teendője. AlmaLinuxon az automatikus frissítést a sudo systemctl enable --now clamav-freshclam paranccsal kapcsolhatja be.

Vizsgálat

sudo clamscan -r -i /var/www
  • -r: az alkönyvtárakat is átvizsgálja,
  • -i: csak a fertőzött fájlokat írja ki.

A végén megjelenő összesítő Infected files sora mutatja a találatok számát. A --log=/root/clamscan.log kapcsolóval az eredményt fájlba is mentheti. A ClamAV a vizsgálathoz sok memóriát (1-2 GB) használ, kisebb VPS-en ezt vegye figyelembe.

Linux Malware Detect (Maldet)

Telepítés

A Maldet nem érhető el a csomagtárolókban, a fejlesztő (R-fx Networks) oldaláról kell letölteni:

cd /usr/local/src
sudo wget https://www.rfxn.com/downloads/maldetect-current.tar.gz
sudo tar -xzf maldetect-current.tar.gz
cd maldetect-*/
sudo ./install.sh

A telepítő naponta futó ellenőrzést és automatikus aláírás-frissítést is beállít. A beállítások a /usr/local/maldetect/conf.maldet fájlban vannak.

Ha a ClamAV is telepítve van, a Maldet azt használja a vizsgálathoz, ami gyorsabb és több kártevőt ismer fel. Ezt a conf.maldet fájlban a scan_clamscan="1" sor jelzi.

Vizsgálat

# Az aláírások frissítése
sudo maldet -u

# Egy könyvtár átvizsgálása
sudo maldet -a /var/www

# Csak az utóbbi 7 napban módosult fájlok vizsgálata (gyorsabb)
sudo maldet -r /var/www 7

A vizsgálat végén a Maldet kiírja a vizsgálat azonosítóját (SCANID). Az eredmény:

# A vizsgálatok listája
sudo maldet --report list

# Egy vizsgálat részletes jelentése
sudo maldet --report SCANID

A talált fájlok karanténba helyezése (a fájlok ekkor a /usr/local/maldetect/quarantine könyvtárba kerülnek, és a weboldal nem éri el őket):

sudo maldet -q SCANID

Ha egy fájl tévesen került karanténba, a sudo maldet -s /usr/local/maldetect/quarantine/<fájlnév> paranccsal állíthatja vissza.

Mi a teendő, ha fertőzést talál?

A fertőzött fájlok törlése önmagában nem elég: ha a támadó által kihasznált hiba megmarad, a weboldalt rövidesen újra feltörik. Javasolt lépések:

  1. Mentse el a jelenlegi állapotot (a fertőzött fájlokkal együtt) a kivizsgáláshoz, egy, a weboldal könyvtárán kívüli helyre.
  2. Keresse meg a behatolás módját. A webszerver hozzáférési naplójában (lásd: Naplófájlok olvasása Linuxon) keresse a talált fájlokra irányuló kéréseket és az első megjelenésük idejét. Gyakori ok egy elavult bővítmény, sablon vagy CMS verzió, illetve egy kiszivárgott jelszó.
  3. Állítsa vissza a weboldalt egy tiszta mentésből, ha van a fertőzés előtti mentése; ez megbízhatóbb, mint a fertőzött fájlok egyenkénti javítása.
  4. Frissítsen mindent: a CMS-t, a bővítményeket és a sablonokat, valamint a szerver csomagjait (lásd: Rendszerfrissítés dnf és apt használatával). Távolítsa el a nem használt bővítményeket és a feltört (nulled) sablonokat (lásd: Miért nem érdemes feltört (nulled) WordPress sablonokat és bővítményeket használni?).
  5. Cserélje le az összes jelszót: a CMS adminisztrátorait, az adatbázisét, az FTP/SFTP és SSH fiókokét.
  6. Ellenőrizze a szervert is: ismeretlen felhasználók (/etc/passwd), SSH kulcsok (~/.ssh/authorized_keys), cron feladatok (crontab -l, /etc/cron.d/) és futó folyamatok (ps aux). Ha a támadó root jogot szerzett, a szerver újratelepítése a biztonságos megoldás.

WordPress oldalak védelméről az Alapvető WordPress biztonsági beállítások feltörés ellen cikkben olvashat.