secaudit.eu
Zabezpieczenia

Uwierzytelnianie dwuskładnikowe dla administratorów WordPressa

Jak wdrożyć uwierzytelnianie dwuskładnikowe w WordPressie: aplikacje TOTP, klucze dostępu, kody zapasowe, słabości SMS, kto potrzebuje 2FA, wdrożenie i NIS2.

Autorka: , AngelForce OÜ 6 min czytania

Także po: English Deutsch Français Español Italiano Português Türkçe

Uwierzytelnianie dwuskładnikowe (2FA) w WordPressie sprawia, że samo hasło nie otwiera już kokpitu. Po podaniu hasła strona logowania prosi o drugi dowód tożsamości, zwykle sześciocyfrowy kod z aplikacji w telefonie. To jedno z najtańszych i najskuteczniejszych zabezpieczeń kont administratorów, a ponieważ rdzeń WordPressa nie ma wbudowanego uwierzytelniania dwuskładnikowego, dodaje się je za pomocą wtyczki.

Ten poradnik wyjaśnia, jak działają kody, który drugi składnik wybrać, kto w zespole go potrzebuje, jak wdrożyć 2FA, nie odcinając nikogo od konta, i jaki związek ma ono z RODO i NIS2.

Dlaczego samo hasło zawodzi

Hasła wyciekają. Gdy inny serwis traci bazę użytkowników, atakujący wpisują wykradzione pary adresów e-mail i haseł w formularze logowania w całej sieci. Ta metoda nazywa się credential stuffing i działa wszędzie tam, gdzie ktoś użył tego samego hasła ponownie. Drugą drogą jest phishing: przekonująca, fałszywa strona logowania przechwytuje hasło bezpośrednio.

Każda strona na WordPressie ma publiczny formularz logowania pod adresem /wp-login.php, a hasła przyjmuje także XML-RPC, który jest domyślnie włączony. Administrator może instalować wtyczki, czyli uruchamiać kod na serwerze. W zależności od używanych wtyczek Redaktor może mieć wgląd we wpisy z formularzy lub dane klientów. Jedno wykradzione hasło może więc skończyć się naruszeniem ochrony danych osobowych.

Drugi składnik przerywa ten łańcuch. Atakujący może znać hasło, ale nie ma Państwa telefonu ani klucza bezpieczeństwa.

Jak działa uwierzytelnianie dwuskładnikowe w WordPressie

Najpopularniejszą metodą jest TOTP (time-based one-time password), czyli hasło jednorazowe oparte na czasie, opisane w standardzie RFC 6238. W uproszczeniu:

  1. Po włączeniu 2FA wtyczka wyświetla kod QR. Zawiera on tajny klucz, który zapisuje aplikacja uwierzytelniająca; serwer przechowuje jego kopię.
  2. Aplikacja łączy ten sekret z bieżącym czasem i oblicza krótki kod, zwykle sześciocyfrowy. W standardowej konfiguracji nowy kod pojawia się co 30 sekund.
  3. Przy logowaniu, po podaniu poprawnego hasła, WordPress prosi o aktualny kod. Serwer wykonuje te same obliczenia i porównuje wyniki.
Skradzione hasło zatrzymuje się na drugim kroku: atakujący nie ma kodu z telefonu użytkownika
To samo hasło, dwa wyniki: bez kodu z telefonu logowanie się nie powiedzie.

Ponieważ obie strony obliczają kod niezależnie, nic nie jest wysyłane na telefon, a aplikacja działa offline. Liczy się jednak zegar telefonu: jeśli kody są stale odrzucane, warto sprawdzić, czy telefon ustawia czas automatycznie.

Trzeba też jasno powiedzieć, czego 2FA nie robi. Nie naprawia podatnej wtyczki, bo atakujący, który wykorzystuje błąd we wtyczce, w ogóle nie przechodzi przez formularz logowania; dlatego aktualizacje pozostają na szczycie naszej listy kontrolnej bezpieczeństwa WordPressa. Fałszywa strona logowania wciąż może też w ciągu kilku sekund przekazać kod TOTP do prawdziwej strony. Przed takim phishingiem w czasie rzeczywistym chronią tylko metody odporne na phishing, czyli klucze dostępu (passkeys) i sprzętowe klucze bezpieczeństwa.

Wybór drugiego składnika: aplikacja, klucz dostępu, SMS czy e-mail

Nie każdy drugi składnik jest równie silny:

MetodaPoziom ochronyUwagi
Klucz dostępu lub klucz bezpieczeństwaNajwyższyOdporny na phishing; wymaga obsługi we wtyczce
Aplikacja uwierzytelniająca (TOTP)WysokiBezpłatna, działa offline, szeroko obsługiwana
Kod e-mailemŚredniTak bezpieczny jak skrzynka pocztowa
Kod SMSNajniższySIM swapping, przechwycenie

Klucze dostępu (passkeys) opierają się na standardzie WebAuthn i wykorzystują parę kluczy zapisaną w telefonie, w komputerze lub na kluczu sprzętowym. Przeglądarka używa klucza dostępu tylko w domenie, dla której został utworzony, więc łudząco podobna strona phishingowa nic nie uzyska. Jeśli wtyczka 2FA obsługuje klucze dostępu, warto w pierwszej kolejności udostępnić je administratorom.

Aplikacje uwierzytelniające to praktyczny wybór domyślny. Sprawdzi się każda aplikacja TOTP, np. Google Authenticator, Microsoft Authenticator, aplikacje open source takie jak Aegis czy 2FAS, a także wiele menedżerów haseł.

Kody SMS są słabsze: przestępcy mogą przejąć numer telefonu przez SIM swapping (wyłudzenie duplikatu karty SIM), a wiadomości da się przechwycić. Dlatego amerykańska wytyczna NIST SP 800-63B traktuje kody wysyłane przez sieć telefoniczną, np. SMS-em, jako uwierzytelniacze „ograniczone” (restricted). To lepsze niż nic, ale dla kont administratorów tej metody nie zalecamy.

Kody zapasowe to klucz awaryjny. Większość wtyczek generuje zestaw kodów jednorazowych. Należy je zapisać w menedżerze haseł albo wydrukować i przechowywać w bezpiecznym miejscu – byle nie obok telefonu.

Kto musi używać 2FA w WordPressie

Zalecamy, by uwierzytelnianie dwuskładnikowe było obowiązkowe dla:

  • każdego Administratora i Redaktora, a w sklepach WooCommerce także każdego użytkownika z rolą Shop Manager;
  • każdej osoby, która ma wgląd w dane osobowe, np. wpisy z formularzy, zamówienia czy konta klientów;
  • kont agencji i freelancerów: każda osoba dostaje własne konto i własny drugi składnik, nigdy jeden wspólny login „agencji” powiązany z telefonem jednej osoby;
  • kont wokół WordPressa: panelu hostingu, SFTP lub SSH, rejestratora domeny oraz skrzynki e-mail, na którą przychodzą linki do resetowania hasła.

W przypadku Subskrybentów i klientów sklepu zwykle wystarczy udostępnić 2FA jako opcję.

Wdrożenie 2FA w sześciu krokach

  1. Najpierw uporządkować konta. Usunąć konta byłych pracowników i agencji oraz obniżyć role wyższe, niż to konieczne. Nie ma sensu chronić kont, z których nikt nie korzysta.
  2. Wybrać wtyczkę. Warto szukać obsługi TOTP, kodów zapasowych, wymuszania według ról i najlepiej także kluczy dostępu. Bezpłatna wtyczka Two Factor z WordPress.org jest rozwijana przez współtwórców WordPressa i obsługuje TOTP oraz kody zapasowe, ale nie ma wbudowanego wymuszania według ról. Logowanie dwuskładnikowe TOTP oferują też wtyczki bezpieczeństwa, takie jak Security Audit & Compliance od secaudit.eu.
  3. Przetestować na własnym koncie. Skonfigurować 2FA, wylogować się i zalogować ponownie w prywatnym oknie przeglądarki. Na wszelki wypadek warto mieć drugie konto administratora z 2FA.
  4. Ogłosić termin. Rozesłać krótką instrukcję ze wskazaniem aplikacji do zainstalowania i datą graniczną.
  5. Wymusić 2FA dla wymienionych wyżej ról, tak aby nikt nie mógł pominąć konfiguracji.
  6. Zamknąć boczne wejścia. Wyłączyć XML-RPC, jeśli nic z niego nie korzysta, albo upewnić się, że wtyczka go obejmuje. Przejrzeć hasła aplikacji (dostępne od WordPressa 5.6): służą do dostępu przez API i omijają monit o drugi składnik, dlatego warto zostawić tylko te, które są potrzebne.

Zgubiony telefon: jak bezpiecznie odzyskać dostęp

Telefony giną i są wymieniane, to normalne – dlatego warto zaplanować tę sytuację, zanim się zdarzy.

  • Kod zapasowy: użytkownik loguje się jednym kodem zapasowym, ponownie konfiguruje 2FA na nowym telefonie i generuje nowe kody zapasowe.
  • Inny administrator zwykle może zresetować użytkownikowi drugi składnik. Prośbę należy potwierdzić kanałem, któremu już się ufa, np. oddzwaniając do współpracownika na znany numer. „Zgubiłem telefon, zresetuj mi 2FA” to klasyczny tekst socjotechniczny.
  • Ostateczność, gdy jedyny administrator stracił dostęp: dezaktywować wtyczkę 2FA na serwerze, zalogować się i od razu aktywować ją ponownie.

W WP-CLI należy zastąpić two-factor nazwą katalogu używanej wtyczki:

wp plugin deactivate two-factor

Bez WP-CLI ten sam efekt daje zmiana nazwy katalogu wtyczki w wp-content/plugins/ przez SFTP; przed ponowną aktywacją wtyczki trzeba przywrócić pierwotną nazwę. Ten sposób działa dla każdego, kto ma dostęp do serwera – i właśnie dlatego konta hostingowe i SFTP również wymagają silnej ochrony.

Uwierzytelnianie dwuskładnikowe a NIS2 i RODO

NIS2 mówi o tym wprost: art. 21 ust. 2 lit. j dyrektywy NIS2 wymienia uwierzytelnianie wieloskładnikowe lub ciągłe wśród minimalnych środków dla podmiotów objętych jej zakresem. To, czy obejmuje ona Państwa firmę, zależy od wielkości, sektora i krajowych przepisów, co wyjaśniamy w artykule NIS2 a strona na WordPressie. Nawet jeśli dyrektywa NIS2 nie dotyczy Państwa bezpośrednio, klienci, którzy jej podlegają, muszą zarządzać bezpieczeństwem łańcucha dostaw (art. 21 ust. 2 lit. d) i coraz częściej pytają agencje, czy dostęp administratora jest chroniony.

RODO nie wymienia 2FA z nazwy, ale art. 32 wymaga środków bezpieczeństwa uwzględniających stan wiedzy technicznej. W przypadku kont administratorów z dostępem do danych osobowych 2FA jest tanie i powszechnie dostępne, więc trudno przekonująco twierdzić, że nie było odpowiednim środkiem; więcej na ten temat w artykule art. 32 RODO a WordPress. Warto zapisać, kiedy i dla których ról wymuszono 2FA, bo art. 5 ust. 2 wymaga, by umieć wykazać stosowane środki.

Najczęstsze pytania

Czy 2FA w pełni chroni stronę na WordPressie?

Nie. Chroni logowanie. Podatne wtyczki, słaby hosting i złośliwe oprogramowanie na komputerze użytkownika wymagają osobnych środków.

Czy kod wysyłany e-mailem wystarczy?

Jest lepszy niż brak drugiego składnika, ale kto przejmie skrzynkę pocztową, dostaje zarówno link do resetowania hasła, jak i kod. Administratorom warto zapewnić aplikację lub klucz dostępu.

Czy kilka osób może korzystać z jednego konta chronionego przez 2FA?

Nie powinny. Każda osoba powinna mieć własne konto – to także jedyny czysty sposób, by odebrać dostęp, gdy ktoś odchodzi.

Ten artykuł ma charakter ogólnoinformacyjny i nie stanowi porady prawnej.

Sprawdź swoją stronę

Security Audit & Compliance to wtyczka WordPress od secaudit.eu: wyszukuje złośliwe oprogramowanie, ukryty spam, zmienione pliki rdzenia i podatny kod oraz przypisuje wyniki do art. 32 RODO, art. 21 NIS2 i OWASP Top 10.

Zobacz, co sprawdza wtyczka
Melike Görel

Melike Görel pisze poradniki secaudit.eu o bezpieczeństwie WordPressa i zgodności z przepisami UE dla AngelForce OÜ — firmy programistycznej z Tallinna, która stoi za secaudit.eu.

Przygotowano z pomocą AI i sprawdzono przed publikacją. Ten artykuł ma charakter ogólnoinformacyjny i nie stanowi porady prawnej.