Bezpieczny blog – WordPress

wordpress-blue-m

Postanowiłem napisać ten wpis głównie dla siebie, bo znając moją pamięć, gdybym postanowił postawić nowego bloga, to zapomnę o tym wszystkim, oraz odświeżyć nieco wpis WPNinji, a tym samym pchnąć ludzi, by zamiast narzekać na włamanie do swojego bloga – zrobili coś w celu jego zabezpieczenia. WordPress, jak i inne CMSy nie jest idealny, nie jest pozbawiony wad, dziur, luk, etc. więc naszym obowiązkiem jest zabezpieczyć swoje „dane” w możliwie najlepszy sposób. WPNinja opisał 11 sposobów na zabezpieczenie bloga – ja… postanowiłem je zebrać u siebie w celu odświeżenia tematu zabezpieczeń WordPressa, oraz dodać kilka swoich sposobów, czy też poprawić te, które poruszył Ninja ;) .

Aktualizacje

Nie ulega wątpliwości, że każda nowsza wersja skryptu, czy wtyczek wnosi nie tylko jakieś nowe rzeczy, ale również łata niebezpieczne luki. Pamiętajmy, by nasz blog był w najnowszej możliwej wersji. Co do samego procesu aktualizacji, to od wersji (zdaje się, bądź wcześniejszej) 2.6 wprowadzony został sposób aktualizacji bloga poprzez update-core.php. Co to oznacza? Ano to, że chcący zaktualizować naszego WordPressa do najnowszej wersji wystarczy kilka kliknięć. Nie musimy pobierać spakowanego skryptu, rozpakowywać i podmieniać plików – CMS zrobi wszystko za nas.

Poza tym jeśli tylko zostanie wydana nowa wersja skryptu, to w panelu administracyjnym (tzw. Kokpicie – */wp-admin/) pojawi nam się komunikat o nowej wersji i „prośbie” o aktualizację.

Pamiętajmy jednak, że sposób nie jest w 100% bezpieczny i wskazane jest by przed zabiegiem zrobić sobie kopię plików i bazy.

Kopie bezpieczeństwa

Jest to niemalże najistotniejsza rzecz, którą powinniśmy robić. Generalnie rzecz ujmując, usługodawcy robią to za nas; firmy hostingowe generują systematycznie kopie bezpieczeństwa baz danych, oraz samych danych na serwerze, jednakże nie jest to pozbawione wad, ponieważ często trzeba czekać dłużej na odzew z ich strony, a sami… możemy to wykonać na własną rękę.

Pełną kopię możemy wykonać manualnie, bądź korzystając z opcji, jakie udostępnia nam firma hostingowa (nie każda, ale te które posiadają cPanel, czy też DirectAdmin do zarządzania naszym kontem powinny to udostępniać). Manualną kopię stworzymy wykonując dwie czynności:

  1. Logując się do naszego PhpMyAdmina (najczęściej wygląda to tak: http://domena/phpmyadmin), następnie wybierając bazę, z której korzysta nasz blog i wybierając opcję „Eksport„. Możemy też skorzystać ze sposobu, który opisał WPNinja, czyli korzystając z wtyczki WP-DB-Backup (wtyczka ta jest o tyle ciekawa, że możemy dzięki niej zapisać kopię bazy na naszym serwerze, pobrać na dysk, czy też wysłać na naszą skrzynkę e-mail, poza tym może wykonywać kopie bazy w określonych przez nas odstępach automatycznie).
  2. Kopię plików wykonamy logując się do naszego serwera FTP i ściągając pliki na dysk. Jeśli mamy dostęp do konta Shell to możemy skopiować nasz folder z blogiem, do jakiegoś innego wykonując prostą komendę

cp -r katalog-z-blogiem katalog-z-kopią

Automatyczny sposób tworzenia kopii udostępniają nam Panele Administracyjne (cPanel, DirectAdmin itd.). Niestety, nie opiszę tego sposobu, gdyż posiadam DA i nie wiem, jak wygląda to w przypadku innych paneli.

Informacje o wersji

Dość istotną rzeczą jest usunięcie linijki z kodu, która informuje o używanej przez nas wersji WordPressa. W kodzie wygląda to w następujący sposób:

<meta name="generator" content="WordPress x.x.x" />

Gdzie w miejscu x.x.x jest napisana wersja bloga, z której korzystamy, np. dla wersji 2.8 jest to WordPress 2.8. Wersja ta dodawana jest przez/dzięki

<?php wp_head(); ?>

Natomiast samo usunięcie tej linijki jest niezwykle proste. Jedyne co musimy zrobić, to dodać jedną linijke do pliku functions.php (plik ten znajduje się w katalogu ~/wp-content/themes/szablon/). Jeśli to nie ma, musimy go utworzyć. W celu usunięcia tej linijki dodajmy do niego:

<?php remove_action('wp_head', 'wp_generator'); ?>

Istnieje również możliwość, że autor naszego stylu dodał linijkę, którą przedstawię poniżej (należy ją usunąć):

<meta name=“generator” content=“WordPress <?php bloginfo(’version’) ?>” />

Ograniczanie dostępu

Głównie chodzi tutaj o ograniczenie dostępu do katalogu wp-admin. Możemy tego dokonać przy pomocy odpowiedniej konfiguracji pliku .htaccess. Należy jednak pamiętać, że sposób ten odniesie zamierzony efekt, jedynie wtedy, gdy posiadamy stałe IP. Plik umieszczamy w katalogu wp-admin, a jego zawartość:

order deny,allow
deny from all
allow from xx.xx.xxx.xx

Gdzie w miejsce xx.xx.xxx.xx wpisujemy nasz adres IP.

Możemy również utworzyć „extra” hasło, które zweryfikuje dostęp do katalogu.

Niewyświetlanie zawartości folderów

Często zdarza się, że serwer, na którym znajdują się nasze pliki ma włączone listowanie plików – w przypadku tym wyświetlana jest zawartość każdego folderu. WordPress pomimo tego, że w większości jego folderów znajduje się plik index.php to niestety nie musi on być wszędzie.

Są dwa sposoby dzięki którym zablokujemy wyświetlanie zawartości folderów:

  1. Dodanie do każdego folderu pustego pliku index.html, bądź index.php.
  2. W głównym katalogu naszego bloga dodanie do pliku .htaccess linii:

Options -Indexes

„Mocne” hasło i zmiana loginu administratora

Mocne hasło osiągniemy generując go jakimś programem, np. KeePass (program opisałem we wpisie KeePass środkiem na amnezję), jego zmiany dokonamy na stronie http://domena/wp-admin/profile.php. Natomiast nasz login zmieniamy edytując tabelę wp_users w phpmyadmin, w której to zmieniamy dane w kolumnie user_login oraz user_nicename.

Plik robots.txt

Ważne jest, by w pliku tym ograniczyć dostep robotom katalogującym dostęp do najważniejszych katalogów. Plik ten tworzymy w głównym folderze naszego bloga. Przykładowa zawartość pliku:

User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/
Disallow: /feed/

Odpowiednie CHMODy

Sprawdzić, czy posiadamy odpowiednie CHMODy możemy sprawdzić przy pomocy wtyczki WP Security Scan.

Domyślny prefix

Ważne jest, by już podczas instalacji zmienić domyślny prefix bazy z wp_ na jakiś inny. Jeśli jednak do tej pory posiadamy domyślny prefix, możemy go zmienić przy pomocy wtyczki WP Security Scan.

Rejestracja użytkowników

Najlepiej, by ją wyłączyć.

Połączenie z serwerem

Korzystaj (jeśli dostępne) z bezpiecznego połączenia z serwerem FTP, czyli z SFTP, czy SSH. Pamiętaj również by nie zapamiętywać haseł w programach typu Filezilla, czy TotalCommander.

Na zakończenie

Do napisania tego wpisu wykorzystałem niektóre dane, które pochodziły z wpisu 11 sposobów na zabezpieczenie WordPressa. Posiadam zgodę autora na wykorzystanie wpisu jego autorstwa na łamach mojego bloga.


Komentarze

3 odpowiedzi na „Bezpieczny blog – WordPress”

  1. Przydatane informacje … ja bym do tego dodał odpowiednią wtyczkę AskApache ;))
    Dobrze jest też pamiętać aby maksymalnie szybko aktualizować swojego bloga po pojawieniu się nowej wersji silnika WP.

    Pozdrawiam
    S.Wojnowski
    http://wojnowski.net.pl

  2. Ten 'AskApache’ jest prostszym odpowiednikiem .htaccess + .htpasswd. Różnica – o wiele prostszy w obsłudze i od początku zabezpiecza nam wp-includes, wp-admin, wp-content, plugins…

    Akisment Cię nie lubi, trafiłeś do spamu. Niesłusznie.

  3. Witam
    Zbanowali mi stronę. Jakieś arabusy z Maroka.
    Myślę że po Twoich wskazówkach im się nie uda.
    Lubię takie strony gdzie można otrzymać informacje za darmo w przystępny sposób. Dziękuję pozdrawiam Jakub

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *