phpMussel. Jak nainstalovat webový PHP antivirus antimalware

Balíček phpMussel (pMu) je ideální řešení pro prostředí sdíleného hostingu, kde často není možné použít nebo nainstalovat běžná řešení antivirové ochrany. Jedná se o PHP skript určený k detekci trojských koní, virů, malwaru a dalších hrozeb v souborech nahraných do systému, kam je skript připojen, na základě signatur ClamAV a dalších. Doporučený způsob instalace pMu v3 je prostřednictvím nástroje Composer. Pro větší pohodlí můžete nejčastěji potřebné závislosti pMu nainstalovat přes starý hlavní repozitář pMu composer.

Lze individuálně volit, které závislosti budete při své implementaci potřebovat / chtít. Je docela možné, že budete chtít jen určité závislosti a nebudete potřebovat všechny. Abyste mohli s pMu cokoli dělat, budete potřebovat kódovou základnu jádra pMu core, frontend, web, cli, phpmailer.

phpMussel. Linuxové minimum.

apt install curl php-cli php-mbstring git unzip

Klonujeme pMu git

do složky kde zůstane. V návodu instalujeme pMu i composer do vytvořené složky scanner.

mkdir scanner
cd scanner
git clone https://github.com/phpMussel/phpMussel.git
cp phpMussel/vault/config.ini.RenameMe phpMussel/vault/config.ini

Instalace Composer

Stažení Composer(u)

wget -O composer-setup.php https://getcomposer.org/installer

Instalace Composer

php composer-setup.php --install-dir=/usr/local/bin --filename=composerhttps://github.com/phpMussel/phpMussel.git

Závislostí pMu. Composer úložište.

potřebné závislosti lze nainstalovat pomocí úložiště pMu

cd /cesta-kde-je slozka/scanner
composer require phpmussel/phpmussel
./composer.json has been created
Running composer update phpmussel/phpmussel

Loading composer repositories with package information
Updating dependencies
Lock file operations: 8 installs, 0 updates, 0 removals
  - Locking maikuolan/common (v2.7.0)
  - Locking phpmailer/phpmailer (v6.5.3)
  - Locking pMu/cli (v3.1.1)

  - Locking pMu/core (v3.3.0)

  - Locking pMu/frontend (v3.2.1)
  - Locking pMu/phpmailer (v3.1.3)
  - Locking pMu/pMu (v3.3.0)
  - Locking pMu/web (v3.2.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 8 installs, 0 updates, 0 removals
  - Installing phpmailer/phpmailer (v6.5.3): Extracting archive
  - Installing maikuolan/common (v2.7.0): Extracting archive
  - Installing pMu/core (v3.3.0): Extracting archive
  - Installing pMu/web (v3.2.1): Extracting archive
  - Installing pMu/phpmailer (v3.1.3): Extracting archive
  - Installing pMu/frontend (v3.2.1): Extracting archive
  - Installing phpmussel/cli (v3.1.1): Extracting archive
  - Installing phpmussel/phpmussel (v3.3.0)
8 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
8 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Nutné minimum pro fungování phpMussel

composer require phpmussel/core

Volitelná instalace součástí phpMussel

Poskytuje front-endové administrační zařízení pro phpMussel:

composer require phpmussel/frontend

Zajišťuje automatické skenování nahrávání souborů na vaše webové stránky:

composer require phpmussel/web

Poskytuje možnost používat phpMussel jako interaktivní aplikaci v režimu CLI:

composer require phpmussel/cli

Poskytuje most mezi phpMussel a PHPMailer, který umožňuje phpMussel využívat PHPMailer pro dvoufaktorovou autentizaci, e-mailové upozornění na zablokované nahrávání souborů atd:

composer require phpmussel/phpmailer

Aby mohl phpMussel cokoli detekovat, je třeba nainstalovat signatury.

git clone https://github.com/phpMussel/Signatures.git
cp -R Signatures/clamav/* /cesta-kde-je/phpMussel/vault/signatures
cp -R Signatures/misc/* /cesta-kde-je/phpMussel/vault/signatures

Další možnosti jak získat Signatury je použít nástroj SigTool. Ten ale (SigTool) zpracovává pouze podpisy z ClamAV. Chcete-li získat signatury z jiných zdrojů, například napsané speciálně pro phpMussel, které obsahují signatury potřebné pro detekci testovacích vzorků phpMussel, bude třeba tuto metodu doplnit některou z na webu github phpMussel uvedených metod. Plus viz phpMussel/Signatures nebo phpMussel/Examples pro instalaci ručně. Kdesi padla zmínka o tom, že pasáž o SigTool a ruční instalaci je v manuálu jen z důvodu licencování ClamAV.

Úprava konfigurace

Nic nemazat :)

nano vault/config.ini

Vypneme odstranění infikovaného souboru

; Unset variables and cache used by the script after scanning uploads? False =
; No; True = Yes [Default]. If you *aren't* using the script for anything other
; than scanning uploads, you should set this to true to minimise memory usage.
; Otherwise, you should set it to false, in order to retain in memory the data
; necessary to execute phpMussel without needlessly reloading it. Has no
; influence in CLI mode.
cleanup=false

Umažeme php* (nebo to co budeme skenovat)

; Blacklist:
filetype_blacklist='386,acc*,acm,act*,apk,app,ash*,asm*,asx*,ax,bat,bin,ccc,cgi,cmd,com*,cpl,cpp,csh,dll,drv,elf,exe,fxp,gad*,hta*,htp*,ico,inf,ins,inx,ipa,isu,jo ..

Nastavíme otisky které chceme použít pro skener

[signatures]
; Configuration for signatures, signature files, etc.

; A list of the active signature files, delimited by commas. Note: Signature
; files must firstly be installed, before you can activate them. For the test
; files to work correctly, the signature files must be installed and activated.
; Note: Signature files must first be installed, before you can activate them.
Active='phpmussel.cedb, clamav.db, clamav.hdb, clamav.htdb, clamav_regex.htdb'

Předpokládá se, že signatury jsou nakopírované ve složce /phpMussel/vault/signatures/

Signatury která je která, popis podpisových souborů v adresáři

popiska dekomprimovaných signatur ve složce phpMussel/vault/readme.md . Na skenování PHP souborů na webovém serveru používáme první tři.

SouborPopis
clamav.cedbClamAV complex extended signatures. Obsahuje signatury upravené z některých dřívějších, nyní již zastaralých signatur metadat archivu ClamAV, jakož i signatury upravené z databáze kontejnerů ClamAV, aby bylo možné pracovat s některými rozšířenými metadaty generovanými phpMussel. Obecně se doporučuje pro většinu nastavení phpMussel a má velmi nízké riziko falešných pozitivních nálezů (ale také neobsahuje mnoho signatur a pravděpodobně jich nezachytí příliš mnoho).
clamav.dbClamAV standard signatures. Podpisy v tomto podpisovém souboru pracují přímo s obsahem souboru (tj. s nulovým nebo omezeným předzpracováním). Pokrývá širokou škálu formátů. Má relativně nízké až průměrné riziko falešně pozitivních výsledků, ale také obsahuje velmi velké množství signatur, které nejsou filtrovány podle kontextu (např. typu skenovaného souboru, jeho velikosti, přípony, magického čísla atd.) Vzhledem k velkému počtu nefiltrovaných signatur by někdy mohlo dojít k výraznému snížení výkonu při skenování velkých souborů.

Pokud vaše nastavení phpMussel nebo zařízení pro odesílání dat na vašem webu musí pravidelně zpracovávat velké soubory a pokud je výpočetní kapacita vašeho počítače omezená (např. málo dostupné paměti RAM, nastavení s jedním vláknem nebo jedním procesem, používání sdíleného hostingu se specifickým omezením paměti atd), pak byste se měli ve většině případů tomuto konkrétnímu souboru signatur vyhnout. V opačném případě, pokud je kapacita vašeho serveru pro zpracování dat dobrá nebo pokud vaše nastavení phpMussel nebo zařízení pro odesílání dat na vašich webových stránkách obecně potřebuje zpracovávat pouze malé soubory, by bylo vhodné jej doporučit.
clamav_regex.dbClamAV standard regex signatures. Stejné jako v předchozím případě s tím rozdílem, že podpisy v tomto podpisovém souboru mohou obsahovat regulární výrazy (zatímco podpisy v předchozím případě nikoli).
clamav.fdbClamAV filename signatures. Podpisy v tomto signaturním souboru se týkají výhradně a konkrétně názvů skenovaných souborů (např. názvů nahraných souborů podle údajů poskytnutých klientem, který se pokouší o nahrání). Pravděpodobně toho nezachytí příliš mnoho, ale paměťová stopa a náklady na výkon jsou extrémně malé, má velmi nízké riziko falešně pozitivních výsledků a potenciálně by mohl snížit paměťovou stopu ostatních signaturních souborů, když něco zachytí, protože v některých případech není nutné zachycené soubory dále skenovat. Obecně se doporučuje pro většinu nastavení phpMussel.
clamav.hdbClamAV hash signatures. Kdykoli je soubor skenován nástrojem phpMussel, je pro něj vygenerován hash a poté je porovnán s hash signaturami, aby se porovnal s případnými konkrétními, již známými škodlivými soubory. Téměř zcela nepoužitelné proti modernějším, polymorfním virům a malwaru, ale relativně užitečné proti starším, nepolymorfním virům a malwaru. Paměťová stopa a výkonnostní náklady jsou relativně malé a riziko falešně pozitivních výsledků je velmi nízké. Obecně se doporučuje pro většinu nastavení phpMussel.
clamav.htdbClamAV HTML signatures. Podpisy v tomto podpisovém souboru pracují s normovaným obsahem souboru HTML. Pokud existuje možnost, že by na vaše webové stránky mohl být nahrán obsah HTML nebo že by vaše nastavení phpMussel mohlo být použito ke skenování obsahu HTML, pak byste ve většině případů měli použít tento podpisový soubor. Pokud však ne, nebude pro vás s největší pravděpodobností nijak zvlášť užitečný a měli byste jej ignorovat.
clamav_regex.htdbClamAV HTML regex signatures. Stejné jako v předchozím případě s tím rozdílem, že podpisy v tomto podpisovém souboru mohou obsahovat regulární výrazy (zatímco podpisy v předchozím případě nikoli).
clamav.mdbClamAV PE sectional signatures. Podpisy v tomto podpisovém souboru pracují s hashi, které generuje phpMussel při skenování souborů PE (tj. „přenosných spustitelných“ souborů systému Windows) a které představují různé části uvnitř těchto souborů PE. Pokud existuje možnost, že by vaše nastavení phpMussel mohlo být použito ke skenování PE souborů, pak byste ve většině případů měli použít tento podpisový soubor.

Pokud však ne, nebude pro vás s největší pravděpodobností nijak zvlášť užitečný a měl by být ignorován. (Samozřejmě obecně bych nedoporučoval povolovat nahrávání PE souborů na vaše webové stránky v každém případě, a to z důvodu výrazně vyššího rizikového faktoru spojeného s tímto typem souborů, bez ohledu na použitá bezpečnostní opatření a ochranu).
clamav.ndbClamAV normalised signatures. Podpisy v tomto podpisovém souboru pracují s obsahem souboru normalizovaným podle ANSI (v kontextu phpMussel znamená „normalizovaný podle ANSI“ psaný malými písmeny a s odstraněnými všemi znaky mimo ANSI a všemi znaky mimo 21-7e). Pokrývá širokou škálu formátů. Má relativně nízké až průměrné riziko falešně pozitivních výsledků, ale také obsahuje velmi velké množství signatur, které nejsou filtrovány podle kontextu (např. typu skenovaného souboru, jeho velikosti, přípony, magického čísla atd.) Vzhledem k velkému počtu nefiltrovaných signatur by někdy mohlo dojít k výraznému snížení výkonu při skenování velkých souborů.

Pokud vaše nastavení phpMussel nebo zařízení pro odesílání dat na vašem webu musí pravidelně zpracovávat velké soubory a pokud je výpočetní kapacita vašeho počítače omezená (např. málo dostupné paměti RAM, nastavení s jedním vláknem nebo jedním procesem, používání sdíleného hostingu se specifickým omezením paměti atd), pak byste se měli ve většině případů tomuto konkrétnímu souboru signatur vyhnout. V opačném případě, pokud je kapacita vašeho serveru pro zpracování dat dobrá nebo pokud vaše nastavení phpMussel nebo zařízení pro odesílání dat na vašich webových stránkách obecně potřebuje zpracovávat pouze malé soubory, by bylo vhodné jej doporučit.
clamav_regex.ndbClamAV normalised regex signatures. Stejné jako v předchozím případě s tím rozdílem, že podpisy v tomto podpisovém souboru mohou obsahovat regulární výrazy (zatímco podpisy v předchozím případě nikoli).
clamav_elf.dbClamAV ELF signatures. Podpisy v tomto podpisovém souboru pracují výhradně a specificky se spustitelnými soubory systému Linux (nebo soubory ELF). Pokud existuje možnost, že by vaše nastavení phpMussel mohlo být použito ke skenování souborů ELF, pak byste ve většině případů měli použít tento podpisový soubor. Pokud však ne, nebude pro vás s největší pravděpodobností nijak zvlášť užitečný a měli byste jej ignorovat.
clamav_elf_regex.dbClamAV ELF regex signatures. Stejné jako v předchozím případě s tím rozdílem, že podpisy v tomto podpisovém souboru mohou obsahovat regulární výrazy (zatímco podpisy v předchozím případě nikoli).
clamav_email.dbClamAV email signatures. Podpisy v tomto podpisovém souboru pracují výhradně a specificky s uloženými e-mailovými soubory. Pokud existuje možnost, že by vaše nastavení phpMussel mohlo být použito ke skenování uložených e-mailových souborů, pak byste ve většině případů měli použít tento podpisový soubor. Pokud však ne, nebude pro vás s největší pravděpodobností nijak zvlášť užitečný a měli byste jej ignorovat.
clamav_email_regex.dbClamAV email regex signatures. Stejné jako v předchozím případě s tím rozdílem, že podpisy v tomto podpisovém souboru mohou obsahovat regulární výrazy (zatímco podpisy v předchozím případě nikoli).
clamav_exe.dbClamAV PE signatures. Podpisy v tomto podpisovém souboru pracují výhradně a specificky s přenosnými spustitelnými soubory (nebo soubory PE; např. soubory EXE systému Windows, DLL atd.). Pokud existuje možnost, že by vaše nastavení phpMussel mohlo být použito ke skenování PE souborů, pak byste ve většině případů měli použít tento podpisový soubor. Pokud však ne, nebude pro vás s největší pravděpodobností nijak zvlášť užitečný a měl by být ignorován.

Samozřejmě obecně bych nedoporučoval povolovat nahrávání PE souborů na vaše webové stránky v každém případě, a to z důvodu výrazně vyššího rizikového faktoru spojeného s tímto typem souborů, bez ohledu na použitá bezpečnostní opatření a ochranu). Vezměte prosím na vědomí, že tento signaturní soubor obsahuje velmi velké množství signatur a při pokusu o skenování PE souborů se zcela jistě projeví nároky na výkon (tyto nároky na výkon se nevztahují na jiné operace nebo jiné typy souborů).
clamav_exe_regex.dbClamAV PE regex signatures. Stejné jako v předchozím případě s tím rozdílem, že podpisy v tomto podpisovém souboru mohou obsahovat regulární výrazy (zatímco podpisy v předchozím případě nikoli).
clamav_graphics.dbClamAV graphics signatures. Podpisy v tomto podpisovém souboru pracují se soubory různých grafických formátů. Pokud existuje možnost, že by vaše nastavení phpMussel mohlo být použito ke skenování obrázků nebo jiného typu grafického souboru, pak byste ve většině případů měli použít tento podpisový soubor. Pokud tomu tak však není, nebude pro vás s největší pravděpodobností nijak zvlášť užitečný a měli byste jej ignorovat.
clamav_graphics_regex.dbClamAV graphics regex signatures. Stejné jako v předchozím případě s tím rozdílem, že podpisy v tomto podpisovém souboru mohou obsahovat regulární výrazy (zatímco podpisy v předchozím případě nikoli).
clamav_java.dbClamAV Java signatures. Podpisy v tomto podpisovém souboru pracují výhradně a specificky se soubory Java. Pro objasnění, pro ty, kteří si to neuvědomují (a aby nedošlo k nedorozumění): Tento podpisový soubor nemá nic společného s JavaScriptem; Java a JavaScript jsou dvě zcela odlišné věci. Pokud existuje nějaká možnost, že by vaše nastavení phpMussel mohlo být použito ke skenování souborů Java, pak byste ve většině případů měli použít tento podpisový soubor. Pokud však ne, nebude pro vás s největší pravděpodobností nijak zvlášť užitečný a měl by být ignorován.
clamav_java_regex.dbClamAV Java regex signatures. Stejné jako v předchozím případě s tím rozdílem, že podpisy v tomto podpisovém souboru mohou obsahovat regulární výrazy (zatímco podpisy v předchozím případě nikoli).
clamav_macho.dbClamAV Mach-O signatures. Podpisy v tomto podpisovém souboru pracují výhradně a specificky se soubory Mach-O. Pokud existuje možnost, že by vaše nastavení phpMussel mohlo být použito ke skenování souborů Mach-O, pak byste ve většině případů měli použít tento podpisový soubor. Pokud však ne, nebude pro vás s největší pravděpodobností nijak zvlášť užitečný a měli byste ho ignorovat.
clamav_macho_regex.dbClamAV Mach-O regex signatures. Stejné jako v předchozím případě s tím rozdílem, že podpisy v tomto podpisovém souboru mohou obsahovat regulární výrazy (zatímco podpisy v předchozím případě nikoli).
clamav_ole.dbClamAV OLE signatures. Kdykoli phpMussel skenuje soubor, pokusí se zjistit všechny objekty OLE obsažené v souboru. S těmito objekty OLE pracují podpisy v tomto podpisovém souboru. Dokumenty Microsoft Word jsou dobrým příkladem souborů, které mohou někdy obsahovat objekty OLE (existuje však mnoho dalších typů souborů, které mohou také obsahovat objekty OLE). Pokud existuje možnost, že by vaše nastavení phpMussel mohlo být použito ke skenování souborů, které mohou obsahovat objekty OLE, pak byste ve většině případů měli použít tento podpisový soubor.

Pokud však ne, nebude pro vás s největší pravděpodobností nijak zvlášť užitečný a měli byste jej ignorovat. Je však třeba poznamenat, že schopnost phpMusselu detekovat objekty OLE ještě není zcela dokonalá, a proto se může v mnoha případech stát, že phpMussel nedokáže detekovat objekty OLE obsažené v některých typech souborů nebo v souborech vytvořených určitým způsobem (do budoucna se však plánuje zlepšení schopnosti phpMusselu detekovat objekty OLE).
clamav_ole_regex.dbClamAV OLE regex signatures. Stejné jako v předchozím případě s tím rozdílem, že podpisy v tomto podpisovém souboru mohou obsahovat regulární výrazy (zatímco podpisy v předchozím případě nikoli).
clamav_pdf.dbClamAV PDF signatures. Podpisy v tomto podpisovém souboru pracují výhradně a specificky se soubory PDF. Pokud existuje možnost, že by vaše nastavení phpMussel mohlo být použito ke skenování souborů PDF, pak byste ve většině případů měli použít tento podpisový soubor. Pokud však ne, nebude pro vás s největší pravděpodobností nijak zvlášť užitečný a měli byste jej ignorovat.
clamav_pdf_regex.dbClamAV PDF regex signatures. Stejné jako v předchozím případě s tím rozdílem, že podpisy v tomto podpisovém souboru mohou obsahovat regulární výrazy (zatímco podpisy v předchozím případě nikoli).
clamav_swf.dbClamAV SWF signatures. Podpisy v tomto podpisovém souboru fungují výhradně a konkrétně se soubory SWF (tj. soubory Shockwave/Flash). Pokud existuje možnost, že by vaše nastavení phpMussel mohlo být použito ke skenování souborů SWF, pak byste ve většině případů měli použít tento podpisový soubor. Pokud však ne, nebude pro vás s největší pravděpodobností nijak zvlášť užitečný a měli byste jej ignorovat.
clamav_swf_regex.dbClamAV SWF regex signatures. Stejné jako v předchozím případě s tím rozdílem, že podpisy v tomto podpisovém souboru mohou obsahovat regulární výrazy (zatímco podpisy v předchozím případě nikoli).

Skenujeme webové stránky

Skenovat můžeme celý adresář serveru, jeden adresář, adresář pluginu Wordpress, nebo jeden soubor. Skenování spustíme pomocí loader.php

user@simple:~/scanner/php-mussel# php loader.php

následně do terminálu zadáme příkaz + cestu (k serveru, složce, souboru) v příkladu skenujeme celý adresář

scan /var/www/dev.user.cz/web469/

vše funguje, sken je spuštěn..

..    _____   _        _ ______ ______ _         _ _______  _______  _______
.     |_____] |_____| |_____] |     |    | |     .   | |______   |______  |______  |    .
      |           |         | |           |     |    | |_____|  ______|   ______|  |______  |_____

Thank you for using phpMussel, a PHP script designed to detect trojans,
viruses, malware, and other threats within files uploaded to your system
wherever the script is hooked, based on the signatures of ClamAV and
others.
                                                               ~ ~ ~
PHPMUSSEL COPYRIGHT 2013 and beyond GNU/GPLv2 by Caleb M (Maikuolan).
                                                               ~ ~ ~

Currently running phpMussel in CLI mode (command line interface). To scan
a file or directory, type "scan", followed by the name of the file or
directory that you want phpMussel to scan and press Enter; Type "c" and
press Enter for a list of CLI mode commands; Type "q" and press Enter to
quit.

>> scan /var/www/dev.user.cz/web469/

Mon, 07 Feb 2022 18:01:32 +0100 Started.
> Checking 'wp-signup.php' (FN: 06a8b477):
-> No problems found.
> Checking 'wp-cron.php' (FN: 2a6724c7):
-> No problems found.
> Checking 'index.php' (FN: d4f7ec07):
-> No problems found.

-> Checking '/405.html' (FN: 01de818b; FD: cde5223a):
--> No problems found.
-> Checking '/500.html' (FN: 9db910a6; FD: 7b6a0b63):
--> No problems found.
-> Checking '/401.html' (FN: 9a4fc39d; FD: 534c0349):

-> No problems found.
> Checking 'error/401.html' (FN: 86caae4f; FD: 534c0349):
-> No problems found.
> Checking 'wp-activate.php' (FN: 4eb2c4be):
-> No problems found.
> Checking 'wp-load.php' (FN: 85f4b2b4):
-> No problems found.

--> No problems found.
-> Checking '/index.php' (FN: 6f22c882):
--> No problems found.

..

Nedostatek paměti a následná chyba alokace ničemu nevadí

4% Complete.PHP Fatal error:  Allowed memory size of 268435456 bytes exhausted (tried to allocate 339968 bytes) in /scanner/php-mussel/vault/functions.php on line 3121

Skener přepne na nižší rychlost a pokračuje v skenování. V případě, že nechcete čekat na konec skenu v nedohlednu, nastavte si blacklist. Nebo skenujte pouze kritické části webu.

Log skenování

rozlišuje dvě základní výrazy No problem found nebo Detected. Standardní log

/phpMussel/vault/scan_log.txt

nebo serializovaný

/phpMussel/vault/scan_log_serialized.txt

Vizualizace

phpMussel zdroják
phpMussel zdroják

Užitečné

Text PHP 8.1.7 changelog
Manuál phpMussel github.

V online návodu (manuálu) jsou popsány signatury + ve složce Examples která je ke stažení je soubor signatur které stačí stáhnout a nakopírovat do složky vault/signatures a pak je jmenovitě zapsat do configurace. GIT source Examples obsahuje i připravené hooky pro nahození permanetního skenování či vykonávání bezpečnostních opatření nastavených v konfiguraci. Kód pro hook se vkláda do webové stránky jako PHP volání.

Článek popisuje pouze jednu (z několika možnosti, forem – či jejich kombinací) použití zabezpečení ši čištění webových stránek.

ICTIS.CZ