WordPress. Bezpieczeństwo 5- blokada IP oraz pre-hasło

wordpress

W kolejnym artykule dotyczącym bezpieczeństwa w stronach internetowych chciałbym przedstawić Wam sposób drugi w swojej randze zaraz po silnym haśle – blokadę po adresie IP oraz wzmocnienie zabezpieczeń tzw. pre-hasłem. Do wykonania poniższych czynności musisz znać podstawy obsługi FTP (które opisywałem wcześniej) oraz mieć dostęp via ftp do swojego serwera.

Poziom trudności opisywanych czynności oznaczam jako średnio-zaawansowany.

WordPress jak każdy system zarządzania treścią posiada drzwi – o tym wiecie choćby z mojego poprzedniego artykułu tutaj. Takie drzwi, lub bramki to miejsca w których podajemy login i hasło aby móc przejść do zaplecza strony i zarządzać nią. Przecież o to właśnie chodzi, aby pewne osoby mogły się zalogować. Chodzi też o to aby inne osoby nie mogły 🙂 Zatem nietrudno dostrzec analogię, że tak w domu mieszkalnym jak i na stronie internetowej najbardziej narażonym na ataki miejscem są właśnie wspomniane drzwi. Całkiem nietrudno też je lepiej zabezpieczyć i choć powtarzam od samego początku jak mantrę, że 100% sposobu nie ma – jest to tylko backup któremu poświeciliśmy już wystarczająco dużo uwagi, to należy zrobić co tylko jest możliwe, aby to bezpieczeństwo zwiększyć.

Wrota Morii

Kiedy Drużyna Pierścienia („Władca Pierścieni” autorstwa J.R.R. Tolkiena) dotarła do wrót Morii – kopalni krasnoludów – początkowo nie mogła odnaleźć drzwi. Drzwi bowiem otwierały się tylko w pewnych specyficznych warunkach. Narysowane cienką linią ithildinu pokazywały swój obraz oświetlone jedynie blaskiem gwiazd i księżyca. A to był dopiero początek zabezpieczeń. W blasku księżyca pojawiło się hasło ponad bramą „Powiedz przyjacielu i wejdź” – z pozoru nic sensownego nie znaczące. Można było odczytać je na wiele sposobów a fakt, że wprost mówiło co należy powiedzieć wcale nie ułatwiało zadania i nie było tak oczywiste…

Jeśli pamiętacie ten fragment z książki Tolkiena lub z filmu reż. Petera Jacksona, macie doskonały obraz sytuacji z jaką mamy do czynienia nawet jeśli jeszcze tego nie wiecie. Taki efekt jaki uzyskały zmyślne krasnoludy i my chcemy uzyskać i nie jest to wcale takie trudne…

To że drzwi mogą pokazać się jedynie dla wybranych można uzyskać na kilka sposobów. Można użyć wtyczki, która pozwoli ograniczyć logowanie dla wybranego adresu IP albo umożliwić logowanie tylko o wybranych porach dnia czy nocy, albo odpowiedniego wpisu w htaccess (za moment wyjaśnię co to takiego).

To że nad drzwiami pojawi się napis mówiący „Powiedz przyjacielu i wejdź” to tzw. pre-hasło. Może być całkiem jasne i wprost napisane nad drzwiami zrozumiałe dla ludzi, a totalnie ukryte dla niemyślących programów komputerowych mających na celu łamanie zabezpieczeń. Ten „obrazek” z ponadczasowej powieści Tolkiena jest naprawdę doskonałą ilustracją omawianego zagadnienia…

IP – całkowite skrycie strony logowania

Najlepszym i najpewniejszym zabezpieczeniem jest blokada po adresie IP. Ma ona jednak swoje wady od których warto zacząć akapit. Blokada po IP jest możliwa tylko wtedy kiedy zawsze logujemy się z tego samego adresu (lub adresów). W dodatku musi być on stały a nie dynamiczny. Jaki jest nasz adres IP możemy sprawdzić na wiele sposobów, ot choćby tutaj:

http://moj-ip.pl/

Kiedy zdecydujemy się na ten sposób ekran logowania pojawi się wyłącznie dla osób próbujących wejść na stronę z zapleczem spod wskazanego adresu IP. Oznacza to, że można oszukać tę metodę jedynie podszywając się pod odpowiedni adres IP, co nie jest wcale takie proste i choć możliwe, trud ten nie ma większego sensu w większości przypadków. Można tę metodę uznać za jedną z najpewniejszych i wartych stosowania. Takich adresów możemy podać kilka, jednak należy mieć na uwadze, żeby nie utrudnić sobie życia zanadto – kiedy musimy logować się z wielu różnych komputerów a w szczególności z dynamicznego IP może lepiej z niej zrezygnować a zabezpieczyć stronę na inny sposób.

W jaki sposób blokujemy dostęp do /wp-admin dla wybranego adresu IP?

Polecaną przeze mnie metodą jest użycie pliku .htaccess. Bez wdawania się w zbędne szczegóły plik .htaccess pozwala na zmianę pewnych ustawień serwera Apache. Dodając do tego pliku pewne ściśle określone wpisy możemy zmienić to jak zachowuje się serwer względem pewnych katalogów, a konkretniej w tym przypadku np.: zezwolić lub zabronić dostępu do niego pewnym grupom osób lub programów. Plik .htaccess jest umieszczony w głównym katalogu WordPressa ale w podkatalogach już go z reguły brakuje. Możemy go sami utworzyć i to gdzie się on znajdzie jest bardzo ważne! Jeśli chcemy aby .htaccess odnosił się do stron znajdujących się w pewnym katalogu i podkatalogach musimy umieścić plik .htaccess w tym właśnie katalogu. Obejmie on wtedy swoim działaniem ten katalog i podkatalogi. Dla nas w tej chwili najistotniejszy jest katalog wp-admin gdyż tam znajduje się login.php – plik do którego się odwołujemy podczas logowania.

Gdybyśmy nieopatrznie wrzucili tak przygotowany plik nie do /wp-admin a do głównego katalogu public_html w którym jest nasz WordPress wtedy w ogóle odcięlibyśmy osoby spoza zezwolonego kręgu po IP do wglądu do strony, a tego akurat najczęściej nie chcemy:) Zatem uważnie wykonajmy poniższą procedurę.

Otwieramy (lub tworzymy od podstaw) plik .htaccess w dowolnym edytorze (polecam Notepad ++) i dodajemy następną komendę (w miejscu „X” musi być nasz adres IP).

order deny,allow
deny from all
allow from XXX.XXX.XXX.XXX

Co oznaczają powyższe sformułowania? Mówią że podajemy reguły odmowy dostępu i przydzielenia dostępu. W drugim wierszu podajemy komu odmawiamy deny from all (all oznacza wszystkim) a allow from w wierszu trzecim pokazuje komu przydzielamy uprawnienia do wglądu do danego katalogu. Oczywiście taki przykład można zmodyfikować a w internecie jest mnóstwo różnych sposobów wykorzystania .htaccess. Zatem nie będę tutaj ich mnożył. Dodam tylko że z powodzeniem można odwrócić sytuację i zablokować pewnym konkretnym użytkownikom dostępu, a zezwolić wszystkim pozostałym. W ten sposób można odciąć pewnych użytkowników którzy dla przykładu naprzykrzają się nam. Jest to przykład często wspominanego na forach „bana”, które otrzymują osoby piszące notorycznie w sposób niezgodny z regulaminem.

Plik taki należy umieścić w /wp-admin. Przypominam o tym ponieważ jest to bardzo ważne. Nie umieszczamy go w katalogu głównym WordPressa.

Teraz można już przetestować czy wszystko działa. Trzeba tylko spróbować zalogować się z innego adresu IP. Można do tego użyć dowolnej techniki zmieniającej / maskującej nasz IP, albo zalogować się z innej sieci.