Monthly Archives: Sierpień 2014

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

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/

Tryb Kiosk w Windows 8.1

Tryb „Kiosk” stosuje się do urządzeń, które będą obsługiwane przez wiele osób, np. w przestrzeni publicznej. Bardzo często obsługuje się takie urządzenia za pomocą dotyku. Przykładem urządzenia działającego w trybie „Kiosk” jest biletomat w dużych miastach. Użytkownik nie może mieć możliwości wyłączenia aplikacji, która działa na tym urządzeniu. Tak więc tryb „Kiosk” chroni urządzenie przed użytkownikiem o złych zamiarach.

Okazuje się, że Windows 8.1 posiada domyślnie wbudowany tryb „Kiosk” i niewiele trzeba przestawiać opcji, aby z niego skorzystać. W niniejszym poradniku dowiecie się, że jest to banalnie proste. Continue reading

Instalacja i pierwsze użycie Bing Maps WPF

Bing Maps (znany wcześniej jako Windows Live Local, Windows Live Maps, Virtual Earth i Live Search Maps) — należący do firmy Microsoft serwis internetowy z mapami. Microsoft oprócz samego serwisu udostępnia również API, dzięki któremu programiści mogą tworzyć własne aplikacje w oparciu o Bing Maps. Postanowiłem, że dzisiaj pokaże, w jaki sposób używa się Bing Maps w WPF. Continue reading

Pobieranie geolokalizacji użytkownika strony z Google Maps – ASP.NET

W projekcie, który ostatnio tworzę, potrzebowałem informacji o tym gdzie aktualnie znajduje się użytkownik aplikacji. Okazuje się, że lokalizacje można określić na wiele sposobów, poprzez GPS, IP, WiFi, czy nawet poprzez połączenie z wieżą telekomunikacyjną (więcej informacji tutaj).

Jednak problematyczne jest wyciągnięcie tych informacji z komputera, czy też smartfona klienta. Z pomocą przyszedł Google Maps, który z pomocą prostego JavaScript, prosi użytkownika o jego lokalizacje i w momencie pozytywnego rozpatrzenia prośby zaznacza lokalizacje na mapie, a w zmiennych przechowuje koordynaty. Continue reading

Zaznaczanie na mapie Bing zasięgu np. Wifi – WPF

Mapa Bing dla Windows Store 8 posiada świetne api i całe mnóstwo przydatnych klas i metod, lecz dla WPF pozostaje mocno okrojona biblioteka, która można pobrać stąd. Jednakże, pozostawia ona wiele do życzenia. Chciałbym więc podzielić się z Wami rozwiązaniem problemu zaznaczania zasięgu czegokolwiek na mapie za pomocą okręgu.

Okazało się, że przy rozwiązaniu tego problemu przydała się znajomość matematyki na poziomie maturalnym, tak więc czasami warto się przyłożyć do matury, bo w życiu ta wiedza też może się przydać. Continue reading

Powiększanie, obracanie i przesuwanie obiektów za pomocą dotyku WPF – Blend for VS 2013

Expression Blend to wspaniałe narzędzie wspomagające pracę programisty .NET. Trochę więcej rzetelnych informacji tutaj. Wielu programistów bardzo dba o poprawność i czystość kodu swoich aplikacji, lecz zapomina o dopracowaniu ich wyglądu. Expression Blend, pozwala im w krótkim czasie dopieścić je i dzięki temu przyciągnąć nowych klientów. Ale dość już tej reklamy 🙂

Chciałbym nauczyć Was jak w prosty sposób sprawić, że zwykły kwadrat narysowany na ekranie stał się bardziej interaktywny. Continue reading