SlideShare a Scribd company logo
1 of 79
http://lynt.cz
Bezpečnost Wordpressu,
tipy pro každého
Vláďa Smitka
vladimir.smitka@lynt.cz
@smitka (ale skoro nic nepíšu)
Lynt services s.r.o.
http://lynt.cz
Obsah
• Fakta a zamyšlení
• Běžné útoky
• Obnova po útoku
• Bezpečnostní řetězec
• Bezpečnostní pluginy
28. 2. 2015 2
„Wordpress je o pluginech“
http://lynt.cz28. 2. 2015 3
Největší hrozba
Otázka: „Jaká je podle tebe aktuálně největší
bezpečnostní hrozba Wordpressových webů?“
Odpověď: „Neaktualizovaný Slider Revolution.“
http://blog.sucuri.net/2014/09/slider-revolution-plugin-critical-vulnerability-being-exploited.html
verze 4.1.4 a nižší jsou extrémně nebezpečné
• Pravděpodobně nejčastěji kradený plugin
• Součást mnoha šablon, kde je však bez podpory a updatů
• Stará verze neobsahuje autoupdate – nutno aktualizovat ručně!
• Prvek, který se velmi snadno pozná
http://lynt.cz28. 2. 2015 4
5 + 2 nejlepších bezpečnostních tipů
Aktualizujte
Zálohujte
Používejte bezpečnostní plugin
Buďte opatrní
Smažte, co nepotřebujete a nedávejte světu moc informací
Aktualizujte!
AKTUALIZUJTE!!!
http://lynt.cz
WordCamp HACK kampaň
• Během hodiny jsem nalezl 400 českých
zranitelných Wordpress webů
• Hledal jsem známé a již opravené chyby ve 3
populárních pluginech
• Tvůrce/majitele jsem mailem informoval a
pozval na WordCamp
28. 2. 2015 5
http://lynt.cz
Kdo mě chce napadnout?
28. 2. 2015 6
Roboti Anonymní hackeři
Motivovaní hackeři Děti - script kiddies
PhotobyLisa,CCBY-SA2.0
http://lynt.cz
Jak to udělá?
28. 2. 2015 7
Bezpečnostní chyba v pluginech a šablonách
Brutal force útok na Admin
Spam z komentářů (+pingbacky)
Odchytnutí hesla a cookie
Z jiných webů na hostingu
Útok oklikou – phishing, malware
(keylogger, uložené heslo FTP)Bezpečnostní chyba v jádru WP
http://lynt.cz
Co mi udělá a proč to dělá?
28. 2. 2015 8
• Cizí kód
– Vloží spamové odkazy, reklamu, přesměrování
– Nechají návštěvníky stahovat malware
– Použijí web na DDOS a jiné útoky
• Krádež informací
– Získají osobní informace uživatelů webu
• Omezení provozu
– Odstaví web/server (DOS)
http://lynt.cz
Fakta
28. 2. 2015 9
http://www.akamai.com/stateoftheinternet/
43% útoků přichází z Číny
Potřebuji čínský traffic?
Nemělo by smysl celou Čínu zablokovat?
Zablokovat USA?
Spíše ne, můžu zablokovat vyhledávače, CDN…
Zablokovat vše mimo ČR?
Určitě ne. IP geolokace není 100% přesná.
Firemní uživatelé se mohou připojovat přes centrálu v jiné zemi.
Čeští uživatelé mohou přistupovat např. z dovolené (dovolená v Číně?).
http://lynt.cz28. 2. 2015 10
http://lynt.cz
Jak zablokovat Čínu? – na doma
28. 2. 2015 11
Seznam IP adres: http://www.ip2location.com/blockvisitorsbycountry.aspx
• Iptables
– Nepoužívat vygenerovanou konfiguraci – tisíce pravidel,
skrze které musí projít každý packet
– iptables -A INPUT -m tcp -m state --state NEW -j
CHINA_WALL
– Pokročilé: optimalizace – více chainů podle části IP
• .htaccess/konfigurace nginx
• mod_geoIP
• Pluginy (např. placený Wordfence)
• HW krabička
• Další varianta – přístupy z blokovaných
zemí přesměrovat na stránku s CAPTCHA
//mod_geoIP v konfiguraci Apache
GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry
Deny from env=BlockCountry
//mod_geoIP v .htaccess
RewriteCond %{ENV:GEOIP_COUNTRY_CODE}
^(CN|RU)$
RewriteRule ^(.*)$ - [F,L]
http://lynt.cz
Dělám nový web
28. 2. 2015 12
Aktuality:
1.4.2003 spustili
jsme nový web!
http://lynt.cz
Priority při tvorbě webu
28. 2. 2015 13
Krása
kolem toho se většinou točí celý vývoj webu
Rychlost
toho si všímáme, až když web běží
Bezpečnost
řešíme, až když se něco stane
http://lynt.cz
Co se stane když…
• nám nabourají web?
• přijdu o důvěrná data, ztratím důvěryhodnost,
web nebude fungovat a bude penalizovaný
• je web hrozivě pomalý?
• návštěvníci jsou otrávení a mohou jít jinam,
vyhledávače nebudou chtít indexovat
• nemám na hlavní stránce slider se super efekty?
• nic?
28. 2. 2015 14
http://lynt.cz
Opravdové priority
z hlediska dopadu na business
28. 2. 2015 15
Bezpečnost
Rychlost
Krása
http://lynt.cz
Čas na praktické ukázky!
28. 2. 2015 16
http://lynt.cz
Slider Revolution - LFI
• Verze 4.1.4 a nižší
• Stažení libovolného zdrojového souboru z hostingu
• Registrace všech Ajaxových volání pro privilegované i
nepriveligované uživatele
• /wp-admin/admin-
ajax.php?action=revslider_show_image&img=../wp-
config.php
• Detaily: http://lynt.cz/blog/zranitelnost-ve-wordpress-
pluginu-slider-revolution-4-1-4
28. 2. 2015 17
http://lynt.cz
FancyBox for Wordpress - XSS
• Verze 3.0.2 a nižší
• Vložení libovolného javascriptu na všechny stránky
• Použití hooku admin_init bez dodatečné kontroly
oprávnění (aktivuje se při každém dotazu do
administrace – admin-ajax.php, admin-post.php)
• /wp-admin/admin-ajax.php?page=fancybox-for-
wordpress +
proměnná mfbfw[padding]=</script><script>zlý
kód</script>
• Detaily: http://lynt.cz/blog/zranitelnost-ve-wordpress-
pluginu-fancybox-for-wordpress-3-0-2
28. 2. 2015 18
http://lynt.cz
Mail Poet – Upload PHP
• Verze 2.6.8 a nižší
• Nahrání PHP souboru na web a jeho spuštění
• Opět použití admin_init bez dodatečné kontroly
skutečného oprávnění + chybné použití $_REQUEST v
první opravě
• /wp-admin/admin-
post.php?page=wysija_campaigns&action=themeupl
oad + proměnná my-theme = zlý zip
• Detaily: http://lynt.cz/blog/zranitelnost-ve-wordpress-
pluginu-mail-poet-2-6-8
28. 2. 2015 19
http://lynt.cz
Wordpress Video Gallery - SQLi
• Verze 2.7
• SQL injection – získání libovolných dat z databáze
• Špatně ošetřené uživatelské vstupy, dlouho bez opravy
• /wp-admin/admin-
ajax.php?action=rss&type=video&vid=-1 UNION
SELECT
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,
22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,3
9 FROM wp_users ;--
• Detaily: http://lynt.cz/blog/zranitelnost-ve-wordpress-
pluginu-wordpress-video-gallery-2-7
28. 2. 2015 20
http://lynt.cz
Wordpress 3.9.2 - XSS
„Wordpress verze 3.9.2 je v pohodě.“
Vladimír Smitka, 4. WP konference, listopad 2014
28. 2. 2015 21
„Co je bezpečné dnes, nemusí být bezpečné zítra.“
Vladimír Smitka, 4. WP konference, listopad 2014
• Obejití kontroly povolených tagů v komentářích
• [<blockquote cite="]">[" onmouseover="alert('ojojoj!');
" style="background-color:red;position:absolute;top:0;
left:0;height:100%;width:100%;"][<a href="]>ahojky
http://lynt.cz
Co mohlo snížit dopady?
• Zabránění spouštění PHP ve složce
/wp-content/uploads
.htaccess v této složce:
php_flag engine off
28. 2. 2015 22
Jiná možnost:
<FilesMatch .php$>
Order allow,deny
Deny from all
</FilesMatch>
• Aktualizace
• Blokace dotazů obsahujících wp-config.php
Globální .htaccess:
RewriteCond %{QUERY_STRING} wp-config.php
RewriteRule ^(.*)$ - [F,L]
http://lynt.cz
Jak poznám, že mám i já zranitelný plugin?
• Sleduji dění a vím
• Plugin Vulnerabilities
• https://wordpress.org/plugins/plugin-vulnerabilities/
28. 2. 2015 23
http://lynt.cz
Jak to pozná útočník?
• První, nejdelší a nejdůležitější část útoku, je průzkum
(Reconnaissance)
• WPScan – nejpoužívanější nástroj
28. 2. 2015 24
http://lynt.cz
Stalo se, byl jsem napaden!
28. 2. 2015 25
http://lynt.cz
Obnova po útoku
• Obnova z čisté zálohy
– Smazat starý web nahrát čistý
• Přeinstalování + ruční dezinfekce
– FAR
• nejčastěji malware přidá kód do všech php souborů na webu
• editor pro hromadné odstranění/nahrazení škodlivého kódu
• v souborech však mohou být i další škodlivé kódy
– Prohlédnutí SQL dumpu
• Pokusit se nalézt <iframe, <script, x-shockwave-flash, eval,
base64_decode, gzip_, preg_replace
• Pokusit se identifikovat, zda jsou nálezy regulérní
• Odstranění malware neřeší příčinu!
28. 2. 2015 26
http://lynt.cz
FAR
28. 2. 2015 27
http://lynt.cz
Checklist
• Dezinfekce, odstranění příčiny (často aktualizace)
• Změna hesla na FTP
• Změna hesla do DB
• Změna hesel uživatelů
• Nové šifrovací klíče:
https://api.wordpress.org/secret-key/1.1/salt/
– Od WP 3.1. se generují při instalaci
define('AUTH_SALT', 'put your unique phrase here');
• Kontrola souborů pluginem (Wordfence, Sucuri
Scanner)
28. 2. 2015 28
http://lynt.cz
Zálohování
„Zálohování je alfou a omegou práce na počítači“
28. 2. 2015 29
Ruční
občas všechno někam stáhnu, není to ideální ale alespoň něco
Zálohování řeší server
ideální stav (zeptejte se svého webhostera jakým způsobem to má vyřešené)
Zálohovací plugin
kompromisní řešení, může však přinášet různé další benefity
http://lynt.cz
Zálohovací pluginy
• BackWPup
– pouze záloha - nemá obnovu, tu lze ale jednoduše udělat ručně
– umí zálohu na více úložišť
– lze spouštět externím voláním speciální URL
• UpdraftPlus
– záloha i obnova
– záloha na jedno zvolené úložiště (Pro verze více)
• BackupBuddy
– pouze placená verze
– kompletní řešení (migrace webů na jiné domény, obnova zálohy
speciálním skriptem na novém hostingu, široká podpora
externích úložišť, obnova jednotlivých souborů, zvládá
serializovaná data)
28. 2. 2015 30
http://lynt.cz
Jak na zálohování pluginem?
• Preferovat zálohu na externím úložišti
• Pokud je na lokálním
– zjistit kde a zkusit, zda se soubory záloh opravdu nedají
otevřít z prohlížeče
– ověřit zda se nezálohují zálohy samotné (vyjmout složku se
zálohou ze zálohování)
• Plánování záloh
– WP-Cron – umí většina pluginů, spouští se pouze, když je na
webu návštěvnost (lze ověřit pomocí Crontrol)
– Externí spouštení – preferovaná cesta, je jistota, že se spustí
(cron na serveru, minicron, online cron např.
http://www.webcron.org/, https://www.setcronjob.com,
https://www.easycron.com)
• Nastavení upozornění mailem o proběhnuté záloze
28. 2. 2015 31
http://lynt.cz
Pojďme se bránit!
28. 2. 2015 32
http://lynt.cz
Power!
28. 2. 2015 33
Jeremy Clarkson
http://lynt.cz
Jak pomoci výkonu zvýšit bezpečnost?
• WP Super Cache
– Mnoho útoků je typu (D)DoS – vyčerpají dostupné prostředky
– Pokud použiji stránkovou Cache, budou vracet statické soubory
a nebudu spotřebovávat výkon
• Autoptimize
– Skryji „prozrazující“ javascripty a css do jednoho souboru
– Snížím počet požadavků na server
– Pro některé skripty je třeba vytvořit výjimky (Google Maps)
• Object Cache Backend (dropin)
– Xcache, APC, APCu (Český hosting) – snižuje počet dotazů do
databáze
• Vedlejší účinky: rychlejší web, spokojenější návštěvníci,
chutnější SEO
28. 2. 2015 34
http://lynt.cz
Bezpečnostní řetězec
28. 2. 2015 35
HTTP Server
(Apache/Nginx)
PHP
Internet
log
Kde všude lze bezpečnost ovlivnit?
http://lynt.cz
Cloud
28. 2. 2015 36
HTTP Server
(Apache/Nginx)
PHP
Internet
Cloudové bezpečností služby (WAF)– útok
se vůbec nedostane k serveru, jde přes ně
veškerý provoz.
Blokují útočící IP, pokusy o zneužití známých
zranitelností, DDoS,…
Incapsula, Sucuri, CloudFlare
log
http://lynt.cz
Poskytovatel
28. 2. 2015 37
HTTP Server
(Apache/Nginx)
PHP
Internet
Security appliance/firewall poskytovatele –
možnosti se liší, mnoho poskytovatelů tuto
vrstvu nemá. Může snižovat dopady DDoS,
blokovat pokusy o různé síťové útoky i
filtrovat známe zranitelnosti.
log
http://lynt.cz
Server
28. 2. 2015 38
HTTP Server
(Apache/Nginx)
PHP
Internet
Firewall serveru, WAF, nastavení – může
blokovat určité síťové útoky, blokovat IP
adresy (i celé rozsahy - státy).
WAF – blokuje pokusy o útoky na weby
(XSS, SQLi,…) – mod_security, naxsi.
Omezuje práva k souborům, může hlídat
jejich změny.
Může řešit zálohování.
log
http://lynt.cz
Server – na doma
• Detekce změn v PHP souborech za posledních 24 hodin:
find /srv/htdocs/muj_web/ -name '*.php' -type f -mtime -1 > output ; mail
-s "Zmeny za poslednich 24hod" "vladimir.smitka@lynt.cz" < output
28. 2. 2015 39
root directory 755
wp-includes/ 755
.htaccess 644
wp-admin/index.php 644
wp-admin/js/ 755
wp-content/themes/ 755
wp-content/plugins/ 755
wp-admin/ 755
wp-content/ 755
wp-config.php 644
Práva souborů a složek dle All In One WP Security:Další seznam IP adres zemí:
http://www.iwik.org/ipcountry/
Viz Blokace Číny
Základ mod_security pro WP:
http://blog.erben.sk/2015/02/11
/protecting-wordpress-with-
mod-security/
http://lynt.cz
HTTP Server a PHP
28. 2. 2015 40
HTTP Server
(Apache/Nginx)
PHP
Internet
Bezpečnostní nastavení HTTP serveru a
PHP – brání komunikaci mezi více weby na
hostingu, může filtrovat nebezpečné URL,
omezovat přístup k různým částem webu,
vynucovat bezpečnou komunikaci, blokovat
přístupy z určitých zemí (mod_geoip),
zaznamenává problémy
log
http://lynt.cz
Analýza logů
28. 2. 2015 41
HTTP Server
(Apache/Nginx)
PHP
Internet
Realtime analýza logů – pokud víte, že se
něco děje, můžete reagovat. Samotný
záznam v logu nic neznamená, je třeba vidět
širší souvislosti.
Logstash, ElasticSearch, Kibana
log
http://lynt.cz
Ukázka z analýzy logů
28. 2. 2015 42
Něco se děje?
http://lynt.cz
Reakce na události
28. 2. 2015 43
HTTP Server
(Apache/Nginx)
PHP
Internet
Reakce na události v logu – blokace při
nestandardních událostech – mnoho 404 v
krátkém čase, neúspěšné pokusy o
přihlášení, …
Blokace ve firewallu, notifikace
administrátora
Fail2Ban
log
http://lynt.cz
Fail2Ban – na doma
28. 2. 2015 44
• Některé funkce bezpečnostního pluginu můžeme posunout o úroveň níže
• Např. detekci brutal force analýzou logů nebo 404 (může být dobré nelogovat statické soubory):
• filter.d/wp-auth.conf
# WordPress brute force auth filter: /etc/fail2ban/filter.d/wp-auth.conf:
#
# Block IPs trying to auth wp wordpress
#
# Matches e.g.
# 178.63.72.184 - - [16/Oct/2014:11:40:50 +0200] "POST /wp-login.php HTTP/1.0" 200 1531 "-" "-"
[Definition]
failregex = ^<HOST> .* "POST /wp-login.php
• jail.conf
[wp-auth]
enabled = true
filter = wp-auth
action = iptables-multiport[name=wp-auth, port="http,https", protocol=tcp]
sendmail-whois[name=WPauth, dest=vladimir.smitka@lynt.cz, sendername="Fail2Ban"]
logpath = /var/log/wordpress/access.*.log
• Pozor na logrotate - /usr/bin/fail2ban-client reload wp-auth
• Do WP exituje doplněk, který hlásí do logu neúspěšná přihlášení:
https://wordpress.org/plugins/wp-fail2ban/
http://lynt.cz
Nastavení Wordpress
28. 2. 2015 45
HTTP Server
(Apache/Nginx)
PHP
Internet
Správné nastavení WP – vše aktualizované,
kvalitní pluginy, použití bezpečnostního
pluginu (blokuje přístupy do administrace,
pokusy o skenování, nebezpečné URL, hlídá
změny v souborech, může hledat nákazu,
může skrýt/přesměrovat některé části
webu)
iThemes Security, All in One WP security &
Firewall, WordFence log
http://lynt.cz
Bezpečnostní plugin
28. 2. 2015 46
http://lynt.cz
WordFence
• Aktivní ochrana
• Detekce botů, omezování provozu (HTTP 503)
• Live traffic
• Sken - kontrola souborů, známých infekcí, test zda je web
na blacklistech
• Cache
• A samozřejmě:
– Hlídání změn v souborech
– Omezování chybných přihlášení
– Omezování 404
– Blokace komentářového spamu
28. 2. 2015 47
http://lynt.cz
WordFence – po instalaci
28. 2. 2015 48
Level 2: začne posílat více upozornění, snižují se limity chybných přihlášení
Level 3: se začínají uplatňovat omezování provozu
Level 4: okamžitě blokuje neplatná jména
http://lynt.cz
WordFence – Live Traffic
28. 2. 2015 49
http://lynt.cz
WordFence – detekce změn
28. 2. 2015 50
http://lynt.cz
WordFence – omezování provozu
28. 2. 2015 51
http://lynt.cz
WordFence – bezpečnost přihlášení
28. 2. 2015 52
Tip: omezení získávání uživatelských jmen v .htaccess:
RewriteCond %{QUERY_STRING} author=
RewriteRule ^(.*)$ http://beznekam.cz? [L,R=301]
http://lynt.cz
WordFence – další nastavení
28. 2. 2015 53
http://lynt.cz
WordFence – další nastavení
28. 2. 2015 54
http://lynt.cz
WordFence Premium – Country blocking
28. 2. 2015 55
http://lynt.cz
WordFence Premium – další
28. 2. 2015 56
• Lepší ochrana proti spamu – používá aktuální databázi spamerů udržovanou Wordfence
• Při scanu zjišťuje, zda se URL webu nevyskytuje ve spamových mailech – brzké varování
• Při scanu ověřuje, zda není IP na blacklistech pro maily
2 fázová autentifikace pomocí SMS:
Your Wordfence code is ABCDEF. – kód se vkládá za mezeru do hesla
Lepší přes WP Google Authenticator
Plánování scanu – lze nastavit častější kontroly (dobré, pokud mám více uživatelů s
vyššími oprávněními)
http://lynt.cz
Bezpečnostní plugin
28. 2. 2015 57
http://lynt.cz
iThemes security
• Prevence
• Skrytí administrace, změna prefixu db
• Filtrace zlých URL dotazů
• Samozřejmě:
– Blokace chybných pokusů o přihlášení a 404
– Hlídání změn v souborech
– Blokace komentářového spamu
28. 2. 2015 58
http://lynt.cz
iThemes Security – po instalaci
28. 2. 2015 59
One-Click – nastaví omezení počtu přihlášení, vynutí silná hesla, skryje některé info
http://lynt.cz
iThemes Security – API Key
28. 2. 2015 60
http://lynt.cz
iThemes Security - přehled
28. 2. 2015 61
http://lynt.cz
iThemes security - nastavení
• Global Settings
– Write to Files - Allow iThemes Security to write to wp-
config.php and .htaccess – pokud nepovolím, mohu příslušné
sekce nakopírovat z dashboardu pluginu
– Lockout White List – vhodné zadat svou IP
– Log Type - Database Only (malé weby, log je pak dostupný na
záložce Logs), File Only (velké weby, vhodné také pro zpracování
fail2ban)
– Path to Log Files - cesta k logům při File Only, pokud je možnost
přístupu mimo složku webu, tak je umístit mimo, pokud ne, lze
nechat výchozí (lépe ale jméno složky změnit)
• 404 detection
– Enable 404 detection – zablokuje násilné skenování
28. 2. 2015 62
Červené = dle mého názoru nejdůležitější nastavení
http://lynt.cz
iThemes security - nastavení
• Away Mode - možno nastavit dostupnost
administrace např. jen na pracovní dobu...
• Banned Users
– Default Blacklist - Enable HackRepair.com's
blacklist feature - možno povolit - přidá známé
útočící useragenty do .htaccess
– Enable ban Users - můžeme si dodefinovat vlastní
blokované useragenty a IP (spolupracuje s Enable
Blacklist Repeat Offender v Global settings)
28. 2. 2015 63
http://lynt.cz
iThemes security - nastavení
• Brute Force Protection
– Get your iThemes Brute Force Protection API Key -
iThemes získá přístup k globálnímu blacklistu útočících IP
adres na iThemes.com
– Enable iThemes Brute Force Network Protection – povolí
ochranu dle globálního blacklistu
– Enable local brute force protection - blokuje hádání hesel
do administrace – tvoří vlastní blacklist (blokace jsou
uloženy v tabulce _itsec_lockouts)
– Automatically ban "admin" user - Immediately ban a host
that attempts to login using the "admin" username - pokud
mám přejmenovaného admina, tak to může být dobrá
nástraha  - jakmile se někdo pokusí přihlásit jako uživatel
admin, je okamžitě zablokován
28. 2. 2015 64
http://lynt.cz
iThemes security - nastavení
• Database Backups
– Backup Method - Email Only (bude posílat zálohu mailem), Save local only - pouze pokud
mohu uložit zálohu mimo složku webu (Backup Location)
– Schedule Database Backups - Enable Scheduled Database Backups – automatické vytváření
záloh/jinak pouze ručně na záložce Backups
– Zálohuje pouze DB. Raději bych použil jiné zálohovací řešení mimo WP i se soubory.
• File Change Detection
– File Change Detection - Enable File Change detection
– Split File Scanning - Split file checking into chunks – vhodné pokud mám méně RAM -
generuje ale více emailů
– Files and Folders List - pokud používáme cachovací plugin, tak je vhodné zde jeho složku
vyjmout
• Hide Login Area
– Hide Backend- Enable the hide backend feature – přesměruje /wp-admin na jinou adresu
– Login Slug – nová adresa administrace - např. admin5547, nebo česky administrace
– Enable Theme Compatibility - Enable theme compatibility – zapnout, pokud přesměrování
administrace způsobí nefunkčnost některých šablon a pluginů
– Přesměrování administrace je dobré dělat až v druhé vlně ladění - neprovádět více změn naráz
28. 2. 2015 65
http://lynt.cz
iThemes security - nastavení
• Malware Scanning
– Enable Malware scanning - po vložení API klíče z VirusTotal.com může
nechat jednorázově otestovat homepage, zda se nenachází na cca 60
blacklistech (Sucuri SiteCheck, Google Safebrowsing,...)
• Secure Soceket Layers (SSL)
– nastavení pro vynucení SSL přístupu do administrace - vhodné nejprve
otestovat, zda je administrace přes https správně dostupná
• Strong Passwords
– Strong Passwords - Enable strong password enforcement - Vynutí
používání silných hesel (původní slabá hesla zůstávají)
– Select Role for Strong Passwords - pro jaké role vyžadujete silná hesla
(minimálně Šéfredaktor – může vkládat JS do komentářů, ale klidně už
od Návštěvníka)
28. 2. 2015 66
http://lynt.cz
iThemes security - nastavení
• System Tweaks
– System Files - protect System Files - zakáže přístup z internetu přímo k
důležitým souborům a k souborům, které prozrazují informace
– Suspicious Query Strings - Filter Suspicious Query Strings in the URL -
může zabránit jednoduchým SQL injections (pozor, chyba
u nginx – viz další slidy)
– Long URL Strings - Filter Long URL Strings - blokuje příliš dlouhé URL
(nad 255 znaků), dále také blokuje URL obsahující funkce eval a base64
a union select (podobnou funkci plní samostatný plugin Block Bad
Queries (BBQ))
+ je dobré přidat blokaci query obsahující wp-config.php
– Non-English Characters - Filter Non-English Characters - v českém
prostředí znefunkční vyhledávání s diakritikou
– File Writing Permissions – nastaví práva pro .htaccess a wp-config.php
– lepší si to nastavit sám a podrobněji
– Uploads - Disable PHP in Uploads – zakáže PHP ve složce
s uploady
28. 2. 2015 67
http://lynt.cz
iThemes security - nastavení
• System Tweaks
– Generator Meta Tag + Display Random Version - pokusí se zamaskovat verzi
WP, jde to udělat lépe – viz další slidy
– Windows Live Writer Header & EditURI Header – hlavičky pro integraci
s dalšími službami a aplikacemi – jsou potřeba jen zřídka
– Comment Spam - kontroluje, zda byl komentář vložen z našeho webu
(případně z wordpress.com) + blokuje komentáře od botů, kteří nemají
vyplněn user-agent
– File Editor – vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v
wp-config)
– XML-RPC - při "Completely Disable XMLRPC" zakáže veškeré XML-RPC
požadavky, např. trackbacky (pro bezpečné použití trackbacků mohu použít
plugin https://wordpress.org/plugins/simple-trackback-validation-with-topsy-
blocker/)
– Login Error Messages - přestane ukazovat hlášky o chybném přihlášení
– Force Unique Nickname - nutí uživatele zvolit jiný nickname než je jeho
přihlašovací jméno (není tak přímo vidět uživatelský účet)
– Disable Extra User Archives - skryje uživatele, kteří nepíšou články (admini,...)
28. 2. 2015 68
http://lynt.cz
iThemes security – další funkce
• „Pokročilé funkce“ – Advanced
– Admin user – umožňuje přejmenovat uživatele admin
na jiné, hůře odhadnutelné jméno
• Lepší je vytvořit nového uživatele s admin právy, přihlásit se
na něj a původního admina smazat (WP nabídne převedení
jeho příspěvků na jiného uživatele)
– Change content directory – přejmenování složky wp-
content, může přinést problémy a brání pouze
některým automatizovaným útokům (správnou složku
lze jednoduše vyčíst z kódu stránky)
– Change database prefix – pokud se nechal při instalaci
default wp_, tak je možné ho zde změnit
• Automatizovaný nástroj, ručně je to složitější
28. 2. 2015 69
http://lynt.cz
iThemes security – poznámky na doma
Suspicious Query Strings v Nginx:
set $susquery 0;
if ($args ~* "wp-config.php") { set $susquery 1; } #navíc blokace při pokusu stažení wp-config.php
if ($args ~* "../") { set $susquery 1; }
if ($args ~* ".(bash|git|hg|log|svn|swp|cvs)") { set $susquery 1; }
if ($args ~* "etc/passwd") { set $susquery 1; }
if ($args ~* "boot.ini") { set $susquery 1; }
if ($args ~* "ftp:") { set $susquery 1; }
if ($args ~* "http:") { set $susquery 1; }
if ($args ~* "https:") { set $susquery 1; }
if ($args ~* "(<|%3C).*script.*(>|%3E)") { set $susquery 1; }
if ($args ~* "mosConfig_[a-zA-Z_]{1,21}(=|%3D)") { set $susquery 1; }
if ($args ~* "base64_encode") { set $susquery 1; }
if ($args ~* "(%24&x)") { set $susquery 1; }
if ($args ~* "(&#x22;|&#x27;|&#x3C;|&#x3E;|&#x5C;|&#x7B;|&#x7C;|%24&x)"){ set $susquery 1; }
if ($args ~* "(127.0)") { set $susquery 1; }
if ($args ~* "(globals|encode|localhost|loopback)") { set $susquery 1; }
if ($args ~* "(request|insert|concat|union|declare)") { set $susquery 1; }
if ($args !~ "^loggedout=true"){ set $susquery 0; } # <= špatná logika, má zde být ~*
if ($args !~ "^action=jetpack-sso"){ set $susquery 0; } # <= špatná logika, má zde být ~*
if ($args !~ "^action=rp"){ set $susquery 0; } # <= špatná logika, má zde být ~*
if ($http_cookie !~ "^.*wordpress_logged_in_.*$"){ set $susquery 0; } # <= špatná logika, má zde být ~*
if ($http_referer !~ "^http://maps.googleapis.com(.*)$"){ set $susquery 0; } # <= špatná logika, má zde být ~*
if ($susquery = 1) { return 403; }
28. 2. 2015 70
Přidání blokace wp-config.php do .htaccess:
RewriteCond %{QUERY_STRING} wp-config.php [NC,OR]
http://lynt.cz
iThemes security – poznámky na doma
Lepší odstranění viditelnosti verze WP než v pluginu:
Do functions.php nebo plugin do mu-plugins:
function remove_wp_version()
{ return ; }
add_filter('the_generator', remove_wp_version');
28. 2. 2015 71
Odbočka – MU-plugins (Must Use Plugins)
Málo známá funkcionalita WP – jedná se o speciální složku: /wp-content/mu-plugins
Skripty/pluginy v této složce jsou automaticky spouštěny a nelze je v administraci deaktivovat.
Hodí se to pro různá bezpečnostní nastavení, např. pokud chceme automatické updaty pluginů a
šablon pomocí filtrů – mnoho autorů je dává do wp-config/functions.php – správně mají být zde.
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );
http://lynt.cz
Uživatelé
28. 2. 2015 72
HTTP Server
(Apache/Nginx)
PHP
Internet
Chování uživatelů a správců – silná
hesla, připojování z důvěryhodných
sítí, zálohování, antivir, kontrola
certifikátů, odolnost phishingu
log
http://lynt.cz
Tipy pro správce WP
• Nastavte přístup do administrace přes HTTPS
– https://wordpress.org/plugins/wordpress-https/
– dobrý je i přístup přes VPN, pokud je to možné
• Opravdu pravidelně zálohujte – soubory i databázi
• Netestujte pluginy na produkčním webu
• Smažte co nepotřebujete
• Přidělujte uživatelům oprávnění, která opravdu potřebují
• Pokud máte více webů, používejte systém pro hromadnou
správu a aktualizaci (InfiniteWP, ManageWP), pokud méně
použijte plugin WP Updates Notifier
• Udržujte si seznam všech použitých pluginů a šablon
• Pokud vám vývojář řekl: „hlavně neaktualizuje“, chtějte
vědět proč (např. si vyžádejte patch soubory se změnami,
co provedl), většinou k tomu není zásadní důvod!
28. 2. 2015 73
http://lynt.cz
Tipy pro každého
• Používejte silná hesla (používejte password
manager např. Keepass)
• Pozor na špatné certifikáty:
• Používejte kvalitní a aktualizovaný antivir
• Nepřipojujte se z neznámých WiFi
• Smažte z mobilu/tabletu/notebooku všechny
uložené sítě, ke kterým se připojuje bez hesla
• Nedůvěřujte všemu, co přijde mailem
28. 2. 2015 74
http://lynt.cz
Phishing
Předmět: Máňa
Datum: Sat, 28 Feb 2015 14:32:48 +0200
Od: Máňa <mana@sezn.am>
Komu: <ty>
Dobrý den.
Omlouvám se za nežádoucí obtěžování a přeposílám Vám vaše doklady a smlouvu
které asi na můj email byly zaslané omylem.
Teda aspoň předpokládám že přesměruji správně jelikož Váš email byl uvedený ve
smlouvě.
Veškeré Doklady a smlouvu odesílám přílohou stejně jak jsem to dostala.
Prosím o zjištění důvodu tohoto trapného omylu aby příště na můj email se
nedostávali další zprávy obsahující nějakou citlivou informaci.
S pozdravem,
Máňa
28. 2. 2015 75
http://lynt.cz
Phishing
Předmět: Bezpečnostní problém Hodný Hosting [9314001612]
Datum: Sat, 28 Feb 2015 14:32:48 +0200
Od: Hodný Hosting <hosting@hod.ny>
Komu: <ty>
Vážený zákazníku,
Na Vaší webové prezentaci tvujweb.cz založené na redakčním systému Wordpress byl
zjištěna škodlivý kód, který masivně útočí na další weby a infikuje návštěvníky.
Neprodleně nainstalujte náš antivirový plugin Super-WP-Antivir, který naleznete v
příloze i s návodem k instalaci. V opačném případě budeme bohužel nuceni Vaši
webovou prezentaci pozastavit.
Hodný Hosting, Ltd.
28. 2. 2015 76
http://lynt.cz
Další zdroje
• Info o zranitelnostech
• https://www.owasp.org/
• https://wpvulndb.com/
• http://blog.sucuri.net/
• http://packetstormsecurity.com/
• Hodnocení pluginů:
• http://www.rankwp.com/
28. 2. 2015 77
http://lynt.cz
Domácí úkol na zítra
□ Zkontrolovat, zda nemám zranitelné pluginy
□ Zkontrolovat, zda mám vygenerované unikátní
šifrovací klíče ve wp-config.php
□ Zazálohovat
□ Smazat pluginy, co nepoužívám/byly jen k
jednorázové činnosti
□ Smazat zbytečné šablony (nechat jen jednu
výchozí z instalace a případně rodičovskou)
□ Snížit oprávnění uživatelům, kteří jej nepotřebují
□ Aktualizovat, co je možné
28. 2. 2015 78
http://lynt.cz
A to je vše, přátelé.
Bezpečnou cestu domů/na afterparty!
28. 2. 2015 79
aktualizujte, zálohujte, používejte bezpečnostní plugin, buďte opatrní

More Related Content

What's hot

What's hot (20)

Instalace WordPress
Instalace WordPressInstalace WordPress
Instalace WordPress
 
WordPress - základy bezpečnosti
WordPress - základy bezpečnostiWordPress - základy bezpečnosti
WordPress - základy bezpečnosti
 
Jak si (ne)nechat hacknout Wordpress stránky
Jak si (ne)nechat hacknout Wordpress stránkyJak si (ne)nechat hacknout Wordpress stránky
Jak si (ne)nechat hacknout Wordpress stránky
 
Nejčastejší problémy WordPress webů
Nejčastejší problémy WordPress webůNejčastejší problémy WordPress webů
Nejčastejší problémy WordPress webů
 
Základní pluginy pro WordPress
Základní pluginy pro WordPressZákladní pluginy pro WordPress
Základní pluginy pro WordPress
 
Sysops tipy pro lepší WP
Sysops tipy pro lepší WPSysops tipy pro lepší WP
Sysops tipy pro lepší WP
 
Wordpress_DOD
Wordpress_DODWordpress_DOD
Wordpress_DOD
 
Najčastejšie problémy WordPress webov
Najčastejšie problémy WordPress webovNajčastejšie problémy WordPress webov
Najčastejšie problémy WordPress webov
 
Základní pluginy pro WordPress 25-6-2016
Základní pluginy pro WordPress 25-6-2016Základní pluginy pro WordPress 25-6-2016
Základní pluginy pro WordPress 25-6-2016
 
Verzování WordPress webů (#wpkonference 11/2014)
Verzování WordPress webů (#wpkonference 11/2014)Verzování WordPress webů (#wpkonference 11/2014)
Verzování WordPress webů (#wpkonference 11/2014)
 
Google Tag Manager a analytika ve WordPress
Google Tag Manager a analytika ve WordPressGoogle Tag Manager a analytika ve WordPress
Google Tag Manager a analytika ve WordPress
 
WordCamp Bratislava 2019 - Cache!
WordCamp Bratislava 2019 - Cache!WordCamp Bratislava 2019 - Cache!
WordCamp Bratislava 2019 - Cache!
 
WordPress šablony a rychlost načítání (WordCamp Praha 2017)
WordPress šablony a  rychlost načítání (WordCamp Praha 2017)WordPress šablony a  rychlost načítání (WordCamp Praha 2017)
WordPress šablony a rychlost načítání (WordCamp Praha 2017)
 
10 tipů pro lepší zabezpečení WordPressu - 2. Wordpress konference Hluboká 2014
10 tipů pro lepší zabezpečení WordPressu - 2. Wordpress konference Hluboká 201410 tipů pro lepší zabezpečení WordPressu - 2. Wordpress konference Hluboká 2014
10 tipů pro lepší zabezpečení WordPressu - 2. Wordpress konference Hluboká 2014
 
Jak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webuJak zlepšit zabezpečení čtvrtiny celého webu
Jak zlepšit zabezpečení čtvrtiny celého webu
 
Hledání příčin pomalého webu a jak to řešit
Hledání příčin pomalého webu a jak to řešitHledání příčin pomalého webu a jak to řešit
Hledání příčin pomalého webu a jak to řešit
 
WordCamp Praha 2017 - Martin Hlaváč
WordCamp Praha 2017 - Martin HlaváčWordCamp Praha 2017 - Martin Hlaváč
WordCamp Praha 2017 - Martin Hlaváč
 
Základní pluginy pro WordPress
Základní pluginy pro WordPressZákladní pluginy pro WordPress
Základní pluginy pro WordPress
 
WP Weekend 2018
WP Weekend 2018WP Weekend 2018
WP Weekend 2018
 
Jak to (ne)zabalit s Webpackem
Jak to (ne)zabalit s WebpackemJak to (ne)zabalit s Webpackem
Jak to (ne)zabalit s Webpackem
 

Viewers also liked

Jak na SEO ve WordPressu (Pavel Ungr)
Jak na SEO ve WordPressu (Pavel Ungr)Jak na SEO ve WordPressu (Pavel Ungr)
Jak na SEO ve WordPressu (Pavel Ungr)
wcsk
 

Viewers also liked (20)

Wordpress: Idealni nastroj pro chytre marketery
Wordpress: Idealni nastroj pro chytre marketeryWordpress: Idealni nastroj pro chytre marketery
Wordpress: Idealni nastroj pro chytre marketery
 
Funkční SEO strategie pro váš web
Funkční SEO strategie pro váš webFunkční SEO strategie pro váš web
Funkční SEO strategie pro váš web
 
Time Code: Automating Tasks in WordPress with WP-Cron
Time Code: Automating Tasks in WordPress with WP-CronTime Code: Automating Tasks in WordPress with WP-Cron
Time Code: Automating Tasks in WordPress with WP-Cron
 
Wordpress Cron
Wordpress CronWordpress Cron
Wordpress Cron
 
WordCamp Praha 2017 - Tomáš Kocifaj
WordCamp Praha 2017 - Tomáš KocifajWordCamp Praha 2017 - Tomáš Kocifaj
WordCamp Praha 2017 - Tomáš Kocifaj
 
Nepodecnujte pripravu webu
Nepodecnujte pripravu webu Nepodecnujte pripravu webu
Nepodecnujte pripravu webu
 
WordPress security for everyone
WordPress security for everyoneWordPress security for everyone
WordPress security for everyone
 
Wordpress: pagine vs articoli - categorie vs tag
Wordpress: pagine vs articoli - categorie vs tagWordpress: pagine vs articoli - categorie vs tag
Wordpress: pagine vs articoli - categorie vs tag
 
Профилирование кода в WordPress
Профилирование кода в WordPressПрофилирование кода в WordPress
Профилирование кода в WordPress
 
Nürnberg WooCommerce Talk - 11/24/16
Nürnberg WooCommerce Talk - 11/24/16Nürnberg WooCommerce Talk - 11/24/16
Nürnberg WooCommerce Talk - 11/24/16
 
WordCamp Gdynia 2016
WordCamp Gdynia 2016WordCamp Gdynia 2016
WordCamp Gdynia 2016
 
WordCamp Santander 2016 : eCommerce y WordPress
WordCamp Santander 2016 : eCommerce y WordPressWordCamp Santander 2016 : eCommerce y WordPress
WordCamp Santander 2016 : eCommerce y WordPress
 
Jak na SEO ve WordPressu (Pavel Ungr)
Jak na SEO ve WordPressu (Pavel Ungr)Jak na SEO ve WordPressu (Pavel Ungr)
Jak na SEO ve WordPressu (Pavel Ungr)
 
Sécurité: Ne soyez pas à risque
Sécurité: Ne soyez pas à risqueSécurité: Ne soyez pas à risque
Sécurité: Ne soyez pas à risque
 
Communautés Drupal et WordPress : le choc des titans ?
Communautés Drupal et WordPress : le choc des titans ?Communautés Drupal et WordPress : le choc des titans ?
Communautés Drupal et WordPress : le choc des titans ?
 
Risorse e metodi per imparare a usare WordPress
Risorse e metodi per imparare a usare WordPressRisorse e metodi per imparare a usare WordPress
Risorse e metodi per imparare a usare WordPress
 
La base de datos de WordPress
La base de datos de WordPressLa base de datos de WordPress
La base de datos de WordPress
 
Design theory - Wordcamp Nepal 2014
Design theory - Wordcamp Nepal 2014Design theory - Wordcamp Nepal 2014
Design theory - Wordcamp Nepal 2014
 
Gestión de información con WordPress para no programadores - WordCamp Santa...
Gestión de información con WordPress para no programadores - WordCamp Santa...Gestión de información con WordPress para no programadores - WordCamp Santa...
Gestión de información con WordPress para no programadores - WordCamp Santa...
 
Word Camp Cologne 2016: Session The WordPress 1%
Word Camp Cologne 2016: Session The WordPress 1%Word Camp Cologne 2016: Session The WordPress 1%
Word Camp Cologne 2016: Session The WordPress 1%
 

Similar to Bezpečnost WP, tipy pro každého - wordCamp Praha 2015

Odpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnostOdpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnost
chaplin06
 
20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně
Jiří Mareš
 
Nette v cloudu - Poslední Sobota
Nette v cloudu - Poslední SobotaNette v cloudu - Poslední Sobota
Nette v cloudu - Poslední Sobota
Patrik Votoček
 
Website Security & WordPress (Peter Gramantik)
Website Security & WordPress (Peter Gramantik)Website Security & WordPress (Peter Gramantik)
Website Security & WordPress (Peter Gramantik)
wcsk
 
Jak zrychlit WP pomocí cachovacích pluginů
Jak zrychlit WP pomocí cachovacích pluginůJak zrychlit WP pomocí cachovacích pluginů
Jak zrychlit WP pomocí cachovacích pluginů
Jakub Klapka
 

Similar to Bezpečnost WP, tipy pro každého - wordCamp Praha 2015 (20)

Wordcamp Praha 2015 - další útržky z prezentace
Wordcamp Praha 2015 - další útržky z prezentaceWordcamp Praha 2015 - další útržky z prezentace
Wordcamp Praha 2015 - další útržky z prezentace
 
Hacknutý Drupal web. A co teď?
Hacknutý Drupal web. A co teď?Hacknutý Drupal web. A co teď?
Hacknutý Drupal web. A co teď?
 
Odpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnostOdpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnost
 
Michal Konečný - Systém Archivematica z pohledu uživatele
Michal Konečný - Systém Archivematica z pohledu uživateleMichal Konečný - Systém Archivematica z pohledu uživatele
Michal Konečný - Systém Archivematica z pohledu uživatele
 
20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně
 
WordCamp Prague 2014 - Website security cz
WordCamp Prague 2014 - Website security czWordCamp Prague 2014 - Website security cz
WordCamp Prague 2014 - Website security cz
 
Pavel Ondřej: WordPress z pohledu hostingového poskytovatele
Pavel Ondřej: WordPress z pohledu hostingového poskytovatelePavel Ondřej: WordPress z pohledu hostingového poskytovatele
Pavel Ondřej: WordPress z pohledu hostingového poskytovatele
 
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...
 
Proč je WordPress tak populární? Vlastimil Ott
Proč je WordPress tak populární? Vlastimil OttProč je WordPress tak populární? Vlastimil Ott
Proč je WordPress tak populární? Vlastimil Ott
 
Generátory statických webů
Generátory statických webůGenerátory statických webů
Generátory statických webů
 
Nette v cloudu - Poslední Sobota
Nette v cloudu - Poslední SobotaNette v cloudu - Poslední Sobota
Nette v cloudu - Poslední Sobota
 
Hesla a vícefaktorová autentizace ve WP
Hesla a vícefaktorová autentizace ve WPHesla a vícefaktorová autentizace ve WP
Hesla a vícefaktorová autentizace ve WP
 
Website Security & WordPress (Peter Gramantik)
Website Security & WordPress (Peter Gramantik)Website Security & WordPress (Peter Gramantik)
Website Security & WordPress (Peter Gramantik)
 
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam Backup & R...
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam Backup & R...Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam Backup & R...
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam Backup & R...
 
VersionPress - jak dělat WP weby lépe
VersionPress - jak dělat WP weby lépeVersionPress - jak dělat WP weby lépe
VersionPress - jak dělat WP weby lépe
 
MicroPython IoT vlaxa
MicroPython IoT vlaxaMicroPython IoT vlaxa
MicroPython IoT vlaxa
 
QualysGuard InfoDay 2014 - WAS
QualysGuard InfoDay 2014 - WASQualysGuard InfoDay 2014 - WAS
QualysGuard InfoDay 2014 - WAS
 
Trendy a nové možnosti test automation
Trendy a nové možnosti test automationTrendy a nové možnosti test automation
Trendy a nové možnosti test automation
 
Jak zrychlit WP pomocí cachovacích pluginů
Jak zrychlit WP pomocí cachovacích pluginůJak zrychlit WP pomocí cachovacích pluginů
Jak zrychlit WP pomocí cachovacích pluginů
 
TNPW2-2012-02
TNPW2-2012-02TNPW2-2012-02
TNPW2-2012-02
 

More from Vladimír Smitka

More from Vladimír Smitka (10)

Webmeetup #3
Webmeetup #3Webmeetup #3
Webmeetup #3
 
Co ukázal globální scan přístupných .git repozitářů?
Co ukázal globální scan přístupných .git repozitářů?Co ukázal globální scan přístupných .git repozitářů?
Co ukázal globální scan přístupných .git repozitářů?
 
Drobné chyby, které vám mohou zlomit vaz
Drobné chyby, které vám mohou zlomit vazDrobné chyby, které vám mohou zlomit vaz
Drobné chyby, které vám mohou zlomit vaz
 
Http/2 vs Image Sprites
Http/2 vs Image SpritesHttp/2 vs Image Sprites
Http/2 vs Image Sprites
 
Ansible
AnsibleAnsible
Ansible
 
WordPress Security: Defend yourself against digital invaders
WordPress Security:Defend yourself against digital invadersWordPress Security:Defend yourself against digital invaders
WordPress Security: Defend yourself against digital invaders
 
WordPress performance tuning
WordPress performance tuningWordPress performance tuning
WordPress performance tuning
 
České weby a Wordpress (Q4/2014)
České weby a Wordpress (Q4/2014)České weby a Wordpress (Q4/2014)
České weby a Wordpress (Q4/2014)
 
Dijskrův algoritmus
Dijskrův algoritmusDijskrův algoritmus
Dijskrův algoritmus
 
Sítě pro malé a střední podniky 2014
Sítě pro malé a střední podniky 2014Sítě pro malé a střední podniky 2014
Sítě pro malé a střední podniky 2014
 

Bezpečnost WP, tipy pro každého - wordCamp Praha 2015

  • 1. http://lynt.cz Bezpečnost Wordpressu, tipy pro každého Vláďa Smitka vladimir.smitka@lynt.cz @smitka (ale skoro nic nepíšu) Lynt services s.r.o.
  • 2. http://lynt.cz Obsah • Fakta a zamyšlení • Běžné útoky • Obnova po útoku • Bezpečnostní řetězec • Bezpečnostní pluginy 28. 2. 2015 2 „Wordpress je o pluginech“
  • 3. http://lynt.cz28. 2. 2015 3 Největší hrozba Otázka: „Jaká je podle tebe aktuálně největší bezpečnostní hrozba Wordpressových webů?“ Odpověď: „Neaktualizovaný Slider Revolution.“ http://blog.sucuri.net/2014/09/slider-revolution-plugin-critical-vulnerability-being-exploited.html verze 4.1.4 a nižší jsou extrémně nebezpečné • Pravděpodobně nejčastěji kradený plugin • Součást mnoha šablon, kde je však bez podpory a updatů • Stará verze neobsahuje autoupdate – nutno aktualizovat ručně! • Prvek, který se velmi snadno pozná
  • 4. http://lynt.cz28. 2. 2015 4 5 + 2 nejlepších bezpečnostních tipů Aktualizujte Zálohujte Používejte bezpečnostní plugin Buďte opatrní Smažte, co nepotřebujete a nedávejte světu moc informací Aktualizujte! AKTUALIZUJTE!!!
  • 5. http://lynt.cz WordCamp HACK kampaň • Během hodiny jsem nalezl 400 českých zranitelných Wordpress webů • Hledal jsem známé a již opravené chyby ve 3 populárních pluginech • Tvůrce/majitele jsem mailem informoval a pozval na WordCamp 28. 2. 2015 5
  • 6. http://lynt.cz Kdo mě chce napadnout? 28. 2. 2015 6 Roboti Anonymní hackeři Motivovaní hackeři Děti - script kiddies PhotobyLisa,CCBY-SA2.0
  • 7. http://lynt.cz Jak to udělá? 28. 2. 2015 7 Bezpečnostní chyba v pluginech a šablonách Brutal force útok na Admin Spam z komentářů (+pingbacky) Odchytnutí hesla a cookie Z jiných webů na hostingu Útok oklikou – phishing, malware (keylogger, uložené heslo FTP)Bezpečnostní chyba v jádru WP
  • 8. http://lynt.cz Co mi udělá a proč to dělá? 28. 2. 2015 8 • Cizí kód – Vloží spamové odkazy, reklamu, přesměrování – Nechají návštěvníky stahovat malware – Použijí web na DDOS a jiné útoky • Krádež informací – Získají osobní informace uživatelů webu • Omezení provozu – Odstaví web/server (DOS)
  • 9. http://lynt.cz Fakta 28. 2. 2015 9 http://www.akamai.com/stateoftheinternet/ 43% útoků přichází z Číny Potřebuji čínský traffic? Nemělo by smysl celou Čínu zablokovat? Zablokovat USA? Spíše ne, můžu zablokovat vyhledávače, CDN… Zablokovat vše mimo ČR? Určitě ne. IP geolokace není 100% přesná. Firemní uživatelé se mohou připojovat přes centrálu v jiné zemi. Čeští uživatelé mohou přistupovat např. z dovolené (dovolená v Číně?).
  • 11. http://lynt.cz Jak zablokovat Čínu? – na doma 28. 2. 2015 11 Seznam IP adres: http://www.ip2location.com/blockvisitorsbycountry.aspx • Iptables – Nepoužívat vygenerovanou konfiguraci – tisíce pravidel, skrze které musí projít každý packet – iptables -A INPUT -m tcp -m state --state NEW -j CHINA_WALL – Pokročilé: optimalizace – více chainů podle části IP • .htaccess/konfigurace nginx • mod_geoIP • Pluginy (např. placený Wordfence) • HW krabička • Další varianta – přístupy z blokovaných zemí přesměrovat na stránku s CAPTCHA //mod_geoIP v konfiguraci Apache GeoIPEnable On GeoIPDBFile /path/to/GeoIP.dat SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry Deny from env=BlockCountry //mod_geoIP v .htaccess RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CN|RU)$ RewriteRule ^(.*)$ - [F,L]
  • 12. http://lynt.cz Dělám nový web 28. 2. 2015 12 Aktuality: 1.4.2003 spustili jsme nový web!
  • 13. http://lynt.cz Priority při tvorbě webu 28. 2. 2015 13 Krása kolem toho se většinou točí celý vývoj webu Rychlost toho si všímáme, až když web běží Bezpečnost řešíme, až když se něco stane
  • 14. http://lynt.cz Co se stane když… • nám nabourají web? • přijdu o důvěrná data, ztratím důvěryhodnost, web nebude fungovat a bude penalizovaný • je web hrozivě pomalý? • návštěvníci jsou otrávení a mohou jít jinam, vyhledávače nebudou chtít indexovat • nemám na hlavní stránce slider se super efekty? • nic? 28. 2. 2015 14
  • 15. http://lynt.cz Opravdové priority z hlediska dopadu na business 28. 2. 2015 15 Bezpečnost Rychlost Krása
  • 16. http://lynt.cz Čas na praktické ukázky! 28. 2. 2015 16
  • 17. http://lynt.cz Slider Revolution - LFI • Verze 4.1.4 a nižší • Stažení libovolného zdrojového souboru z hostingu • Registrace všech Ajaxových volání pro privilegované i nepriveligované uživatele • /wp-admin/admin- ajax.php?action=revslider_show_image&img=../wp- config.php • Detaily: http://lynt.cz/blog/zranitelnost-ve-wordpress- pluginu-slider-revolution-4-1-4 28. 2. 2015 17
  • 18. http://lynt.cz FancyBox for Wordpress - XSS • Verze 3.0.2 a nižší • Vložení libovolného javascriptu na všechny stránky • Použití hooku admin_init bez dodatečné kontroly oprávnění (aktivuje se při každém dotazu do administrace – admin-ajax.php, admin-post.php) • /wp-admin/admin-ajax.php?page=fancybox-for- wordpress + proměnná mfbfw[padding]=</script><script>zlý kód</script> • Detaily: http://lynt.cz/blog/zranitelnost-ve-wordpress- pluginu-fancybox-for-wordpress-3-0-2 28. 2. 2015 18
  • 19. http://lynt.cz Mail Poet – Upload PHP • Verze 2.6.8 a nižší • Nahrání PHP souboru na web a jeho spuštění • Opět použití admin_init bez dodatečné kontroly skutečného oprávnění + chybné použití $_REQUEST v první opravě • /wp-admin/admin- post.php?page=wysija_campaigns&action=themeupl oad + proměnná my-theme = zlý zip • Detaily: http://lynt.cz/blog/zranitelnost-ve-wordpress- pluginu-mail-poet-2-6-8 28. 2. 2015 19
  • 20. http://lynt.cz Wordpress Video Gallery - SQLi • Verze 2.7 • SQL injection – získání libovolných dat z databáze • Špatně ošetřené uživatelské vstupy, dlouho bez opravy • /wp-admin/admin- ajax.php?action=rss&type=video&vid=-1 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21, 22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,3 9 FROM wp_users ;-- • Detaily: http://lynt.cz/blog/zranitelnost-ve-wordpress- pluginu-wordpress-video-gallery-2-7 28. 2. 2015 20
  • 21. http://lynt.cz Wordpress 3.9.2 - XSS „Wordpress verze 3.9.2 je v pohodě.“ Vladimír Smitka, 4. WP konference, listopad 2014 28. 2. 2015 21 „Co je bezpečné dnes, nemusí být bezpečné zítra.“ Vladimír Smitka, 4. WP konference, listopad 2014 • Obejití kontroly povolených tagů v komentářích • [<blockquote cite="]">[" onmouseover="alert('ojojoj!'); " style="background-color:red;position:absolute;top:0; left:0;height:100%;width:100%;"][<a href="]>ahojky
  • 22. http://lynt.cz Co mohlo snížit dopady? • Zabránění spouštění PHP ve složce /wp-content/uploads .htaccess v této složce: php_flag engine off 28. 2. 2015 22 Jiná možnost: <FilesMatch .php$> Order allow,deny Deny from all </FilesMatch> • Aktualizace • Blokace dotazů obsahujících wp-config.php Globální .htaccess: RewriteCond %{QUERY_STRING} wp-config.php RewriteRule ^(.*)$ - [F,L]
  • 23. http://lynt.cz Jak poznám, že mám i já zranitelný plugin? • Sleduji dění a vím • Plugin Vulnerabilities • https://wordpress.org/plugins/plugin-vulnerabilities/ 28. 2. 2015 23
  • 24. http://lynt.cz Jak to pozná útočník? • První, nejdelší a nejdůležitější část útoku, je průzkum (Reconnaissance) • WPScan – nejpoužívanější nástroj 28. 2. 2015 24
  • 25. http://lynt.cz Stalo se, byl jsem napaden! 28. 2. 2015 25
  • 26. http://lynt.cz Obnova po útoku • Obnova z čisté zálohy – Smazat starý web nahrát čistý • Přeinstalování + ruční dezinfekce – FAR • nejčastěji malware přidá kód do všech php souborů na webu • editor pro hromadné odstranění/nahrazení škodlivého kódu • v souborech však mohou být i další škodlivé kódy – Prohlédnutí SQL dumpu • Pokusit se nalézt <iframe, <script, x-shockwave-flash, eval, base64_decode, gzip_, preg_replace • Pokusit se identifikovat, zda jsou nálezy regulérní • Odstranění malware neřeší příčinu! 28. 2. 2015 26
  • 28. http://lynt.cz Checklist • Dezinfekce, odstranění příčiny (často aktualizace) • Změna hesla na FTP • Změna hesla do DB • Změna hesel uživatelů • Nové šifrovací klíče: https://api.wordpress.org/secret-key/1.1/salt/ – Od WP 3.1. se generují při instalaci define('AUTH_SALT', 'put your unique phrase here'); • Kontrola souborů pluginem (Wordfence, Sucuri Scanner) 28. 2. 2015 28
  • 29. http://lynt.cz Zálohování „Zálohování je alfou a omegou práce na počítači“ 28. 2. 2015 29 Ruční občas všechno někam stáhnu, není to ideální ale alespoň něco Zálohování řeší server ideální stav (zeptejte se svého webhostera jakým způsobem to má vyřešené) Zálohovací plugin kompromisní řešení, může však přinášet různé další benefity
  • 30. http://lynt.cz Zálohovací pluginy • BackWPup – pouze záloha - nemá obnovu, tu lze ale jednoduše udělat ručně – umí zálohu na více úložišť – lze spouštět externím voláním speciální URL • UpdraftPlus – záloha i obnova – záloha na jedno zvolené úložiště (Pro verze více) • BackupBuddy – pouze placená verze – kompletní řešení (migrace webů na jiné domény, obnova zálohy speciálním skriptem na novém hostingu, široká podpora externích úložišť, obnova jednotlivých souborů, zvládá serializovaná data) 28. 2. 2015 30
  • 31. http://lynt.cz Jak na zálohování pluginem? • Preferovat zálohu na externím úložišti • Pokud je na lokálním – zjistit kde a zkusit, zda se soubory záloh opravdu nedají otevřít z prohlížeče – ověřit zda se nezálohují zálohy samotné (vyjmout složku se zálohou ze zálohování) • Plánování záloh – WP-Cron – umí většina pluginů, spouští se pouze, když je na webu návštěvnost (lze ověřit pomocí Crontrol) – Externí spouštení – preferovaná cesta, je jistota, že se spustí (cron na serveru, minicron, online cron např. http://www.webcron.org/, https://www.setcronjob.com, https://www.easycron.com) • Nastavení upozornění mailem o proběhnuté záloze 28. 2. 2015 31
  • 33. http://lynt.cz Power! 28. 2. 2015 33 Jeremy Clarkson
  • 34. http://lynt.cz Jak pomoci výkonu zvýšit bezpečnost? • WP Super Cache – Mnoho útoků je typu (D)DoS – vyčerpají dostupné prostředky – Pokud použiji stránkovou Cache, budou vracet statické soubory a nebudu spotřebovávat výkon • Autoptimize – Skryji „prozrazující“ javascripty a css do jednoho souboru – Snížím počet požadavků na server – Pro některé skripty je třeba vytvořit výjimky (Google Maps) • Object Cache Backend (dropin) – Xcache, APC, APCu (Český hosting) – snižuje počet dotazů do databáze • Vedlejší účinky: rychlejší web, spokojenější návštěvníci, chutnější SEO 28. 2. 2015 34
  • 35. http://lynt.cz Bezpečnostní řetězec 28. 2. 2015 35 HTTP Server (Apache/Nginx) PHP Internet log Kde všude lze bezpečnost ovlivnit?
  • 36. http://lynt.cz Cloud 28. 2. 2015 36 HTTP Server (Apache/Nginx) PHP Internet Cloudové bezpečností služby (WAF)– útok se vůbec nedostane k serveru, jde přes ně veškerý provoz. Blokují útočící IP, pokusy o zneužití známých zranitelností, DDoS,… Incapsula, Sucuri, CloudFlare log
  • 37. http://lynt.cz Poskytovatel 28. 2. 2015 37 HTTP Server (Apache/Nginx) PHP Internet Security appliance/firewall poskytovatele – možnosti se liší, mnoho poskytovatelů tuto vrstvu nemá. Může snižovat dopady DDoS, blokovat pokusy o různé síťové útoky i filtrovat známe zranitelnosti. log
  • 38. http://lynt.cz Server 28. 2. 2015 38 HTTP Server (Apache/Nginx) PHP Internet Firewall serveru, WAF, nastavení – může blokovat určité síťové útoky, blokovat IP adresy (i celé rozsahy - státy). WAF – blokuje pokusy o útoky na weby (XSS, SQLi,…) – mod_security, naxsi. Omezuje práva k souborům, může hlídat jejich změny. Může řešit zálohování. log
  • 39. http://lynt.cz Server – na doma • Detekce změn v PHP souborech za posledních 24 hodin: find /srv/htdocs/muj_web/ -name '*.php' -type f -mtime -1 > output ; mail -s "Zmeny za poslednich 24hod" "vladimir.smitka@lynt.cz" < output 28. 2. 2015 39 root directory 755 wp-includes/ 755 .htaccess 644 wp-admin/index.php 644 wp-admin/js/ 755 wp-content/themes/ 755 wp-content/plugins/ 755 wp-admin/ 755 wp-content/ 755 wp-config.php 644 Práva souborů a složek dle All In One WP Security:Další seznam IP adres zemí: http://www.iwik.org/ipcountry/ Viz Blokace Číny Základ mod_security pro WP: http://blog.erben.sk/2015/02/11 /protecting-wordpress-with- mod-security/
  • 40. http://lynt.cz HTTP Server a PHP 28. 2. 2015 40 HTTP Server (Apache/Nginx) PHP Internet Bezpečnostní nastavení HTTP serveru a PHP – brání komunikaci mezi více weby na hostingu, může filtrovat nebezpečné URL, omezovat přístup k různým částem webu, vynucovat bezpečnou komunikaci, blokovat přístupy z určitých zemí (mod_geoip), zaznamenává problémy log
  • 41. http://lynt.cz Analýza logů 28. 2. 2015 41 HTTP Server (Apache/Nginx) PHP Internet Realtime analýza logů – pokud víte, že se něco děje, můžete reagovat. Samotný záznam v logu nic neznamená, je třeba vidět širší souvislosti. Logstash, ElasticSearch, Kibana log
  • 42. http://lynt.cz Ukázka z analýzy logů 28. 2. 2015 42 Něco se děje?
  • 43. http://lynt.cz Reakce na události 28. 2. 2015 43 HTTP Server (Apache/Nginx) PHP Internet Reakce na události v logu – blokace při nestandardních událostech – mnoho 404 v krátkém čase, neúspěšné pokusy o přihlášení, … Blokace ve firewallu, notifikace administrátora Fail2Ban log
  • 44. http://lynt.cz Fail2Ban – na doma 28. 2. 2015 44 • Některé funkce bezpečnostního pluginu můžeme posunout o úroveň níže • Např. detekci brutal force analýzou logů nebo 404 (může být dobré nelogovat statické soubory): • filter.d/wp-auth.conf # WordPress brute force auth filter: /etc/fail2ban/filter.d/wp-auth.conf: # # Block IPs trying to auth wp wordpress # # Matches e.g. # 178.63.72.184 - - [16/Oct/2014:11:40:50 +0200] "POST /wp-login.php HTTP/1.0" 200 1531 "-" "-" [Definition] failregex = ^<HOST> .* "POST /wp-login.php • jail.conf [wp-auth] enabled = true filter = wp-auth action = iptables-multiport[name=wp-auth, port="http,https", protocol=tcp] sendmail-whois[name=WPauth, dest=vladimir.smitka@lynt.cz, sendername="Fail2Ban"] logpath = /var/log/wordpress/access.*.log • Pozor na logrotate - /usr/bin/fail2ban-client reload wp-auth • Do WP exituje doplněk, který hlásí do logu neúspěšná přihlášení: https://wordpress.org/plugins/wp-fail2ban/
  • 45. http://lynt.cz Nastavení Wordpress 28. 2. 2015 45 HTTP Server (Apache/Nginx) PHP Internet Správné nastavení WP – vše aktualizované, kvalitní pluginy, použití bezpečnostního pluginu (blokuje přístupy do administrace, pokusy o skenování, nebezpečné URL, hlídá změny v souborech, může hledat nákazu, může skrýt/přesměrovat některé části webu) iThemes Security, All in One WP security & Firewall, WordFence log
  • 47. http://lynt.cz WordFence • Aktivní ochrana • Detekce botů, omezování provozu (HTTP 503) • Live traffic • Sken - kontrola souborů, známých infekcí, test zda je web na blacklistech • Cache • A samozřejmě: – Hlídání změn v souborech – Omezování chybných přihlášení – Omezování 404 – Blokace komentářového spamu 28. 2. 2015 47
  • 48. http://lynt.cz WordFence – po instalaci 28. 2. 2015 48 Level 2: začne posílat více upozornění, snižují se limity chybných přihlášení Level 3: se začínají uplatňovat omezování provozu Level 4: okamžitě blokuje neplatná jména
  • 49. http://lynt.cz WordFence – Live Traffic 28. 2. 2015 49
  • 50. http://lynt.cz WordFence – detekce změn 28. 2. 2015 50
  • 52. http://lynt.cz WordFence – bezpečnost přihlášení 28. 2. 2015 52 Tip: omezení získávání uživatelských jmen v .htaccess: RewriteCond %{QUERY_STRING} author= RewriteRule ^(.*)$ http://beznekam.cz? [L,R=301]
  • 53. http://lynt.cz WordFence – další nastavení 28. 2. 2015 53
  • 54. http://lynt.cz WordFence – další nastavení 28. 2. 2015 54
  • 55. http://lynt.cz WordFence Premium – Country blocking 28. 2. 2015 55
  • 56. http://lynt.cz WordFence Premium – další 28. 2. 2015 56 • Lepší ochrana proti spamu – používá aktuální databázi spamerů udržovanou Wordfence • Při scanu zjišťuje, zda se URL webu nevyskytuje ve spamových mailech – brzké varování • Při scanu ověřuje, zda není IP na blacklistech pro maily 2 fázová autentifikace pomocí SMS: Your Wordfence code is ABCDEF. – kód se vkládá za mezeru do hesla Lepší přes WP Google Authenticator Plánování scanu – lze nastavit častější kontroly (dobré, pokud mám více uživatelů s vyššími oprávněními)
  • 58. http://lynt.cz iThemes security • Prevence • Skrytí administrace, změna prefixu db • Filtrace zlých URL dotazů • Samozřejmě: – Blokace chybných pokusů o přihlášení a 404 – Hlídání změn v souborech – Blokace komentářového spamu 28. 2. 2015 58
  • 59. http://lynt.cz iThemes Security – po instalaci 28. 2. 2015 59 One-Click – nastaví omezení počtu přihlášení, vynutí silná hesla, skryje některé info
  • 60. http://lynt.cz iThemes Security – API Key 28. 2. 2015 60
  • 61. http://lynt.cz iThemes Security - přehled 28. 2. 2015 61
  • 62. http://lynt.cz iThemes security - nastavení • Global Settings – Write to Files - Allow iThemes Security to write to wp- config.php and .htaccess – pokud nepovolím, mohu příslušné sekce nakopírovat z dashboardu pluginu – Lockout White List – vhodné zadat svou IP – Log Type - Database Only (malé weby, log je pak dostupný na záložce Logs), File Only (velké weby, vhodné také pro zpracování fail2ban) – Path to Log Files - cesta k logům při File Only, pokud je možnost přístupu mimo složku webu, tak je umístit mimo, pokud ne, lze nechat výchozí (lépe ale jméno složky změnit) • 404 detection – Enable 404 detection – zablokuje násilné skenování 28. 2. 2015 62 Červené = dle mého názoru nejdůležitější nastavení
  • 63. http://lynt.cz iThemes security - nastavení • Away Mode - možno nastavit dostupnost administrace např. jen na pracovní dobu... • Banned Users – Default Blacklist - Enable HackRepair.com's blacklist feature - možno povolit - přidá známé útočící useragenty do .htaccess – Enable ban Users - můžeme si dodefinovat vlastní blokované useragenty a IP (spolupracuje s Enable Blacklist Repeat Offender v Global settings) 28. 2. 2015 63
  • 64. http://lynt.cz iThemes security - nastavení • Brute Force Protection – Get your iThemes Brute Force Protection API Key - iThemes získá přístup k globálnímu blacklistu útočících IP adres na iThemes.com – Enable iThemes Brute Force Network Protection – povolí ochranu dle globálního blacklistu – Enable local brute force protection - blokuje hádání hesel do administrace – tvoří vlastní blacklist (blokace jsou uloženy v tabulce _itsec_lockouts) – Automatically ban "admin" user - Immediately ban a host that attempts to login using the "admin" username - pokud mám přejmenovaného admina, tak to může být dobrá nástraha  - jakmile se někdo pokusí přihlásit jako uživatel admin, je okamžitě zablokován 28. 2. 2015 64
  • 65. http://lynt.cz iThemes security - nastavení • Database Backups – Backup Method - Email Only (bude posílat zálohu mailem), Save local only - pouze pokud mohu uložit zálohu mimo složku webu (Backup Location) – Schedule Database Backups - Enable Scheduled Database Backups – automatické vytváření záloh/jinak pouze ručně na záložce Backups – Zálohuje pouze DB. Raději bych použil jiné zálohovací řešení mimo WP i se soubory. • File Change Detection – File Change Detection - Enable File Change detection – Split File Scanning - Split file checking into chunks – vhodné pokud mám méně RAM - generuje ale více emailů – Files and Folders List - pokud používáme cachovací plugin, tak je vhodné zde jeho složku vyjmout • Hide Login Area – Hide Backend- Enable the hide backend feature – přesměruje /wp-admin na jinou adresu – Login Slug – nová adresa administrace - např. admin5547, nebo česky administrace – Enable Theme Compatibility - Enable theme compatibility – zapnout, pokud přesměrování administrace způsobí nefunkčnost některých šablon a pluginů – Přesměrování administrace je dobré dělat až v druhé vlně ladění - neprovádět více změn naráz 28. 2. 2015 65
  • 66. http://lynt.cz iThemes security - nastavení • Malware Scanning – Enable Malware scanning - po vložení API klíče z VirusTotal.com může nechat jednorázově otestovat homepage, zda se nenachází na cca 60 blacklistech (Sucuri SiteCheck, Google Safebrowsing,...) • Secure Soceket Layers (SSL) – nastavení pro vynucení SSL přístupu do administrace - vhodné nejprve otestovat, zda je administrace přes https správně dostupná • Strong Passwords – Strong Passwords - Enable strong password enforcement - Vynutí používání silných hesel (původní slabá hesla zůstávají) – Select Role for Strong Passwords - pro jaké role vyžadujete silná hesla (minimálně Šéfredaktor – může vkládat JS do komentářů, ale klidně už od Návštěvníka) 28. 2. 2015 66
  • 67. http://lynt.cz iThemes security - nastavení • System Tweaks – System Files - protect System Files - zakáže přístup z internetu přímo k důležitým souborům a k souborům, které prozrazují informace – Suspicious Query Strings - Filter Suspicious Query Strings in the URL - může zabránit jednoduchým SQL injections (pozor, chyba u nginx – viz další slidy) – Long URL Strings - Filter Long URL Strings - blokuje příliš dlouhé URL (nad 255 znaků), dále také blokuje URL obsahující funkce eval a base64 a union select (podobnou funkci plní samostatný plugin Block Bad Queries (BBQ)) + je dobré přidat blokaci query obsahující wp-config.php – Non-English Characters - Filter Non-English Characters - v českém prostředí znefunkční vyhledávání s diakritikou – File Writing Permissions – nastaví práva pro .htaccess a wp-config.php – lepší si to nastavit sám a podrobněji – Uploads - Disable PHP in Uploads – zakáže PHP ve složce s uploady 28. 2. 2015 67
  • 68. http://lynt.cz iThemes security - nastavení • System Tweaks – Generator Meta Tag + Display Random Version - pokusí se zamaskovat verzi WP, jde to udělat lépe – viz další slidy – Windows Live Writer Header & EditURI Header – hlavičky pro integraci s dalšími službami a aplikacemi – jsou potřeba jen zřídka – Comment Spam - kontroluje, zda byl komentář vložen z našeho webu (případně z wordpress.com) + blokuje komentáře od botů, kteří nemají vyplněn user-agent – File Editor – vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config) – XML-RPC - při "Completely Disable XMLRPC" zakáže veškeré XML-RPC požadavky, např. trackbacky (pro bezpečné použití trackbacků mohu použít plugin https://wordpress.org/plugins/simple-trackback-validation-with-topsy- blocker/) – Login Error Messages - přestane ukazovat hlášky o chybném přihlášení – Force Unique Nickname - nutí uživatele zvolit jiný nickname než je jeho přihlašovací jméno (není tak přímo vidět uživatelský účet) – Disable Extra User Archives - skryje uživatele, kteří nepíšou články (admini,...) 28. 2. 2015 68
  • 69. http://lynt.cz iThemes security – další funkce • „Pokročilé funkce“ – Advanced – Admin user – umožňuje přejmenovat uživatele admin na jiné, hůře odhadnutelné jméno • Lepší je vytvořit nového uživatele s admin právy, přihlásit se na něj a původního admina smazat (WP nabídne převedení jeho příspěvků na jiného uživatele) – Change content directory – přejmenování složky wp- content, může přinést problémy a brání pouze některým automatizovaným útokům (správnou složku lze jednoduše vyčíst z kódu stránky) – Change database prefix – pokud se nechal při instalaci default wp_, tak je možné ho zde změnit • Automatizovaný nástroj, ručně je to složitější 28. 2. 2015 69
  • 70. http://lynt.cz iThemes security – poznámky na doma Suspicious Query Strings v Nginx: set $susquery 0; if ($args ~* "wp-config.php") { set $susquery 1; } #navíc blokace při pokusu stažení wp-config.php if ($args ~* "../") { set $susquery 1; } if ($args ~* ".(bash|git|hg|log|svn|swp|cvs)") { set $susquery 1; } if ($args ~* "etc/passwd") { set $susquery 1; } if ($args ~* "boot.ini") { set $susquery 1; } if ($args ~* "ftp:") { set $susquery 1; } if ($args ~* "http:") { set $susquery 1; } if ($args ~* "https:") { set $susquery 1; } if ($args ~* "(<|%3C).*script.*(>|%3E)") { set $susquery 1; } if ($args ~* "mosConfig_[a-zA-Z_]{1,21}(=|%3D)") { set $susquery 1; } if ($args ~* "base64_encode") { set $susquery 1; } if ($args ~* "(%24&x)") { set $susquery 1; } if ($args ~* "(&#x22;|&#x27;|&#x3C;|&#x3E;|&#x5C;|&#x7B;|&#x7C;|%24&x)"){ set $susquery 1; } if ($args ~* "(127.0)") { set $susquery 1; } if ($args ~* "(globals|encode|localhost|loopback)") { set $susquery 1; } if ($args ~* "(request|insert|concat|union|declare)") { set $susquery 1; } if ($args !~ "^loggedout=true"){ set $susquery 0; } # <= špatná logika, má zde být ~* if ($args !~ "^action=jetpack-sso"){ set $susquery 0; } # <= špatná logika, má zde být ~* if ($args !~ "^action=rp"){ set $susquery 0; } # <= špatná logika, má zde být ~* if ($http_cookie !~ "^.*wordpress_logged_in_.*$"){ set $susquery 0; } # <= špatná logika, má zde být ~* if ($http_referer !~ "^http://maps.googleapis.com(.*)$"){ set $susquery 0; } # <= špatná logika, má zde být ~* if ($susquery = 1) { return 403; } 28. 2. 2015 70 Přidání blokace wp-config.php do .htaccess: RewriteCond %{QUERY_STRING} wp-config.php [NC,OR]
  • 71. http://lynt.cz iThemes security – poznámky na doma Lepší odstranění viditelnosti verze WP než v pluginu: Do functions.php nebo plugin do mu-plugins: function remove_wp_version() { return ; } add_filter('the_generator', remove_wp_version'); 28. 2. 2015 71 Odbočka – MU-plugins (Must Use Plugins) Málo známá funkcionalita WP – jedná se o speciální složku: /wp-content/mu-plugins Skripty/pluginy v této složce jsou automaticky spouštěny a nelze je v administraci deaktivovat. Hodí se to pro různá bezpečnostní nastavení, např. pokud chceme automatické updaty pluginů a šablon pomocí filtrů – mnoho autorů je dává do wp-config/functions.php – správně mají být zde. add_filter( 'auto_update_plugin', '__return_true' ); add_filter( 'auto_update_theme', '__return_true' );
  • 72. http://lynt.cz Uživatelé 28. 2. 2015 72 HTTP Server (Apache/Nginx) PHP Internet Chování uživatelů a správců – silná hesla, připojování z důvěryhodných sítí, zálohování, antivir, kontrola certifikátů, odolnost phishingu log
  • 73. http://lynt.cz Tipy pro správce WP • Nastavte přístup do administrace přes HTTPS – https://wordpress.org/plugins/wordpress-https/ – dobrý je i přístup přes VPN, pokud je to možné • Opravdu pravidelně zálohujte – soubory i databázi • Netestujte pluginy na produkčním webu • Smažte co nepotřebujete • Přidělujte uživatelům oprávnění, která opravdu potřebují • Pokud máte více webů, používejte systém pro hromadnou správu a aktualizaci (InfiniteWP, ManageWP), pokud méně použijte plugin WP Updates Notifier • Udržujte si seznam všech použitých pluginů a šablon • Pokud vám vývojář řekl: „hlavně neaktualizuje“, chtějte vědět proč (např. si vyžádejte patch soubory se změnami, co provedl), většinou k tomu není zásadní důvod! 28. 2. 2015 73
  • 74. http://lynt.cz Tipy pro každého • Používejte silná hesla (používejte password manager např. Keepass) • Pozor na špatné certifikáty: • Používejte kvalitní a aktualizovaný antivir • Nepřipojujte se z neznámých WiFi • Smažte z mobilu/tabletu/notebooku všechny uložené sítě, ke kterým se připojuje bez hesla • Nedůvěřujte všemu, co přijde mailem 28. 2. 2015 74
  • 75. http://lynt.cz Phishing Předmět: Máňa Datum: Sat, 28 Feb 2015 14:32:48 +0200 Od: Máňa <mana@sezn.am> Komu: <ty> Dobrý den. Omlouvám se za nežádoucí obtěžování a přeposílám Vám vaše doklady a smlouvu které asi na můj email byly zaslané omylem. Teda aspoň předpokládám že přesměruji správně jelikož Váš email byl uvedený ve smlouvě. Veškeré Doklady a smlouvu odesílám přílohou stejně jak jsem to dostala. Prosím o zjištění důvodu tohoto trapného omylu aby příště na můj email se nedostávali další zprávy obsahující nějakou citlivou informaci. S pozdravem, Máňa 28. 2. 2015 75
  • 76. http://lynt.cz Phishing Předmět: Bezpečnostní problém Hodný Hosting [9314001612] Datum: Sat, 28 Feb 2015 14:32:48 +0200 Od: Hodný Hosting <hosting@hod.ny> Komu: <ty> Vážený zákazníku, Na Vaší webové prezentaci tvujweb.cz založené na redakčním systému Wordpress byl zjištěna škodlivý kód, který masivně útočí na další weby a infikuje návštěvníky. Neprodleně nainstalujte náš antivirový plugin Super-WP-Antivir, který naleznete v příloze i s návodem k instalaci. V opačném případě budeme bohužel nuceni Vaši webovou prezentaci pozastavit. Hodný Hosting, Ltd. 28. 2. 2015 76
  • 77. http://lynt.cz Další zdroje • Info o zranitelnostech • https://www.owasp.org/ • https://wpvulndb.com/ • http://blog.sucuri.net/ • http://packetstormsecurity.com/ • Hodnocení pluginů: • http://www.rankwp.com/ 28. 2. 2015 77
  • 78. http://lynt.cz Domácí úkol na zítra □ Zkontrolovat, zda nemám zranitelné pluginy □ Zkontrolovat, zda mám vygenerované unikátní šifrovací klíče ve wp-config.php □ Zazálohovat □ Smazat pluginy, co nepoužívám/byly jen k jednorázové činnosti □ Smazat zbytečné šablony (nechat jen jednu výchozí z instalace a případně rodičovskou) □ Snížit oprávnění uživatelům, kteří jej nepotřebují □ Aktualizovat, co je možné 28. 2. 2015 78
  • 79. http://lynt.cz A to je vše, přátelé. Bezpečnou cestu domů/na afterparty! 28. 2. 2015 79 aktualizujte, zálohujte, používejte bezpečnostní plugin, buďte opatrní

Editor's Notes

  1. 8 minut
  2. 16 min
  3. 24 min
  4. 30 min
  5. 40min