Security Blog
Security Blog
Posted By Gregory

Zmień swój WordPress w Fort Knox

Jak zamienić WordPressa 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ę internetową obsługiwaną przez WordPress. Niekoniecznie trzeba wykonywać wszystkie poniższe kroki słowo po słowie i punkt po punkcie, dokładnie tak, jak opisano. Ale polecam to, jeśli chcesz stworzyć własny Fort Knox.

Niektóre z poniższych kroków mogą być przyczyną problemów ze zgodnością z niektórymi dziwnymi wtyczkami, które próbują modyfikować pliki bezpośrednio w folderach WordPress. Radzę ignorować wszelkie wtyczki tego typu, ponieważ ich używanie może spowodować wiele problemów i problemów związanych z bezpieczeństwem natychmiast lub w przyszłości, gdy hakerzy będą badać luki we wtyczkach lub motywie zainstalowanym na Twojej witrynie. 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 witrynę hostowaną na serwerze VPS.

Wymagania: dostęp root do serwera Linux, na którym hostowana jest Twoja witryna. Jeśli nie masz dostępu do powłoki z uprawnieniami roota, nie możesz zrobić nic przydatnego, aby stworzyć naprawdę chronioną witrynę internetową. Nie ma sposobu ani żadnej wtyczki, która mogłaby chronić WordPress i pliki w jego katalogach na poziomie PRO. Wszystkie wtyczki zabezpieczające mają ten sam poziom uprawnień (uprawnień), co hakerzy i boty. Bez wyjątku. Jeśli jakaś wtyczka bezpieczeństwa wprowadziła pewne zmiany w plikach Twojej witryny, aby je chronić, każdy haker lub złośliwy kod może COFNIĆ 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 ustawienia domyślne (folder, pliki cookie, ścieżkę logowania, inne punkty orientacyjne) na inne wartości
  • Nie wolno nam używać wtyczek ani motywów, które działają i próbować zmieniać pliki PHP lub .htaccess w folderach WordPress

Krok pierwszy. Instalacja WordPressa

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

Krok drugi. Utwardzanie serwisu na poziomie WordPress

  1. Przenieś folder przesyłania o jeden poziom wyżej, 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 content (lub coś w tym stylu, cokolwiek chcesz).
  4. Zmień nazwę folderu wtyczek na mod (lub coś w tym stylu, jakkolwiek chcesz).
  5. Dodaj następujące linie na początku pliku wp-config.php , nie zapomnij zmienić media , content i mod na rzeczywiste wartości, które wcześniej wybrałeś .
     zdefiniuj('AUTOMATIC_UPDATER_DISABLED', prawda); // tak, można to bezpiecznie zrobić ręcznie
    zdefiniuj('DISALLOW_FILE_EDIT', prawda); // nigdy nie pozwalamy nikomu dotykać Twoich plików
    zdefiniuj('DISALLOW_FILE_MODS', prawda); // tak, można to bezpiecznie zrobić ręcznie
    zdefiniuj('FS_METODA', 'bezpośrednio'); //oczywiście bez FTP
    zdefiniuj('WP_HTTP_BLOCK_EXTERNAL', prawda);
    zdefiniuj('PRZESYŁANIE', ' media '); // zmieniliśmy nazwę przesyłanych plików i przenieśliśmy ją na wyższy poziom
    zdefiniuj('WP_CONTENT_DIR', '/ścieżka/do/wordpress/katalog/ treść '); // brak nazwy hosta, brak końcowego ukośnika
    zdefiniuj('WP_CONTENT_URL', ' http://example.com/treść ');
    zdefiniuj('WP_PLUGIN_DIR', '/ścieżka/do/wordpress/katalog/ treść / mod '); // brak nazwy hosta, brak końcowego ukośnika
    zdefiniuj('WP_PLUGIN_URL', ' http://example.com/treść / mod ');
    ini_set('błędy_wyświetlania',0); // wyłącz wyświetlanie błędów PHP na interfejsie użytkownika

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

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

 zdefiniuj('USER_COOKIE', 'moje_pliki_cookie' ); // zmień to na coś innego
zdefiniuj('PASS_COOKIE', 'moje_przepustowe_cookie' ); // zmień to na coś innego
zdefiniuj('AUTH_COOKIE', 'moje_auth_cookie' ); // zmień to na coś innego
zdefiniuj('SECURE_AUTH_COOKIE', 'moje_sec_cookie' ); // zmień to na coś innego
zdefiniuj('LOGGED_IN_COOKIE', 'moje_logged_cookie' ); // zmień to na coś innego
zdefiniuj('TEST_COOKIE', 'moje_testowe_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óbować zastosować ataki brute-force (próby logowania), aby złamać drzwi na Twojej witrynie WordPress. Ukryj i zamknij te drzwi za pomocą WP Cerber.

Krok piąty. Utwardzanie serwisu na poziomie serwera.

Zakładam, że na tym etapie używasz serwera Apache jako serwera 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 ten użytkownik jest cerberem .

  1. Umieść plik .htaccess w folderze multimediów (twój nowy folder przesyłania) zawierający poniższą dyrektywę. Uniemożliwia to witrynie wykonanie 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 jego 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 do wszystkich plików. Aby to zrobić, wykonaj następujące polecenia w powłoce.
     find /path/to/wordpress/dir -exec chown cerber:root {} +
    znajdź /path/to/wordpress/dir -type d -exec chmod 755 {} +
    znajdź /path/to/wordpress/dir -type f -exec chmod 644 {} +

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

  4. Skonfiguruj strukturę łącza bezpośredniego w Ustawieniach WordPress, a następnie zmień uprawnienia dla pliku .htaccess , aby chronić go przed zapisem.
     chown cerber:root /ścieżka/do/wordpress/dir/.htaccess
    chmod 644 /ścieżka/do/wordpress/dir/.htaccess

  5. Przenieś plik wp-config.php do katalogu powyżej katalogu instalacyjnego WordPress.

Krok szósty. Hartowanie serwisu na poziomie serwera NGINX

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

Krok siódmy. Utwardzanie strony za pomocą Fail2Ban

Przeczytaj tutaj: Jak chronić WordPress 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.