Zmień swój WordPress w Fort Knox
Jak zamienić 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ą, chronioną witrynę opartą na WordPressie. Niekoniecznie trzeba wykonywać wszystkie poniższe kroki słowo w słowo i punkt po punkcie dokładnie tak, jak opisano. Ale polecam, jeśli chcesz stworzyć 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 tego typu wtyczek, ponieważ korzystanie z nich może prowadzić do wielu problemów i problemów z bezpieczeństwem natychmiast lub w przyszłości, gdy hakerzy będą badać 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ć co najmniej witrynę hostowaną przez VPS.
Wymagania: uprawnienia administratora 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 użytecznego, aby stworzyć prawdziwie chronioną stronę internetową. Nie ma sposobu ani żadnej wtyczki, która mogłaby chronić WordPressa i pliki w jego katalogach na poziomie PRO. Wszystkie wtyczki bezpieczeństwa mają ten sam poziom uprawnień (uprawnień), co hakerzy i boty. Bez wyjątku. Jeśli jakaś wtyczka bezpieczeństwa dokonała pewnych zmian w plikach Twojej witryny, aby je chronić, każdy 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ć zabezpieczone przed zapisem. Bez wyjątku
- Musimy zmienić wszystkie ustawienia domyślne (folder, pliki cookie, ścieżkę logowania, wszelkie inne punkty orientacyjne) na inne wartości
- Nie wolno nam używać wtyczek ani motywów, które działają i próbują zmieniać pliki PHP lub .htaccess w folderach WordPress
Krok pierwszy. Instalowanie WordPressa
Nie używaj domyślnego przedrostka wp_
dla tabel bazy danych. Zamiast tego użyj pary lub trzech symboli alfabetu. Niektóre ataki i osoby atakujące specyficzne dla WordPress zakładają, że prefiks tabeli to wp_
. Zmiana prefiksu pomaga nam blokować niektóre ataki typu SQL injection.
Krok drugi. Utwardzanie strony na poziomie WordPress
- Przenieś folder przesyłania o jeden poziom wyżej, z wnętrza folderu /wp-content/ do katalogu głównego folderu instalacyjnego WordPress.
- Zmień nazwę folderu przesyłania na media (lub coś w tym stylu, cokolwiek chcesz).
- Zmień nazwę folderu wp-content na content (lub coś w tym rodzaju, cokolwiek chcesz).
- Zmień nazwę folderu wtyczek na mod (lub coś w tym rodzaju, cokolwiek chcesz).
- Dodaj następujące linie na początku pliku wp-config.php , nie zapomnij zmienić media , content , 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_METHOD', 'bezpośredni'); // Oczywiście bez FTP
zdefiniuj („WP_HTTP_BLOCK_EXTERNAL”, prawda);
define('PRZESYŁANE', ' media '); // zmieniliśmy nazwy przesyłanych plików i przenieśliśmy je na wyższy poziom
define('WP_CONTENT_DIR', '/ścieżka/do/wordpress/katalog/ treść '); // bez nazwy hosta, bez końcowego ukośnika
define(' WP_CONTENT_URL ', 'http://example.com/treść');
define('WP_PLUGIN_DIR', '/ścieżka/do/wordpress/dir/ treść / mod '); // bez nazwy hosta, bez końcowego ukośnika
define(' WP_PLUGIN_URL ', ' http://example.com/content/mod ');
ini_set('błędy_wyświetlania',0); // wyłącz wyświetlanie błędów PHP na froncie
Krok trzeci. Zmień domyślną nazwę plików cookie.
Dodaj te linie na początku 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
zdefiniuj('AUTH_COOKIE', 'my_auth_cookie' ); // zmień to na coś innego
zdefiniuj („SECURE_AUTH_COOKIE”, „my_sec_cookie”); // zmień to na coś innego
define('LOGGED_IN_COOKIE', 'my_logged_cookie'); // zmień to na coś innego
zdefiniuj('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óbować zastosować ataki siłowe (próby logowania), aby włamać się do Twojej witryny WordPress. Ukryj i zamknij te drzwi za pomocą WP Cerber.
Krok piąty. Utwardzanie strony 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, utworzonego wcześniej w tym celu. Powiedzmy, że ten użytkownik to cerber .
- Umieść plik .htaccess w folderze multimediów (twój nowy folder przesyłania) z następującą dyrektywą. Uniemożliwia to stronie 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 folderu nadrzędnego, aby ta dyrektywa działała. - Dla całego katalogu witryny (/ścieżka/do/wordpress/dir) zmień właściciela i uprawnienia do wszystkich plików. Aby to zrobić, wykonaj następujące polecenia w powłoce.
znajdź /ścieżka/do/wordpress/dir -exec chown cerber:root {} +
znajdź /ścieżka/do/wordpress/dir -type d -exec chmod 755 {} +
znajdź /ścieżka/do/wordpress/dir -type f -exec chmod 644 {} + - Dla katalogu uploads (/path/to/wordpress/dir/ media ) musimy ustawić specjalne uprawnienia. Zróbmy to za pomocą poleceń exec w powłoce
znajdź /ścieżka/do/wordpress/katalog/ media -exec chown cerber:apache {} +
znajdź /ścieżka/do/wordpress/katalog/ media -type d -exec chmod 775 {} +
znajdź /ścieżka/do/wordpress/katalog/ media -type f -exec chmod 664 {} + - Skonfiguruj strukturę permalink 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 - Przenieś plik wp-config.php do katalogu nad katalogiem instalacyjnym WordPress.
Krok szósty. Utwardzanie strony na poziomie serwera NGINX
Przeczytaj tutaj: Utwardzanie WordPressa za pomocą WP Cerber i NGINX
Krok siódmy. Utwardzanie strony za pomocą Fail2Ban
Przeczytaj tutaj: Jak chronić WordPressa za pomocą Fail2Ban