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 mieć kuloodporną, chronioną witrynę opartą na WordPressie. 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 z niezgodnością z niektórymi dziwnymi wtyczkami, które próbują modyfikować pliki bezpośrednio w folderach WordPress. Zalecam ignorowanie wszelkich tego typu wtyczek, 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 badają luki w wtyczkach lub motywach zainstalowanych 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ą na 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 pożytecznego, aby utworzyć prawdziwie chronioną witrynę. Nie ma sposobu ani żadnej wtyczki, która mogłaby chronić WordPressa 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 zabezpieczająca wprowadziła zmiany 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ć 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 używać wtyczek ani motywów, które działają z plikami PHP lub .htaccess i próbować ich zmieniać w folderach WordPress
Krok pierwszy. Instalacja WordPressa
Nie używaj domyślnego prefiksu wp_
dla tabel bazy danych. Zamiast tego używaj 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. Utwardzanie witryny na poziomie WordPress
- Przenieś folder uploads o jeden poziom wyżej, z wnętrza folderu /wp-content/ do głównego folderu instalacyjnego WordPressa.
- Zmień nazwę folderu uploads na media (lub coś podobnego, jak chcesz).
- Zmień nazwę folderu wp-content na content (lub coś podobnego, jak chcesz).
- Zmień nazwę folderu wtyczek na mod (lub coś podobnego, jak chcesz).
- Dodaj następujące wiersze na początku pliku wp-config.php , nie zapomnij zmienić media , content , mod na 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
define('FS_METHOD', 'direct'); // oczywiście bez FTP
zdefiniuj('WP_HTTP_BLOCK_EXTERNAL', true );
define('UPLOADS', ' media ' ); // zmieniliśmy nazwę uploads i przenieśliśmy je o poziom wyżej
define('WP_CONTENT_DIR', '/ścieżka/do/katalogu/wordpress/ zawartość '); // brak nazwy hosta, brak 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/ content / 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
define('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
define('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 przy powyższych krokach ochrony hakerzy będą próbowali stosować ataki siłowe (próby logowania), aby złamać drzwi na Twojej stronie WordPress. Ukryj i zamknij te drzwi za pomocą WP Cerber.
Krok piąty. Utwardzanie 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 zmienić go na innego użytkownika, którego wcześniej utworzyłeś w tym celu. Powiedzmy, że tym użytkownikiem jest cerber .
- Umieść plik .htaccess w folderze media (twój nowy folder uploads) z następującą dyrektywą w nim. Zapobiega to wykonywaniu przez witrynę przesłanego 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 uploads lub dowolnego z jego folderów nadrzędnych. - 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.
znajdź /ścieżka/do/katalogu/wordpress -exec chown cerber:root {} +
znajdź /ścieżka/do/katalogu/wordpress -type d -exec chmod 755 {} +
znajdź /ścieżka/do/katalogu/wordpress -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/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 {} + - 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 - Przenieś plik wp-config.php do katalogu znajdującego się nad katalogiem instalacyjnym WordPressa.
Krok szósty. Utwardzanie witryny na poziomie serwera NGINX
Przeczytaj tutaj: Utwardzanie WordPressa za pomocą WP Cerber i NGINX
Krok siódmy. Utwardzanie witryny za pomocą Fail2Ban
Przeczytaj tutaj: Jak chronić WordPress za pomocą Fail2Ban