Upload
vladimir-smitka
View
836
Download
4
Embed Size (px)
Citation preview
httplyntcz
Bezpečnost Wordpressu
Vlaacuteďa Smitka
vladimirsmitkalyntcz
smitka (ale skoro nic nepiacutešu)
Lynt services sro
29 11 2014 1
httplyntcz
Skrytaacute reklama
29 11 2014 2
Kvalita spraacutevce online kampaniacute je přiacutemo uacuteměrnaacute počtu beanbagů od Google -)
maximum v ČR jsou 2 a ty majiacute jen 2 firmy
httplyntcz
Kdo jste
29 11 2014 3
Spraacutevci serverů
bull Spravuji firewall
bull Nastavuji ApacheNginxIIS
Vyacutevojaacuteři
bull Upravuji si šablony a pluginy v PHP
bull Piacutešu si vlastniacute doplňky
Uživateleacute
bull Koupiacutem šablonu nahraji paacuter pluginů
bull Jen si upravuji texty zbytek řešiacute někdo jinyacute
httplyntcz
6 nejlepšiacutech rad
29 11 2014 4
Aktualizujte
Zaacutelohujte
Použiacutevejte bezpečnostniacute plugin
Buďte opatrniacute
Smažte co nepotřebujete
Nedaacutevejte světu moc informaciacute
httplyntcz
Největšiacute hrozba
29 11 2014 5
Otaacutezka bdquoJakaacute je podle tebe aktuaacutelně největšiacute
bezpečnostniacute hrozba Wordpressovyacutech webůldquo
Odpověď bdquoNeaktualizovanyacute Slider Revolutionldquo
httpblogsucurinet201409slider-revolution-plugin-critical-vulnerability-being-exploitedhtml
verze pod 42 jsou extreacutemně nebezpečneacute
bull Pravděpodobně nejčastěji kradenyacute pluginbull Součaacutest mnoha šablon kde je však bez podpory a updatůbull Neobsahuje autoupdate ndash nutno aktualizovat ručněbull Prvek kteryacute se velmi snadno poznaacute
httplyntcz
Bezpečnost
29 11 2014 6
Zapni
BEZPEČNOST
httplyntcz
Bezpečnost
29 11 2014 7
jednoduchost bezpečnost
Co je bezpečneacute dnes nemusiacute byacutet bezpečneacute ziacutetra
httplyntcz
Fakta
29 11 2014 8
httpwwwakamaicomstateoftheinternet
43 uacutetoků přichaacuteziacute z ČiacutenyPotřebuji čiacutenskyacute trafficNemělo by smysl celou Čiacutenu zablokovat
Zablokovat USASpiacuteše ne můžu zablokovat vyhledaacutevače CDNhellip
Zablokovat vše mimo ČRUrčitě ne IP geolokace neniacute 100 přesnaacuteFiremniacute uživateleacute se mohou připojovat přes centraacutelu v jineacute zemiČeštiacute uživateleacute mohou přistupovat např z dovoleneacute (dovolenaacute v Čiacuteně)
httplyntcz
Posledniacute měsiacutec na jednom z našich serverů
29 11 2014 9
Jednaacute se teacuteměř o 1000 unikaacutetniacutech IP adres ktereacute se pokoušely laacutemat hesla
Pokud bychom zahrnuli opakovaneacute uacutetoky jednaacute se o čiacuteslo teacuteměř 3x většiacute Čiacutena by zde měla 56 podiacutel
httplyntcz29 11 2014 10
httplyntcz
Jak zablokovat Čiacutenu
29 11 2014 11
Seznam IP adres httpwwwip2locationcomblockvisitorsbycountryaspx
bull Iptablesndash Nepoužiacutevat vygenerovanou konfiguraci ndash tisiacutece pravidel
skrze ktereacute musiacute projiacutet každyacute packetndash iptables -A INPUT -m tcp -m state --state NEW -j
CHINA_WALLndash Pokročileacute optimalizace ndash viacutece chainů podle čaacutesti IP
bull htaccesskonfigurace nginxbull mod_geoIPbull Pluginy (např placenyacute Wordfence)bull HW krabička
bull Dalšiacute varianta ndash přiacutestupy z blokovanyacutech zemiacute přesměrovat na straacutenku s CAPTCHA
httplyntcz
Aktualizovanyacute Wordpress v zaacutekladu
29 11 2014 12
jednoduchost bezpečnost
httplyntcz
Jak jsme na tom s WP v ČR
bull Udělal jsem průzkum 1000 nejnavštěvovanějšiacutech českyacutech webů
bull Zkoumal jsem jakeacute technologie použiacutevajiacute a kolik z nich běžiacute na Wordpressu
bull Pro hrubeacute zhodnoceniacute bezpečnosti jsem zkoumal jakou verzi WP použiacutevajiacute
bull Namaacutetkově jsem několik webů prozkoumal podrobněji
29 11 2014 13
httplyntcz
Technologie webů
29 11 2014 14
httplyntcz
CMS a frameworky
29 11 2014 15
httplyntcz
Verze Wordpress
29 11 2014 16
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Skrytaacute reklama
29 11 2014 2
Kvalita spraacutevce online kampaniacute je přiacutemo uacuteměrnaacute počtu beanbagů od Google -)
maximum v ČR jsou 2 a ty majiacute jen 2 firmy
httplyntcz
Kdo jste
29 11 2014 3
Spraacutevci serverů
bull Spravuji firewall
bull Nastavuji ApacheNginxIIS
Vyacutevojaacuteři
bull Upravuji si šablony a pluginy v PHP
bull Piacutešu si vlastniacute doplňky
Uživateleacute
bull Koupiacutem šablonu nahraji paacuter pluginů
bull Jen si upravuji texty zbytek řešiacute někdo jinyacute
httplyntcz
6 nejlepšiacutech rad
29 11 2014 4
Aktualizujte
Zaacutelohujte
Použiacutevejte bezpečnostniacute plugin
Buďte opatrniacute
Smažte co nepotřebujete
Nedaacutevejte světu moc informaciacute
httplyntcz
Největšiacute hrozba
29 11 2014 5
Otaacutezka bdquoJakaacute je podle tebe aktuaacutelně největšiacute
bezpečnostniacute hrozba Wordpressovyacutech webůldquo
Odpověď bdquoNeaktualizovanyacute Slider Revolutionldquo
httpblogsucurinet201409slider-revolution-plugin-critical-vulnerability-being-exploitedhtml
verze pod 42 jsou extreacutemně nebezpečneacute
bull Pravděpodobně nejčastěji kradenyacute pluginbull Součaacutest mnoha šablon kde je však bez podpory a updatůbull Neobsahuje autoupdate ndash nutno aktualizovat ručněbull Prvek kteryacute se velmi snadno poznaacute
httplyntcz
Bezpečnost
29 11 2014 6
Zapni
BEZPEČNOST
httplyntcz
Bezpečnost
29 11 2014 7
jednoduchost bezpečnost
Co je bezpečneacute dnes nemusiacute byacutet bezpečneacute ziacutetra
httplyntcz
Fakta
29 11 2014 8
httpwwwakamaicomstateoftheinternet
43 uacutetoků přichaacuteziacute z ČiacutenyPotřebuji čiacutenskyacute trafficNemělo by smysl celou Čiacutenu zablokovat
Zablokovat USASpiacuteše ne můžu zablokovat vyhledaacutevače CDNhellip
Zablokovat vše mimo ČRUrčitě ne IP geolokace neniacute 100 přesnaacuteFiremniacute uživateleacute se mohou připojovat přes centraacutelu v jineacute zemiČeštiacute uživateleacute mohou přistupovat např z dovoleneacute (dovolenaacute v Čiacuteně)
httplyntcz
Posledniacute měsiacutec na jednom z našich serverů
29 11 2014 9
Jednaacute se teacuteměř o 1000 unikaacutetniacutech IP adres ktereacute se pokoušely laacutemat hesla
Pokud bychom zahrnuli opakovaneacute uacutetoky jednaacute se o čiacuteslo teacuteměř 3x většiacute Čiacutena by zde měla 56 podiacutel
httplyntcz29 11 2014 10
httplyntcz
Jak zablokovat Čiacutenu
29 11 2014 11
Seznam IP adres httpwwwip2locationcomblockvisitorsbycountryaspx
bull Iptablesndash Nepoužiacutevat vygenerovanou konfiguraci ndash tisiacutece pravidel
skrze ktereacute musiacute projiacutet každyacute packetndash iptables -A INPUT -m tcp -m state --state NEW -j
CHINA_WALLndash Pokročileacute optimalizace ndash viacutece chainů podle čaacutesti IP
bull htaccesskonfigurace nginxbull mod_geoIPbull Pluginy (např placenyacute Wordfence)bull HW krabička
bull Dalšiacute varianta ndash přiacutestupy z blokovanyacutech zemiacute přesměrovat na straacutenku s CAPTCHA
httplyntcz
Aktualizovanyacute Wordpress v zaacutekladu
29 11 2014 12
jednoduchost bezpečnost
httplyntcz
Jak jsme na tom s WP v ČR
bull Udělal jsem průzkum 1000 nejnavštěvovanějšiacutech českyacutech webů
bull Zkoumal jsem jakeacute technologie použiacutevajiacute a kolik z nich běžiacute na Wordpressu
bull Pro hrubeacute zhodnoceniacute bezpečnosti jsem zkoumal jakou verzi WP použiacutevajiacute
bull Namaacutetkově jsem několik webů prozkoumal podrobněji
29 11 2014 13
httplyntcz
Technologie webů
29 11 2014 14
httplyntcz
CMS a frameworky
29 11 2014 15
httplyntcz
Verze Wordpress
29 11 2014 16
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Kdo jste
29 11 2014 3
Spraacutevci serverů
bull Spravuji firewall
bull Nastavuji ApacheNginxIIS
Vyacutevojaacuteři
bull Upravuji si šablony a pluginy v PHP
bull Piacutešu si vlastniacute doplňky
Uživateleacute
bull Koupiacutem šablonu nahraji paacuter pluginů
bull Jen si upravuji texty zbytek řešiacute někdo jinyacute
httplyntcz
6 nejlepšiacutech rad
29 11 2014 4
Aktualizujte
Zaacutelohujte
Použiacutevejte bezpečnostniacute plugin
Buďte opatrniacute
Smažte co nepotřebujete
Nedaacutevejte světu moc informaciacute
httplyntcz
Největšiacute hrozba
29 11 2014 5
Otaacutezka bdquoJakaacute je podle tebe aktuaacutelně největšiacute
bezpečnostniacute hrozba Wordpressovyacutech webůldquo
Odpověď bdquoNeaktualizovanyacute Slider Revolutionldquo
httpblogsucurinet201409slider-revolution-plugin-critical-vulnerability-being-exploitedhtml
verze pod 42 jsou extreacutemně nebezpečneacute
bull Pravděpodobně nejčastěji kradenyacute pluginbull Součaacutest mnoha šablon kde je však bez podpory a updatůbull Neobsahuje autoupdate ndash nutno aktualizovat ručněbull Prvek kteryacute se velmi snadno poznaacute
httplyntcz
Bezpečnost
29 11 2014 6
Zapni
BEZPEČNOST
httplyntcz
Bezpečnost
29 11 2014 7
jednoduchost bezpečnost
Co je bezpečneacute dnes nemusiacute byacutet bezpečneacute ziacutetra
httplyntcz
Fakta
29 11 2014 8
httpwwwakamaicomstateoftheinternet
43 uacutetoků přichaacuteziacute z ČiacutenyPotřebuji čiacutenskyacute trafficNemělo by smysl celou Čiacutenu zablokovat
Zablokovat USASpiacuteše ne můžu zablokovat vyhledaacutevače CDNhellip
Zablokovat vše mimo ČRUrčitě ne IP geolokace neniacute 100 přesnaacuteFiremniacute uživateleacute se mohou připojovat přes centraacutelu v jineacute zemiČeštiacute uživateleacute mohou přistupovat např z dovoleneacute (dovolenaacute v Čiacuteně)
httplyntcz
Posledniacute měsiacutec na jednom z našich serverů
29 11 2014 9
Jednaacute se teacuteměř o 1000 unikaacutetniacutech IP adres ktereacute se pokoušely laacutemat hesla
Pokud bychom zahrnuli opakovaneacute uacutetoky jednaacute se o čiacuteslo teacuteměř 3x většiacute Čiacutena by zde měla 56 podiacutel
httplyntcz29 11 2014 10
httplyntcz
Jak zablokovat Čiacutenu
29 11 2014 11
Seznam IP adres httpwwwip2locationcomblockvisitorsbycountryaspx
bull Iptablesndash Nepoužiacutevat vygenerovanou konfiguraci ndash tisiacutece pravidel
skrze ktereacute musiacute projiacutet každyacute packetndash iptables -A INPUT -m tcp -m state --state NEW -j
CHINA_WALLndash Pokročileacute optimalizace ndash viacutece chainů podle čaacutesti IP
bull htaccesskonfigurace nginxbull mod_geoIPbull Pluginy (např placenyacute Wordfence)bull HW krabička
bull Dalšiacute varianta ndash přiacutestupy z blokovanyacutech zemiacute přesměrovat na straacutenku s CAPTCHA
httplyntcz
Aktualizovanyacute Wordpress v zaacutekladu
29 11 2014 12
jednoduchost bezpečnost
httplyntcz
Jak jsme na tom s WP v ČR
bull Udělal jsem průzkum 1000 nejnavštěvovanějšiacutech českyacutech webů
bull Zkoumal jsem jakeacute technologie použiacutevajiacute a kolik z nich běžiacute na Wordpressu
bull Pro hrubeacute zhodnoceniacute bezpečnosti jsem zkoumal jakou verzi WP použiacutevajiacute
bull Namaacutetkově jsem několik webů prozkoumal podrobněji
29 11 2014 13
httplyntcz
Technologie webů
29 11 2014 14
httplyntcz
CMS a frameworky
29 11 2014 15
httplyntcz
Verze Wordpress
29 11 2014 16
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
6 nejlepšiacutech rad
29 11 2014 4
Aktualizujte
Zaacutelohujte
Použiacutevejte bezpečnostniacute plugin
Buďte opatrniacute
Smažte co nepotřebujete
Nedaacutevejte světu moc informaciacute
httplyntcz
Největšiacute hrozba
29 11 2014 5
Otaacutezka bdquoJakaacute je podle tebe aktuaacutelně největšiacute
bezpečnostniacute hrozba Wordpressovyacutech webůldquo
Odpověď bdquoNeaktualizovanyacute Slider Revolutionldquo
httpblogsucurinet201409slider-revolution-plugin-critical-vulnerability-being-exploitedhtml
verze pod 42 jsou extreacutemně nebezpečneacute
bull Pravděpodobně nejčastěji kradenyacute pluginbull Součaacutest mnoha šablon kde je však bez podpory a updatůbull Neobsahuje autoupdate ndash nutno aktualizovat ručněbull Prvek kteryacute se velmi snadno poznaacute
httplyntcz
Bezpečnost
29 11 2014 6
Zapni
BEZPEČNOST
httplyntcz
Bezpečnost
29 11 2014 7
jednoduchost bezpečnost
Co je bezpečneacute dnes nemusiacute byacutet bezpečneacute ziacutetra
httplyntcz
Fakta
29 11 2014 8
httpwwwakamaicomstateoftheinternet
43 uacutetoků přichaacuteziacute z ČiacutenyPotřebuji čiacutenskyacute trafficNemělo by smysl celou Čiacutenu zablokovat
Zablokovat USASpiacuteše ne můžu zablokovat vyhledaacutevače CDNhellip
Zablokovat vše mimo ČRUrčitě ne IP geolokace neniacute 100 přesnaacuteFiremniacute uživateleacute se mohou připojovat přes centraacutelu v jineacute zemiČeštiacute uživateleacute mohou přistupovat např z dovoleneacute (dovolenaacute v Čiacuteně)
httplyntcz
Posledniacute měsiacutec na jednom z našich serverů
29 11 2014 9
Jednaacute se teacuteměř o 1000 unikaacutetniacutech IP adres ktereacute se pokoušely laacutemat hesla
Pokud bychom zahrnuli opakovaneacute uacutetoky jednaacute se o čiacuteslo teacuteměř 3x většiacute Čiacutena by zde měla 56 podiacutel
httplyntcz29 11 2014 10
httplyntcz
Jak zablokovat Čiacutenu
29 11 2014 11
Seznam IP adres httpwwwip2locationcomblockvisitorsbycountryaspx
bull Iptablesndash Nepoužiacutevat vygenerovanou konfiguraci ndash tisiacutece pravidel
skrze ktereacute musiacute projiacutet každyacute packetndash iptables -A INPUT -m tcp -m state --state NEW -j
CHINA_WALLndash Pokročileacute optimalizace ndash viacutece chainů podle čaacutesti IP
bull htaccesskonfigurace nginxbull mod_geoIPbull Pluginy (např placenyacute Wordfence)bull HW krabička
bull Dalšiacute varianta ndash přiacutestupy z blokovanyacutech zemiacute přesměrovat na straacutenku s CAPTCHA
httplyntcz
Aktualizovanyacute Wordpress v zaacutekladu
29 11 2014 12
jednoduchost bezpečnost
httplyntcz
Jak jsme na tom s WP v ČR
bull Udělal jsem průzkum 1000 nejnavštěvovanějšiacutech českyacutech webů
bull Zkoumal jsem jakeacute technologie použiacutevajiacute a kolik z nich běžiacute na Wordpressu
bull Pro hrubeacute zhodnoceniacute bezpečnosti jsem zkoumal jakou verzi WP použiacutevajiacute
bull Namaacutetkově jsem několik webů prozkoumal podrobněji
29 11 2014 13
httplyntcz
Technologie webů
29 11 2014 14
httplyntcz
CMS a frameworky
29 11 2014 15
httplyntcz
Verze Wordpress
29 11 2014 16
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Největšiacute hrozba
29 11 2014 5
Otaacutezka bdquoJakaacute je podle tebe aktuaacutelně největšiacute
bezpečnostniacute hrozba Wordpressovyacutech webůldquo
Odpověď bdquoNeaktualizovanyacute Slider Revolutionldquo
httpblogsucurinet201409slider-revolution-plugin-critical-vulnerability-being-exploitedhtml
verze pod 42 jsou extreacutemně nebezpečneacute
bull Pravděpodobně nejčastěji kradenyacute pluginbull Součaacutest mnoha šablon kde je však bez podpory a updatůbull Neobsahuje autoupdate ndash nutno aktualizovat ručněbull Prvek kteryacute se velmi snadno poznaacute
httplyntcz
Bezpečnost
29 11 2014 6
Zapni
BEZPEČNOST
httplyntcz
Bezpečnost
29 11 2014 7
jednoduchost bezpečnost
Co je bezpečneacute dnes nemusiacute byacutet bezpečneacute ziacutetra
httplyntcz
Fakta
29 11 2014 8
httpwwwakamaicomstateoftheinternet
43 uacutetoků přichaacuteziacute z ČiacutenyPotřebuji čiacutenskyacute trafficNemělo by smysl celou Čiacutenu zablokovat
Zablokovat USASpiacuteše ne můžu zablokovat vyhledaacutevače CDNhellip
Zablokovat vše mimo ČRUrčitě ne IP geolokace neniacute 100 přesnaacuteFiremniacute uživateleacute se mohou připojovat přes centraacutelu v jineacute zemiČeštiacute uživateleacute mohou přistupovat např z dovoleneacute (dovolenaacute v Čiacuteně)
httplyntcz
Posledniacute měsiacutec na jednom z našich serverů
29 11 2014 9
Jednaacute se teacuteměř o 1000 unikaacutetniacutech IP adres ktereacute se pokoušely laacutemat hesla
Pokud bychom zahrnuli opakovaneacute uacutetoky jednaacute se o čiacuteslo teacuteměř 3x většiacute Čiacutena by zde měla 56 podiacutel
httplyntcz29 11 2014 10
httplyntcz
Jak zablokovat Čiacutenu
29 11 2014 11
Seznam IP adres httpwwwip2locationcomblockvisitorsbycountryaspx
bull Iptablesndash Nepoužiacutevat vygenerovanou konfiguraci ndash tisiacutece pravidel
skrze ktereacute musiacute projiacutet každyacute packetndash iptables -A INPUT -m tcp -m state --state NEW -j
CHINA_WALLndash Pokročileacute optimalizace ndash viacutece chainů podle čaacutesti IP
bull htaccesskonfigurace nginxbull mod_geoIPbull Pluginy (např placenyacute Wordfence)bull HW krabička
bull Dalšiacute varianta ndash přiacutestupy z blokovanyacutech zemiacute přesměrovat na straacutenku s CAPTCHA
httplyntcz
Aktualizovanyacute Wordpress v zaacutekladu
29 11 2014 12
jednoduchost bezpečnost
httplyntcz
Jak jsme na tom s WP v ČR
bull Udělal jsem průzkum 1000 nejnavštěvovanějšiacutech českyacutech webů
bull Zkoumal jsem jakeacute technologie použiacutevajiacute a kolik z nich běžiacute na Wordpressu
bull Pro hrubeacute zhodnoceniacute bezpečnosti jsem zkoumal jakou verzi WP použiacutevajiacute
bull Namaacutetkově jsem několik webů prozkoumal podrobněji
29 11 2014 13
httplyntcz
Technologie webů
29 11 2014 14
httplyntcz
CMS a frameworky
29 11 2014 15
httplyntcz
Verze Wordpress
29 11 2014 16
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Bezpečnost
29 11 2014 6
Zapni
BEZPEČNOST
httplyntcz
Bezpečnost
29 11 2014 7
jednoduchost bezpečnost
Co je bezpečneacute dnes nemusiacute byacutet bezpečneacute ziacutetra
httplyntcz
Fakta
29 11 2014 8
httpwwwakamaicomstateoftheinternet
43 uacutetoků přichaacuteziacute z ČiacutenyPotřebuji čiacutenskyacute trafficNemělo by smysl celou Čiacutenu zablokovat
Zablokovat USASpiacuteše ne můžu zablokovat vyhledaacutevače CDNhellip
Zablokovat vše mimo ČRUrčitě ne IP geolokace neniacute 100 přesnaacuteFiremniacute uživateleacute se mohou připojovat přes centraacutelu v jineacute zemiČeštiacute uživateleacute mohou přistupovat např z dovoleneacute (dovolenaacute v Čiacuteně)
httplyntcz
Posledniacute měsiacutec na jednom z našich serverů
29 11 2014 9
Jednaacute se teacuteměř o 1000 unikaacutetniacutech IP adres ktereacute se pokoušely laacutemat hesla
Pokud bychom zahrnuli opakovaneacute uacutetoky jednaacute se o čiacuteslo teacuteměř 3x většiacute Čiacutena by zde měla 56 podiacutel
httplyntcz29 11 2014 10
httplyntcz
Jak zablokovat Čiacutenu
29 11 2014 11
Seznam IP adres httpwwwip2locationcomblockvisitorsbycountryaspx
bull Iptablesndash Nepoužiacutevat vygenerovanou konfiguraci ndash tisiacutece pravidel
skrze ktereacute musiacute projiacutet každyacute packetndash iptables -A INPUT -m tcp -m state --state NEW -j
CHINA_WALLndash Pokročileacute optimalizace ndash viacutece chainů podle čaacutesti IP
bull htaccesskonfigurace nginxbull mod_geoIPbull Pluginy (např placenyacute Wordfence)bull HW krabička
bull Dalšiacute varianta ndash přiacutestupy z blokovanyacutech zemiacute přesměrovat na straacutenku s CAPTCHA
httplyntcz
Aktualizovanyacute Wordpress v zaacutekladu
29 11 2014 12
jednoduchost bezpečnost
httplyntcz
Jak jsme na tom s WP v ČR
bull Udělal jsem průzkum 1000 nejnavštěvovanějšiacutech českyacutech webů
bull Zkoumal jsem jakeacute technologie použiacutevajiacute a kolik z nich běžiacute na Wordpressu
bull Pro hrubeacute zhodnoceniacute bezpečnosti jsem zkoumal jakou verzi WP použiacutevajiacute
bull Namaacutetkově jsem několik webů prozkoumal podrobněji
29 11 2014 13
httplyntcz
Technologie webů
29 11 2014 14
httplyntcz
CMS a frameworky
29 11 2014 15
httplyntcz
Verze Wordpress
29 11 2014 16
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Bezpečnost
29 11 2014 7
jednoduchost bezpečnost
Co je bezpečneacute dnes nemusiacute byacutet bezpečneacute ziacutetra
httplyntcz
Fakta
29 11 2014 8
httpwwwakamaicomstateoftheinternet
43 uacutetoků přichaacuteziacute z ČiacutenyPotřebuji čiacutenskyacute trafficNemělo by smysl celou Čiacutenu zablokovat
Zablokovat USASpiacuteše ne můžu zablokovat vyhledaacutevače CDNhellip
Zablokovat vše mimo ČRUrčitě ne IP geolokace neniacute 100 přesnaacuteFiremniacute uživateleacute se mohou připojovat přes centraacutelu v jineacute zemiČeštiacute uživateleacute mohou přistupovat např z dovoleneacute (dovolenaacute v Čiacuteně)
httplyntcz
Posledniacute měsiacutec na jednom z našich serverů
29 11 2014 9
Jednaacute se teacuteměř o 1000 unikaacutetniacutech IP adres ktereacute se pokoušely laacutemat hesla
Pokud bychom zahrnuli opakovaneacute uacutetoky jednaacute se o čiacuteslo teacuteměř 3x většiacute Čiacutena by zde měla 56 podiacutel
httplyntcz29 11 2014 10
httplyntcz
Jak zablokovat Čiacutenu
29 11 2014 11
Seznam IP adres httpwwwip2locationcomblockvisitorsbycountryaspx
bull Iptablesndash Nepoužiacutevat vygenerovanou konfiguraci ndash tisiacutece pravidel
skrze ktereacute musiacute projiacutet každyacute packetndash iptables -A INPUT -m tcp -m state --state NEW -j
CHINA_WALLndash Pokročileacute optimalizace ndash viacutece chainů podle čaacutesti IP
bull htaccesskonfigurace nginxbull mod_geoIPbull Pluginy (např placenyacute Wordfence)bull HW krabička
bull Dalšiacute varianta ndash přiacutestupy z blokovanyacutech zemiacute přesměrovat na straacutenku s CAPTCHA
httplyntcz
Aktualizovanyacute Wordpress v zaacutekladu
29 11 2014 12
jednoduchost bezpečnost
httplyntcz
Jak jsme na tom s WP v ČR
bull Udělal jsem průzkum 1000 nejnavštěvovanějšiacutech českyacutech webů
bull Zkoumal jsem jakeacute technologie použiacutevajiacute a kolik z nich běžiacute na Wordpressu
bull Pro hrubeacute zhodnoceniacute bezpečnosti jsem zkoumal jakou verzi WP použiacutevajiacute
bull Namaacutetkově jsem několik webů prozkoumal podrobněji
29 11 2014 13
httplyntcz
Technologie webů
29 11 2014 14
httplyntcz
CMS a frameworky
29 11 2014 15
httplyntcz
Verze Wordpress
29 11 2014 16
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Fakta
29 11 2014 8
httpwwwakamaicomstateoftheinternet
43 uacutetoků přichaacuteziacute z ČiacutenyPotřebuji čiacutenskyacute trafficNemělo by smysl celou Čiacutenu zablokovat
Zablokovat USASpiacuteše ne můžu zablokovat vyhledaacutevače CDNhellip
Zablokovat vše mimo ČRUrčitě ne IP geolokace neniacute 100 přesnaacuteFiremniacute uživateleacute se mohou připojovat přes centraacutelu v jineacute zemiČeštiacute uživateleacute mohou přistupovat např z dovoleneacute (dovolenaacute v Čiacuteně)
httplyntcz
Posledniacute měsiacutec na jednom z našich serverů
29 11 2014 9
Jednaacute se teacuteměř o 1000 unikaacutetniacutech IP adres ktereacute se pokoušely laacutemat hesla
Pokud bychom zahrnuli opakovaneacute uacutetoky jednaacute se o čiacuteslo teacuteměř 3x většiacute Čiacutena by zde měla 56 podiacutel
httplyntcz29 11 2014 10
httplyntcz
Jak zablokovat Čiacutenu
29 11 2014 11
Seznam IP adres httpwwwip2locationcomblockvisitorsbycountryaspx
bull Iptablesndash Nepoužiacutevat vygenerovanou konfiguraci ndash tisiacutece pravidel
skrze ktereacute musiacute projiacutet každyacute packetndash iptables -A INPUT -m tcp -m state --state NEW -j
CHINA_WALLndash Pokročileacute optimalizace ndash viacutece chainů podle čaacutesti IP
bull htaccesskonfigurace nginxbull mod_geoIPbull Pluginy (např placenyacute Wordfence)bull HW krabička
bull Dalšiacute varianta ndash přiacutestupy z blokovanyacutech zemiacute přesměrovat na straacutenku s CAPTCHA
httplyntcz
Aktualizovanyacute Wordpress v zaacutekladu
29 11 2014 12
jednoduchost bezpečnost
httplyntcz
Jak jsme na tom s WP v ČR
bull Udělal jsem průzkum 1000 nejnavštěvovanějšiacutech českyacutech webů
bull Zkoumal jsem jakeacute technologie použiacutevajiacute a kolik z nich běžiacute na Wordpressu
bull Pro hrubeacute zhodnoceniacute bezpečnosti jsem zkoumal jakou verzi WP použiacutevajiacute
bull Namaacutetkově jsem několik webů prozkoumal podrobněji
29 11 2014 13
httplyntcz
Technologie webů
29 11 2014 14
httplyntcz
CMS a frameworky
29 11 2014 15
httplyntcz
Verze Wordpress
29 11 2014 16
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Posledniacute měsiacutec na jednom z našich serverů
29 11 2014 9
Jednaacute se teacuteměř o 1000 unikaacutetniacutech IP adres ktereacute se pokoušely laacutemat hesla
Pokud bychom zahrnuli opakovaneacute uacutetoky jednaacute se o čiacuteslo teacuteměř 3x většiacute Čiacutena by zde měla 56 podiacutel
httplyntcz29 11 2014 10
httplyntcz
Jak zablokovat Čiacutenu
29 11 2014 11
Seznam IP adres httpwwwip2locationcomblockvisitorsbycountryaspx
bull Iptablesndash Nepoužiacutevat vygenerovanou konfiguraci ndash tisiacutece pravidel
skrze ktereacute musiacute projiacutet každyacute packetndash iptables -A INPUT -m tcp -m state --state NEW -j
CHINA_WALLndash Pokročileacute optimalizace ndash viacutece chainů podle čaacutesti IP
bull htaccesskonfigurace nginxbull mod_geoIPbull Pluginy (např placenyacute Wordfence)bull HW krabička
bull Dalšiacute varianta ndash přiacutestupy z blokovanyacutech zemiacute přesměrovat na straacutenku s CAPTCHA
httplyntcz
Aktualizovanyacute Wordpress v zaacutekladu
29 11 2014 12
jednoduchost bezpečnost
httplyntcz
Jak jsme na tom s WP v ČR
bull Udělal jsem průzkum 1000 nejnavštěvovanějšiacutech českyacutech webů
bull Zkoumal jsem jakeacute technologie použiacutevajiacute a kolik z nich běžiacute na Wordpressu
bull Pro hrubeacute zhodnoceniacute bezpečnosti jsem zkoumal jakou verzi WP použiacutevajiacute
bull Namaacutetkově jsem několik webů prozkoumal podrobněji
29 11 2014 13
httplyntcz
Technologie webů
29 11 2014 14
httplyntcz
CMS a frameworky
29 11 2014 15
httplyntcz
Verze Wordpress
29 11 2014 16
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz29 11 2014 10
httplyntcz
Jak zablokovat Čiacutenu
29 11 2014 11
Seznam IP adres httpwwwip2locationcomblockvisitorsbycountryaspx
bull Iptablesndash Nepoužiacutevat vygenerovanou konfiguraci ndash tisiacutece pravidel
skrze ktereacute musiacute projiacutet každyacute packetndash iptables -A INPUT -m tcp -m state --state NEW -j
CHINA_WALLndash Pokročileacute optimalizace ndash viacutece chainů podle čaacutesti IP
bull htaccesskonfigurace nginxbull mod_geoIPbull Pluginy (např placenyacute Wordfence)bull HW krabička
bull Dalšiacute varianta ndash přiacutestupy z blokovanyacutech zemiacute přesměrovat na straacutenku s CAPTCHA
httplyntcz
Aktualizovanyacute Wordpress v zaacutekladu
29 11 2014 12
jednoduchost bezpečnost
httplyntcz
Jak jsme na tom s WP v ČR
bull Udělal jsem průzkum 1000 nejnavštěvovanějšiacutech českyacutech webů
bull Zkoumal jsem jakeacute technologie použiacutevajiacute a kolik z nich běžiacute na Wordpressu
bull Pro hrubeacute zhodnoceniacute bezpečnosti jsem zkoumal jakou verzi WP použiacutevajiacute
bull Namaacutetkově jsem několik webů prozkoumal podrobněji
29 11 2014 13
httplyntcz
Technologie webů
29 11 2014 14
httplyntcz
CMS a frameworky
29 11 2014 15
httplyntcz
Verze Wordpress
29 11 2014 16
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Jak zablokovat Čiacutenu
29 11 2014 11
Seznam IP adres httpwwwip2locationcomblockvisitorsbycountryaspx
bull Iptablesndash Nepoužiacutevat vygenerovanou konfiguraci ndash tisiacutece pravidel
skrze ktereacute musiacute projiacutet každyacute packetndash iptables -A INPUT -m tcp -m state --state NEW -j
CHINA_WALLndash Pokročileacute optimalizace ndash viacutece chainů podle čaacutesti IP
bull htaccesskonfigurace nginxbull mod_geoIPbull Pluginy (např placenyacute Wordfence)bull HW krabička
bull Dalšiacute varianta ndash přiacutestupy z blokovanyacutech zemiacute přesměrovat na straacutenku s CAPTCHA
httplyntcz
Aktualizovanyacute Wordpress v zaacutekladu
29 11 2014 12
jednoduchost bezpečnost
httplyntcz
Jak jsme na tom s WP v ČR
bull Udělal jsem průzkum 1000 nejnavštěvovanějšiacutech českyacutech webů
bull Zkoumal jsem jakeacute technologie použiacutevajiacute a kolik z nich běžiacute na Wordpressu
bull Pro hrubeacute zhodnoceniacute bezpečnosti jsem zkoumal jakou verzi WP použiacutevajiacute
bull Namaacutetkově jsem několik webů prozkoumal podrobněji
29 11 2014 13
httplyntcz
Technologie webů
29 11 2014 14
httplyntcz
CMS a frameworky
29 11 2014 15
httplyntcz
Verze Wordpress
29 11 2014 16
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Aktualizovanyacute Wordpress v zaacutekladu
29 11 2014 12
jednoduchost bezpečnost
httplyntcz
Jak jsme na tom s WP v ČR
bull Udělal jsem průzkum 1000 nejnavštěvovanějšiacutech českyacutech webů
bull Zkoumal jsem jakeacute technologie použiacutevajiacute a kolik z nich běžiacute na Wordpressu
bull Pro hrubeacute zhodnoceniacute bezpečnosti jsem zkoumal jakou verzi WP použiacutevajiacute
bull Namaacutetkově jsem několik webů prozkoumal podrobněji
29 11 2014 13
httplyntcz
Technologie webů
29 11 2014 14
httplyntcz
CMS a frameworky
29 11 2014 15
httplyntcz
Verze Wordpress
29 11 2014 16
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Jak jsme na tom s WP v ČR
bull Udělal jsem průzkum 1000 nejnavštěvovanějšiacutech českyacutech webů
bull Zkoumal jsem jakeacute technologie použiacutevajiacute a kolik z nich běžiacute na Wordpressu
bull Pro hrubeacute zhodnoceniacute bezpečnosti jsem zkoumal jakou verzi WP použiacutevajiacute
bull Namaacutetkově jsem několik webů prozkoumal podrobněji
29 11 2014 13
httplyntcz
Technologie webů
29 11 2014 14
httplyntcz
CMS a frameworky
29 11 2014 15
httplyntcz
Verze Wordpress
29 11 2014 16
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Technologie webů
29 11 2014 14
httplyntcz
CMS a frameworky
29 11 2014 15
httplyntcz
Verze Wordpress
29 11 2014 16
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
CMS a frameworky
29 11 2014 15
httplyntcz
Verze Wordpress
29 11 2014 16
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Verze Wordpress
29 11 2014 16
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Vyacutesledky
29 11 2014 17
Verzi jsem zjišťoval nejjednoduššiacutem možnyacutem způsobem - zadaacuteniacutem adresy readmehtml přiacutepadně feed Některeacute weby jsem daacutele zkoumal ndash nalezl jsem různeacute zranitelnosti typu SQL injections LFI XSS
Viacutece než polovina webů použiacutevaacute aktuaacutelniacute verze Wordpressu a jejich spraacutevci se starajiacute o jejich aktualizaci To však neznamenaacute že diacuteky pluginům a šablonaacutem neobsahujiacute bezpečnostniacute chyby
Teacuteměř polovina nalezenyacutech webů použiacutevaacute zastaralou verzi Wordpressu a můžeme je považovat za nebezpečneacute
Našel jsme dokonce několik webů ktereacute použiacutevajiacute viacutece než 7 let staryacute Wordpressverze 2
Teacuteměř polovina Wordpress webů je potenciaacutelně nebezpečnaacuteAktualizujte
Dalšiacute info (člaacutenek + infografika) httplyntczblogceske-weby-a-wordpress
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Neaktualizovanyacute Wordpress s pluginy
29 11 2014 18
jednoduchost bezpečnost
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Readmehtml
29 11 2014 19
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz29 11 2014 20
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Readmehtml
29 11 2014 21
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz29 11 2014 22
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Kdo
29 11 2014 23
Roboti Anonymniacute hackeři
Motivovaniacute hackeři Děti - script kiddies
Ph
oto
by Lisa C
C B
Y-SA 2
0
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Co
29 11 2014 24
Vloženiacute sveacuteho javascriptu
Nahraacuteniacute vlastniacuteho PHP koacutedu
Vloženiacute sveacuteho odkazu
Ziacuteskaacuteniacute dat uživatelů
Ziacuteskaacuteniacute wp-configphp
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Průzkum Reconnaissance
bull Počaacutetečniacute faacuteze uacutetoku ndash nejdůležitějšiacute a často nejdelšiacute
bull Při uacutetoku na WP se nejčastěji použiacutevaacute naacutestroj WPscan
29 11 2014 25
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
WPscan-Do non-intrusive checks
ruby wpscanrb --url wwwexamplecom
-Do wordlist password brute force on enumerated users using 50 threads
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --threads 50
-Do wordlist password brute force on the admin username only
ruby wpscanrb --url wwwexamplecom --wordlist darkc0delst --username admin
-Enumerate installed plugins
ruby wpscanrb --url wwwexamplecom --enumerate p
-Enumerate installed themes
ruby wpscanrb --url wwwexamplecom --enumerate t
-Enumerate users
ruby wpscanrb --url wwwexamplecom --enumerate u
-Enumerate installed timthumbs
ruby wpscanrb --url wwwexamplecom --enumerate tt
-Use a HTTP proxy
ruby wpscanrb --url wwwexamplecom --proxy 1270018118
-Use a SOCKS5 proxy (cURL gt= v7217 needed)
ruby wpscanrb --url wwwexamplecom --proxy socks51270019000
29 11 2014 26
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
SQL injection
29 11 2014 27
Přiacuteklad nebezpečneacuteho dotazuSELECT FROM users WHERE (jmeno=$_GET[jmeno]) AND (heslo=$_GET[heslo])
mysql_real_escape_string() ndash pro řetězceinval() ndash pro čiacuteslaMySQL prepared statements
httpmojeapkaxyprihlasitphpjmeno=admin)
SELECT FROM users WHERE (jmeno=admin)) AND (heslo=) znak značiacute komentaacuteř ndash zakomentuje zbytek dotazu =gt přiacutekaz se nedostane k ověřeniacute hesla
httpmojeapkaxyprihlasitphpjmeno=adminampheslo= OR 1=1
SELECT FROM users WHERE (jmeno=admin) AND (heslo= OR 1=1) hledaacute uživatele se jmeacutenem admin a ověřuje zda jeho heslo odpoviacutedaacute zadaneacutemu nebo zda 1=1 =gt splněno vždy
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
SQL injection
29 11 2014 28
clenoveseznamampid=666
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
SQL injection
29 11 2014 29
clenoveseznamampid=ldquo
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
SQL injection
29 11 2014 30
clenoveseznamampid=0 union select 123456789101112131415161718192021222324252627 from users
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
SQL injection
29 11 2014 31
clenoveseznamampid=0 union select 1234567891011121314151617namepass2021222324252627 from users where id=666
Nevyacutehoda opensource řešeniacuteUacutetočniacutek dopředu znaacute strukturu databaacuteze ndashjmeacutena tabulek počty a jmeacutena sloupců
Proto je dobreacute změnit prefix databaacuteze
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Blind SQL injection
bull Někdy se vyacutesledek dotazu nikam nevypisuje ani mi nezajistiacute přiacutestupbull Pomociacute UNION SELECT se lze ptaacutet databaacuteze na otaacutezky s odpovědiacute ANONE
bull Content basedclenoveseznamampid=666 AND 1=1 =gt straacutenka s vyacutesledkemclenoveseznamampid=666 AND 1=2 =gt straacutenka bez vyacutesledků
bull Time basedSELECT IF( 1=1 BENCHMARK(1000000MD5( lynt ))NULL) FROM tabulka
bull Je prvniacute piacutesmenko hesla bdquoAldquo
bull Automatizace naacutestrojem SQLmap
29 11 2014 32
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz29 11 2014 33
bdquoSQL injection je uměniacuteldquo
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
XSSbull Podařiacute se mi do straacutenky vložit nějakyacute svůj koacuted ndash nejčastěji javascriptbull Persistentniacute (např v komentaacuteřiacutech) vs dočasnyacute (pomociacute URL
parametrů) ndash ty však mohu daacutele propagovatbull V moderniacutech prohliacutežečiacutech mohu použiacutet HTTP hlavičku X-XSS-
protection
bull httpswwwowasporgindexphpList_of_useful_HTTP_headers
29 11 2014 34
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
XSS
29 11 2014 35
httpswwwdatoveschrankyinfovyhledavanip_p_id=GoogleSearch_WAR_GoogleSearchportletampp_p_lifecycle=1ampp_p_state=normalampp_p_mode=viewampp_p_col_id=column-2ampp_p_col_count=1amp_GoogleSearch_WAR_GoogleSearchportlet_javaxportletaction=searchFormampsearchtext=223E3Cscript3Ealert(22hack22)3E3Cscript3E3Ca20href=22httplyntczblogceske-weby-a-wordpress223E3Cimg20src=22httplyntczmediablogceske-weby-a-wordpressjpg223E3Ca3E3Cbr20class=22
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Bezpečnostniacute plugin
29 11 2014 36
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
iThemes security
bull Global Settingsndash Write to Files - Allow iThemes Security to write to wp-
configphp and htaccess ndash pokud nepovoliacutem mohu přiacuteslušneacute sekce nakopiacuterovat z dashboardu pluginu
ndash Lockout White List ndash vhodneacute zadat svou IPndash Log Type - Database Only (maleacute weby log je pak dostupnyacute na
zaacuteložce Logs) File Only (velkeacute weby vhodneacute takeacute pro zpracovaacuteniacute fail2ban)
ndash Path to Log Files - cesta k logům při File Only pokud je možnost přiacutestupu mimo složku webu tak je umiacutestit mimo pokud ne lze nechat vyacutechoziacute (leacutepe ale jmeacuteno složky změnit)
bull 404 detectionndash Enable 404 detection ndash zablokuje naacutesilneacute skenovaacuteniacute
29 11 2014 37
Červeneacute = dle meacuteho naacutezoru nejdůležitějšiacute nastaveniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
iThemes security
bull Away Mode - možno nastavit dostupnost administrace např jen na pracovniacute dobu
bull Banned Users
ndash Default Blacklist - Enable HackRepaircomsblacklist feature - možno povolit - přidaacute znaacutemeacute uacutetočiacuteciacute useragenty do htaccess
ndash Enable ban Users - můžeme si dodefinovat vlastniacute blokovaneacute useragenty a IP (spolupracuje s EnableBlacklist Repeat Offender v Global settings)
29 11 2014 38
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
iThemes security
bull Brute Force Protectionndash Get your iThemes Brute Force Protection API Key -
iThemes ziacuteskaacute přiacutestup k globaacutelniacutemu blacklistu uacutetočiacuteciacutech IP adres na iThemescom
ndash Enable iThemes Brute Force Network Protection ndash povoliacute ochranu dle globaacutelniacuteho blacklistu
ndash Enable local brute force protection - blokuje haacutedaacuteniacute hesel do administrace ndash tvořiacute vlastniacute blacklist (blokace jsou uloženy v tabulce _itsec_lockouts)
ndash Automatically ban admin user - Immediately ban a host that attempts to login using the admin username - pokud maacutem přejmenovaneacuteho admina tak to může byacutet dobraacute naacutestraha - jakmile se někdo pokusiacute přihlaacutesit jako uživatel admin je okamžitě zablokovaacuten
29 11 2014 39
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
iThemes security
bull Database Backupsndash Backup Method - Email Only (bude posiacutelat zaacutelohu mailem) Save local only - pouze pokud
mohu uložit zaacutelohu mimo složku webu (Backup Location)ndash Schedule Database Backups - Enable Scheduled Database Backups ndash automatickeacute vytvaacuteřeniacute
zaacutelohjinak pouze ručně na zaacuteložce Backupsndash Zaacutelohuje pouze DB Raději bych použil jineacute zaacutelohovaciacute řešeniacute mimo WP i se soubory
bull File Change Detectionndash File Change Detection - Enable File Change detectionndash Split File Scanning - Split file checking into chunks ndash vhodneacute pokud maacutem meacuteně RAM -
generuje ale viacutece emailůndash Files and Folders List - pokud použiacutevaacuteme cachovaciacute plugin tak je vhodneacute zde jeho složku
vyjmout
bull Hide Login Areandash Hide Backend- Enable the hide backend feature ndash přesměruje wp-admin na jinou adresundash Login Slug ndash novaacute adresa administrace - např admin5547 nebo česky administracendash Enable Theme Compatibility - Enable theme compatibility ndash zapnout pokud přesměrovaacuteniacute
administrace způsobiacute nefunkčnost některyacutech šablon a pluginůndash Přesměrovaacuteniacute administrace je dobreacute dělat až v druheacute vlně laděniacute - neprovaacutedět viacutece změn naraacutez
29 11 2014 40
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
iThemes security
bull Malware Scanningndash Enable Malware scanning - po vloženiacute API kliacuteče z VirusTotalcom může
nechat jednoraacutezově otestovat homepage zda se nenachaacuteziacute na cca 60 blacklistech (Sucuri SiteCheck Google Safebrowsing)
bull Secure Soceket Layers (SSL)ndash nastaveniacute pro vynuceniacute SSL přiacutestupu do administrace - vhodneacute nejprve
otestovat zda je administrace přes https spraacutevně dostupnaacute
bull Strong Passwordsndash Strong Passwords - Enable strong password enforcement - Vynutiacute
použiacutevaacuteniacute silnyacutech hesel (původniacute slabaacute hesla zůstaacutevajiacute)ndash Select Role for Strong Passwords - pro jakeacute role vyžadujete silnaacute hesla
(minimaacutelně Šeacutefredaktor ndash může vklaacutedat JS do komentaacuteřů ale klidně už od Naacutevštěvniacuteka)
29 11 2014 41
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
iThemes security
bull System Tweaksndash System Files - protect System Files - zakaacuteže přiacutestup z internetu
přiacutemo k důležityacutem souborům a k souborům ktereacute prozrazujiacute informace
ndash Suspicious Query Strings - Filter Suspicious Query Strings in theURL - může zabraacutenit jednoduchyacutem SQL injections (pozor chybau nginx ndash viz dalšiacute slidy)
ndash Long URL Strings - Filter Long URL Strings - blokuje přiacuteliš dlouheacute URL (nad 255 znaků) daacutele takeacute blokuje URL obsahujiacuteciacute funkce eval a base64 a union select (podobnou funkci plniacute samostatnyacute plugin Block Bad Queries (BBQ)) + je dobreacute přidat blokaci query obsahujiacuteciacute wp-configphp
ndash File Writing Permissions ndash nastaviacute praacuteva pro htaccess a wp-configphp ndash lepšiacute si to nastavit saacutem a podrobněji
ndash Uploads - Disable PHP in Uploads ndash zakaacuteže PHP ve složce s uploady
29 11 2014 42
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
iThemes security
bull System Tweaksndash Generator Meta Tag + Display Random Version - pokusiacute se zamaskovat verzi
WP jde to udělat leacutepe ndash viz dalšiacute slidyndash Windows Live Writer Header amp EditURI Header ndash hlavičky pro integraci
s dalšiacutemi službami a aplikacemi ndash jsou potřeba jen zřiacutedkandash Comment Spam - kontroluje zda byl komentaacuteř vložen z našeho webu
(přiacutepadně z wordpresscom) + blokuje komentaacuteře od botů kteřiacute nemajiacute vyplněn user-agent
ndash File Editor ndash vypne editor šablon a pluginů ve WP (lze to jednoduše udělat v wp-config)
ndash XML-RPC - při Completely Disable XMLRPC zakaacuteže veškereacute XML-RPC požadavky např trackbacky (pro bezpečneacute použitiacute trackbacků mohu použiacutet plugin httpswordpressorgpluginssimple-trackback-validation-with-topsy-blocker)
ndash Login Error Messages - přestane ukazovat hlaacutešky o chybneacutem přihlaacutešeniacutendash Force Unique Nickname - nutiacute uživatele zvolit jinyacute nickname než je jeho
přihlašovaciacute jmeacuteno (neniacute tak přiacutemo vidět uživatelskyacute uacutečet)ndash Disable Extra User Archives - skryje uživatele kteřiacute nepiacutešou člaacutenky (admini)
29 11 2014 43
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
iThemes security
bull bdquoPokročileacute funkceldquo ndash Advancedndash Admin user ndash umožňuje přejmenovat uživatele admin
na jineacute hůře odhadnutelneacute jmeacutenobull Lepšiacute je vytvořit noveacuteho uživatele s admin praacutevy přihlaacutesit se
na něj a původniacuteho admina smazat (WP nabiacutedne převedeniacute jeho přiacutespěvků na jineacuteho uživatele)
ndash Change content directory ndash přejmenovaacuteniacute složky wp-content může přineacutest probleacutemy a braacuteniacute pouze některyacutem automatizovanyacutem uacutetokům (spraacutevnou složku lze jednoduše vyčiacutest z koacutedu straacutenky)
ndash Change database prefix ndash pokud se nechal při instalaci default wp_ tak je možneacute ho zde změnitbull Automatizovanyacute naacutestroj ručně je to složitějšiacute
29 11 2014 44
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
iThemes security - poznaacutemky
bull Suspicious Query Strings v nginxset $susquery 0if ($args ~ wp-configphp) set $susquery 1 naviacutec blokace při pokusu staženiacute wp-configphpif ($args ~ ) set $susquery 1 if ($args ~ (bash|git|hg|log|svn|swp|cvs)) set $susquery 1 if ($args ~ etcpasswd) set $susquery 1 if ($args ~ bootini) set $susquery 1 if ($args ~ ftp) set $susquery 1 if ($args ~ http) set $susquery 1 if ($args ~ https) set $susquery 1 if ($args ~ (lt|3C)script(gt|3E)) set $susquery 1 if ($args ~ mosConfig_[a-zA-Z_]121(=|3D)) set $susquery 1 if ($args ~ base64_encode) set $susquery 1 if ($args ~ (24ampx)) set $susquery 1 if ($args ~ (ampx22|ampx27|ampx3C|ampx3E|ampx5C|ampx7B|ampx7C|24ampx)) set $susquery 1 if ($args ~ (1270)) 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 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=jetpack-sso) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($args ~ ^action=rp) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_cookie ~ ^wordpress_logged_in_$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($http_referer ~ ^httpmapsgoogleapiscom()$) set $susquery 0 lt= špatnaacute logika maacute zde byacutet ~if ($susquery = 1) return 403
29 11 2014 45
Přidaacuteniacute blokace wp-configphp do htaccessRewriteCond QUERY_STRING wp-configphp [NCOR]
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
iThemes security - poznaacutemky
bull Lepšiacute odstraněniacute viditelnosti verze WP
Do functionsphp nebo plugin do mu-plugins
function remove_wp_version() return add_filter(the_generator remove_wp_version)
29 11 2014 46
Odbočka ndash MU-plugins (Must Use Plugins)Maacutelo znaacutemaacute funkcionalita WP ndash jednaacute se o speciaacutelniacute složku wp-contentmu-pluginsSkriptypluginy v teacuteto složce jsou automaticky spouštěny a nelze je v administraci deaktivovat Hodiacute se to pro různaacute bezpečnostniacute nastaveniacute např pokud chceme automatickeacute updaty pluginů a šablon pomociacute filtrů ndash mnoho autorů je daacutevaacute do wp-configfunctionsphp ndash spraacutevně majiacute byacutet zde
add_filter( auto_update_plugin __return_true )add_filter( auto_update_theme __return_true )
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Použitiacute bezpečnostniacuteho pluginu
29 11 2014 47
jednoduchost bezpečnost
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz29 11 2014 48
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Fail2ban ndash pomocniacutek na straně serverubull Některeacute funkce bezpečnostniacuteho pluginu můžeme posunout o uacuteroveň niacutežebull Např detekci brutal force analyacutezou logů nebo 404 (může byacutet dobreacute nelogovat statickeacute soubory)
bull filterdwp-authconf WordPress brute force auth filter etcfail2banfilterdwp-authconf Block IPs trying to auth wp wordpress Matches eg 1786372184 - - [16Oct2014114050 +0200] POST wp-loginphp HTTP10 200 1531 - -[Definition]failregex = ^ltHOSTgt POST wp-loginphp
bull jailconf[wp-auth]enabled = truefilter = wp-authaction = iptables-multiport[name=wp-auth port=httphttps protocol=tcp]
sendmail-whois[name=WPauth dest=vladimirsmitkalyntcz sendername=Fail2Ban]logpath = varlogwordpressaccesslog
bull Pozor na logrotate - usrbinfail2ban-client reload wp-auth
29 11 2014 49
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Fail2ban ndash dalšiacute triky
bull Reverzniacute sociaacutelniacute inženyacuterstviacutebull Fail2ban může hliacutedat logy na předem připraveneacute naacutestrahy
bull Naacutestraha v robotstxt
User-agent Disallow db-10-8-2014sql zaloha stareho WP36Allow
bull Webserver na zvlaacuteštniacutem portu
Listen 8080
bull Při pokusu o přiacutestup k daneacutemu souboru nebo na danyacute port zablokujeme IP adresubull Zkušenyacute hacker nikdy nebude použiacutevat svou adresu ale alespoň se dozviacuteme že se
někdo chytřejšiacute k naacutem snažiacute nabourat
29 11 2014 50
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Byacutet v obraze - analyacuteza logů
29 11 2014 51
jednoduchost bezpečnost
+ vhodneacute spojit s upozorňovaacuteniacutem na dostupneacute updatyhttpswordpressorgpluginswp-updates-notifierhttpinfinitewpcom (hromadnaacute spraacuteva WP webů)
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz29 11 2014 52
WAF
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Web Application Firewall
bull Pro Apache mod_security (ověřenyacute stabilniacute mnoho možnostiacute poměrně pomalyacute)
bull Pro nginx naxsi (staacutele ve vyacutevoji velmi vyacutekonnyacute je třeba dlouho ladit whitelist)
Jako službaSucuri ndash zaměřeniacute na bezpečnost nejbližšiacute node ve FranciiIncapsula ndash zaměřeniacute na bezpečnosti i vyacutekon node ve FrankfurtuCloudFlare ndash hlavně CDN ndash zaměřeniacute na vyacutekon použiacutevaacute mod_security node v Praze
29 11 2014 53
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Použitiacute WAF
29 11 2014 54
jednoduchost bezpečnost
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Dokonale zabezpečenyacute webstaacutele může narazit na sveacute uživatele
29 11 2014 55
jednoduchost bezpečnost
bull Phishingbull Malware v PCbull Připojovaacuteniacute z neznaacutemyacutech siacutetiacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
Dalšiacute zajiacutemaveacute zdroje
Vizualizace uacutetokůhttpwwwstateoftheinternetcomtrends-visualizations-security-real-time-global-ddos-attack-sources-types-and-targetshtmlhttpwwwdigitalattackmapcom
Databaacuteze zranitelnostiacute kterou využiacutevaacute WPscanhttpswpvulndbcom
Dalšiacute bezpečnostniacute pluginyhttpswordpressorgpluginswordfencehttpswordpressorgpluginsall-in-one-wp-security-and-firewall
Maacute minulaacute přednaacuteškahttpedulyntczcoursejak-si-ne-nechat-hacknout-wordpress-stranky
29 11 2014 56
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute
httplyntcz
A to je vše přaacuteteleacute
29 11 2014 57
aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute