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:
- 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.
- 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ó.
- Á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.
- 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?).
- Cserélje le az összes jelszót: a CMS adminisztrátorait, az adatbázisét, az FTP/SFTP és SSH fiókokét.
- 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.