secaudit.eu
Zabezpieczenia

Role użytkowników WordPress: porządki w kontach admina

Bezpieczeństwo ról użytkowników WordPress: znajdź wszystkich adminów, usuń konta byłych pracowników i agencji, unieważnij hasła aplikacji i rób kwartalny przegląd.

Autorka: , AngelForce OÜ 6 min czytania

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

Większość witryn WordPress ma więcej administratorów, niż potrzebuje. Każde z tych kont może zainstalować wtyczkę, a instalacja wtyczki oznacza uruchomienie kodu na Państwa serwerze. Bezpieczeństwo ról użytkowników WordPress sprowadza się do jednej zasady, czyli najmniejszych uprawnień: każda osoba ma własne konto i najniższą rolę, która wystarcza do wykonywania jej pracy.

Bezpieczeństwo ról użytkowników WordPress zaczyna się od policzenia adminów

Zacznijcie Państwo od policzenia administratorów. W panelu przejdźcie do Użytkownicy > Wszyscy użytkownicy i kliknijcie filtr „Administrator" nad listą. Zapiszcie liczbę kont i nazwy użytkowników.

W WP-CLI tę samą listę, razem z datami rejestracji, wyświetli polecenie:

wp user list --role=administrator --fields=ID,user_login,user_email,user_registered

W sieci multisite sprawdźcie dodatkowo, kto ma kontrolę nad całą siecią:

wp super-admin list

Przy każdym koncie zadajcie proste pytanie: czy potrafią Państwo wskazać konkretną osobę, która za nim stoi, i czy nadal potrzebuje pełnej kontroli? Jeśli odpowiedź nie jest jednoznaczna, konto trafia na listę do przeglądu. Wszystkie opcje użyte w tym artykule opisuje dokumentacja poleceń użytkowników WP-CLI.

Schemat przeglądu każdego konta administratora WordPress
Jedna decyzja na każde konto admina: zostawić, obniżyć rolę lub usunąć albo potraktować jako incydent

Pięć domyślnych ról i komu którą przyznać

WordPress ma w rdzeniu pięć ról, a w sieci multisite dochodzi jeszcze Super Administrator. Pełną listę uprawnień zawiera oficjalna strona Roles and Capabilities. W skrócie:

RolaCo możeTypowa osoba
Super AdministratorWszystko w całej sieci multisiteOperator sieci
AdministratorWtyczki, motywy, użytkownicy, ustawieniaWłaściciel, szef agencji
RedaktorPublikowanie i edycja wszystkich wpisów i stronDział marketingu
AutorPublikowanie własnych wpisów, wgrywanie plikówStały autor tekstów
WspółpracownikPisanie własnych szkiców, bez publikowaniaAutor gościnny
SubskrybentEdycja własnego profiluCzłonek serwisu, klient sklepu

Wtyczki dodają własne role i uprawnienia. WooCommerce wprowadza na przykład „Menedżera sklepu" i „Klienta", a Menedżer sklepu widzi zamówienia pełne danych osobowych klientów. Podobnie działają często wtyczki SEO, LMS i członkowskie. Przejrzyjcie filtr ról na ekranie Użytkownicy pod kątem ról, których nie znacie, i sprawdźcie w dokumentacji danej wtyczki, co mogą robić.

Moja rekomendacja: codzienna praca z treścią odbywa się na koncie Redaktora. Konto administratora służy wyłącznie do aktualizacji i prac utrzymaniowych. Na pojedynczej witrynie Redaktor nadal może publikować niefiltrowany HTML, więc nie jest to granica bezpieczeństwa wobec osób, którym nie ufacie. Ma to jednak jedną praktyczną zaletę: przejęte w wyniku phishingu konto z działu marketingu nie pozwoli już zainstalować wtyczki.

Konta do usunięcia lub obniżenia: byli pracownicy, agencje, wspólne loginy

Na prawie każdej witrynie małej firmy powtarza się kilka rodzajów kont:

  • Byli pracownicy, których konta nie usunięto po odejściu z firmy.
  • Poprzednia agencja, nadal wpisana jako administrator wiele lat po zakończeniu umowy.
  • Freelancer z jednorazowego projektu, na przykład przebudowy strony lub migracji sklepu.
  • Wspólny login „biuro" lub „info", z którego korzysta kilka osób.
  • Nazwa użytkownika „admin" z pierwotnej instalacji.

Wspólne loginy najtrudniej obronić. Gdy z jednego konta korzysta pięć osób, nie da się ustalić, kto zmienił ustawienie albo wyeksportował dane klientów. Nie można też odciąć jednej osoby bez zmiany hasła wszystkim. Każda osoba powinna mieć własne, imienne konto.

Tak samo powinny pracować agencje. Każdy pracownik dostaje imienne konto, a konta są usuwane w dniu zakończenia umowy. Jeśli agencja ma dostęp administracyjny do witryny z danymi osobowymi, zwykle jest podmiotem przetwarzającym w rozumieniu art. 28 RODO. Jej dostęp należy do dokumentacji prowadzonej razem z umową powierzenia przetwarzania. O stronie dowodowej piszemy w artykule co przechowywać w raporcie z audytu bezpieczeństwa.

Nazwy użytkownika „admin" nie da się zmienić z poziomu panelu, ponieważ na ekranie profilu WordPress informuje, że nazwy użytkownika nie można zmieniać. Zamiast tego utwórzcie nowego administratora z osobistą nazwą użytkownika:

wp user create jane.doe jane@example.com --role=administrator

Zalogujcie się jako nowy użytkownik, a następnie usuńcie stare konto „admin" i przypiszcie jego treści innej osobie, jak opisano w następnej sekcji.

Bezpieczne usuwanie: przepisz treści i zachowaj jednego działającego admina

wp user delete 7 --reassign=2

Jeśli konto ma być tylko obniżone, a nie usunięte, na przykład dla pracownika, który nadal pisze artykuły:

wp user set-role mark.writer editor

Obniżenie roli jest często bezpieczniejszym pierwszym krokiem. Jeśli przez dwa tygodnie nikt nie zgłosi problemu, konto można usunąć.

Hasła aplikacji: logowanie, które przetrwa zmianę hasła

Hasła aplikacji (Application Passwords) są częścią rdzenia od WordPressa 5.6. Pozwalają aplikacjom i integracjom, na przykład aplikacji mobilnej, narzędziu raportowemu czy usłudze automatyzacji, uwierzytelniać się w REST API. Haczyk polega na tym, że działają one dalej po zmianie głównego hasła użytkownika. Jeśli zresetujecie hasło byłej agencji, ale zostawicie jej hasło aplikacji, agencja nadal ma dostęp.

Przejrzyjcie je dla każdego administratora: przejdźcie do Użytkownicy > Wszyscy użytkownicy, edytujcie użytkownika i przewińcie do sekcji Hasła aplikacji. W WP-CLI:

wp user application-password list jane.doe

Lista pokazuje, kiedy każde hasło utworzono i kiedy użyto go ostatnio. Unieważnijcie wszystko, czego nie potraficie przypisać do aktualnej integracji:

wp user application-password delete jane.doe <uuid>

Każde nowe hasło aplikacji nazywajcie od integracji, która z niego korzysta, na przykład „Zapier – eksport zamówień", żeby następny przegląd poszedł szybko. Jeśli nikt na witrynie nie korzysta z tej funkcji, wiele wtyczek bezpieczeństwa i niektórzy hostingodawcy potrafią ją całkowicie wyłączyć.

Ukryte konta admina po włamaniu: jak je wykryć

Atakujący, którzy się włamią, czasem tworzą własnego administratora i ukrywają go kodem filtrującym zapytanie o użytkowników. Takie konto nie pojawia się wtedy w Użytkownikach, a może nie być widoczne także w wp user list, bo WP-CLI ładuje te same wtyczki. Bezpośrednie zapytanie do bazy danych omija ten kod:

wp db query "SELECT u.ID, u.user_login, u.user_email, u.user_registered FROM wp_users u JOIN wp_usermeta m ON m.user_id = u.ID WHERE m.meta_key = 'wp_capabilities' AND m.meta_value LIKE '%administrator%'"

Prefiks wp_ jest tylko wartością domyślną. Najpierw uruchomcie wp db prefix i zamieńcie wp_ w obu nazwach tabel oraz w kluczu meta. Jeśli Państwa prefiks to xy7_, kluczem jest xy7_capabilities. W multisite każda witryna ma własny klucz, na przykład wp_2_capabilities.

Porównajcie wynik z liczbą z panelu. Następnie poszukajcie świeżych dat w user_registered i domen e-mail, które nie należą do nikogo, z kim współpracujecie. Ukryty lub niewyjaśniony administrator to oznaka naruszenia bezpieczeństwa, a nie zwykłe porządki. Nie usuwajcie go od razu. Postępujcie według kroków z artykułu oznaki włamania na stronę WordPress.

Skan wskaźników naruszenia bezpieczeństwa we wtyczce secaudit.eu sprawdza ukrytych administratorów w ramach audytu.

Kwartalny przegląd dostępów jako dowód dla NIS2 i RODO

Przegląd zajmuje około 15 minut. Wykonujcie go co kwartał, a także za każdym razem, gdy ktoś odchodzi lub zmienia się umowa z agencją:

  • Wyeksportujcie listę administratorów (i Super Administratorów w multisite).
  • Potwierdźcie osobę i rolę dla każdego konta. Pozostałe obniżcie lub usuńcie.
  • Sprawdźcie role dodane przez wtyczki, takie jak Menedżer sklepu.
  • Wypiszcie i oczyśćcie hasła aplikacji każdego administratora.
  • Potwierdźcie, że wszyscy administratorzy używają uwierzytelniania dwuskładnikowego.
  • Potwierdźcie, że edytor plików w panelu jest wyłączony.
  • Zapiszcie datę, osobę przeprowadzającą przegląd i wprowadzone zmiany.

Ten ostatni zapis zamienia nawyk w dowód. Art. 21 ust. 2 lit. i NIS2 wymienia wśród minimalnych środków bezpieczeństwo zasobów ludzkich, kontrolę dostępu i zarządzanie aktywami (dyrektywa (UE) 2022/2555). Konkretne obowiązki wynikają jednak z przepisów krajowych wdrażających dyrektywę, więc sprawdźcie krajową ustawę transponującą NIS2. W RODO kontrola dostępu należy do „odpowiednich środków technicznych i organizacyjnych" z art. 32, a art. 5 ust. 2 wymaga, by umieć wykazać ich stosowanie (rozporządzenie (UE) 2016/679).

Jedno ograniczenie warto mieć na uwadze: rdzeń WordPressa nie zapisuje, kiedy użytkownik logował się ostatnio. Żeby znaleźć uśpione konta, potrzebna jest wtyczka rejestrująca aktywność albo logi dostępu serwera. W przeciwnym razie pozostaje pytanie zadane wprost ludziom.

Wtyczka Security Audit & Compliance z secaudit.eu pomaga w części powtarzalnej. Wskazuje ukrytych adminów, słabe lub domyślne hasła i luki w utwardzaniu, takie jak włączony edytor plików, przypisuje ustalenia do art. 32 RODO i art. 21 NIS2 oraz eksportuje raport, który można dołączyć do notatek z przeglądu.

FAQ

Czy zmiana nazwy użytkownika „admin" wystarczy, by powstrzymać ataki?

Nie. Usuwa jedną łatwą do odgadnięcia daną, ale nazwy użytkowników często da się ustalić innymi sposobami. Znacznie więcej dają silne, unikalne hasła i uwierzytelnianie dwuskładnikowe.

Czy agencja może używać jednego loginu admina dla całego zespołu?

Nie. Każda osoba potrzebuje imiennego konta, żeby było widać, kto co zrobił, i żeby można było odebrać dostęp jednej osobie bez wpływu na pozostałe.

Co dzieje się z zamówieniami WooCommerce lub wpisami po usunięciu użytkownika?

Wpisy i strony są usuwane, chyba że przypiszecie je komuś innemu. Wtyczki przechowują własne dane na różne sposoby, więc przed usunięciem kont klientów lub pracowników sklepu sprawdźcie dokumentację wtyczki. Jeśli macie wątpliwości, najpierw obniżcie rolę konta.

Ten artykuł ma charakter ogólnej informacji 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.