Atak na stronę – brute force? słownikowy? Jak się zabezpieczyć?

By | 23 sierpnia 2014

Nie mam pojęcia dlaczego i komu mogło to się opłacać, ale zostałem zaatakowany, a konkretnie ktoś chciał złamać hasło do konta administracyjnego, a przy okazji zużył dość dużą ilość czasu procesora na serwerze. Opiszę w tym artykule jak zabezpieczyć się przed tym typem ataku.

Większość firm hostingowych ustanawia pewne ograniczenia dla swoich klientów, takie jak ilość przestrzeni dyskowej, transferu czy też ilość czasu procesora przydzielona do konta. W moim wypadku nie jest to zbyt wielka wartość, ponieważ nie odnotowuje wielkiej ilości klientów na stronie, ale podczas ataku o którym wspomniałem na początku, zostało wygenerowane mnóstwo odsłon, a co za tym idzie, wiele razy został wykonany skrypt logowania.

Skok użycia zasobów procesora

Skok użycia zasobów procesora, spadek odnotowany po założeniu dodatkowego zabezpieczenia

Listing wywołań skryptów na serwerze:

[16:30:01] 0.384 /home/xxx/domains/xxx/public_html/wp-login.php
[16:30:01] 0.384 /home/xxx/domains/xxx/public_html/wp-login.php
[16:30:02] 0.424 /home/xxx/domains/xxx/public_html/wp-login.php
[16:30:03] 0.392 /home/xxx/domains/xxx/public_html/wp-login.php
[16:30:04] 0.388 /home/xxx/domains/xxx/public_html/wp-login.php
[16:30:04] 0.376 /home/xxx/domains/xxx/public_html/wp-login.php
[16:30:05] 0.372 /home/xxx/domains/xxx/public_html/wp-login.php
[16:30:05] 0.372 /home/xxx/domains/xxx/public_html/wp-login.php

Postanowiłem dodatkowo zabezpieczyć skrypt logowania, kolejnym logowaniem,  nie php’owym, ale realizowanym za pomocą .htaccess, dzięki czemu nie będzie zużywać mocy procesora. Innym sposobem mogłoby być użycie pluginu do wordpressa, ale uważam, że samemu można czasami osiągnąć lepsze efekty.

krok 1: utwórz plik z danymi dostępowymi

Zacznij od przygotowania specjalnego pliku, w którym przechowywane będą dane dostępowe:

  • utwórz na pulpicie nowy plik o dowolnej nazwie (np. .htpasswd);
  • otwórz stronę ze specjalnym generatorem, wypełnij pola „username” oraz „password” podając odpowiednio nazwę użytkownika oraz hasło, którymi będziesz się posługiwać i kliknij na „create .htpasswd file”;
  • skopiuj wygenerowany ciąg znaków (będzie rozpoczynał się od nazwy użytkownika) do utworzonego wcześniej pliku;
  • prześlij plik na serwer (np. za pomocą klienta FTP), lokalizacja jest właściwie dowolna, ale najlepiej żeby plik znajdował się poza katalogiem przeznaczonym na pliki stron (katalog taki nazywa się najczęściej public_html).

krok 2: ustal adres pliku na serwerze

Teraz ustal adres (ścieżkę) na serwerze do wgranego przed chwilą pliku. Jeśli go znasz to świetnie, możesz ominąć ten krok, a jeśli nie to:

  • utwórz na pulpicie nowy plik PHP o dowolnej nazwie (np. info.php);
  • w treści pliku podaj następujący ciąg:
    <?php echo dirname( __FILE__ ); ?>

    (jest to funkcja PHP, która wyświetli ścieżkę na serwerze);

  • prześlij plik na serwer (FTP) do miejsca, w którym będzie można go otworzyć w przeglądarce (np. do katalogu głównego Twojego WordPressa);
  • otwórz plik w przeglądarce; jeśli wgrałeś go do katalogu głównego WordPressa a Twoja strona dostępna jest pod adresem:
    http://nazwa-strony.pl

    to adres pliku będzie następujący:

    http://nazwa-strony.pl/info.php

Ciąg, który się pojawi będzie przypominał coś w stylu:

/home/poradnik/domains/poradnik-informatyka.com/public_html/

Jest to ścieżka do katalogu, w którym znajduje się plik info.php. Teraz powinieneś ją tak zmodyfikować, aby wskazywała on na wgrany w 1. kroku plik .htpasswd. Tzn. jeśli wgrałeś go do katalogu o jeden poziom wyżej, to pełna ścieżka będzie następująca (bazując na naszym przykładzie):

/home/poradnik/domains/poradnik-informatyka.com/.htpasswd

Po ustaleniu adresu możesz usunąć info.php z serwera.

krok 3: uaktywnij zabezpieczenie

W ostatnim kroku powiesz serwerowi, żeby udostępnił użytkownikowi plik wp-login.php(to właśnie on odpowiada za formularz logowania) dopiero po poprawnym wpisaniu danych dostępowych:

  • otwórz plik .htaccess, który znajduje się w katalogu głównym Twojego WordPressa (jeśli go tam nie ma to możesz go utworzyć);
  • dodaj na początku pliku poniższą formułkę:
    AuthName "Restricted Area"
    AuthType Basic
    AuthUserFile /home/poradnik/domains/poradnik-informatyka.com/.htpasswd 
    <Files wp-login.php> 
    require valid-user 
    </Files>   
    ErrorDocument 401 "Denied" 
    ErrorDocument 403 "Denied"
  • w wierszu 3. zmień adres ścieżki na tą, którą ustaliłeś w poprzednim kroku.

Gotowe!

Teraz przy próbie dostania się do panelu administracyjnego zostaniesz poproszony o podanie nazwy użytkownika i hasła. Dopiero, gdy podasz poprawne dane, uzyskasz dostęp do formularza logowania.

Dodatkowe okno logowania

Dodatkowe okno logowania

Źródło:

http://wpninja.pl/artykuly/jak-zabezpieczyc-wordpressa-przed-atakiem-brute-force-i-dlaczego-jeszcze-tego-nie-zrobiles/

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *