Opublikowana została kolejna poprawka dla WordPressa, więc najnowsza wersja to 2.2.3. Instalacja jest banalna (szczegółową instrukcję instalacji poprawki zamieścił niezawodny jak zwykle PolskiBlogger), więc nie ma już żadnych wymówek, każdy powinien zainstalować, szczególnie że jest to poprawka dotycząca bezpieczeństwa i poprawia (poza innymi mniejszymi) dwa błędy oznaczone jako krytyczne.

Wydaje się to tym bardziej istotne, że zdecydowano się opublikować poprawkę już teraz, nie czekając na zapowiadaną na 24 września (czyli za dwa tygodnie) nową wersję 2.3 (dziś ukazała się ostatnia, trzecia już, wersja beta)

Ciekawe, jak wielu WordPressowych blogerów nie czyta swojej własnej strony nowości (to ta widoczna zaraz po zalogowaniu), na której publikowane są wszelkie ważne i inne informacje z Planety WordPressa, i o wszystkich zmianach dowiaduje się dopiero po publikacjach na innych blogach. Swoją drogą to też niezłe multiplikowanie informacji: widziałem ją już na co najmniej kilkunastu (a mój jest kolejny, ha ha ;)

Więc może przy okazji kilka słów o bezpieczeństwie Twojego (i każdego innego) bloga opartego na WordPressie:

Bezpieczeństwo Twojego komputera, serwera i sieci

bezpieczny komputer ;) - foto via flickr.comKomputer na którym piszesz i wysyłasz posty do bloga powinien być zabezpieczony przed wirusami innymi możliwymi internetowymi śmieciami, jak spyware, czy adware. To generalna zasada, ale dotycząca blogów w szczególności. Cały wysiłek włożony w zabezpieczenie Twojego WordPressa pójdzie na marne jeśli dopuścisz do zainstalowania na swoim komputerze keyloggera, mogącego zarejestrować m.in. hasło, którym logujesz się na swoim blogu.

Dotyczy to również sieci i to zarówno miejsca z którego łączysz się z internetem, jak i sieci dostawcy usług hostingowych dla Twojego bloga. Warto stosować zaporę sieciową (firewall) sprzętową lub programową. Przesyłanie hasła otwartym tekstem, w niezabezpieczonej sieci WiFi lub w przygodnej kafejce internetowej równoznaczne jest niemal z wypisaniem go wielkimi literami na Twoim domu. Oczywiście, jeśli prowadzisz tylko osobistego bloga, raczej nikt nie będzie specjalnie polował na hasło do niego i rady te możesz potraktować trochę lżej, niemniej chronienie swojego hasła należy do dobrych praktyk, a jego utrata może być równoznaczna z utratą bloga lub wręcz kompromitacją przed jego czytelnikami (w przypadku różnego rodzaju profesjonalnych blogów straty mogą być znacznie dotkliwsze).

Nie masz wpływu jak zabezpieczony jest serwer dostawcy usług hostingowych (no chyba że prowadzisz bloga na własnym serwerze). Warto jednak się upewnić, że wszelkie oprogramowanie (serwer WWW, PHP, silnik bazy danych i inne) są zainstalowane w stabilnych, pewnych wersjach, a wszelkie poprawki (szczególnie wpływające na bezpieczeństwo) są aplikowane terminowo i wybrać takiego dostawcę, który właściwie reaguje na zgłoszenia dotyczące zabezpieczeń i stosuje właściwą politykę bezpieczeństwa.

Bezpieczeństwo WordPressa

Podstawowa sprawa, to używanie aktualnej, bezpiecznej wersji oprogramowania. O tym była mowa na samym początku artykułu – instaluj poprawki najszybciej jak się da, zaraz po ich udostępnieniu. Jeśli nie czujesz się na siłach by samodzielnie przeprowadzać aktualizację, możesz użyć wtyczki WordPress Automatic Upgrade, która powinna ułatwić ten proces (znajomość języka angielskiego, choćby w podstawowym zakresie, w każdym przypadku jest bardzo pomocna).

Jeśli nie używasz najnowszej wersji, jesteś bardziej narażony na znane ataki – dlatego dobrym pomysłem jest ukrycie wersji WP, której aktualnie używasz, no chyba, że zawsze jesteś na czasie z poprawkami i chcesz się tym chwalić ;) ale nawet w takim przypadku mogą zdarzyć się nawet niedługie okresy między opublikowaniem poprawek a ich instalacją na blogu i wtedy jesteś bardziej narażony na atak. Dlatego warto usunąć informacje o wykorzystywanej wersji:

  • w pliku header.php w linii:
    <meta name="generator" content="WordPress <?php bloginfo('version'); ?>" />
  • pozostawić tylko:
    <meta name="generator" content="WordPress"/>

Dobrze jest też przeprowadzać regularną aktualizację motywu graficznego (theme) swojego bloga oraz wszystkich zainstalowanych wtyczek. Warto więc odwiedzać co jakiś czas strony, z których zostały pobrane temat oraz wtyczki i sprawdzać czy nie zostały opublikowane aktualizacje. Część wtyczek sama informuje o istnieniu nowej wersji, w opcjach ustawienia wtyczki. Nieaktualizowane wtyczki mogą zawierać błędy i być narażone na atak.

Uważa się, że miłym ukłonem w stronę odwiedzających naszego bloga (szczególnie jeśli to blog o blogowaniu) jest opublikowanie listy stosowanych wtyczek. Jeśli chcecie pokazać jakich wtyczek używacie, róbcie to z głową ;) a więc publikując tę listę samodzielnie, a nie pozostawiając każdemu dostęp do katalogu zainstalowanych wtyczek. Po co potencjalny napastnik ma wiedzieć jakich (być może znanych już jako nieodporne na atak) wtyczek używacie. Domyślnie niestety każdy może przeglądać ten katalog (/wp-content/plugin), więc warto do tego nie dopuścić, umieszczając w nim pusty plik index.html, lub kopiując plik index.php z katalogu nadrzędnego (/wp-content).

Uwaga na marginesie: ciekawe czemu twórcy WordPressa nie zastosowali domyślnie tego zabezpieczenia do katalogu wtyczek, skoro zastosowali je do katalogu wp-content – milczenie jest złotem – to tekst z pliku index.php z katalogu wp-content :)

Warto też ustawić nietrywialne hasło oraz nazwę użytkownika bazy danych (oraz samą nazwę bazy), jeśli nie zostało to dobrze wykonane na etapie instalacji i konfiguracji WordPressa. Nazwa użytkownika bazy i hasło powinno być maksymalnie skomplikowane i trudne do odgadnięcia, nie należy się przejmować, że może zostać zapomniane – te dane są wpisane w pliku wp-config.php i używane automatycznie przez WordPress, w 99,9% przypadków nie będzie potrzeby używania tego hasła samodzielnie (oczywiście jeśli zmienimy nazwę użytkownika i hasło do bazy, te same dane trzeba wpisać do pliku wp-config.php). Również hasło administratora bloga powinno być trudne do odgadnięcia.

Świetny pomysł zabezpieczenia dostępu do katalogu wp-admin (a więc dostępu do opcji administracyjnych bloga) za pomocą pliku .htaccess (pliku konfiguracyjnego serwera WWW, umożliwiającego zmianę konfiguracji dla konkretnego katalogu, więcej w Wikipedii) zaprezentował Matt Cutts (tak, ten od Googla ;) w swojej prezentacji whitehat SEO tips for bloggers – to zresztą nie jego pomysł, ale tam go znalazłem, warto też przeczytać całość prezentacji. W katalogu wp-admin (ale nie w katalogu głównym bloga) należy umieścić plik .htaccess z następującą zawartością:

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
allow from xxx.xxx.xxx.xxx
</LIMIT>

W miejsce xxx należy oczywiście wpisać wszystkie numery IP komputerów, z których będziemy korzystać pracując na naszym blogu. Nikt inny, poza użytkownikami spod tych adresów IP nie będzie miał dostępu do opcji konfiguracyjnych naszego bloga. Można oczywiście wstawić dowolną ilość takich linii. UWAGA: jeśli korzystamy ze zmiennego IP (np. neostrada) pomysł ten ma mocno ograniczone zastosowanie – można za każdym razem zmieniać wpis w pliku, lub niestety z niego zrezygnować.

Backup

Regularne wykonywanie kopii zapasowych całego bloga (szczególnie zmienionych plików tematów, wtyczek), a przede wszystkim bazy danych, gdzie trzymane są wszystkie wpisy i nie mniej cenne komentarze, jest również jedną z podstawowych czynności jeśli mówimy o bezpieczeństwie. Oczywiście backup danych nie uchroni przed niebezpieczeństwem, ale pozwoli w miarę szybko i bezboleśnie podnieść się po ewentualnej awarii, ataku lub utracie danych w inny sposób.

Należy upewnić się czy dostawca hostingu zapewnia regularny backup danych (jeśli posiada aktualne kopie, przywrócenie może nastąpić łatwiej i szybciej), ale wykonanie tego we własnym zakresie będzie znacznie pewniejsze ;) Zabezpieczyć należy więc:

  • plik config.php z katalogu głównego bloga
  • wtyczki i tematy (katalogi /wp-content/plugin i /wp-content/themes)
  • wysłane pliki i obrazy (katalog /wp-content/uploads)

wystarczy po prostu regularnie kopiować te pliki i katalogi na swój komputer, przy użyciu dowolnego programu klienta ftp. Jeśli łącze, czas i miejsce na dysku pozwoli, można oczywiście kopiować cały katalog bloga, wtedy odtworzenie danych będzie po prostu polegać na wysłaniu tych danych z powrotem na serwer, w przeciwnym wypadku trzeba będzie ponownie zainstalować WordPressa i skopiować tylko zabezpieczone wcześniej katalogi.

Wykonanie backupu bazy danych jest już trochę mniej trywialną czynnością, ale nie jest wcale trudne – można użyć do tego jednej z istniejących wtyczek, np: WordPress Database Backup lub WP-DBManager – który właściwie jest całym systemem nie tylko do backupu, lecz do zarządzania bazą. Bardziej (ale tylko trochę bardziej, nie jest jakaś wiedza tajemna) zaawansowani użytkownicy mogą skorzystać z phpMyAdmin, który zazwyczaj jest standardowym klientem do obsługi baz u dostawców hostingu. Backup można też wykonać używając standardowych poleceń bazy MySQL, ale to wymaga przede wszystkim dostępu do linii komend (co oferują tylko niektórzy dostawcy hostingu), oraz nieco bardziej zaawansowanej wiedzy. Dla przeciętnego użytkownika WordPressa wystarczająca będzie wspomniana wtyczka WP Database backup. Więcej szczegółów na temat wykonywania i odtwarzania kopii zapasowej bazy danych znajdziecie w dokumentacji WordPressa.

Już w trakcie tworzenia tego posta zostałem poinformowany przez GoogleReadera o nowym wpisie na blogu Lorelle – dotyczy tej samej tematyki i znajdziecie jeszcze więcej porad pomagających w zabezpieczeniu i bezpiecznym korzystaniu w bloga opartego na systemie WordPress. Jak widać publikacja kolejnych poprawek do WordPressa nie tylko mnie skłoniła do przemyśleń na temat jego zabezpieczenia ;)