10 hacków bezpieczeństwa dla WordPressa, które powstrzymają cię przed włamaniem
WordPress to historia ogromnego sukcesu, nie tylko pod względem globalnych liczb, ale także, co może niektórych zaskoczyć, pod względem wielkich nazwisk, które korzystają z platformy.
W Internecie, gdy masz zarówno dużą bazę zainstalowanych użytkowników, jak i użytkowników o wysokim profilu, po prostu nie możesz uniknąć stania się celem hakerów i spamerów. Od handlu pigułkami, przez promowanie wypaczonych ideologii, po kradzież danych i włamywanie się na strony tylko dlatego, że mogą, włamanie może z łatwością przysporzyć Twojej firmie poważnego bólu głowy.
W tym artykule przyjrzę się niektórym wskazówkom, sztuczkom i hackom, które możesz zastosować, aby zapewnić sobie lepszą ochronę przed obskurnym podbrzuszem sieci.
Zapoznaj się z podstawami
Chociaż możesz pomyśleć, że niektóre z tych elementów powinny być oczywiste, pomyśl tylko, ile razy widziałeś nie tylko klientów, ale także innych programistów, projektantów i agencje, którzy powinni wiedzieć lepiej, że są winni niektórych z nich?
Zacznij od tego, aby hasła były trudne do odgadnięcia. Jak sprawić, by im było ciężko, a Tobie było łatwo? Być może możesz zapomnieć o podejrzanych zamianach liter, takich jak „h3ll0″, mieszaniu wielkości liter i dorzucaniu interpunkcji i zamiast tego użyć mnemonika. Łącząc ze sobą trzy lub cztery słowa, aby utworzyć zabawny obraz, Twoje hasło będzie o wiele łatwiejsze do zapamiętania niż „t3r%?9.Fq!G”, a jego złamanie będzie o rząd wielkości trudniejsze. Po prostu nie używaj „CorrectHorseBatteryStaple”. Pełne i zabawne wyjaśnienie tej zasady znajdziesz w XKCD 936.
Powinieneś także aktualizować swoje wtyczki i rdzeń WordPress. Jest to teraz łatwiejsze w późniejszych wersjach WordPressa. W WordPress 3.7 możesz skonfigurować cztery rodzaje automatycznych aktualizacji: pliki podstawowe, wtyczki, motywy i pliki tłumaczeń. Słowo ostrzeżenia – w zależności od konfiguracji możesz chcieć wyłączyć niektóre z nich, aby móc przetestować przed wdrożeniem aktualizacji. Chociaż nawet jeśli zostawisz je na żywo i napotkasz problemy, nadal możesz polegać na codziennych kopiach zapasowych, prawda?
Ułatw sobie zarządzanie wieloma witrynami, wtyczkami i kopiami zapasowymi dzięki czemuś takiemu jak InfiniteWP. Podstawowe funkcje są bezpłatne!
To nie są dane logowania, których szukasz
Oprócz doskonałej siły hasła powinieneś również rozważyć przeniesienie domyślnego adresu URL administratora i użycie czegoś innego niż „admin” jako nazwy użytkownika. O ile hakerzy nie mają określonego celu, zwykle będą chcieli uruchomić boty, aby zautomatyzować ten proces. Te boty szukają WordPressa, próbują domyślnych ustawień i najpopularniejszych haseł – odejdźmy więc od ustawień domyślnych, aby utrudnić to zadanie.
Być może najłatwiejszym sposobem zmiany adresu URL logowania jest przyjrzenie się wtyczkom, takim jak HC Custom WP-Admin URL. Oczywiście – najpierw wykonaj kopię zapasową!
Aby zmienić nazwę użytkownika administratora, najprostszym sposobem jest utworzenie nowego użytkownika administratora z wybraną nazwą użytkownika i usunięcie starego. Jeśli nie masz dostępu do administratora, ponieważ nie pamiętasz swojej nazwy użytkownika, będziesz potrzebować nieco bardziej drastycznego rozwiązania. Zaloguj się do phpMyAdmin i załaduj swoją bazę danych WordPress. Przewiń w dół po lewej stronie i poszukaj tabeli „ks29so_users”. Znajdź nazwę użytkownika, którą chcesz zmienić, np. „admin” i edytuj wartość user_login, aby była to Twoja nowa nazwa.
Ostatnie słowo na temat procesu logowania
Zanim odejdziemy od procesu logowania, musimy wykonać jeszcze kilka zadań. Pamiętasz te boty, które zgadują hasła? Utrudnijmy im to, mówiąc, że możesz wykonać tylko określoną liczbę prób w określonym przedziale czasowym i że zanim to zrobisz, musisz poprawnie przepisać CAPTCHA. W przypadku Captcha możesz spróbować zainstalować tę wtyczkę i gotowe. Dodatkowa korzyść – wersja premium integruje się z BuddyPress i Contact Form 7, aby zabezpieczyć formularze kontaktowe przed przesyłaniem spamu.
Aby ograniczyć próby logowania, możesz dodać wtyczki, takie jak Limit Login Attempts, lub możesz zapytać swojego dostawcę usług hostingowych, który może mieć rozwiązanie – na przykład Wpengine ma to skonfigurowane domyślnie.
Zabezpieczanie WordPressa za pomocą zmian w .htaccess
Mam nadzieję, że jesteś gotowy, aby trochę pobrudzić sobie ręce, gdy przejdziemy do sugestii nieco trudniejszych niż „zainstalowanie wtyczki”! Dodaj te sugestie po wierszu #END WORDPRESS.
Pierwszym elementem, który należy dodać, będzie pomoc w ochronie wp-config.php, ten plik byłby niebezpieczny w niepowołanych rękach, ponieważ zawiera ważne informacje o Twojej witrynie i jej bazie danych.
orderallow,deny
deny from all
To świetny początek, co jeszcze możemy zrobić? Cóż, możemy zablokować wścibskim ludziom możliwość przeglądania twoich plików i folderów – myślę, że korzyści z tego są dość oczywiste!
Poniżej znajduje się kombinezon do blokowania przeglądania katalogów:
# directory browsing
Options All -Indexes
Jeśli chcesz zablokować konkretnie jeden plik, użyj następujących opcji:
Order allow,deny
Deny from all
Teraz zaczynamy robić postępy – odbierając dostęp tym, którzy go nie wymagają. Aby dojść do logicznego wniosku, spójrzmy, jak możemy zabronić komuś, o którym wiemy, że jest złym aktorem, dostępu do czegokolwiek na twoim serwerze.
Gdy znasz adres IP, po prostu dodaj te wiersze, zastępując 127.0.0.1 złym adresem IP:
Order Deny,Allow
Deny from 127.0.0.1
Aby zaktualizować to o nowe adresy IP, po prostu dodaj nowe wiersze „odmów z”. Jeśli musisz zablokować cały zakres, po prostu pomiń dany zakres. Innymi słowy, aby zablokować wszystko od 127.0.0.0 do 127.0.0.255, należy dodać:
Deny from 127.0.0.
Ostatnia wskazówka w tej sekcji dotyczy ochrony samego .htaccess. Istnieje sporo witryn rozpowszechniających metody, które są dobre, ale nie świetne. Poniższa metoda pochodzi dzięki uprzejmości Jeffa Starra z Perishable Press i jest o wiele dokładniejsza:
# STRONG HTACCESS PROTECTION
order allow,deny
deny from all
satisfy all
Ulepszenia bazy danych
Kolejną zaletą WordPress dla hakerów jest to, że w standardowej instalacji będą wiedzieć, jak nazywają się tabele bazy danych. WordPress domyślnie używa przedrostka „ks29so_”, zmieniając go ponownie odchodzimy od założeń hakerów.
Najpierw powiemy wp-config.php, że zmieniamy prefiks tabeli. Otwórz ten plik i edytuj następujące elementy:
$table_prefix = 'ks29so_';
Dodaj cyfry lub litery:
$table_prefix = ‘ks29so_3drt5_’;
Następnie musisz przejrzeć i zmienić każdą z nazw tabel w bazie danych. Dla każdej z 11 tabel uruchom polecenie w następującej formie:
RENAME TABLE ‘ks29so_commentmeta‘ TO ‘ks29so_3drt5_commentmeta‘;
Prawdopodobnie będzie kilka innych odniesień do starego prefiksu, które musisz usunąć. Uruchom to zapytanie, aby wyświetlić listę wszystkiego z tabeli opcji przy użyciu starego przedrostka:
SELECT * FROM ` ks29so_3drt5_options` WHERE `option_name` LIKE'%ks29so_%'
Niestety będziesz musiał przejść przez każdy z nich i zaktualizować.
Następnie musimy spojrzeć na tabelę UserMeta, ten sam proces co poprzednio:
SELECT * FROM ` ks29so_3drt5_usermeta` WHERE `meta_key` LIKE'%ks29so_%'
Na koniec możesz również ograniczyć użytkownika bazy danych MySQL do posiadania tylko następujących uprawnień do odczytu i zapisu: SELECT, INSERT, UPDATE i DELETE. W ten sposób można odebrać uprawnienia do struktury bazy danych i administratora: DROP, ALTER i GRANT. Może to jednak utrudnić aktualizację rdzenia i dodanie nowych wtyczek, ponieważ mogą one naprawdę wymagać zmiany struktury bazy danych. Jeśli pójdziesz tą drogą, musisz być dokładny w kwestii tworzenia kopii zapasowych i testowania.
Proszę o nowe klucze
Twoje tajne klucze są przechowywane w pliku wp-config.php. Jednak nie są one tak tajne, jeśli pozostawisz je jako wartości domyślne! Popraw swoje bezpieczeństwo, zmieniając je – zalecam jednak, abyś nie polegał na własnym poczuciu losowości i złożoności. Użyj czegoś takiego jak ta usługa – to nie tylko definiuje klucze za Ciebie, ale robi je wszystkie na raz w odpowiednim formacie, abyś mógł wkleić je bezpośrednio do pliku. Naciśnięcie przycisku odświeżania pokazuje, że za każdym razem, gdy go ładujesz, otrzymujesz nowy zestaw kluczy.
Oryginalne źródło przepisu
Wtyczki są wystarczająco dużym wektorem ataku, gdy exploity są wykrywane i rozpowszechniane wśród hakerów, więc powinieneś przynajmniej upewnić się, że ufasz źródłu wtyczki. W przeciwnym razie możesz być tym, który umieści exploita we własnej witrynie, dodając podejrzaną wtyczkę zawierającą złośliwe oprogramowanie.
Wiosenne porządki
Ponieważ motywy i wtyczki stanowią potencjalną lukę w zabezpieczeniach, aktualizujemy je, kiedy tylko jest to możliwe. Jeśli przestałeś używać wtyczki/motywu, usuń ją całkowicie. Wyłączenie to za mało – po prostu się go pozbądź! Jeśli wtyczka została porzucona przez jej programistę, dobrze byłoby znaleźć coś nowego i usunąć starą – jeśli zostanie wykryta luka w zabezpieczeniach, nie zostanie ona załatana, a wykonanie niestandardowej poprawki będzie prawdopodobnie bardzo kosztowne.
W ten sam sposób usuń wszelkie loginy, których już nie potrzebujesz. Być może ufasz swoim byłym pracownikom i to jest w porządku, ale nie chodzi wyłącznie o zaufanie. Chodzi również o zmniejszenie dostępnego obszaru ataku tam, gdzie to możliwe, ograniczenie ludzi do minimalnego poziomu dostępu, którego potrzebują. Zazwyczaj były pracownik lub autor nie potrzebuje dostępu – jestem pewien, że zrozumieją!
Obowiązuje zasada wejścia — zezwalaj tylko na adres IP zaufanego administratora
Oddzieliłem to od innych wskazówek dotyczących .htaccess, ponieważ jest to potencjalnie nieco poważniejszy krok do rozważenia. W przeciwieństwie do wcześniejszego etapu blokowania znanych złych adresów IP, chodzi o zezwolenie tylko na znane dobre adresy IP. Poprawia to twoje bezpieczeństwo, ale odbywa się to kosztem twojej wygody, ponieważ będziesz ograniczony do miejsca, w którym możesz się zalogować, aby pracować na swojej stronie. Śmiało, jeśli nie będziesz dużo się ruszać, jeśli byłeś pod ciągłymi próbami ataku lub po prostu jeśli uważasz, że jest to warte tego dodatkowego spokoju ducha.
orderdeny,allow
allow from 127.0.0.1
deny from all
(ponownie zastąp 127.0.0.1 swoim adresem IP).
SSL
Nie powinieneś uzyskiwać dostępu do swojego administratora w publicznej usłudze Wi-Fi — jeśli to zrobisz, poświadczenia zostaną przesłane drogą radiową w postaci zwykłego tekstu. Nikczemny haker może siedzieć obok ciebie, popijając latte i potajemnie przeprowadzając atak typu man-in-the-middle, aby uzyskać twoje hasła i inne poufne dane.
Jeśli jednak musisz, możesz przynajmniej zaoferować sobie trochę większą ochronę, włączając SSL. Najpierw upewnij się, że Twój serwer to obsługuje, a następnie otwórz plik wp-config.php i dodaj następujący wiersz:
define('FORCE_SSL_ADMIN', true);
Inne rzeczy do obejrzenia
To tyle z mojego głównego zestawu wskazówek, ale są też inne aspekty, na które warto zwrócić uwagę. Możesz dodatkowo wzmocnić swój .htaccess, na przykład zatrzymując uruchamianie skryptów php tam, gdzie nie powinny. Możesz także upewnić się, że uprawnienia do plików są odpowiednio ustawione – nie tylko w plikach WordPress, ale na całym serwerze.
Moją ostatnią ważną wskazówką byłoby jednak wykonanie kopii zapasowej. Cały ten artykuł opiera się na założeniu, że lepiej zapobiegać niż leczyć, ale regularne, użyteczne i przetestowane kopie zapasowe powinny być dostępne na wypadek, gdybyś ich potrzebował. Podkreślę zarówno regularne, jak i przetestowane – kopia zapasowa sprzed roku zasadniczo nie jest kopią zapasową dla większości witryn, które znacznie się rozwinęły w tym czasie. Jeśli kopie zapasowe nie są testowane, nie masz kopii zapasowej. Naprawdę nie chcesz dojść do punktu, w którym potrzebna jest kopia zapasowa i po prostu musisz trzymać kciuki i mieć nadzieję, że zadziała!
Co zrobiłeś, aby zabezpieczyć swoją witrynę WordPress? Gdzie wyznaczasz granicę między bezpieczeństwem a dostępnością/użytecznością? Daj mi znać w komentarzach.