Przejdź do treści

Ustawienia plików cookie

Prosimy wybrać, na które rodzaje plików cookie Państwo zezwalają. Wybór można zmienić w dowolnym momencie w Ustawieniach plików cookie na dole każdej strony. Polityka prywatności

Niezbędne

Zawsze włączone

Potrzebne do logowania, zachowania koszyka i zapamiętania wyborów. Są zawsze włączone.

Jakie pliki cookie?
  • weboke_sessie, weboke_klant, weboke_remember: sesja i pozostanie zalogowanym
  • weboke_basket: koszyk
  • wkBtwIncl: wyświetlanie cen z VAT lub bez VAT
  • wok_cookies: wybór dotyczący plików cookie, 12 miesięcy

Mierzą, która reklama prowadzi do odwiedzin lub zamówienia, abyśmy nie płacili za reklamy, które nic nie dają.

Jakie pliki cookie?
  • Google Ads przez Google Tag Manager (_gcl_au, _gcl_aw), do 90 dni
  • OpenAI Ads, reklamy w ChatGPT
  • wok_aff: przez którego partnera trafili Państwo do nas (program partnerski), 60 dni

4,6

Kraj i język

Każdy kraj ma własną stronę z cenami i stawką VAT tego kraju.

Wyświetl

Logowanie: hasła, uwierzytelnianie dwuskładnikowe i ataki brute force

Moduł 7: Bezpieczeństwo · Czas czytania: 9 minut

Cel lekcji: Po tej lekcji będą Państwo potrafili zabezpieczyć logowanie do swojej strony za pomocą silnych haseł, uwierzytelniania dwuskładnikowego oraz ograniczenia prób logowania, a także będą Państwo wiedzieć, czym jest xmlrpc.php.

Kluczowe pojęcia: menedżer haseł, fraza hasłowa, unikalne hasło, uwierzytelnianie dwuskładnikowe (2FA, TOTP), passkey, brute force, ograniczenie prób logowania, wp-login.php na adres IP, xmlrpc.php, wyciekające nazwy użytkowników (REST, ?author=), hasła aplikacji

Hasło: długie i unikalne

Dobre hasło ma dwie cechy:

  1. Długie: długość liczy się bardziej niż nietypowe znaki. Fraza hasłowa złożona z czterech lub pięciu losowych słów (sito-pingwin-październik-latarnia) jest silniejsza i łatwiejsza do zapamiętania niż H4sl0!. Kampania rządu niderlandzkiego Veilig Internetten zaleca unikalne hasło o długości co najmniej 12 znaków, najlepiej frazę hasłową.
  2. Unikalne: nieużywane nigdzie indziej. Credential stuffing (lekcja 7.1) działa tylko wtedy, gdy ponownie wykorzystuje się hasło.

Nikt nie zapamięta kilkudziesięciu długich, unikalnych haseł. Dlatego warto korzystać z menedżera haseł: programu, który tworzy je, przechowuje i wpisuje za Państwa. Wtedy wystarczy zapamiętać tylko jedno hasło, do samego menedżera, które również warto zabezpieczyć uwierzytelnianiem dwuskładnikowym.

To, czy dane hasło znajduje się w znanym wycieku danych, można sprawdzić na stronie haveibeenpwned.com. Jeśli Państwa adres e-mail znajduje się w wycieku, należy zmienić hasło w każdej usłudze, w której używali Państwo tego samego hasła.

Uwierzytelnianie dwuskładnikowe

Dzięki uwierzytelnianiu dwuskładnikowemu (2FA) przy logowaniu, oprócz hasła, potrzebny jest jeszcze jeden element: zazwyczaj sześciocyfrowy kod z aplikacji na telefonie (aplikacja uwierzytelniająca, zgodna ze standardem TOTP). Włamywacz znający Państwa hasło nadal się wtedy nie zaloguje.

WordPress nie ma wbudowanego uwierzytelniania dwuskładnikowego. Dodaje się je za pomocą wtyczki. Jest ich wiele; prostą opcją jest Two Factor, stworzona przez współtwórców samego WordPressa. Wtyczki bezpieczeństwa również często mają tę funkcję wbudowaną. Przy wyborze warto zwrócić uwagę na:

  • aplikacje TOTP i kody zapasowe (na wypadek zgubienia telefonu); kody przesyłane e-mailem są słabsze, ponieważ skrzynka pocztowa również może zostać zhakowana;
  • możliwość wymuszenia uwierzytelniania dwuskładnikowego dla administratorów i redaktorów;
  • passkeys: logowanie za pomocą odcisku palca, twarzy lub klucza bezpieczeństwa, bez hasła. Istnieją do tego również wtyczki. Passkeys są odporne na phishing, ponieważ działają wyłącznie na prawdziwej stronie.

Uwierzytelnianie dwuskładnikowe warto włączyć również we wszystkim, co znajduje się wokół Państwa strony: w panelu hostingowym, poczcie e-mail, u rejestratora domeny i w menedżerze haseł. Włamywacz, który przejmie Państwa panel hostingowy, nie potrzebuje hasła do WordPressa.

Brute force i ograniczanie prób logowania

Otwarta strona WordPress przez cały dzień otrzymuje próby logowania na wp-login.php, często z nazwą admin i listami popularnych haseł. Z długim hasłem i 2FA nikt się nie zaloguje, ale każda próba kosztuje serwer moc obliczeniową (pełne uruchomienie WordPressa). Przy dużej fali ataków strona staje się wolna.

Sam WordPress nie ogranicza liczby prób. Co pomaga, w kolejności „wczesnego zatrzymywania”:

  1. Na serwerze: wielu dostawców hostingu blokuje adres IP, który w krótkim czasie wykonuje dużo nieudanych prób, zanim jeszcze uruchomi się WordPress (za pomocą zapory sieciowej lub funkcji serwera WWW). Proszę zapytać swojego dostawcę hostingu, co się dzieje w takiej sytuacji.
  2. wp-login.php tylko dla Państwa adresu IP: za pomocą kilku linijek w pliku .htaccess (w przypadku LiteSpeed i Apache):
<Files wp-login.php>
Require ip 192.0.2.10
</Files>

Działa to dobrze, jeśli mają Państwo stały adres IP. Jeśli nie (w domu, na telefonie), zablokują Państwo sami sobie dostęp, gdy adres się zmieni. Alternatywą jest dodatkowe hasło na stronie logowania (tzw. „chroniony katalog”, basic authentication) z innym hasłem niż hasło do WordPressa.

  1. Wtyczka ograniczająca próby logowania: po pięciu nieudanych próbach adres IP zostaje na jakiś czas zablokowany. Działa, ale dopiero gdy WordPress już się uruchomił, więc obciążenie obliczeniowe pozostaje.

Ukrycie lub zmiana nazwy strony logowania (na przykład /moje-logowanie zamiast /wp-login.php) zmniejsza ilość „szumu” w dzienniku zdarzeń. Nie jest to prawdziwe zabezpieczenie, a niektóre wtyczki i motywy oczekują standardowego adresu. Jako dodatek jest to w porządku, ale nigdy zamiast dobrego hasła i 2FA.

xmlrpc.php

xmlrpc.php to stary interfejs z czasów sprzed REST API, za pomocą którego aplikacje i inne strony komunikują się z WordPressem. Jest nadal używany przez niektóre aplikacje, przez Jetpack i przez kilka integracji. Dla większości stron jest zbędny.

Włamywacze lubią xmlrpc.php, ponieważ w jednym żądaniu można wypróbować setki haseł jednocześnie (za pomocą funkcji system.multicall), a ponadto może on być wykorzystywany do ataków na inne strony (pingbacki). Co można zrobić:

  • Jeśli go Państwo nie używają: proszę go zablokować. Niektórzy dostawcy hostingu, w tym WebOké, blokują xmlrpc.php domyślnie na serwerze. W przeciwnym razie można to zrobić za pomocą reguły w pliku .htaccess lub wtyczki bezpieczeństwa.
  • Jeśli go Państwo używają (na przykład dla aplikacji, która tego potrzebuje): proszę zostawić go otwartego, ale zadbać o silne hasła, 2FA i ograniczenie liczby prób. Nowoczesne aplikacje zazwyczaj korzystają z REST API z hasłem aplikacji (lekcja 3.3).

Wyciekające nazwy użytkowników

W lekcji 3.3 widzieli Państwo, że WordPress pokazuje pochodną nazw użytkowników:

  • https://example.com/?author=1 przekierowuje do /author/<nazwa>/;
  • https://example.com/wp-json/wp/v2/users pokazuje listę slugów wszystkich osób, które coś opublikowały.

Czy to problem? Nazwa użytkownika nie jest hasłem. Przy długim unikalnym haśle i 2FA niewiele to zmienia. Daje to jednak włamywaczowi połowę danych logowania i ułatwia ukierunkowany phishing. Rozsądne środki to:

  • nadanie administratorom nazwy użytkownika innej niż ich publiczna nazwa oraz niepublikowanie treści z konta administratora (lekcja 3.3);
  • ograniczenie listy użytkowników w REST API za pomocą wtyczki bezpieczeństwa lub kilku linijek kodu, jeśli nie jest ona potrzebna. Proszę nie wyłączać REST API całkowicie: edytor blokowy i wiele wtyczek go potrzebuje.

Hasła aplikacji

Hasła aplikacji (lekcja 3.3) to bezpieczny sposób na nadanie dostępu aplikacji lub systemowi, ale omijają one uwierzytelnianie dwuskładnikowe: aplikacja z hasłem aplikacji nie potrzebuje kodu. Proszę tworzyć je tylko wtedy, gdy jest to konieczne, na koncie z niską rolą, i wycofywać je, gdy integracja przestaje być używana.

Podsumowanie

  • Proszę używać długich, unikalnych haseł (fraz hasłowych) w menedżerze haseł.
  • Proszę włączyć uwierzytelnianie dwuskładnikowe, za pomocą wtyczki w WordPressie, a także w panelu hostingowym, poczcie i u rejestratora domeny.
  • Proszę zatrzymywać próby logowania jak najwcześniej: na serwerze, regułą IP lub dodatkowym hasłem, albo za pomocą wtyczki.
  • Proszę zablokować xmlrpc.php, jeśli go Państwo nie używają.
  • Wyciekające nazwy użytkowników to nie katastrofa, ale sygnał ostrzegawczy: proszę nie publikować treści jako administrator i ograniczyć listę użytkowników w REST, jeśli nie jest potrzebna.

Quiz

1. Które hasło jest najsilniejsze?



2. Dlaczego xmlrpc.php jest popularny wśród włamywaczy?



3. Ograniczają Państwo wp-login.php do adresu IP swojego biura. Jakie jest ryzyko?



4. Czy zmiana nazwy strony logowania na tajny adres jest wystarczającym zabezpieczeniem?



Zadanie

Zadanie A7.3: Co Państwa strona ujawnia podczas logowania? Proszę wpisać adres swojej strony i udowodnić, że to Państwa własna strona (za pomocą kodu zadania, jako rekord TXT lub jako plik). Program sprawdza trzy rzeczy: czy xmlrpc.php zwraca listę funkcji (otwarty) czy jest zablokowany, czy /wp-json/wp/v2/users pokazuje nazwy użytkowników (slugi), oraz dokąd przekierowuje /?author=1. Proszę zaznaczyć, czy potrzebują Państwo xmlrpc.php; jeśli nie, otwarty xmlrpc.php zostanie oznaczony na czerwono. Wyciekające slugi są oznaczone na pomarańczowo wraz z wyjaśnieniem.

Zadanie A7.3: Co Państwa strona ujawnia podczas logowania?

Ta kontrola odpytuje ścieżki, które zweryfikujemy wyłącznie na Państwa własnej stronie. Proszę najpierw kliknąć "Pokaż mój kod" i umieścić ten kod jako rekord TXT w _weboke-cursus.<Państwa domena> lub jako plik na Państwa stronie (zob. wyjaśnienie przy kodzie).



Wprowadzone dane i wyniki sprawdzania nie są zapisywane. Przeglądarka zapamiętuje udzielone odpowiedzi oraz informację, czy zadanie zostało zaliczone. Po zalogowaniu w Moje kursy zapisywana jest jedynie informacja, że zadanie zostało zaliczone (lub prawie zaliczone); tam można ją również usunąć.

Zadanie D7.3: Włączenie uwierzytelniania dwuskładnikowego. Proszę włączyć uwierzytelnianie dwuskładnikowe dla wszystkich administratorów swojej strony WordPress, a także w panelu hostingowym i poczcie e-mail. Proszę zapisać kody zapasowe w menedżerze haseł. Dla każdego elementu proszę zaznaczyć, że jest włączony, i zanotować, jaką metodę Państwo stosują (aplikacja, passkey, e-mail) oraz gdzie znajdują się kody zapasowe. Proszę zanotować również, w jaki sposób dodatkowo chronią Państwo wp-login.php i dlaczego wybrali Państwo taki sposób.

Zadanie D7.3: Włączenie uwierzytelniania dwuskładnikowego

To zadanie wykonuje się samodzielnie, nikt go nie sprawdza. Prosimy zaznaczyć wykonane punkty i oznaczyć zadanie jako wykonane.




Zaznaczenia i notatki pozostają tylko w tej przeglądarce; nie są nigdzie wysyłane. Po zalogowaniu w Moje kursy zapisywana jest jedynie informacja, że zadanie zostało wykonane.

Więcej informacji

Poniższe artykuły opisują kroki w panelach WebOké; w innych panelach działają one w podobny sposób.

Chwileczkę…

Konfiguracja domen

Dla każdej domeny można ustawić serwery nazw, powiązanie z hostingiem oraz to, kto zostanie właścicielem.

Wczytywanie domen…