+ All Categories
Home > Internet > Bezpečnost Wordpressu - 4. WP konference

Bezpečnost Wordpressu - 4. WP konference

Date post: 11-Jul-2015
Category:
Upload: vladimir-smitka
View: 836 times
Download: 4 times
Share this document with a friend
57
http://lynt.cz Bezpečnost Wordpressu Vláďa Smitka [email protected] @smitka (ale skoro nic nepíšu) Lynt services s.r.o. 29. 11. 2014 1
Transcript
Page 1: Bezpečnost Wordpressu - 4. WP konference

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

Page 2: Bezpečnost Wordpressu - 4. WP konference

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

Page 3: Bezpečnost Wordpressu - 4. WP konference

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

Page 4: Bezpečnost Wordpressu - 4. WP konference

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

Page 5: Bezpečnost Wordpressu - 4. WP konference

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

Page 6: Bezpečnost Wordpressu - 4. WP konference

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

Page 7: Bezpečnost Wordpressu - 4. WP konference

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

Page 8: Bezpečnost Wordpressu - 4. WP konference

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

Page 9: Bezpečnost Wordpressu - 4. WP konference

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

Page 10: Bezpečnost Wordpressu - 4. WP konference

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

Page 11: Bezpečnost Wordpressu - 4. WP konference

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

Page 12: Bezpečnost Wordpressu - 4. WP konference

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

Page 13: Bezpečnost Wordpressu - 4. WP konference

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

Page 14: Bezpečnost Wordpressu - 4. WP konference

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

Page 15: Bezpečnost Wordpressu - 4. WP konference

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

Page 16: Bezpečnost Wordpressu - 4. WP konference

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

Page 17: Bezpečnost Wordpressu - 4. WP konference

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

Page 18: Bezpečnost Wordpressu - 4. WP konference

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

Page 19: Bezpečnost Wordpressu - 4. WP konference

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

Page 20: Bezpečnost Wordpressu - 4. WP konference

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

Page 21: Bezpečnost Wordpressu - 4. WP konference

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

Page 22: Bezpečnost Wordpressu - 4. WP konference

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

Page 23: Bezpečnost Wordpressu - 4. WP konference

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

Page 24: Bezpečnost Wordpressu - 4. WP konference

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

Page 25: Bezpečnost Wordpressu - 4. WP konference

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

Page 26: Bezpečnost Wordpressu - 4. WP konference

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

Page 27: Bezpečnost Wordpressu - 4. WP konference

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

Page 28: Bezpečnost Wordpressu - 4. WP konference

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

Page 29: Bezpečnost Wordpressu - 4. WP konference

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

Page 30: Bezpečnost Wordpressu - 4. WP konference

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

Page 31: Bezpečnost Wordpressu - 4. WP konference

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

Page 32: Bezpečnost Wordpressu - 4. WP konference

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

Page 33: Bezpečnost Wordpressu - 4. WP konference

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

Page 34: Bezpečnost Wordpressu - 4. WP konference

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

Page 35: Bezpečnost Wordpressu - 4. WP konference

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

Page 36: Bezpečnost Wordpressu - 4. WP konference

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

Page 37: Bezpečnost Wordpressu - 4. WP konference

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

Page 38: Bezpečnost Wordpressu - 4. WP konference

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

Page 39: Bezpečnost Wordpressu - 4. WP konference

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

Page 40: Bezpečnost Wordpressu - 4. WP konference

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

Page 41: Bezpečnost Wordpressu - 4. WP konference

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

Page 42: Bezpečnost Wordpressu - 4. WP konference

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

Page 43: Bezpečnost Wordpressu - 4. WP konference

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

Page 44: Bezpečnost Wordpressu - 4. WP konference

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

Page 45: Bezpečnost Wordpressu - 4. WP konference

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

Page 46: Bezpečnost Wordpressu - 4. WP konference

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

Page 47: Bezpečnost Wordpressu - 4. WP konference

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

Page 48: Bezpečnost Wordpressu - 4. WP konference

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

Page 49: Bezpečnost Wordpressu - 4. WP konference

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

Page 50: Bezpečnost Wordpressu - 4. WP konference

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

Page 51: Bezpečnost Wordpressu - 4. WP konference

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

Page 52: Bezpečnost Wordpressu - 4. WP konference

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

Page 53: Bezpečnost Wordpressu - 4. WP konference

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

Page 54: Bezpečnost Wordpressu - 4. WP konference

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

Page 55: Bezpečnost Wordpressu - 4. WP konference

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

Page 56: Bezpečnost Wordpressu - 4. WP konference

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

Page 57: Bezpečnost Wordpressu - 4. WP konference

httplyntcz

A to je vše přaacuteteleacute

29 11 2014 57

aktualizujte zaacutelohujte použiacutevejte bezpečnostniacute plugin buďte opatrniacute


Recommended