Security Blog
Security Blog
Posted By Gregory

Włączyć WordPress w Fort Knox

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


English version: Turn your WordPress into Fort Knox


W tym artykule założono, że chcemy uzyskać kuloodporną stronę chronioną przez WordPress. Niekoniecznie należy wykonać wszystkie poniższe kroki, słowo w słowo i punkt po punkcie, dokładnie tak, jak opisano. Ale polecam, jeśli chcesz stworzyć swój własny Fort Knox.

Niektóre z poniższych kroków mogą być przyczyną problemów z niekompatybilnością z niektórymi dziwnymi wtyczkami, które próbują modyfikować pliki bezpośrednio w folderach WordPress. Zalecam ignorowanie wszelkich wtyczek tego rodzaju, ponieważ ich używanie może prowadzić do wielu problemów i problemów z bezpieczeństwem natychmiast lub w przyszłości, gdy hakerzy przestudiowali dziury w wtyczkach lub motywie zainstalowanym na Twojej stronie. Stworzyłem ten artykuł w nadziei, że będzie przydatny, ale bez żadnej gwarancji.

Uwaga: ten artykuł nie ma zastosowania, jeśli korzystasz z hostingu współdzielonego. Musisz mieć przynajmniej hostowaną witrynę VPS.

Wymagania: dostęp root do serwera Linux, na którym znajduje się Twoja witryna. Jeśli nie masz dostępu do powłoki z uprawnieniami roota, nie możesz zrobić niczego użytecznego, aby stworzyć prawdziwą chronioną witrynę. Nie ma żadnego sposobu, aby wtyczka mogła chronić WordPressa i pliki w jego katalogach na poziomie PRO. Wszystkie wtyczki bezpieczeństwa mają taki sam poziom uprawnień (uprawnień) jak hakerzy i boty. Bez wyjątku. Jeśli jakaś wtyczka zabezpieczająca wprowadziła pewne zmiany w plikach witryny, aby je chronić, każdy haker lub złośliwy kod może ODŁĄCZYĆ 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 wartości domyślne (folder, pliki cookie, ścieżka logowania, inne punkty orientacyjne) na różne wartości
  • Nie wolno używać wtyczek ani motywów, które działają i próbują zmienić pliki PHP lub .htaccess w folderach WordPress

Krok pierwszy. Instalowanie WordPress

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

Krok drugi. Utwardzanie strony na poziomie WordPress

  1. Przenieś folder przesyłania w górę o jeden poziom, z wnętrza folderu / wp-content / do katalogu głównego folderu instalacyjnego WordPress.
  2. Zmień nazwę folderu przesyłania na media (lub coś w tym stylu, cokolwiek chcesz).
  3. Zmień nazwę folderu wp-content na zawartość (lub coś podobnego, cokolwiek chcesz).
  4. Zmień nazwę folderu wtyczek na mod (lub coś takiego, cokolwiek chcesz).
  5. Dodaj następujące wiersze na początku pliku wp-config.php , nie zapomnij zmienić nośnika , treści , mod na rzeczywiste wartości, które wcześniej wybrałeś.
     define ('AUTOMATIC_UPDATER_DISABLED', true); // tak, można to 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 zrobić ręcznie
    define ('FS_METHOD', 'direct'); // no FTP oczywiście
    define ('WP_HTTP_BLOCK_EXTERNAL', true);
    define („UPLOADS”, „ media ”); // zmieniliśmy nazwę przesyłania i przenieśliśmy go na wyższy poziom
    define ('WP_CONTENT_DIR', '/ path / to / wordpress / dir / content '); // brak nazwy hosta, brak ukośnika końcowego
    define ('WP_CONTENT_URL', 'http://example.com/ content ');
    define ('WP_PLUGIN_DIR', '/ path / to / wordpress / dir / content / mod '); // brak nazwy hosta, brak ukośnika końcowego
    define ('WP_PLUGIN_URL', 'http://example.com/ content / mod ');
    ini_set ('display_errors', 0); // wyłącz wyświetlanie błędów PHP na froncie

Krok trzeci. Zmień domyślną nazwę ciasteczka.

Dodaj te linie na początek pliku wp-config.php

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

Krok czwarty. Zainstaluj wtyczkę bezpieczeństwa natychmiast po zainstalowaniu WordPressa

Chroń swoją stronę logowania za pomocą WP Cerber Security . Nawet przy powyższych krokach ochrony hakerzy będą próbowali stosować ataki z użyciem brutalnej siły (próby logowania), aby złamać drzwi na swojej stronie WordPress. Ukryj i zamknij te drzwi WP WPber.

Krok piąty. Utwardzanie strony na poziomie serwera.

W tym kroku zakładam, że używasz serwera z Apache jako serwera http. Musimy zmienić właściciela wszystkich plików WordPress, w tym wtyczek i motywów. Domyślnie ten użytkownik to apache . Musimy go zmienić na innego użytkownika, utworzonego wcześniej w tym celu. Powiedzmy, że ten użytkownik jest cerber .

  1. Umieść plik .htaccess w folderze multimediów (nowy folder przesyłania) z poniższą dyrektywą. Zapobiega to uruchomieniu przez stronę internetową przesłanego złośliwego kodu PHP.
     silnik php_flag wyłączony 

    Uwaga: Plik konfiguracyjny Apache musi zawierać dyrektywę AllowOverride Options dla folderu przesyłania lub dowolnego folderu nadrzędnego, aby ta dyrektywa działała.

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

  3. W celu przesłania katalogu (/ path / do / wordpress / dir / media ) musimy ustawić specjalne uprawnienia. Zróbmy to za pomocą komend exec w powłoce
     find / path / to / wordpress / dir / media -exec chown cerber: apache {} + 
    find / path / to / wordpress / dir / media -type d -exec chmod 775 {} +
    find / path / to / wordpress / dir / media -type f -exec chmod 664 {} +

  4. Skonfiguruj strukturę permalink w ustawieniach WordPress, a następnie zmień uprawnienie dla pliku .htaccess , aby go zabezpieczyć przed zapisem.
     chown cerber: root /path/to/wordpress/dir/.htaccess 
    chmod 644 /path/to/wordpress/dir/.htaccess

  5. Przenieś plik wp-config.php do katalogu nad katalogiem instalacyjnym WordPress.

Krok szósty. Utwardzanie strony na poziomie serwera NGINX

Przeczytaj tutaj: Hardening WordPress z WP Cerber i NGINX

Krok siódmy. Utwardzanie strony 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.