Pisząc o bezpieczeństwie serwisów opartych na WordPressie najczęściej skupiam się na zabezpieczaniu stron przed atakami z zewnątrz. Jednak równie ważne jest zadbanie o jak najlepsze zabezpieczenie samego procesu logowania, tak aby nikt niepowołany nie uzyskał dostępu do konta z uprawnieniami administratora.
Jedną ze skuteczniejszych i najpowszechniej stosowanych metod zabezpieczania procesu logowania jest uwierzytelnianie dwuskładnikowe (two-factor authentication), nazywane też dwuetapowym. Metoda ta polega na dodaniu do procesu logowania dodatkowego składnika w postaci zmieniającego się co pewien czas kodu. Kod ten może być dostarczany użytkownikowi za pomocą SMSa, poczty e-mail (podobnie jak w opisywanej przeze mnie wtyczce Paswordless) czy generowany przez dedykowaną aplikację. Dzięki temu nawet jeśli ktoś wejdzie w posiadanie naszego loginu i hasła, to i tak nie będzie w stanie zalogować się na nasze konto.
Dodanie uwierzytelniania dwuskładnikowego do WordPressa nie jest trudnym zadaniem – wykorzystamy do tego darmową wtyczkę Two Factor Authentication i aplikację Google Authenticator.
Google Authenticator to darmowa aplikacja dostępna na urządzenia mobilne z systemami iOS i Android. Służy ona do generowania kodu, który będziemy musieli wpisać przy każdym logowaniu. Co ważne, nie wymaga ona połączenia z internetem ani z siecią komórkową. Wybrałem akurat tę aplikację, ponieważ większość osób korzystających z internetu posiada konto Google i ma (a przynajmniej powinna mieć) włączoną weryfikację dwuetapową. Oczywiście można skorzystać z innej aplikacji do generowania kodów – wspomnę o nich w dalszej części wpisu.
Po instalacji i aktywacji wtyczki Two Factor Authentication w panelu administracyjnym pojawi się nowe menu Two Factor Auth, gdzie możemy skonfigurować uwierzytelnianie dwuetapowe dla naszej strony.
Przede wszystkim musimy włączyć tę funkcję, co robimy przez wybranie opcji Enabled w sekcji Activate two factor authentication. Po zapisaniu zmian przechodzimy do podłączania aplikacji Google Authenticator do naszej strony.
W sekcji Current codes znajdziemy kilka informacji, które są niezbędne do powiązania naszego konta w WordPressie z aplikacją Google Authenticator.
Aplikacja Google Authenticator pozwala na dodanie strony za pomocą kodu QR. Wystarczy wybrać opcję Zeskanuj kod paskowy i skierować aparat telefonu na wyświetlany na stronie kod. Po chwili nasza strona pojawi się na liście powiązanych kont w aplikacji.
Jeśli nie chcemy korzystać z kodu QR, możemy dodać stronę do aplikacji „ręcznie”, za pomocą klucza widocznego poniżej kodu QR. W aplikacji Google Authenticator wybieramy opcję Ręczne wpisanie, w polu Konto wprowadzamy naszą nazwę użytkownika, a w polu Klucz wprowadzamy pierwszy z widocznych na stronie kluczy (ten dłuższy).
Warto teraz sprawdzić, czy cały proces łączenia konta na stronie z aplikacją przebiegł poprawnie. Jeśli wszystko jest w porządku, jednorazowy kod widoczny na stronie (Current one-time password) powinien być taki sam, jak widoczny w aplikacji. Trzeba pamiętać, że kod ten zmienia się w czasie, tak więc jeśli kod widoczny w panelu naszej strony różni się od widocznego w aplikacji, to należy kliknąć link Update, aby go odświeżyć.
I to właściwie wszystko. Od tej pory po wprowadzeniu loginu i hasła zostaniemy dodatkowo poproszeni o wpisanie kodu wygenerowanego przez aplikację.
Warto dodać, że sekcja Two Factor Auth jest widoczna dla wszystkich roli wybranych w ustawieniach wtyczki (Ustawienia → Two Factor Authentication) – tym sposobem możemy zezwolić na konfigurację uwierzytelniania dwuskładnikowego wszystkim naszym użytkownikom.
Jeśli stracimy dostęp do urządzenia, na którym mieliśmy zainstalowaną aplikację Google Authenticator i nie mamy możliwości wygenerowania kodu, możemy wyłączyć uwierzytelnianie dwuskładnikowe dodając do pliku `wp-config.php` następującą linię:
define('TWO_FACTOR_DISABLE', true);
Alternatywne rozwiązania
Jeśli nie chcemy korzystać z aplikacji Google, do wyboru mamy sporą liczbę alternatywnych rozwiązań. Jednym z popularniejszych jest aplikacja Authy, która jest obsługiwana przez opisywaną tu wtyczkę. Generalnie z wtyczką powinny bez problemu współpracować wszystkie aplikacje korzystające z algorytmu TOTP (Time-based One-time Password) – sporą ich listę można znaleźć na przykład w Wikipedii.