Jak włączyć i wyłączyć automatyczne aktualizacje w WordPress?

code wordpress

WordPress jest systemem CMS, który co jakiś czas wymaga aktualizacji w związku z tym, że jest cały czas rozwijany i poprawiany. Niestety (albo stety) czasem wiąże się to również z naprawianiem luk bezpieczeństwa, stad jest jest to bardzo ważne, żeby pilnować aktualizacji na bieżąco.
Twórcy WordPressa już jakiś czas temu (wer. 3.7, październik 2013) wprowadzili mechanizm automatycznych aktualizacji działających w tle. Czytaj dalej Jak włączyć i wyłączyć automatyczne aktualizacje w WordPress?

Zmiana prefiksu bazy danych po zainstalowaniu WordPress

wpdb

W poprzednim artykule dotyczącym najczęstszych grzechów początkujących użytkowników WordPressa wspomniałam o tym, że aby zwiększyć bezpieczeństwo i zmniejszyć ilość ataków na stronę, warto zmienić domyslny prefiks bazy danych już podczas instalacji (o jaki parametr dokładnie chodzi widać na obrazku poniżej).
install-wp-step3
Zacznijmy jednak od początku.

Dlaczego mielibyśmy zmieniać domyślny prefiks bazy danych?

Powody do zmiany domyślnego prefiksu bazy danych mogą być (co najmniej) dwa.
Pierwszy dotyczy przypadku, gdy mamy kilka instalacji WordPressa (kilka stron wymagających dostępu do bazy danych) na serwerze. Ustawiając unikalne prefiksy dla stron, będzie możliwe odróżnienie tych danych.
Drugi powód wiąże się z bezpieczeństwem witryny. Dzięki temu, że ustawimy unikalny prefiks bazy danych (najlepiej losowy ciąg znaków) nasza strona będzie mniej podatna na zautomatyzowane ataki typu SQL Injection.
Mamy z nimi do czynienia na przykład używając wtyczki, która nie została odpowiednio zabezpieczona przed wstrzyknięciem kodu (SQL Injection). Haker, wiedząc o tej luce, może spróbować dostać się do naszej bazy danych (prefiks „wp_”).

Jak zmienić prefiks bazy danych bez użycia wtyczek

Zanim zaczniemy cokolwiek zmieniać w naszej bazie powinniśmy wykonać kopię zapasową (Zobacz jak można zrobić kopie zapasową) oraz wyłączyć witrynę na czas zmiany (ponieważ chwilowo będzie ona i tak niedostępna – uruchomi nam się plik instalacyjny WP).

  • Zaczynamy od edycji pliku „wp-config.php” w katalogu głównym. Szukamy ciągu znaków
    $table_prefix=’wp_’; i zmieniamy go na własny np. „csjhyz7a_”. Możemy uzywać tylko liter, cyfr i znaku podkreślenia.
  • W następnych krokach będziemy operować na bazie danych dlatego logujemy się do phpMyAdmina i wybieramy naszą bazę. Następnie:
    – Zaznaczamy wszystkie tabele w naszej bazie i z menu rozwijanego wybieramy „Zmień przedrostek tabeli”
    wpchangedbprefix

    – Zmieniamy prefiks w bazie danych wpisując:
    wpchangedbprefix
    W przypadku, gdy nie wpiszemy poprzedniej wartości (OD), wartość nowa (DO) zostanie dopisana na początek nazwy każdej z tabel.

    – W następnym kroku będziemy modyfikować wartości w dwóch tabelach: „csjhyz7a_options” i „csjhyz7a_usermeta”:

    Zmian dokonamy osobno w obu tabelach, dlatego najpierw wybieramy tabelę „csjhyz7a_options” i klikamy w „Szukaj” w górnym menu, potem w polu „option_name” wpisujemy zapytanie „%wp_%” i klikamy „Szukaj” jak na poniższym obrazku:
    wpchdbp_sopt2
    Po kliknięciu Szukaj możemy otrzymać na przykład takie wyniki:
    wpchdbp_sopt
    Wyniki mogą się różnić w zależności jakie wtyczki czy motywy mamy zainstalowane. W powyższej (testowej) wersji WordPressa są zainstalowane wtyczki ContactForm7 i WP SEO Yoast.

    Z otrzymanych wyników zaznaczamy ptaszkiem te, które chcemy zmodyfikować i klikamy przycisk „Zmień” pod tabelką.

    Jakie wartości zmieniamy?
    W tabeli „wp_options” zmienimy wartość „wp_user_roles” na „csjhyz7a_user_roles”.

    W tabeli csjhyz7a_usermeta” zmienimy wartości:
    „wp_capabilities” na „csjhyz7a_capabilities”,
    „wp_user_level” na „csjhyz7a_user_level”,
    „wp_user-settings” na „csjhyz7a_user-settings”,
    „wp_dashboard_quick_press_last_post_id” na „csjhyz7a_dashboard_quick_press_last_post_id”,
    „wp_user-settings-time” na „csjhyz7a_user-settings-time”.

    wpchdbp_sopt5

Następnie pozostaje nam zalogować się do panelu administracyjnego strony i sprawdzić czy wszytko działa tak jak trzeba tzn. czy da się zalogować, czy nie wyświetlają się błędy, sprawdzić wtyczki czy działają (w szczególności te związane z bezpieczeństwem) oraz czy mają ustawioną którąś z opcji (prefiks) jako „wp_” – jeżeli tak to należy ją nadpisać nową wartością.

Które wtyczki mogą pomóc w automatycznej zmianie prefisku?

Oto niektóre przydatne wtyczki, można je znaleźć w oficjalnym repozytorium www.wordpress.org/plugins
– WP-DBManager
– Change DB Prefix
– iThemes Security (Better WP Security)
– Acunetix WP Security Scan

Na koniec warto przypomnieć, że w dobrych i sprawdzonych wtyczkach nawet jeżeli znajdzie się luka bezpieczeństwa, to jest ona szybko naprawiana, a wtyczka aktualizowana. Dlatego warto robić na bieżąco aktualizacje wtyczek (i motywów) oraz dbać o mocne hasła logowania użytkowników (szczególnie administratora).

Jak robić kopie zapasowe strony (backup)?

backup

Mówi się, że

„Ludzie dzielą się na tych co robią backupy i na tych co będą je robić”

Awarie, nawet najlepiej zabezpieczonych stron, mogą się zdarzyć i to w najmniej oczekiwanym momencie. Często wiążą się one z wieloma problemami i stratami dla właściciela witryny. Dlatego warto się zabezpieczyć na taką ewentualność zanim ona się wydarzy.
Backup strony powinien być robiony regularnie na wszelki wypadek na przykład: awaria serwera, uszkodzenie bazy danych, atak hakerski… Zalecane jest również robić backup w momencie dodawania nowych treści na stronę, ale również (a może przede wszystkim) przed wykonaniem aktualizacji systemu WordPress, wtyczek i skórek i przed przenosinami strony na inny serwer.

Usługa backup konta hostingowego

Artykuł dotyczy stron opartych na systemie WordPress, dlatego w mniejszym stopniu będę się zajmować tutaj backupem z poziomu hostingu. Tym bardziej, że bywa, że nieznacznie różnią się od siebie panele administracyjne różnych hostingów. Niemniej, jeżeli wykupiliśmy usługę Backupu na naszym hostingu warto z niej skorzystać.
Przykładowy podgląd, gdzie można znaleźć opcję Backupu po zalogowaniu się do panelu administracyjnego DirectAdmin na swoim hostingu:
backup - panel administracyjny na hostingu

Jeżeli korzystaliśmy z aplikacji Installatron do instalacji naszego WordPressa, szukamy tutaj:
installatron backup

Co należy zachować?

Zawsze najlepiej zrobić pełną kopię zapasową strony, żeby w razie awarii móc jak najszybciej stronę odzyskać. Warto jednak zwrócić uwagę które elementy są najbardziej istotne w WordPressie.
Na pewno cała baza danych naszej strony. Zawiera ona wszystkie tekstowe dane jak artykuły, komentarze, ale również takie informacje jak dane zainstalowanych wtyczek i dużą część ustawień (konfigurację) witryny.
Katalog „wp-content”, który zawiera nasz szablon strony, wtyczki oraz pliki graficzne, które wgraliśmy na serwer.
Jeżeli są to dane, które łatwo odzyskać, np. mamy tylko darmowe wtyczki i szablony to wtedy może nie jest to takie istotne.

Jak zrobić backup bez użycia wtyczek?

Może się zdarzyć, że nie mamy backupu robionego przez nasza firmę hostingową lub z jakiegoś powodu nie zleciliśmy wykonania kopii zapasowej i nie mamy takiego pliku, co wtedy? Ogólną zasadą robienia backupów, niezależną od panelu administatora, jest skopiowanie wszystkich plików strony poprzez ftp na inny dysk (używając np. darmowego programu fileZilla) oraz zapisanie bazy danych MySQL strony.

WordPress umożliwia eksport danych z bazy danych z poziomu kokpitu – klikamy Narzędzia->Eksport zaznaczamy wszystko i zapisujemy na nasz dysk jak poniżej:
export
Wyeksportowany plik będzie zawierał wszystkie wpisy, strony, komentarze, własne pola, terminy, menu oraz rodzaje wpisów.
export2

Możemy również za pomocą phpmyadmin-a wyeksportować bazę danych naszego bloga i zapisać na własnym dysku:
export db phpmyadmin
Ten sposób być może wymaga trochę więcej zachodu, ale według mnie jest pewniejszy i skuteczniejszy niż wspomniany wcześniej.

Najpopularniejsze darmowe wtyczki do robienia kopii zapasowych

Istnieje wiele ciekawych wtyczek do tworzenia kopii zapasowych strony. Pozwalają one w szybki i przystępny sposób ustawić automatyczne tworzenie kopii zapasowych.
1) BackWPUp
2) BackUpWordpress
3) WP DB Backup

Chciałabym się skupić w tym artykule na wtyczce BackWPUp.
Najpierw pobieramy, instalujemy, aktywujemy wtyczkę i szukamy opcji „Dodaj nowe zadanie” („Add new job”).
Ustawiamy nazwe zadania, co chcemy zapisać (bazę danych, pliki, plik esportu danych WordPress XML, listę zainstalowanych wtyczek), możemy ustawić własną nazwę pliku archiwum, jego format i miejsce gdzie ma być zapisany lub wysłany (serwer, Dropbox, e-mail).
backwpup
W zakładce New job->Scheduler – „with WordPress cron” (cron czyli uruchamianie zadań o zadanym czasie) – ustawiamy jak często ma być wykonywany nasz backup (automatycznie). Dla przykładu ten backup będzie wykonywany codziennie o godzinie 3.
backwpup_scheduler
Klikając w zakładki DB Backup, Files, Plugins możemy jeszcze bardziej szczegółowo określić, na których danych nam szczególnie zależy.
W zakładce „Backups” mamy listę wykonanych backupów, jest możliwość, żeby również z poziomu kokpitu pobrać nasz plik archiwum:
backwpup_backups
Opcja wysyłania bazy danych na adres email na pewno będzie przydatna dla osób, które nie chcą za każdym razem się logować do phpmyadmina. Archiwizując pliki z serwera trzeba mieć na uwadze ich rozmiar, ponieważ przy zbyt dużych plikach backup może zakończyć się niepowodzeniem.
Ustawienie automatycznych backupów nie zajmie dużo czasu, ale na pewno warto poświęcić chwilę, żeby dalej, spokojnie prowadzić swoją stronę.

W razie pytań polecamy kontakt z nami, a w razie problemów polecamy skorzystanie z naszej usługi administracji stroną.

Jak zabezpieczyć stronę przed atakami (securing WordPress)

web page security

Zamieszczając stronę w internecie warto pamiętać o jej zabezpieczeniu.
Skrypt WordPress jest darmowy, ogólnodostępny i niestety nie jest w 100% bezpieczny… Jego popularność sprawiła, że jest często atakowanym skryptem.
Oto kilka rzeczy, na które warto zwrócić uwagę, chcąc uniknąć zhakowania naszej witryny.

Regularne aktualizacje

Przede wszystkim warto trzymać się zasady o bezwzględnej aktualizacji skryptu, jak i wtyczek i używanych szablonów. Ponieważ najczęściej zdarzającym się atakiem jest dostęp przez lukę w nieaktualnej wtyczce.
Wiele hostingów zapewnia automatyczne aktualizacje, żeby chronić de facto również swoje zasoby.
Aby włączyć automatyczne aktualizacje w skrypcie WordPress w pliku wp-config.php powinien znaleźć się zapis:
define ( 'WP_AUTO_UPDATE_CORE', true );
Jednak należy liczyć się z tym, że podczas automatycznych aktualizacji może coś pójść nie tak. Na przykład w przypadku, gdy korzystamy z wtyczek, które modyfikują konfigurację naszej strony, a nie są często aktualizowane…

Kopie zapasowe

Dlatego kolejną ważną zasadą jest regularne tworzenie kopii zapasowych. Można to zrobić z pomocą wtyczek do tego przeznaczonych jak np. BackWPup lub ręcznie kopiując pliki i bazę danych.

Wersja WordPress

Haker łatwo może sprawdzić jaka wersja WORDPRESS jest zainstalowana na stronie. Informacja taka jest w pliku readme.html (który pojawia się po instalacji w głównym katalogu) lub w nagłówku strony naszego motywu: ” />
Dlatego warto ukryć wersję skryptu WordPress. Więcej na ten temat można znaleźć w artykule: Jak nie dac sie hackerom czyli zabezpieczanie wordpressa
Dodatkowo tworząc własny szablon można dodać w pliku functions.php kod
remove_action('wp_head', 'wp_generator');

Raportowanie błędów

Często stosowanym zabezpieczeniem jest wyłączenie raportowania o błędach skryptu PHP czy bazy danych.
W pliku wp-config.php wpisujemy: error_reporting (0);
@ini_set ('display_errors', 0);

Warto ukryć również komunikaty błędów podczas logowania, ponieważ jest to również duże ułatwienie dla hakera, który może się dowiedzieć jaka jest np. nazwa użytkownika. Aby zablokować taki komunikat należy w pliku function.php dodać kod: add_filter('login_errors',create_function('$a', "return null;"));
Jeżeli podczas instalacji wybraliśmy jako nazwę administratora domyślną nazwę „admin”, możemy zawsze ją zmienić w taki sposób: Jak zmienić nazwę administratora bez używania wtyczek

Brute Force Attack

Atak skierowany przeważnie na stronę logowania w celu przejęcia konta np. administratora strony. Sprawdzane są różne kombinację loginu i hasła, aż do skutku. Dlatego warto nie używać oczywistych nazw użytkowników (np. admin czy administrator) i zbyt łatwych do odgadnięcia haseł.
Jedną z metod zapobiegania temu atakowi jest użycie No CAPTCHA reCAPTCHA firmy Google – weryfikacja czy użytkownik nie jest robotem, bez użycia popularnych obrazków (CAPTCHA).
Można również użyć wtyczek do tego przeznaczonych np. Brute force login protection. Wykrywa ona ilość prób logowania z danego adresu IP i umożliwia blokowanie tych adresów.
Dobrą wtyczką do ochrony logowania jest również WP Google Authenticator – podczas logowania dodatkowo wprowadzamy kod wygenerowany przez np. aplikację na komórce.
Kolejnym sposobem jest zabezpieczenie dodatkowym hasłem pliku logowania wp-login (lub calego katalogu wp-admin) wpisując w pliku .htaccess poniższy kod
#Protect wp-login
AuthUserFile ~/.htpasswd
AuthName "Private access"
AuthType Basic
require user mysecretuser

Sposób najbardziej przydatny w przypadku masowego ataku botami.
(Nie polecane mniej zaawansowanym użytkownikom.)

Ograniczenie dostępu do wp-admin tylko dla zaufanych adresów IP – w pliku .htaccess w katalogu wp-admin wpisujemy:
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic

order deny,allow
deny from all

allow from xx.xx.xx.xx

gdzie zamiast xx.xx.xx.xx wpisujemy nasz adres IP skad będziemy się logować.

DDoS Attack

Aby przeciwdziałać temu typowi ataków dobrym sposobem jest wyłączenie interfejsu XML-RPC używając np takiej wtyczki: Disable XML-RPC.
Innym sposobem jest dodanie do pliku function.php kodu: add_filter('xmlrpc_enabled', '__return_false');
aby całkowicie wyłączyć obsługę XML-RPC.

Skanery bezpieczeństwa

Istnieją również wtyczki (i strony) sprawdzające stronę pod kątem zagrożeń.

Aktualna lista luk

W internecie można również znaleźć aktualną listę luk związanych ze skryptem WP oraz wtyczek np.

Wtyczki zabezpieczające stronę

Warto na koniec jeszcze wspomnieć o wtyczkach, które wiele z powyższych wskazówek mogą wykonać za nas

Jak nie dać się hackerom czyli zabezpieczanie WordPressa

wordpress_logo

Temat artykułu być może jest nieco przewrotny, ale warto wiedzieć jakie luki bezpieczeństwa ma skrypt WordPressa, skoro się z niego korzysta.
Jednym z podstawowych sposobów włamania do WordPressa jest wykorzystanie faktu, że ktoś używa starej wersji WordPressa. Aby hacker mógł sprawdzić z jakiej wersji korzysta aktualnie użytkownik wystarczy, że przeczyta plik readme.html pod adresem: http://adresnaszejstrony.pl/readme.html
Informacje o lukach w starszych wersjach WordPressa można łatwo znaleźć na stronach firmy Secunia i Security Focus.
Przykładowa zawartość pliku Readme:
readme.html
Dla poprawy bezpieczeństwa zaleca się usunąć po instalacji oraz każdej aktualizacji plik readme.html z głównego katalogu oraz oczywiście aktualizację WordPressa i wtyczek na bieżąco.
Innym sposobem na zabezpieczenie dostępu do tego pliku jest odpowiedni wpis w .htaccess
Czytaj dalej Jak nie dać się hackerom czyli zabezpieczanie WordPressa