Stalo se vám někdy, že vám hacknuli web? Ať už je vaše odpověď ano či ne, tak je tento článek určen právě vám. Příčin, proč se tak stalo, může být několik. Ve většině případů je chybou, že nedochází k aktualizacím redakčních systémů nebo se útočník mohl dostat do vašeho webu přes nějaký špatně napsaný plugin nebo modul. Přesně na toto téma se chci v tom článku zaměřit. Jak tedy zjistit, jestli na vašem serveru někdo neprovádí něco nekalého?
Vlastní skript?
Řešení může být mnoho, ale já jsem se původně vydal cestou vlastního skriptu, který bude kontrolovat poslední změny souborů a adresářů a každou hodinu mi je v případě změny pošle na email. Tohle řešení se mi zpočátku zamlouvalo, než jsem při hledání různých konfigurací objevil program iWatch.
iWatch
Přes vyhledávače vám bude vyskakovat spousta odkazů na hodinky, ale pokud použijete vhodné fráze, tak určitě dohledáte oficiální web iWatch. :-) Každopádně se jedná o program, který dokáže sledovat změny provedené v souborovém systému a ihned je odesílat na email.
Instalaci provedete např. na Ubuntu příkazem:
# apt install iwatch
sledování pak pomocí jednoduchého příkazu:
# iwatch -m [email protected] /var/www/vasweb.cz/web/wp-includes
To je sice fajn, ale co když chceme sledovat víc adresářů a naopak některé adresáře vynechat? Nejvhodnějším řešením jsou konfigurační soubory.
Konfigurační soubory iWatch
jedná se o klasické XML, přičemž na začátku musíte nastavit cestu dtd (Document Type Definition), která umožňuje iWatch zjistit, zda jste napsali XML korektně. Pokud jste instalovali na Ubuntu nebo podobných distribucích bude mít dtd soubor cestu /etc/iwatch/iwatch.dtd
Konfigurační soubor si vytvořte v domovském adresáři ideálně uživatele root.
# cd # nano iwatch_config.xml
Soubor může vypadat tedy následovně:
<?xml version="1.0" ?> <!DOCTYPE config SYSTEM "/etc/iwatch/iwatch.dtd"> <config> <guard email="[email protected]" name="Web guard" /> <watchlist> <title>vasweb.cz</title> <contactpoint email="[email protected]" name="Webmaster" /> <path type="recursive">/var/www/vasweb.cz/web</path> <path type="exception">/var/www/vasweb.cz/web/cache</path> <path type="exception">/var/www/vasweb.cz/web/stats</path> <path type="exception">/var/www/vasweb.cz/web/temp</path> <path type="exception">/var/www/vasweb.cz/web/administrator/cache</path> </watchlist> </config>
Všimněte si u elementů path atributu type. Hodnota exception znamená, že se provedené změny nebudou z tohoto adresáře hlásit, přestože je adresář podadresářem sledovaného ( /var/www/vasweb.cz/web ). Problém může nastat, když se v těchto adresářích objeví nějaký soubor a v něm škodlivý kód.
iWatch pak spustíme na pozadí s parametrem -d , a díky parametru -f můžeme načíst konfiguraci z připraveného XML souboru.
# iwatch -d -f iwatch_config.xml
V případě, že budete dělat aktualizaci redakčního systému nebo pluginu, tak si iwatch vypněte, ať se vám nezahltí schránka. ;-)
Závěr
Určitě se nejedná o řešení, které vás spasí v každém možném případě, ale mělo by být součástí celkového bezpečnostního mechanismu serveru nebo webu. :-)
Řešíte podobné problémy nějakým jiným způsobem? Podělte se do komentářů ;-)