Bezpieczeństwo forów opartych o phpBB3

  • Dodano: jaroslw
  • Data dodania: 06.06.2010
  • Ostatnia zmiana: 07 marca 2013, 14:02 przez jaroslw
  • Odsłony: 46723
Wstęp
Każdy administrator powinien mieć świadomość jak ważne jest dbanie o bezpieczeństwo aplikacji internetowych. Aktualizowanie skryptów, tworzenie codziennych kopii zapasowych czy używanie silnych haseł to nie wszystko. Warto zadbać także o dodatkowe zabezpieczenia oraz schematy postępowania, dzięki którym będziemy mogli spać spokojniej.

Kopie bezpieczeństwa
Często są jedynym sposobem na odtworzenie forum po skasowaniu przez włamywaczy. Dobrze zorganizowany system kopii zapasowych potrafi oszczędzić wiele czasu. Pliki forum wystarczy archiwizować przed i po każdej większej zmianie. Jeśli na forum mamy włączoną obsługę załączników może zaistnieć potrzeba codziennej archiwizacji. Wtedy z pomocą przychodzi kopia przyrostowa, która polega na archiwizowaniu jedynie tych plików, które zostały utworzone lub zmodyfikowane od czasu ostatniej kopii.

Niezależnie od wielkości forum należy zadbać o codzienną kopię bezpieczeństwa bazy danych. To właśnie w niej przechowywana jest cała konfiguracja forum, ustawienia kont użytkowników oraz treść tematów. Wraz z trzecią odsłoną skryptu phpBB pojawiło się narzędzie do wykonywania kopii bazy danych z poziomu panelu administracji. Niestety nie do końca można na nim polegać – utworzone kopie często zawierają błędy. Warto więc wykonać ją samemu przy pomocy phpMyAdmina (dla baz MySQL) lub wykorzystać do tego celu osobny skrypt.

Większość płatnych hostingów oferuje codzienną, pełną kopię zapasową naszego konta. W darmowych hostingach jest to raczej niespotykane. Przed zakupem hostingu powinniśmy sprawdzić czy taki system jest w ogóle oferowany, jak często wykonywane są kopie oraz czy ich wydawanie nie jest dodatkowo płatne.

Od czasu do czasu warto zabezpieczyć się we własną kopię bezpieczeństwa. Nie bez znaczenia jest również sposób ich przechowywania, umożliwiający szybkie dotarcie do pożądanej kopii. Dobrą metodą jest utworzenie osobnego katalogu, a w nim umieszczanie kolejnych o nazwie w formacie YYYY-MM-DD. Pozwoli to na utrzymanie porządku nawet przy bardzo dużej ilości plików.

Silne hasła
Warto zadbać o różne hasła do bazy danych, serwera i konta głównego administratora. Są one szczególnie ważne. Powinny składać się z małych i wielkich liter, cyfr oraz znaków specjalnych i być dłuższe niż 10 znaków. Złamanie takich haseł zajmuje zwykle dużo więcej czasu, niż haseł składających się z samych wyrazów, co powinno skutecznie zniechęcić wielu włamywaczy.

W obu przypadkach do złamania można posłużyć się algorytmem brute force, który polega na sprawdzaniu wszystkich możliwych kombinacji znaków. W przypadku drugiego typu haseł z pomocą przychodzi metoda słownikowa, która jest znacznie szybsza. Polega ona na znalezieniu hasła korzystając ze słownika, który zawiera listę wyrazów i ich kombinacji.

Tych samych haseł nie powinniśmy również używać na innych witrynach, gdzie mogą nie być poddawane żadnemu szyfrowaniu. W phpBB3 do szyfrowania haseł została użyta własna funkcja phpbb_hash(). Obok niej najczęściej używa się w tym celu algorytmu MD5 oraz algorytmów z rodziny SHA. Zakodowane w ten sposób hasło określa się mianem „hashu”.

Aktualizacje
Monitorowanie nowych wydań phpBB jest bardzo ważne. Aktualizacje wydawane są średnio co 3 lub 4 miesiące i zawierają poprawki wielu błędów, niekiedy nawet krytycznych. Zaniedbanie przez administratorów aktualizacji oprogramowania jest najczęstszą przyczyną włamań. Jak ważny jest to czynnik może obrazować kilkudniowe unieruchomienie witryny phpbb.com spowodowane włamaniem przez przestarzałą wersję skryptu PHPList. Informacje o wersji skryptu i dostępnych aktualizacjach znajdują się w zakładce System w panelu administracji.

W phpBB3 mamy do dyspozycji kilka metod aktualizacji. Najpopularniejszą i zalecaną jest pakiet automatycznej aktualizacji (ang. Automatic Update Package). Proces aktualizacji przebiega podobnie do instalacji – w kolejnych krokach aktualizujemy bazę danych oraz pliki. W przypadku wykrycia w nich zmian, skrypt postara się je połączyć. Nie zawsze się to jednak udaje i czasami zachodzi potrzeba ręcznej modyfikacji plików.

Drugim sposobem aktualizacji forum jest pakiet zawierający tylko te pliki, w których dokonywano zmian względem ostatniej wersji (ang. Changed Files Only). Metoda ta polega na ręcznej podmianie plików i przeznaczona jest dla forów bez zainstalowanych modyfikacji.

Kolejną metodą aktualizacji jest pakiet tzw. łatek (ang. Patch Files). Jest to lista zmian w kodzie między poszczególnymi wydaniami (także względem wersji kandydujących) przygotowana za pomocą programu diff/patch. Wygenerowane w ten sposób pliki posiadają rozszerzenie .patch. Do ich otworzenia pod systemami z rodziny Microsoft Windows możemy posłużyć się programem WinMerge. W systemach uniksopodobnych (GNU/Linux, FreeBSD, Mac OS X itd.) możemy skorzystać z konsolowego programu patch.

Zaleca się korzystanie z pierwszej metody. W wypadku jej niepowodzenia powinniśmy skorzystać z drugiego sposobu. Ostatnia metoda przeznaczona jest dla zaawansowanych użytkowników, dobrze znających skrypt i instalowane modyfikacje.

Edytor szablonów
Nie każdy wie o obecności w phpBB3 edytora szablonów, dostępnego w panelu administracji (karta Style, strona Szablony, opcja Zmień). Jeśli z edytora nie korzystamy, warto go wyłączyć. W przypadku włamania na konto administratora, zadanie modyfikacji plików lub podejrzenia ich zawartości zostanie znacznie utrudnione. Ważne jest to tym bardziej, jeśli włączymy obsługę PHP w szablonach. Posłużyć to może do wyświetlenia wartości zmiennych pliku konfiguracyjnego np. hasła do bazy danych. Blokady edytora można dokonać poprzez dodanie do pliku config.php następującego kawałka kodu:
Code: Zaznacz cały
@define('PHPBB_DISABLE_ACP_EDITOR', true); 

poniżej linii:
Code: Zaznacz cały
@define('PHPBB_INSTALLED', true); 

Dzienniki zdarzeń
Analizując dzienniki (tzw. logi) możemy prześledzić poczynania wszystkich administratorów, moderatorów oraz użytkowników. Dowiemy się także o każdej próbie logowania na nasze konto. Jeśli zauważymy coś podejrzanego (logowanie w trakcie naszej nieobecności, modyfikacja ustawień forum) może to świadczyć o włamaniu. Jeśli niepokojące zmiany były wykonywane przez innych administratorów, warto upewnić się czy to na pewno oni ich dokonywali. W takim wypadku najlepiej zmienić jak najszybciej wszystkie hasła.

Plik robots.txt
Należy go umieścić w głównym katalogu forum. Zawiera informacja dla wyszukiwarek jakich plików i katalogów nie powinny indeksować. Zapobiegnie to pojawieniu się w wynikach wyszukiwania odnośników do panelu administracji, plików tymczasowych czy plików stylu. Podstawowy plik robots.txt dla phpBB3 powinien wyglądać następująco:
Code: Zaznacz cały
User-agent: *

Disallow: /*.cfg$
Disallow: /*.css$
Disallow: /*.js$

Disallow: /adm/
Disallow: /cache/
Disallow: /docs/
Disallow: /files/
Disallow: /includes/
Disallow: /language/
Disallow: /store/
Disallow: /styles/
Disallow: /common.php
Disallow: /config.php
Disallow: /cron.php
Disallow: /mcp.php
Disallow: /memberlist.php
Disallow: /posting.php
Disallow: /report.php
Disallow: /search.php
Disallow: /style.php
Disallow: /ucp.php
Disallow: /viewonline.php

Uprawnienia dla plików i katalogów
Kolejnym ważnym czynnikiem jest ustawienie odpowiednich praw dostępu (odczytu, zapisu i wykonania) popularnie określanych jako chmod (od ang. change mode). Dla plików jest to 644 oraz dla katalogów 755. Prawo do zapisu dla pliku config.php wymagane jest wyłącznie podczas instalacji. Powinno być wtedy ustawione na 666, a zaraz po instalacji przywrócone na 644.

Jedynymi katalogami wymagającymi stałych praw do zapisu są: store/, cache/, files/ oraz images/avatars/upload/. Dla nich należy ustawić atrybut 777. Niektóre hostingi nie wymagają ustawiania praw do zapisu, a w specyficznych konfiguracjach systemu taka zmiana może nawet powodować błędy. Należy wtedy zajrzeć do działu pomocy hostingu lub skontaktować się z administracją.

Katalog docs/
W katalogu docs/ przechowywane są szczegółowe informacje na temat posiadanego skryptu. Dzięki znajdującemu się tam dziennikowi zmian (ang. changelog) możemy dowiedzieć się na jakiej wersji phpBB pracuje forum. Warto usunąć ten katalog. Brak informacji o wersji zainstalowanego skryptu może zniechęcić wielu początkujących włamywaczy, utrudniając im znalezienie odpowiedniego exploita (skryptu wykorzystującego błędy w oprogramowaniu).

Sprawdzone modyfikacje
Na forum produkcyjnym powinniśmy instalować tylko modyfikacje sprawdzone i pochodzące z pewnego źródła. Instalując niepewne modyfikacje narażamy się na dodanie „złośliwego” kodu. Warto także sprawdzić czy modyfikacja nie jest w fazie rozwojowej. Zagwarantuje to bezpieczeństwo i stabilność działania naszego forum.

Przed wdrożeniem konkretnych modyfikacji powinniśmy przetestować ich działanie na lokalnym serwerze. Dobrym zwyczajem jest zachowanie listy zainstalowanych modyfikacji. Ułatwi to w przyszłości prace nad konserwacją kodu naszego forum. Należy również pamiętać, że aktualizowanie modyfikacji jest tak samo ważne jak aktualizacja całego skryptu.

Największą bazę modyfikacji do phpBB, pisanych przez ludzi z całego świata, znajdziemy na oficjalnej witrynie pod adresem http://www.phpbb.com/customise/db/modifications-1/. Nasz rodzimy odpowiednik dostępny jest pod adresem http://www.phpbb.pl/mods/.

Roboty spamujące
Są zmorą wielu administratorów witryn internetowych. Standardowe phpBB nie jest najlepiej zabezpieczone pod tym względem. Domyślny obrazek z kodem potwierdzającym (CAPTCHA, Completely Automated Public Turing test to tell Computers and Humans Apart) został złamany jeszcze przed premierą finalnej wersji skryptu. Warto zamienić go na jakiś inny – dobrym wyborem jest implementacja reCAPTCHA.

Oprócz tego warto zainstalować modyfikację „Spam Bot Stopped” lub „daroPL_AntiSpam”. Pierwsza z nich dzieli pole adresu e–mail na dwie części co dla wielu robotów jest przeszkodą nie do przejścia. Druga zmienia identyfikator tego pola na losowy przez co jego rozpoznanie staje się prawie niemożliwe. Zwykle te dwie modyfikacje wystarczą, aby skutecznie zabezpieczyć forum.

Dobrym wyborem jest także ustawienie aktywacji konta poprzez e–mail z odnośnikiem aktywacyjnym. Jeśli mimo wszystko jakiemuś robotowi uda się przedrzeć przez formularz rejestracji i tak nie zdoła aktywować konta. W ekstremalnych przypadkach możemy zablokować rejestrację z adresami e–mail w domenach: mail.ru, verizon.net, verizon.com, swbell.net, packbel.net, attbi.net, bellsouth.net, comcast.com i comcast.net. Teraz możemy być pewni, że żaden spam bot nie zagości na naszym forum.

Wirus w kodzie źródłowym
Ostatnimi czasy wiele witryn (w tym także forów phpBB) zostało dotknięte wirusem, który dokleja własny kod do plików. Pierwsze wersje wirusa współpracowały wyłącznie z programem Total Commander. Nowsze generacje działają już z większością popularnych klientów FTP. Wirus przechwytuje dane kont zapisanych w ustawieniach klientów FTP. Następnie loguje się na nie by dokleić ukrytą ramkę <iframe> zawierającą zakodowane odnośniki lub złośliwy kod. Ląduje ona zwykle w plikach index.php i index.htm oraz wielu innych, które ma w definicjach.

W odezwie na skargi klientów, administratorzy wielu hostingów zdecydowali się samemu przeciwdziałać wirusowi, wdrażając technologię skanowania w czasie rzeczywistym (online) plików wgrywanych poprzez FTP. Warto sprawdzić czy taka usługa dostępna jest na naszym serwerze.

W wypadku zainfekowania systemu należy go najpierw przeskanować dobrym antywirusem, a następnie przeskanować pliki forum. Powinniśmy je także porównać z tymi z oficjalnej paczki phpBB. Najlepszą ochroną przed wirusem jest niezapisywanie haseł w programach do obsługi połączeń FTP.

Zakończenie
Zbudowanie bezpiecznego i niezawodnego systemu informatycznego jest bardzo trudne. Przekłada się na to bardzo wiele czynników. Najsłabszym ogniwem takich systemów zwykle jest sam człowiek. Dzięki stosowaniu się do tych zasad możemy zminimalizować ten czynnik i zaoszczędzić sobie w przyszłości wiele czasu i pracy. Pamiętajmy jednak, że mimo dołożenia wszelkich starań nasza witryna nigdy nie będzie całkowicie bezpieczna i, że zawsze może zawinić jakiś czynnik zewnętrzny.

Komentarze

Brak komentarzy