Security Blog
Security Blog
Posted By Gregory

Zmień swojego WordPressa w Fort Knox

Jak przekształcić WordPress w chronioną twierdzę, taką jak Fort Knox


English version: Turn your WordPress into Fort Knox


W tym artykule zakładamy, że chcemy stworzyć stronę internetową opartą na WordPressie, która będzie odporna na uderzenia. Nie jest konieczne wykonywanie wszystkich poniższych kroków słowo w słowo i punkt po punkcie dokładnie tak, jak opisano. Polecam to jednak, jeśli chcesz stworzyć własny Fort Knox.

Niektóre z poniższych kroków mogą być przyczyną problemów z niezgodnością z niektórymi dziwnymi wtyczkami, które próbują modyfikować pliki bezpośrednio w folderach WordPressa. Zalecam ignorowanie wszelkich tego typu wtyczek, ponieważ ich używanie może prowadzić do wielu problemów i zagrożeń bezpieczeństwa natychmiast lub w przyszłości, gdy hakerzy odkryją luki we wtyczkach lub motywach zainstalowanych na Twojej stronie. Stworzyłem ten artykuł z nadzieją, że okaże się przydatny, ale bez żadnej gwarancji.

Uwaga: ten artykuł nie dotyczy hostingu współdzielonego. Wymagana jest co najmniej strona hostowana na serwerze VPS.

Wymagania: dostęp do roota serwera Linux, na którym hostowana jest Twoja strona internetowa. Bez dostępu do powłoki z uprawnieniami roota nie możesz zrobić nic, aby stworzyć prawdziwie chronioną stronę internetową. Nie ma sposobu ani wtyczki, która chroniłaby WordPressa i pliki w jego katalogach na poziomie PRO. Wszystkie wtyczki zabezpieczające mają ten sam poziom uprawnień, co hakerzy i boty. Bez wyjątku. Jeśli jakaś wtyczka zabezpieczająca wprowadziła zmiany w plikach Twojej strony internetowej, aby je chronić, haker lub złośliwy kod może COFNĄĆ te zmiany lub usunąć ochronę.

Oto kilka ważnych punktów dotyczących mojego podejścia

  • Wszystkie pliki kodu (kod PHP) i wszystkie pliki .htaccess muszą być chronione przed zapisem. Bez wyjątku.
  • Musimy zmienić wszystkie domyślne ustawienia (folder, pliki cookie, ścieżkę logowania i inne punkty orientacyjne) na inne wartości
  • Nie wolno nam używać wtyczek ani motywów, które działają z plikami PHP lub .htaccess i próbować je zmieniać w folderach WordPress

Krok pierwszy. Instalacja WordPressa

Nie używaj domyślnego prefiksu wp_ dla tabel bazy danych. Zamiast tego użyj kilku lub trzech symboli alfabetycznych. Niektóre ataki specyficzne dla WordPressa i atakujący zakładają, że prefiks tabeli to wp_ . Zmiana prefiksu pomaga nam blokować niektóre ataki typu SQL injection.

Krok drugi. Wzmocnienie witryny na poziomie WordPressa

  1. Przenieś folder uploads o jeden poziom wyżej, z wnętrza folderu /wp-content/ do głównego folderu instalacyjnego WordPressa.
  2. Zmień nazwę folderu uploads na media (lub coś podobnego, jak chcesz).
  3. Zmień nazwę folderu wp-content na content (lub coś podobnego, jak chcesz).
  4. Zmień nazwę folderu plugins na mod (lub coś podobnego, jak chcesz).
  5. Dodaj następujące wiersze na początku pliku wp-config.php , nie zapomnij zmienić media , content , mod na rzeczywiste wartości, które wybrałeś wcześniej .
     define('AUTOMATIC_UPDATER_DISABLED', true ); // tak, można to bezpiecznie zrobić ręcznie
    define('DISALLOW_FILE_EDIT', true ); // nigdy nie pozwalamy nikomu dotykać twoich plików
    define('DISALLOW_FILE_MODS', true ); // tak, można to bezpiecznie zrobić ręcznie
    zdefiniuj('FS_METHOD', 'direct'); // oczywiście bez FTP
    zdefiniuj('WP_HTTP_BLOCK_EXTERNAL', prawda );
    zdefiniuj('UPLOADS', ' media ' ); // zmieniliśmy nazwę uploads i przenieśliśmy je o poziom wyżej
    zdefiniuj('WP_CONTENT_DIR', '/ścieżka/do/katalogu/wordpress/ zawartość '); // bez nazwy hosta, bez końcowego ukośnika
    zdefiniuj('WP_CONTENT_URL', ' treść http://example.com/ ');
    define('WP_PLUGIN_DIR', '/ścieżka/do/katalogu/wordpress/ zawartość / mod '); // brak nazwy hosta, brak końcowego ukośnika
    zdefiniuj('WP_PLUGIN_URL', 'http://example.com/ zawartość / mod ');
    ini_set('display_errors',0); // Wyłącz wyświetlanie błędów PHP na front-endzie

Krok trzeci. Zmień domyślną nazwę plików cookie.

Dodaj te wiersze na początku pliku wp-config.php

 zdefiniuj('USER_COOKIE', 'my_user_cookie' ); // zmień na coś innego
zdefiniuj('PASS_COOKIE', 'my_pass_cookie' ); // zmień na coś innego
zdefiniuj('AUTH_COOKIE', 'my_auth_cookie' ); // zmień na coś innego
zdefiniuj('SECURE_AUTH_COOKIE', 'my_sec_cookie' ); // zmień na coś innego
zdefiniuj('LOGGED_IN_COOKIE', 'my_logged_cookie' ); // zmień na coś innego
zdefiniuj('TEST_COOKIE', 'my_test_cookie' ); // zmień na coś innego

Krok czwarty. Zainstaluj wtyczkę zabezpieczającą natychmiast po zainstalowaniu WordPressa.

Chroń swoją stronę logowania za pomocą WP Cerber Security . Nawet po zastosowaniu powyższych kroków bezpieczeństwa, hakerzy będą próbowali stosować ataki brute force (próby logowania), aby włamać się do Twojej witryny WordPress. Ukryj i zamknij te drzwi za pomocą WP Cerber.

Krok piąty. Wzmocnienie witryny na poziomie serwera.

W tym kroku zakładam, że używasz serwera z Apache jako serwerem HTTP. Musimy zmienić właściciela wszystkich plików WordPress, w tym wtyczek i motywów. Domyślnie tym użytkownikiem jest Apache . Musimy go zmienić na innego użytkownika, którego wcześniej utworzyłeś w tym celu. Załóżmy, że tym użytkownikiem jest Cerber .

  1. Umieść plik .htaccess w folderze multimediów (nowy folder uploads) z następującą dyrektywą. Zapobiegnie to uruchomieniu przez witrynę złośliwego kodu PHP.
     silnik php_flag wyłączony

    Uwaga: Aby dyrektywa ta działała, plik konfiguracyjny Apache musi zawierać dyrektywę AllowOverride Options dla folderu przesyłania lub dowolnego z jego folderów nadrzędnych.

  2. Zmień właściciela i uprawnienia wszystkich plików w całym katalogu witryny (/ścieżka/do/wordpress/katalog). Aby to zrobić, wykonaj następujące polecenia w powłoce.
     znajdź /ścieżkę/do/katalogu/wordpress -exec chown cerber:root {} +
    znajdź /ścieżkę/do/katalogu/wordpress -type d -exec chmod 755 {} +
    znajdź /ścieżkę/do/katalogu/wordpress -type f -exec chmod 644 {} +

  3. Dla katalogu uploads (/ścieżka/do/wordpress/katalog/ media ) musimy ustawić specjalne uprawnienia. Zróbmy to za pomocą poleceń exec w powłoce.
     znajdź /ścieżkę/do/katalogu/wordpress/ media -exec chown cerber:apache {} +
    znajdź /ścieżka/do/katalogu/wordpress/ media -type d -exec chmod 775 {} +
    znajdź /ścieżka/do/katalogu/wordpress/ media -type f -exec chmod 664 {} +

  4. Skonfiguruj strukturę permalinków w ustawieniach WordPressa, a następnie zmień uprawnienia dla pliku .htaccess , aby zabezpieczyć go przed zapisem.
     chown cerber:root /ścieżka/do/katalogu/wordpress/.htaccess
    chmod 644 /ścieżka/do/katalogu/wordpress/.htaccess

  5. Przenieś plik wp-config.php do katalogu znajdującego się nad katalogiem instalacyjnym WordPressa.

Krok szósty. Wzmocnienie witryny na poziomie serwera NGINX

Przeczytaj tutaj: Wzmocnienie WordPressa za pomocą WP Cerber i NGINX

Krok siódmy. Wzmocnienie witryny za pomocą Fail2Ban

Przeczytaj tutaj: Jak chronić WordPressa za pomocą Fail2Ban


I'm a team lead in Cerber Tech. I'm a software & database architect, WordPress - PHP - SQL - JavaScript developer. I started coding in 1993 on IBM System/370 (yeah, that was amazing days) and today software engineering at Cerber Tech is how I make my living. I've taught to have high standards for myself as well as using them in developing software solutions.

View Comments
There are currently no comments.