Koszmar każdego WordPressowca dosięgnął wczoraj Antyweba. Jego blog został „zhakierowany” (przez Grzegorza). W mojej opinii „atak” miał charakter żartobliwy a Grzegorz zapewne chciał jedynie zwrócić uwagę posiadaczy WP na istniejące luki i jednocześnie zachęcić do zwiększania poziomu bezpieczeństwa.
W poniższym artykule przedstawię podstawowe sposoby, które zwiększą bezpieczeństwo naszego bloga. Lektura obowiązkowa! :-)
1. Aktualizuj skrypt
Nowe wersje WordPressa wypuszczane są stosunkowo często (większe wydania raz na 3-5 miesięcy, poprawki miesiąc później). Powinieneś zdać sobie sprawę, że nowa wersja nie zawiera tylko nowych funkcji ale także poprawki starych błędów (często krytycznych) oraz lepsze zabezpieczenia.
O nowej wersji powiadomi Cię sam WordPress – w panelu administracyjnym, tuż pod główną belką nawigacyjną pojawi się wówczas żółty boks ze stosowną informacją. Jeśli to dla Ciebie za mało to możesz jeszcze zapisać do swojego czytnika kanał RSS developerów.
2. Rób kopie bezpieczeństwa
Kopie powinieneś wykonywać cyklicznie co pewien okres czasu (w zależności od popularności bloga). Kopia taka powinna zawierać wszystkie pliki oraz bazy danych.
- Kopię plików możesz wykonać poprzez połączenie z serwerem (FTP, SSH itp.) lub poprzez wywołanie specjalnej opcji w panelu administracyjnym serwera (niestety nie wszystkie firmy hostingowe oferują taką możliwość).
- Kopię bazy danych możesz wykonać np. poprzez phpMyAdmina (eksport) lub wtyczkę WP-DB-Backup (potrafi ona m.in. automatycznie robić kopię i wysyłać ją na wskazany adres e-mail).
Posiadając konto w profesjonalnej firmie hostingowej możesz liczyć także na automatyczny backup robiony przez administrację.
3. Usuń informację o używanej wersji skryptu
WordPress wyświetla w nagłówku informację o wersji skryptu:
<meta name="generator" content="WordPress x.x.x" />
Aby usunąć tą informację powinieneś otworzyć plik functions.php (lub go utworzyć jeśli go nie ma), który znajduje się w katalogu skórki, i dodać w nim następujące polecenie:
<?php remove_action('wp_head', 'wp_generator'); ?>
Warto sprawdzić jeszcze zawartość pliku header.php. Możliwe bowiem, że autor skórki wstawił dodatkowy zapis w następującej postaci:
<meta name=“generator” content=“WordPress <?php bloginfo(’version’)?>” />
Jeśli coś takiego znajdziesz – usuń koniecznie.
4. Ogranicz dostęp do katalogu wp-admin
Ogranicz dostęp do katalogu tylko dla jednego numeru IP. Zrobisz to ustalając odpowiednie wpisy w pliku .htaccess:
AuthUserFile /dev/null AuthGroupFile /dev/null AuthName "Example Access Control" AuthType Basic order deny,allow deny from all allow from xx.xx.xxx.xx
Plik należy umieścić w katalogu wp-admin (a nie w głównym). W miejsce xx.xx.xxx.xx wpisujemy nasz adres IP. Należy tutaj dodać, że sposób zadziała gdy mamy stały adres IP, przy zmiennym (np. Neostrada) nie osiągniemy zamierzonego efektu.
Jak sprawdzić czy blokada faktycznie działa? Spróbuj zalogować się do panelu administracyjnego z komputera o innym IP lub wejdź przez dowolną bramkę proxy – np. Anonymouse.
5. Nie pozwól na wyświetlanie zawartości katalogu wtyczek i skórek
Informacja o tym jakich używasz wtyczek może być źródłem cennych danych dla wszelakich szkodników sieciowych. Wtyczki są bowiem z reguły tworzone przez fanów a nie przez programistów WordPressa i mogą zawierać błędy.
Aby zapobiec wyświetleniu zawartości katalogu należy umieścić w nim pusty plik index.html.
6. Używaj bezpieczniejszego połączenia z serwerem
Jeśli Twój hosting udostępnia (często bezpłatnie) możliwość łączenia się z serwerem przez SSH, wykorzystaj to. Przesyłane w tej sposób dane dostępowe w postaci loginu i hasła będą dużo bezpieczniejsze.
7. Zabezpiecz kluczowe foldery przed indeksacją
W katalogu głównym stwórz plik robots.txt i za jego pomocą ogranicz dostęp robotów wyszukiwarek do kluczowych folderów.
Zobacz przykład pliku robots.txt.
8. Zmień standardowy login administratora (admin)
Połącz się z bazą danych np. poprzez phpMyAdmina, odszukaj tabelę wp_users a w niej rekord z nazwą „admin”. Uzupełnij pola „user_login” oraz „user_nicename” o nową nazwę loginu.
9. Wyłącz możliwość rejestracji użytkowników
(Oczywiście jeśli nie jest Ci ona do niczego potrzebna. :-))
W panelu administracyjnym wejdź w zakładkę ustawienia-ogólne i odznacz checkboks znajdujący się przy „funkcje użytkowników” – „każdy może się zarejestrować”.
10. Dbaj o podstawowe zasady bezpieczeństwa
- zabezpiecz dostęp do swojego konta silnym hasłem,
- nie używaj jednego hasła do wszystkich swoich kont w internecie,
- nie korzystaj z ogólnie dostępnych komputerów a jeśli już to po pracy dokładnie usuń wszystkie prywatne dane zgromadzone przez przeglądarkę,
- korzystaj z bezpiecznych przeglądarek (np. Firefox, Opera),
- używaj oprogramowania antywirusowego.
11. Twój własny sposób na zabezpieczenie
Jeśli znasz jeszcze jakiś inny sposób na zabezpieczenie WordPressa to podziel się nim z nami w komentarzach do artykułu. :-)









ocena: 4,80 / 5 | głosów: 10
Znam i się dzielę, tzn. się podzieliłem kiedyś dawno temu u siebie: http://bloggerpl.com/2007/09/zabezpiecz-swoj-blog/ chociaż to w zasadzie to samo tylko innymi słowy ;)
Tak się właśnie spodziewałem, że ktoś napisze o bezpieczeństwie WP w kontekście „ataku” na Antyweb ;)
Bardzo dobry art! Rewelacja. O to własnie mi chodzilo, piszac komentarz nie spodziewałem sie, że tak szybko ktoś zareaguje a tu prosze. WP Ninja działa z zaskoczenia. Pozdrawiam
Co do tej najnowszej wersji to tak nie do końca. Były wpadki, kiedy programistą się coś omsknęło i dziura się pojawiała w apdejcie. Najlepiej podejść do tego zdroworozsądkowo i nim apdejta zrobimy poczekajmy trochę czasu i zobaczmy jak środowisko, które już zainstalowało apdejta, będzie się wypowiadać. Reguła o tym, że jeżeli coś nie jest zepsute to nie warto naprawiać ma sens ;)
A i tak najbezpieczniejszyesą regularne backupy, które siedzą na dysku.
Usuwanie tego nie wpłynie na SEO? Po tym Google rozpoznaje worrdpress`a? ja usunąłem tylko „version” .
@Palmiak,
Masz rację, wpadki zdarzają się każdemu ale są to sporadyczne przypadki.
Jeśli poprawka nie likwiduje żadnych błędów krytycznych to pewnie można poczekać na ewentualną reakcję blogosfery ale nie tak długo jak to zrobił Antyweb (ponad 3 miesiące). ;-)
I, co ważne, nie można polegać tylko na jednej metodzie zabezpieczenia. Gdyby Antyweb nawet nie zaktualizował skryptu ale zastosował się do sposobu 3. (usunięcie informacji o numerze wersji) lub 4. (blokada panela na IP) lub 8. (zmiana loginu administratora) lub 9. (wyłączenie rejestracji) to pewnie nikt by się nie włamał (a przynajmniej nie tak łatwo i nie w ten sposób).
Wniosek: sposoby zabezpieczenia trzeba łączyć.
@WPNinja,
Co do IP to można dodać zakres z gwiazdkami prawda?
Temat rzeka pisze się o tym cały czas :D
http://iworks.pl/przedstaw-sie-zostaniesz-zhakowany/
No i to, że usuwanie wersji z plików szablonów … to … kosmetyka:
http://iworks.pl/jeszcze-o-bezpieczenstwie-wordpressa/
@kamil,
Nie znam się na tym dobrze ale wyczytałem, że można dodać zakres ale nie gwiazdkami tylko kropkami. I tak np.
192.168.1. będzie miał zakres 192.168.1.xxx192.168. będzie miał zakres 192.168.xxx.xxx
192. będzie miał zakres 192.xxx.xxx.xxx
Trzeba dokopać się do podręcznika
.htaccessi sprawdzić.Z tego co mi wiadomo nie będzie to miało żadnego wpływu. Wątpię żeby Google rozpoznawał skrypt WordPressa a jeśli nawet to z tego powodu traktował go jakoś inaczej.
świetny artykuł, świetne rady :)
Dzięki
Moje Ip Pplusa w tej chwili to: 77.113.101.127 zatem powinno działać jako 77.xxx.xxx.xxx nie działa .
@kamil,
Sprawdziłem u siebie i u mnie działa. W pliku
.htaccesswpisałeś77.jako numer IP? Sprawdź też wcześniej czy zabezpieczenie działa Ci z pełnym adresem.Z pełnym działa.
Ok, tak zadziałało sprawdź czy możesz teraz wejść :) ja mogę ty nie powinieneś mieć takiej możliwości. Pozdrawiam.
Nie mogę, pokazuje mi się eror404. :-)
Haker musiałby kupić simdatę:) bo takiego proxy nie znajdzie:P chyba, że samo korzysta z Iplusa:P
A miałem wczoraj pisać w komentarzach na antywebie, że pewnie pojawi się odpowiedni art (dot. zabezpieczenia WP) na WPNinja i nie myliłem się – na pewno się przyda ; )
Usunąłem informację o wersji, ale punkt 4. nie jest dla mnie – zbyt często wykonuję jakieś czynności związane z blogiem u znajomego.
@Ravicious,
Możesz tam wpisać kilka adresów IP:
allow from xx.xx.xxx.xxallow from xx.xx.xxx.xx
allow from xx.xx.xxx.xx
(...)
@Ravicious:
Dodanie nowego wpisu ip via ftp to 2 minuty:)
Czyli mogę nad tym pomyśleć ;) Dzięki.
a jak ma się zmienne ip? ;>
to się wpisuje
„zmienne.xxx.xxx.xxx.’ :P
zobacz jak ten „hakier” zerznął od ciebie artykuł
http://www.kminek.pl/antyweb-zhakierowany/
i to ma byc znawca, śmiech na sali
Ale plagiat:) Tragedia.
E tam, przesadzacie :-). Ja tej wiedzy nie wziąłem z kosmosu, Grzegorz pewnie korzystał z podobnych źródeł lub bazował na podobnych doświadczeniach…
:P
no tak, ale opracowales sam, sam napisales, a on nie dosc ze sie wlamal na antyweba i okrzyknal Hazana wordperssowym nobem to terasz szpanuje wiedza ktora zaczerpna od ciebie z bloga juz po wlamaniu.
dla mnie ten czlowiek to zwykla kpina nie hacker ani znawca
Witam,
Co do punktu trzeciego warto wspomnieć o usunięciu wersji skryptu także z kodu subskrypcji RSS/RSS2/Atom/RDF. W pliku general-template.php należy zmodyfikować funkcję get_the_generator ( $type ) poprzez usunięcie get_bloginfo_rss( ‚version’ ).
Pozdrawiam,
m1chu
Słuszna uwaga m1chu – dzięki :-).
Dziekuje za informacje
a co jeśli się niema wartości z punktu 8. Zmień standardowy login administratora (admin)
Tzn? Nie rozumiem zbytnio pytania.
Skorzystałem z opcji nr 4 u siebie, o ile przy wpisaniu adres/wp-admin pojawia sie 403 i haslo o zablokowanym dostepie to przy adres/wp-login.php pojawia sie juz panel administracyjny (mam na mysli dostep przez IP spoza listy), czy to normalna sytuacja?
Tak, to normalna sytuacja.
wp-logini tak później przenosi dowp-adminwięc i tak się nie zalogujesz (z innego niż podanego w pliku.htaccessIP).Dzieki
Dzięki.
Co do kroku 8 – skleiłem małą wtyczkę, która pozwala bezboleśnie zmienić login admina. To z głównie z myślą o tych mniej technicznych użytkownikach ;)
Wtyczka: http://wiecek.biz/projekty/wordpress/admin-renamer
Zastanawiam się, na ile bezpieczne jest udostępnienie opcji rejestracji użytkowników. To pozwala na zbudowanie nowych funkcjonalności, ale też pewnie generuje na starcie problemy (SPAM, włamania). Jak bezpieczny jest panel użytkownika w WP?
@Łukasz,
Świetna sprawa. Ręczne grzebanie w bazie danych nigdy nie należało do najprzyjemniejszych rzeczy :-).
Witam
Co do kroku 3 w pliku functions.php, w folderze z skórką NIE mam nic związanego z
W żadnej skórce tego nie mam, aktualnie używam colorvoid.
Więc co zrobić? A i gdzie wpisać w tym kodzie ?????
Sorki za 2 koment, ale też nie mam pliku .htaccess
Używam wersji 2.7 i jak zrobić te dwa kroki?
Z góry dziękuję za pomoc ;)
Jeśli nie posiadasz plików
functions.phplub.htaccessto zawsze możesz stworzyć je ręcznie.Co do .htaccess to może nie tyle co go nie masz co jest ukryty. Uważaj, żebyś potem się nie zdziwił, że Ci ładne urle przestały działać
A ja sobie teraz odpocznę.
Jutro wezmę się do naprawiania szkód, które spowodowało korzystanie z tego poradnika. Wiem, ze to pewnie moja wina, ale naprawdę nie wiem gdzie popełniłem błąd. Może to wina skórki, która nie pozwala na modyfikacje czy może coś innego. Faktem jest, ze nie mogę się zalogować.
Wezmę i sobie odpocznę. Albo nie, zepsuję następną stronę.
functions.php
To jest plik odpowiedzialny za wszystkie problemy. Przywrócenie oryginału przywróciło funkcjonalność witryny.
Pytanie: czy to może być wina tej skórki, która w zamyśle na każdej stronie wyświetla informacje o sobie? Rzućcie proszę okiem.
@wojTrek – przede wszystkim – którą wersję WP masz?
2.7.1
Styl: Ahren Ahimsa
Tu tak trochę przysiadło. U mnie wszystko O.K. Z problemami radzę sobie na bieżąco. Wtyczki problematyczne omijam szeroki lukiem.
Moje wyczyny podobają się na tyle, że mam problemy z wyrabianiem się:-)
Wpis dawno dodany, ale mam takie pytanie: dlaczego próba zabezpieczenia katalogu wp-admin hasłem kończy się tym, że gdy chce wejść do /wp-admin wyświetla się błąd.
Oraz jak zmienić lokalizację /wp-admin oraz config.php?
w WP 2.8 informacja o wersji jest w wp-includes/general-template.php – function get_the_generator. Przeoczyłem i od razu coś chciało zaspamować.
Czy stosujecie jeszcze inne zabezpieczenia, niż te tutaj opisane. Np instalacja w innym katalogu niż defaultowy, zmiana prefixu bazy?
Aby uchronić się przed atakiem typu SQL-injection należy zmienić standardowy prefix wp_ w bazie danych na jakiś niestandardowy, np.: dr4Tc2_ – coś takiego zdecydowanie utrudni życie napastnikowi a w 99,9% zniechęci go podejmowania tego typu ataku.