Bezpieczeństwo w XenForo

Witam,

postanowiłem zebrać kilka dobrych i polecanych praktyk, aby usprawnić mechanizmy bezpieczeństwa XenForo, a także jego obsługę, np. kiedy z forum korzysta więcej niż tylko jeden administrator.

Zacznijmy jednak od początku. XenForo zawiera zestaw podstawowych narzędzi, które mogą okazać się przydatne, kiedy mówimy o bezpieczeństwie forum. Te narzędzia to:

Ochrona dwuetapowa​

tzw. 2FA, czyli mechanizm sprawdzający, czy Ty, to Ty. Dlaczego jest on taki ważny? Niestety, obecnie silne hasło skojarzone z profilem administratora może okazać się tylko połowicznym sukcesem, a niekiedy klapą, kiedy zostanie przechwycone. Wtedy atakujący może je wykorzystać i w najmniej oczekiwanym momencie (np. nocą, gdy spisz a ruch na forum jest znikomy) zalogować się na forum, aby dokonać szkód.

Mechanizm 2FA odgrywa tu więc znaczącą rolę, bowiem wyciek hasła administratora może utrudnić atakującemu dostęp do konta, gdyż ten musi wykonać dodatkowy krok, aby sukcesywnie zalogować się na forum. W znacznych przypadkach krok ten może utrudnić, a często uniemożliwić logowanie, ponieważ atakującego czeka kolejne wyzwanie, które ostatecznie może doprowadzić do rezygnacji z chęci ataku.

Ochrona, czy też weryfikacja dwuetapowa w XenForo jest aktywna domyślnie, jednak to w interesie użytkownika, a tym bardziej administratora, leży jej konfiguracja. Aby dostać się do niej, należy odwiedzić swój profil, a dokładniej zakładkę hasło i bezpieczeństwo.

1661697220932.png

Klikamy w opcję Zmień, a następnie wprowadzamy hasło do naszego konta.

Domyślnie XenForo oferuje weryfikację dzięki aplikacjom i/lub wiadomościom e-mail. Różnice:

- weryfikacja za pośrednictwem aplikacji wymaga na zewnętrznym urządzeniu, np. smartfonie, instalacji aplikacji np. Authy albo Google Authenticator, a następnie zeskanowania, poprzez wybraną aplikację, kodu QR, który spowoduje utworzenie specjalnego wpisu, który cyklicznie, zwykle co kilkadziesiąt sekund, będzie generować kody służące do uwierzytelnienia. W praktyce oznacza to to, że atakujący, który loguje się z innego komputera, będzie musiał wprowadzić wygenerowany kod, więc tym samym, musi mieć fizyczny dostęp do Twojego smartfona, który zwykle też zabezpieczony jest hasłem lub blokadą biometryczną.

- weryfikacja za pomocą wiadomości email oznacza, że po próbie zalogowania, atakujący będzie musiał również zalogować się na Twoje konto mailowe, aby odebrać wiadomość z prośbą o potwierdzenie logowania. Ochrona ta nie jest polecana z uwagi na to, że wiele skrzynek mailowych zwykle nie jest zabezpieczona lub użytkownicy lubią mieć te same hasła na wielu stronach co skutkuje tym, że dostęp do skrzynki pocztowej administratora może zostać ułatwiony.

Istnieje również możliwość zabezpieczenia konta za pomocą jednorazowych kluczy bezpieczeństwa. Klucze te generowane są na stronie w profilu użytkownika i te należy zachować w bezpiecznym miejscu. Podczas logowania, użytkownik będzie proszony o wprowadzenie takie klucza, dlatego jest to ważne, aby mieć je pod ręką jednocześnie w bezpiecznym miejscu.

Po wybraniu jednej lub kilku z powyższych metod, przeglądarka/urządzenie, z którego dokonano logowania i pomyślnej weryfikacji, zapamiętywane jest na okres 30 dni. Po ponownym odwiedzeniu panelu użytkownika, pojawi się uproszczone podsumowanie zaufanych urządzeń:

1661698195290.png

Gdybyśmy logowali się z komputera publicznego (co nie jest zalecane), do którego dostęp ma niejedna osoba, moglibyśmy zechcieć przestać ufać temu komputerowi w taki sposób, aby zapomniał o weryfikacji co spowoduje, że kolejna próba logowania wymagać będzie uwierzytelnienia. To samo, choć w przeciwną stronę, gdybyśmy zauważyli na koncie podejrzaną aktywność, możemy przestać ufać wszystkim innym urządzeniom, na którym dokonano logowania, a zostawić to, z którego obecnie korzystamy. Do rozbudowanej 2FA wrócimy jeszcze później.

Automatyczna blokada​

tzw. auto-lock to opcja, która pozwala zabezpieczyć się przed atakiem tzw. brute force. Brute force to metoda polegająca na łamaniu haseł poprzez wpisywanie wszystkich możliwych kombinacji znaków aż do momentu odgadnięcia hasła. Im bardziej nasze hasło jest skomplikowane, tym dłużej zajmuje jego zgadnięcie. Hasła stosowane w Internecie nie powinny zawierać odniesień do konkretnych przedmiotów, czy nazw, a najlepiej powinny składać się z przypadkowych znaków. Jest to ważne, ponieważ do ataków brute force wykorzystuje się tzw. słowniki zawierające przede wszystkim popularne hasła, kombinacje, czy znane wyrażenia, najczęściej te, które już kiedyś stanowiły hasła lub ich część i wyciekły do Internetu.

Przed brute force można chronić się więc korzystając z limitu błędnych prób logowania. Taka opcja dostępna jest w panelu administratora w lokalizacji Konfiguracja > Opcje użytkownika.

1661698997100.png

Co prawda jej konfiguracja jest wręcz znikoma, to jednak spełnia swoją rolę i oznacza, że w przypadku błędnych prób logowań, logowanie do konta zostaje zablokowane na kolejne 15 min. Kiedy konto jest cyklicznie blokowane, taką blokadę można obejść poprzez zresetowanie hasła. Atakujący, który co chwila wprowadza błędne dane logowania, po kolejnych próbach traci okresowo dostęp do systemu, gdyż musi odczekać "karę" otrzymaną z powodu zbyt wielu prób błędnych logowań. A ponieważ łamanie haseł tą metodą jest bardzo czasochłonne i potrafi zająć kilka tygodni, a nawet miesięcy, atakujący może zrazić się znacznie wydłużonym czasem operacji i zaniechać swoich działań.

Dodatkowo możemy zrezygnować z blokady konta na rzecz mechanizmu Captcha, który może okazać się przydatny przeciwko botom, gdyż te będą musiały stanąć przed zadaniem rozwiązania konkretnego zdania, co może stanowić kolejny dla nich problem.

Ręczna blokada​

funkcja, dzięki której możemy tymczasowo zablokować konto, na którym zauważyliśmy podejrzaną aktywność, aby pomóc jemu właścicielowi w jego odzyskaniu. Efekt użycia tej opcji spowoduje, że konto zostaje zamknięte do momentu, kiedy użytkownik nie zmieni swojego hasła.

1661700042266.png

Do pomocy możemy posłużyć się adresami IP, które do wglądu administratorom, zapisywane są w profilach użytkowników. Jeśli użytkownik nie korzysta z VPN i nie jest na wakacjach, być może warto sprawdzić, czy jego logowanie nie nastąpiło z podejrzanego adresu IP, aby móc podjąć odpowiednie kroki w ochronie jego konta.

Ochrona przed botami i spamem​

Twórcy XenForo oddają całkiem spore narzędzia do walki z niechcianymi wiadomościami typu SPAM oraz rejestracjami tzw. botów, które ten spam mogą rozsyłać. W panelu administratora, w ustawieniach Konfiguracja -> Kontrola spamu otrzymujemy dostęp do narzędzi, które mogą ochronić nas przed tego typu treścią. Część z tych funkcji należy konfigurować uważnie, jednak na sam początek warto zwrócić uwagę na mechanizmy tzw. Captcha i od razu przejść do jej konfiguracji.

Mechanizm captchy w dużym uproszczeniu wprowadza proste do rozwiązania zadania, które nie powinny być problemem dla człowieka, ale dla botów. Captcha stosuje się zwykle tam, gdzie na stronach internetowych zamieszczane są formularze. Najprostszym tego przykładem jest rejestracja. Bez mechanizmów captchy może okazać się, że boty sukcesywnie zarejestrują się na naszej stronie a następnie przejdą do masowego rozsyłania niechcianych wiadomości. Captcha powinna być skonfigurowana w pierwszej kolejności. Warto jest więc przejrzeć ustawienia dostępne na wspomnianej stronie i dopasować je według uznania.

Pozostałe​

W rdzeń XenForo zaimplementowano również wiele innych funkcji odpowiedzialnych za bezpieczeństwo. Do nich zaliczamy np. szyfrowanie haseł w jedną stronę metodami sha256 lub sha1 oraz sprawdzanie autentyczności plików, gdyby okazało się, że któryś z nich został `zatruty` lub po prostu zmodyfikowany i nie jest autentyczny. Taką weryfikację spójności plików można uruchomić bezpośrednio z panelu administratora: Narzędzia -> Spójność plików.
 
Ostatnia edycja:

dave

Członek ekipy

Rozszerzona ochrona dwuetapowa dzięki Yubikey​

W pierwszym poście wspomniałem co nieco o dodatkowym uwierzytelnianiu, w skrócie 2FA, dzięki któremu wyciek lub utrata hasła nie musi okazać się tak bolesna. Ochronę tę można dodatkowo rozszerzyć za sprawą świetnego, darmowego dodatku o nazwie Security autorstwa DigitalPoint. Nieco więcej na jego temat można przeczytać w poniższych wątkach.



W dużym skrócie, rozszerzenie usprawnia to, co do rąk użytkowników oddali twórcy XenForo, dzięki czemu jeszcze sprawniej możemy zabezpieczyć konta użytkowników. Ciekawą i zupełnie nową funkcją jest możliwość skonfigurowania kluczy wspierających FIDO2, czyli tzw. kluczy Yubico.

Klucze YubiKey możliwe są do kupienia w Internecie, a ich ceny potrafią przekroczyć nawet 200 zł. Do demonstracji możliwości tych kluczy wykorzystamy jeden z nich. Nasz wyposażony został w interfejs USB typu A oraz technologię NFC. Interfejs fizyczny wykorzystamy praktycznie niemal na każdym komputerze, z kolei bezprzewodowy, dzięki NFC, na urządzeniach mobilnych, np. smartfonie czy tablecie, pod warunkiem, że taką komunikację również wspierają.

YubiKey.jpg

Aby dodać taki klucz należy udać się do ustawień hasła i dodać kolejną opcję weryfikacji dwuetapowej ze wskazaniem na klucz bezpieczeństwa. Po kliknięciu w przycisk Dodaj nowy klucz bezpieczeństwa zostaniemy przekierowani na stronę, która wywoła informację o przygotowaniu takiego klucza.

1661715866191.png

Wybieramy OK a następnie, zgodnie z kolejną informacją, podłączamy nasz klucz do komputera.

1661715876485.png

Następnie wystarczy dotknąć wewnętrzną część klucza (w naszym wypadku jest to centralny okrąg umieszczony fizycznie na kluczu) i odczekać chwilę.

1661715885630.png

Na samym końcu nadajemy mu nazwę i potwierdzamy.

Od teraz, kiedy urządzenie utraci status zaufanego lub po raz pierwszy zalogujemy się na obcym urządzeniu, będziemy mogli skorzystać z dobrodziejstw Yubikey. Oczywiście nie jest to metoda zastępująca inne. Jeśli na koncie skonfigurowano klucz bezpieczeństwa i kody aplikacji mobilnej, w zależności od posiadanych przez nas środków, możemy naprzemiennie stosować obydwie te metody. Wszystko zależy od tego, czy klucz nosimy przy sobie, a może został w domu i pod ręką mamy tylko smartfona.

Co więcej, rozszerzenie to nie tylko umożliwia skonfigurowanie dodatkowej ochrony uwierzytelnienia, ale udostępnia użytkownikowi szczegółową analizę nawiązanych sesji, sprawdzenie ostatnich adresów IP (skąd i kiedy nastąpiło logowanie), czy też możliwość zmiany czasu wygaszania zaufanych urządzeń. Być może niektórzy administratorzy woleliby ukrócić ten czas do dwóch tygodni lub drastycznie nakazać użytkownikom weryfikować się codziennie, pod warunkiem, że skonfigurowali przynajmniej jedną z dostępnych ochron.
 
Ostatnia edycja:

dave

Członek ekipy

Bezpieczeństwo administracji​

Każdy właściciel forum powinien zatroszczyć się o bezpieczeństwo swoich użytkowników, ale także i całego forum, dlatego kolejną ważną sprawą jest dostęp do panelu administratora, czyli pliku admin.php .

Panel administratora może zostać również objęty ochroną, którą omówiłem powyżej, a więc tą składającą się z dodatkowego uwierzytelnienia. Taką ochronę można wywołać bezpośrednio w panelu administratora wyszukując funkcji Wymuś weryfikację dwuetapową podczas logowania do panelu administratora. Jak więc sama jej nazwa mówi, logowanie do panelu administratora będzie wymagać również dodatkowej weryfikacji, jednak działa ona dokładnie tak samo, jak w przypadków logowania na forum, a więc zapamiętuje sesje i urządzenie, które jest już zaufane, dlatego po jej włączeniu, wylogowaniu i ponownym zalogowaniu, prośby o weryfikację najpewniej nie uświadczysz.

O wiele lepiej i nieco drastyczniej jest więc zabezpieczenie pliku admin.php hasłem lub konkretnym adresem IP, dzięki czemu wejście na konkretny adres ze wskazaniem na ten plik obarczone zostanie prośbą o wprowadzenie kolejnego hasła lub od razu odrzuci próbę wejścia. Aby zabezpieczyć w ten sposób plik admin.php należy zalogować się na konto FTP i otworzyć plik o nazwie .htaccess . Do pomocy posłużymy się stroną:


Zgodnie z punktami znajdujących się na stronie:

1) Jeśli mamy kilku administratorów, którym chcemy dać dostęp do panelu administratora, możemy odpowiednio utworzyć kilku użytkowników oraz hasła do nich przypisanych. Jeśli administratorem forum jest tylko jedna osoba, nie ma potrzeby tworzyć kilku użytkowników.

2) W następnym polu wprowadzamy ścieżkę główną naszego forum. Ścieżkę tę można podejrzeć zwykle w managerze plików na serwerze lub głównym koncie FTP.

3) Tutaj wprowadzamy plik, który chcemy zabezpieczyć, a więc admin.php .

Po zatwierdzeniu otrzymamy zawartość dwóch plików .htaccess oraz .htpasswd . Zgodnie z instrukcją podaną na stronie, zawartość .htaccess doklejamy do istniejącego już pliku .htaccess znajdującego się w głównym katalogu XenForo. Plik .htpasswd umieszczamy na serwerze, w lokalizacji, która nie jest dostępna publicznie, czyli w taki sposób, aby nie dało się takiego pliku przechwycić w przeglądarce www. Gdy już znajdziemy na ten plik odpowiednie miejsce, wracamy raz jeszcze do .htaccess i wprowadzamy ścieżkę do pliku .htpasswd . W taki sam sposób możemy zabezpieczyć inne pliki lub całe katalogi znajdujące się na naszym serwerze. Takim katalogiem może być folder install, który umożliwia przebudowanie danych głównych, tj. frazy językowe czy szablony, ale również może spowodować zainstalowanie forum na nowo, jeśli instalator z jakichś powodów został odblokowany. Katalog install jest więc katalogiem bardzo wrażliwym.

Wspomniałem również o wariancie z adresem IP. Wówczas do pliku .htaccess dodajemy:

Kod:
<Files admin.php>
Order Deny,Allow
Deny from all
Allow from xxx.xxx.xxx.xxx
</Files>

gdzie

Kod:
Allow from xxx.xxx.xxx.xxx

zamieniamy na nasz adres IP. Na przykład:

Kod:
<Files admin.php>
Order Deny,Allow
Deny from all
Allow from 87.123.124.24
</Files>

Nasz publiczny adres IP możemy odczytać na pierwszej lepszej stronie wpisując w google frazy what is my IP albo jaki jest moje ip. Przykładowa strona:


Adresy publiczne występujące w Internecie są unikalne, więc teoretycznie wariant z zezwoleniem konkretnego IP wydaje się wręcz idealny. Niestety, nie ma róży bez kolców i najczęściej bywa tak, że adres IP otrzymany od operatora, z którym podpisaliśmy umowę o Internet najczęściej jest adresem dynamicznym co oznacza, że w każdej chwili może ulec zmianie, a to spowoduje, że kolejne wejście na stronę /admin.php zakończy się błędem. Oczywiście tych adresów możemy wprowadzić wiele, a także wyznaczoną ich część na wypadek, gdyby tylko nieznaczna część adresu ulegała zmianom. Posiadając więc zmienne IP należy liczyć się z częstą i monotonną aktualizacją pliku .htaccess .

Jeśli mamy taką fantazję, możemy zezwolić na wiele adresów IP, na przykład w taki sposób:

Kod:
<Files admin.php>
Order Deny,Allow
Deny from all
Allow from 87.123.124.24
Allow from 87.123.124.25
Allow from 87.123.124.26
Allow from 87.123.124.27
</Files>
 
Ostatnia edycja:

dave

Członek ekipy

Hasła, hasła, hasła...​

Kolejnym ważnym tematem do poruszenia jest ochrona haseł. Jak rozsądnie nimi zarządzać?
  • nie powinno zapisywać się haseł bezpośrednio w przeglądarce www. Choć jest to łatwe i przyjemne, a przeglądarki same wręcz oferują taką funkcję, otwiera to jednocześnie drogę atakującemu do przechwytu takiego hasła. Wystarczy dostęp fizyczny, zdalny lub zainfekowanie komputera złośliwym oprogramowaniem. To samo tyczy się danych zapisanych w programach uważanych za klientów FTP,
  • stosuj skomplikowane hasła składające się ze znaków pisanych wielkimi i małymi literami, symboli, cyfr, nienawiązujących do żadnych fraz występujących w popularnych słownikach. W celu łatwiejszego zapamiętania, staraj się łączyć wyrazy lub tworzyć własne,
  • nie stosuj tego samego hasła na każdej możliwej stronie www. Nawet w poważnych sklepach internetowych, firmach lub korporacjach dochodzi często do tzw. włamań lub wycieków danych, na które reakcje często działają z dużym opóźnieniem. Jeśli pewną stronę darzysz mniejszym zaufaniem, zastosuj inne hasło,
  • w miarę możliwości zmieniaj hasło co określoną liczbę tygodni lub miesięcy. Duże firmy, za sprawą swoich działów zajmujących się bezpieczeństwem, wymuszają na pracownikach cykliczną zmianę takich haseł,
  • stosuj dodatkowe metody zabezpieczeń, np. hasła główne, uwierzytelnienie dwuskładnikowe, w szczególności dla Twoich skrzynek pocztowych, w których znajdują się wrażliwe dane,
  • niektóre chmury, jak np. OneDrive (zintegrowany z pocztą Outlook/Live), oferują możliwość skonfigurowania tzw. sejfu, a więc specjalnego katalogu obarczonego dodatkowym wymogiem uwierzytelniania,
  • pod żadnym pozorem nie zapisuj haseł w widocznych miejscach, np. na pulpicie w pliku tekstowym albo na kartce w pobliżu komputera, z którego korzystasz. W tym celu zainteresuj się specjalnymi menadżerami, które przechowują, generują oraz dodatkowo zabezpieczają Twoje hasła,
  • uważaj na phishing! W miarę możliwości weryfikuj informacje o stronach, które odwiedzasz oraz źródła, z których otrzymujesz wiadomości. Zachowaj szczególną ostrożność, kiedy otrzymasz komunikat o rzekomym logowaniu na konto bankowe, zresetowaniu hasła czy zakupie dóbr. Zachowaj spokój i przeanalizuj każdy szczegół, przede wszystkim nadawcę takiej wiadomości, a także link do strony, który się w niej znajduje. W większość przypadków został on spreparowany w celu wymuszenia Twoich danych!
Przeanalizuj i zastosuj ideę Something You know, Have or Are (ang. coś, co wiesz, masz lub (tym) jesteś) promowaną przez duże firmy informatyczne i organizacje, w myśl której:
  • Something You Know - to nic innego, jak stosowanie haseł lub tzw. pinów. Z haseł korzystamy każdego dnia, aby otrzymać dostęp do konkretnych miejsc lub systemów. Niestety, coś, co wiesz możesz również zapomnieć, a jeśli spiszesz sobie to na kartkę, może zostać podejrzane lub odnalezione.
  • Something You Have - ta forma autoryzacji niweluje problem z zapamiętaniem czegoś, co wiesz, jednak pamiętaj, że musisz mieć przy sobie przedmiot (np. smartfon, klucz Yubi, kartę magnetyczną, itd.), który musisz wykorzystać w celu dokończenia uwierzytelnienia. Co więcej, taki przedmiot może zostać skradziony i wykorzystany przez osoby trzecie.
  • Something You Are - coś, co znacznie trudniej jest zgubić lub porzucić, a jego przykładem jest np. odcisk palca lub skaner tęczówki oka. Niestety, taka opcja uwierzytelniania nie zawsze jest dostępna, prawdopodobnie ze względu na wysokie koszta sprzętu, który ją obsługuje.
 
Ostatnia edycja:

XENFOR

Użytkownik
Świetny opis. Jednakże co stworzył człowiek człowiek też popsuje - zhakuje.
 
Ostatnia edycja:

.dev

Użytkownik
Elegancko wytłumaczone tym bardziej dla człowieka który się nie zna.
Oczywiście wszystko da się obejść ale lepiej rzucić kłody pod nogi
 

dave

Członek ekipy
Dokładnie. Opisane powyżej metody są bardziej uniwersalne i można z nich korzystać na co dzień w różnych systemach lub programach. Jeśli któreś z nich podatne jest na ataki, ponieważ programista coś skopał, to wtedy zabezpieczenia konta dla atakującego mogą nie być żadnym problemem, ponieważ nie będą stanowić dla niego żadnej przeszkody.
 

Danloona

Użytkownik
Do nich zaliczamy np. szyfrowanie haseł w jedną stronę metodami sha256 lub sha1
Nie jest to do końca prawdą ponieważ xenForo 2.x używa bcrypt jako algorytmu do hashowania haseł dodatkowo do każdego użytkownika jest przypisany osobny salt, tak aby każdy użytkownik miał jak najbardziej możliwy unikalny hash, dodatkowo same hashe z hasłami są przechowywanie w bazie w formie blobów.
Wczesne wersje 1.x faktycznie używały schematu sha1(sha1(password) . salt) i sha256(sha256(password) . salt)

Dodatkowo wspomniałbym coś o używaniu WAF-u po stronie serwera, większość hostingów oferuje go w formie Imunify360 lub BitNinja, czasem się zdarza jeszcze OWASP, poprawia to bezpieczeństwo w przypadku różnych wstrzyknięć kodu (RCE) lub SQL Injection i XSS.

Tak poza tym dość treściwy poradnik, natomiast od siebie polecam, również zdroworozsądkowość w podejmowaniu decyzji związanych z bezpieczeństwem, nie dajmy się też zwariować.

Również pamiętajmy o aktualizowaniu aplikacji/stacku serwerowego.
 
Ostatnia edycja:

dave

Członek ekipy
Jeśli chcesz, możesz dopisać do tego wątku kolejne wskazówki. Na pewno wszyscy chętnie o nich poczytamy. :)
 
Powrót
Góra