Hartujemy WordPressa. Kilka kroków do bezpieczniejszej instalacji.

Post on 06-Aug-2015

84 views 2 download

Transcript of Hartujemy WordPressa. Kilka kroków do bezpieczniejszej instalacji.

HARTUJEMY  WORDPRESSA

Kilka  kroków  do  bezpieczniejszej  instalacji.

marcin  at  chwedziak.pl

WORDUP  WROCŁAW  #2  —  27.06.2013

Aktualizacja:  28.01.2015

@*raeth

WORDUP  WROCŁAW  #2  —  27.06.2013

właściwie  to  Marcin  Chwedziak

twiGer.com/Lraethgithub.com/Lraeth

chwedziak.pl software development

użytkownik  ›  moderator  ›  przyjaciel

11  czerwca  2013

securitytracker.com

WordPress  Bug  in  'class-­‐phpass.php'  Lets  Remote  Users  Deny  Service

15  kwietnia  2013

webmonkey.com

WordPress  Hackers  Exploit  Username  "Admin"

14  kwietnia  2013

phys.org

Admin  Password  Spells  Trouble  In  Recent  WordPress  AGacks

12  kwietnia  2013

krebsonsecurity.com

Brute  Force  AGacks  Build  WordPress  Botnet

11  kwietnia  2013

blog.hostgator.com

Global  WordPress  Brute  Force  Flood

Tylko  60%  wszystkich  witryn  WordPressa  jest  zaktualizowana  do  najnowszej  wersji.

dane  własne  w  oparciu  o  pingoma<c.com

Aż  40%  instalacji  WordPressa  korzysta  z  potencjalnie  niebezpiecznych  starszych  wersji.

Jednocześnie…

dane  własne  w  oparciu  o  pingoma<c.com

W  internecie  jest  około  670  milionów  stron.

June  2013  Web  Server  Survey,  NetcraG  Ltd.

Ponad  67  milionów  (10%)  korzysta  z  WordPressa!

wordpress.com/stats

Każdej  minuty  atakowanych  jest  setki  tysięcy  adresów  IP.

W  tym  także  ten,  który  kieruje  do  twojego  serwera.

Jak  sobie  radzić?

KONTROLA PLAN  DZIAŁANIAOGRANICZANIE

KONTROLA

Ilość  potencjalnych  punktów  wejścia  do  systemu  powinna  być  zredukowana.

Dostęp  do  systemu  plików.

Dostęp  do  systemu  plików.

Używaj  SFTP  lub  FTPS  zamiast  FTP.

SFTP  (SSH  File  Transfer  Protocol)  pozwala  zamiast  hasła  użyć  klucza  autentykacji.

Google:  SSH  z  kluczem  publicznym

FTPS  przesyła  nasze  hasło  w  postaci  zaszyfrowanej,  niejawnej.

Zwykłe  połączenie  FTP  pozwala  podejrzeć  nasze  hasło!

Dostęp  do  systemu  plików.

Mądrze  zarządzaj  uprawnieniami  do  plików.

Katalog  główny:  tylko  ty.htaccess  jest  wyjątkiem,  ale…

/wp-­‐admin/:  tylko  ty

/wp-­‐includes/:  tylko  ty

/wp-­‐content/:  ty  oraz  Apache

/wp-­‐content/themes/:  tyPowinniśmy  wyłączyć  możliwość  edycji  plików  z  poziomu  WP:

define('DISALLOW_FILE_EDIT', true);

/wp-­‐content/plugins/:  ty

Dostęp  do  systemu  plików.

Przenieś  wp-­‐config.php  jeden  katalog  wyżej…

<Files wp-config.php> Order allow,deny Deny from All </Files>

…  albo  zablokuj  go  z  użyciem  .htaccess

Dostęp  do  systemu  plików.

Zablokuj  bezpośredni  dostęp  do  plików  PHP.

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

# BEGIN WordPress

Nie  działa  z  Mul<site!

Dostęp  do  bazy  danych.

Dostęp  do  bazy  danych.

Odseparuj  bazę  danych  WordPressa.

Dostęp  do  bazy  danych.

Zmień  prefiks  tabeli  z  domyślnego  wp_  na  np.  kraken_.

Zmodyfikuj  stałą  w  pliku  wp-­‐config.php.

Nie  zapomnij  zmienić  tabel  w  MySQL!

Dostęp  do  panelu  administracyjnego.

Dostęp  do  panelu  administracyjnego.

Jeśli  używasz  konta  admin  –  zmień  jego  nazwę!

Dostęp  do  panelu  administracyjnego.

Dodaj  BasicAuth  do  /wp-­‐admin/.

Użyj  .htaccess  oraz  .htpasswd…

<Files admin-ajax.php> Order allow,deny Allow from All Satisfy any </Files>

…i  nie  zapomnij  udostępnić  admin-­‐ajax.php!

Dostęp  do  panelu  administracyjnego.

Użyj  dodatkowych  wtyczek  blokujących  nieudane  logowania.

OGRANICZANIE

Konfiguracja  systemu  powinna  minimalizować  liczbę  groźnych  operacji  po  uzyskaniu  dostępu.

Zawsze  miej  aktualną  wersję  WordPressa.

To  samo  dotyczy  wtyczek!  A  jeśli  jakichś  nie  używasz  –  po  prostu  je  usuń.

Wyłącz  możliwość  edycji  plików  z  poziomu  panelu  WordPressa.

Niech  użytkownik  MySQL  ma  dostęp  tylko  do  bazy  z  tabelami  WordPressa.

define('DISALLOW_UNFILTERED_HTML', true);

PLAN  DZIAŁANIA

Powinniśmy  być  zawsze  gotowi  na  podjęcie  akcji  po  wystąpieniu  zagrożenia.

Zawsze  bądź  gotów  na  odtworzenie  instalacji.

Dokonuj  regularnych  kopii  bezpieczeństwa.

Zarówno  bazy  danych,  jak  i  plików  WordPressa.

Im  częściej  publikujesz,  tym  częściej  rób  kopie.

Wyłącz  wyświetlanie  błędów  PHP.

define('WP_DEBUG', false); define('WP_DEBUG_LOG', false); define('WP_DEBUG_DISPLAY', false); @ini_set('display_errors', 0);

Ale  zadbaj  o  ich  zbieranie  w  celach  analizy.

heps://github.com/ryanbagwell/wordpress-­‐sentry

Przeglądaj  dziennik  zdarzeń.

ModSecurity OSSEC

Monitoring  plików

Monitoring  logów

Działania  prewencyjne  są  bezsprzecznie  kluczowe.

WORDUP  WROCŁAW  #2  —  27.06.2013

Ale  stałe  monitorowanie  witryny  pozwoli  spać  spokojnie.

WORDUP  WROCŁAW  #2  —  27.06.2013

Pytania?

DZIĘKUJĘ  ZA  UWAGĘ

Hartujemy  WordPressa.  Kilka  kroków  do  bezpieczniejszej  instalacji.

marcin  at  chwedziak.pl

WORDUP  WROCŁAW  #2  —  27.06.2013

Aktualizacja:  28.01.2015