Bezpečnost webu

Otestujte si tento web tady: https://securityheaders.com/

Bezpečnost webu – konzultace zdarma

Hodně majitelů www stránek často neakceptuje fakt, že je třeba se o svůj web starat

Pokud podceníte bezpečnost, může se vám to hodně vymstít. Začít hledat pomoc až máte hacknutý web je často pozdě. Základem je prevence.

V tomto článku se budu věnovat především WordPressu a Prestě, ale týká se to vlastně všech webů.

Na WordPressu i Prestě se velmi často objevují bezpečnostní chyby, bohužel to ale není hlavní problém hacknutí webu, jak už to tak bývá, ten relevantní problém je mezi monitorem a židlí. Postupně proberu vše co mne napadne z pohledu bezpečnosti, pokud, podle vás, na něco zapomenu, připište to, prosím, do komentářů.

1.HTTPS

Dnes je to módní, hodně se o tom mluví, ale https není primárně o zabezpečení webu,  je to zabezpečení komunikace mezi serverem a browserem (prohlížečem). Především to řeší bezpečnost uživatelů vašich stránek, obtížnější špehování, jaká hesla zadávají, je také těžší jim podsunout nějaký závadný obsah. Ani https není 100%, ale zatím je to to nejlepší, co bylo vymyšleno.

2.Hosting

Kvalitní hosting je základ, dnes se dá koupit kvalita za rozumné peníze. Aspoň základní předpoklady:

  • SSL certifikát
  • administrace zašifrovaná https protokolem
  • garance 99,9% dostupnosti
  • denní záloha všech souborů a databáze s měsíční zpětnou dostupností
  • kvalitní podpora

3.Zašifrované připojení k FTP

Já využívám pro přenos souborů FTP klienta FileZilla umožňujícího SSL šifrování komunikace. Proč šifrovat? Při běžném připojování pomocí protokolu FTP jsou přihlašovací údaje (tedy jméno a heslo) přenášeny v obyčejné textové podobě a je relativně snadné je odchytit. Pokud se tak stane, máte zaděláno na velký problém.

4.WordPress – bezpečnostní klíče

Určitě jim věnujte pozornost, je to další vrstva zabezpečení, níže skvělý článek, který vám vše potřebné řekne, takže se podrobněji rozepisovat nebudu, snad jen základní info. WordPress spravuje přihlašovací relace tak, že ukládá informace do cookies, nedělá to tedy přes PHP relace. Tyto soubory cookie jsou zabezpečeny pomocí HASHe složeného z uživatelského jména, hesla a “dlouhého  náhodného řetězce”. Tyto řetězce se nazývají bezpečnostní klíče a jsou obsaženy v souboru wp-config.php.

WordPress spravuje přihlašovací relace tak, že ukládá informace do cookies namísto toho, aby použil PHP relace. Tyto soubory cookie jsou zabezpečeny pomocí speciálního HASHe složeného z uživatelského jména, hesla a “dlouhého  náhodného řetězce”. Tyto “dlouhé náhodné řetězce” použité pro výpočet cookie HASHe se nazývají bezpečnostní klíče a jsou obsaženy ve wp-config.php. Po nové instalaci WordPressu vypadají bezpečnostní klíče takto:

define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');

Bezpečnostní klíče hrají velkou roli v bezpečnosti stránky. Bez nich by pro kohokoliv bylo relativně jednoduché se dostat do administrace WordPressu. Proto se doporučuje tyto výchozí klíče po instalaci nahradit náhodně generovanými. Bezpečnostní klíče by měly být dlouhé a bez možnosti uhádnutí.

Více zde: https://www.wplama.cz/jak-nastavit-bezpecnostni-klice-wordpressu-a-k-cemu-slouzi/

5. Změna “table prefix”

Co to je table prefix? Je to vlastně označení tabulek v databázi. Pokud necháte defaultní, usnadňujete hackerům práci. Pokud už máte web nainstalovaný, změna je také možná, ale je to trošku složitější. Je také možné využít modul iThemes Security, který to umí.

Více zde: https://www.wplama.cz/komplexni-zabezpeceni-wordpressu-pomoci-ithemes-security/

6. Na slovo admin zapomeňte

Admin můžete nechat jako nick, ale jako přihlašovací jméno použijte něco jiného. Pokud necháte login do administrace jako admin, opět usnadňujte hackerům práci. Login může být i relativně složité slovo, jde o to, abyste si ho pamatovali.

7. Zvolte si silné heslo

Co je silné heslo? https://cs.wikipedia.org/wiki/Bezpečné_heslo

Určitě si nedávejte hesla stejná pro přihlášení do administrace webu a třeba do e-mailu, na jedné přednášce, tuším že to bylo u Michala Kubíčka, jsem slyšel příběh o klientovi, kterému hacknuli WordPress a zjistili e-mail a heslo, které pak sedělo i na jeho Gmail, co se dále stalo netřeba zdůrazňovat.

S heslem je to problém, já sám jich využívat několik desítek a pamatovat si je všechny prostě nejde. Proto používám specializované nástroje, v mém případě LastPass, který je z části v češtině a je zdarma. Můžete použít i generátor hesel, např: https://www.generator-hesel.cz/

8. Přejmenujte “wp-login.php – adminxxxx”

Je to jednoduché pomocí pluginu Rename wp-login.php. Pokud přejmenujete wp-login.php na např. ?prihlasenidnes20, je pro hackery obtížnější se do administrace dostat. Použití pluginu je velmi jednoduché. Po instalaci vám v sekci Nastavení … Trvalé odkazy… přibude políčko, kde si url na přihlášení jednoduše vyplníte.

9. Aktualizujte

Nejen WordPress, kde při aktualizaci se cca z 80% řeší bezpečnost, ale i pluginy a šablony. Ty které nepoužíváte vymažte. Já používám jednu hlavní šablonu, jednu mám záložní a zbytek mažu. Stejně tak pluginy, nestačí je jen zakázat…

https://www.lupa.cz/clanky/velka-cast-ceskych-stranek-na-wordpressu-ma-vazne-bezpecnostni-chyby/

10. Používejte bezpečnostní pluginy

Doporučuji iThemes Security. Tento plugin je skvělý v tom, že spoustu věcí dělá za vás a často stačí jenom kliknutí a web je o něco bezpečnější. Co, mimo jiné, umí?

  • Limitujte přihlašování počtem nezdařených pokusů, čímž eliminuje útok hrubou silou
  • Nastaví rozdílné přihlašovací stránky
  • Změní administrátorského jméno a jeho ID
  • Skenuje stránky proti malwaru
  • Prochází a eviduje změny v souborech

11. Zálohujte, nespoléhejte jen na webhosting

Já si dělám zálohy více méně pravidelně, minimálně před a po každém větším zásahu do webu. Zálohovat můžete i pomocí pluginů, např. už zmíněný iThemes Security.

12. Zaheslování wp-admin

Zaheslujte, případně do administrace pusťte jen svou ip adresu. I když máte statickou ip adresu, někdy to může být problém. Já často mimo domov používám sdílené mobilní datové připojení a dynamické adresy znesnadňují správu, ale je to o zvyku. Jak zaheslování, tak i blokace IP adres není složitá.

Omezit přístupu do administrace WordPressu na konkrétní IP adresu. Vytvořte si soubor .htaccess, vložte kód a umístěte jej do adresáře /wp-admin/:

<Files "index*">
 Order Deny,Allow
 Deny from all
 Allow from 85.290.91.84
 Allow from 33.850.71.682 (IP adresy jsou vymyšlené a musíte použít svoje, zjistíte je např. tady: https://www.mojeip.cz/)

Můžete také chránit adresář /wp-includes/, přidejte do kořenového souboru .htaccess tento kód:

 
RewriteEngine On 
RewriteBase / 
RewriteRule ^wp-admin/includes/ - [F,L] 
RewriteRule !^wp-includes/ - [S=3] 
RewriteRule ^wp-includes/[^/]+.php$ - [F,L] 
RewriteRule ^wp-includes/js/tinymce/langs/.+.php - [F,L] 
RewriteRule ^wp-includes/theme-compat/ - [F,L] 

13. Nepoužívejte šablony a pluginy z neoficiálních zdrojů

Pozor na šablony, lidé často stahují šablony z neověřených zdrojů, které mohou mít v sobě škodlivý kód, doporučuji opravdu jen ověřené zdroje, např. https://www.templatemonster.com/

14. Vypněte editor motivů a pluginů WordPressu

Přizpůsobovat a editovat motivy a pluginy z administrace WordPressu je určitě zajímavá funkcionalita, ale často to může být spíše na škodu. I malá chybička může způsobit havárii webu. Hackeři mohou snadno vložit do šablony škodlivý kód, atd. Proto doporučuji vypnout editor motivů a pluginů, čímž znemožníte, aby mohl někdo bez přístupu FTP modifikovat motivy a pluginy. Do souboru wp-config.php přidáte následující kód:

define( ‚DISALLOW_FILE_EDIT‘, true );

15. Zapněte dvoufázové ověření

Dvoufázové ověření většinou známe z internetového bankovnictví, případně z Gmailu. Na WordPressu na to musíte mít plugin. Já osobně tohle nepoužívám, více mi vyhovuje blokace dle ip adres, ale pro někoho to může být vhodnější řešení

16. Pravidelně blog skenujte

Není na místě čekat, až se vám na webu objeví škodlivý kód. Nainstalujte bezpečnostní skenovací pluginy, aby web pravidelně skenovaly a oznamovaly, že se případně něco změnilo. Opět doporučím už zmiňovaný iThemes Security, případně využijte jiný plugin.

17. Skryjte číslo verze WordPressu

Podle mne tohle není úplně zásadní, je to spíše o tom, že si někdo zjistí, která verze měla jakou bezpečnostní díru a snaží se jí využít. Pokud se ale o web staráte, je toto podružné. Abyste skryli číslo verze WordPressu, stačí, když do souboru functions.php používané šablony umístíte tento kód:

remove_action('wp_head', 'wp_generator');

Nezapomeňte odstranit soubory readme.html a license.txt, které zobrazují nainstalovanou verzi WordPressu.

18. Vypněte zprávy PHP o chybách

Informace o nějaké PHP chybě, zahrnuje také úplnou serverovou cestu chyby, prozrazuje tedy informaci, kterou mohou hackeři zneužít proti vám. Ochránit se proti tomu můžete tím, že vypnete chybové reporty PHP. Do svého souboru wp-config.php přidejte toto:

define(‚WP_DEBUG‘, false);

zapnutí:

define(‚WP_DEBUG‘, true);

19. Oprávnění přístupu k souborům

Zjistěte si přes FTP klienta, jestli oprávnění ke složkám WordPressu jsou nastavena na 755 nebo 750, oprávnění k souborům na 640 nebo 644, a oprávnění k souboru wp-config.php na 400. Další info např. tady: http://www.cwordpress.cz/navody/chmod-nastaveni-opravneni-k-souborum-a-slozkam.html

20. Další tipy na závěr

  • https://wpvulndb.com/ vede databázi zranitelných pluginů, pokud váš webhosting nedělá kontroly automaticky, dělejte to sami, aspoň občas
  • brute force útoky na prolomení hesel se dají zjistit v logu serveru a blokovat
  • blokujte přístup k souboru/skriptu xmlrpc.php (slouží pro komunikaci s ostatními aplikacemi – dají se na něj posílat hromadné dotazy na prolomení hesel) pomocí .htaccess souboru

21. Pozor na UOOU

Pokud špatně zabezpečíte data svých zákazníků, může to být větší problém něž si myslíte, viz např:

…Kontrolovaný tím spáchal správní delikt podle § 45 odst. 1 písm. h) zákona č. 101/2000 Sb., neboť nepřijal nebo neprovedl opatření pro zajištění bezpečnosti zpracování osobních údajů, za což mu v souladu s § 45 odst. 3 zákona č. 101/2000 Sb. byla uložena pokuta… https://www.uoou.cz/kontrola-zamerena-na-bezpecnost-provozovanych-webovych-stranek/d-6299/p1=3109

Za bezpečnost dat svých zákazníků zodpovídáte vy.

22. Další informace

https://lynt.cz/blog/zranitelnost-ve-wordpress-pluginu-fancybox-for-wordpress-3-0-2

https://lynt.cz/blog/zranitelnost-ve-wordpress-pluginu-slider-revolution-4-1-4

https://www.root.cz/bezpecnost/

Při vývoji jakéhokoliv webu by mělo být myšleno především na bezpečnost. Existuje nepřeberné množství různých webových útoků. Jedná se například o SQL Injection, Cross.site Scripting, Cross.site Request Forgeries, atd. Všechny bezpečnostní problémy však vycházejí z nekvalitního programování, ale také z uživatelské laxnosti.

23. Otestujte si web sami

https://securityheaders.com/

https://transparencyreport.google.com/safe-browsing/

https://observatory.mozilla.org/

Nevíte si rady se zabezpečením www stránek?

Nevadí, rádi vám pomůžeme. Pečujeme o weby, rádi budeme pečovat i o ten váš. Není to drahé.