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
- 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 stylu, cokolwiek chcesz).
- Zmień nazwę folderu wtyczek na mod (lub coś w tym stylu, jakkolwiek chcesz).
- 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 .
- 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. - 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 {} + - 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 {} + - 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 - 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