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 specjalną wtyczkę, która pomoże Ci zautomatyzować cały proces.
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. :-)
Komentarze
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 ;)
odpowiedzBardzo 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
odpowiedzCo 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.
odpowiedzUsuwanie tego nie wpłynie na SEO? Po tym Google rozpoznaje worrdpress`a? ja usunąłem tylko „version” .
odpowiedz@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ć.
odpowiedz@WPNinja,
odpowiedzCo 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:
odpowiedzhttp://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.xxx
192.168. będzie miał zakres 192.168.xxx.xxx
192. będzie miał zakres 192.xxx.xxx.xxx
Trzeba dokopać się do podręcznika
.htaccess
i 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.
odpowiedzWystarczy ograniczenie do posieci, można to zapisać np. tak: 10.10.10
#– dopuszczenie do aplikacji hurtowni tylko użytkowników (podsieć 10.0.10.x)
Order deny,allow
Deny from all
Allow from localhost 10.10.10 10.0.10.140
# Allow from all
Oczywiście skoro dopuszczam 10.10.10, to .140 tutaj jest tylko dla przykładu zapisane….
By wycofać zmiany trzeba zablokować (zahaszować) wpis z numerami IP oraz odhaszować ten poniżej który obecnie zahaszowałem.
odpowiedzNo i oczywiście trzeba serwer http przestrzelić…
ps.2
odpowiedzPowinno to być zrealizowane w konfiguracji serwera http.
Można to zrobić w .htaccess ale trzeba mieć świadomość tego, że plik konfiguracyjny ładowany jest tylko raz a .htaccess przetwarzany za każdym razem – co zjada czas i zasoby serwera….
Dzięki za przydatne informacje!
odpowiedzświetny artykuł, świetne rady :)
odpowiedzDzięki
Moje Ip Pplusa w tej chwili to: 77.113.101.127 zatem powinno działać jako 77.xxx.xxx.xxx nie działa .
odpowiedz@kamil,
odpowiedzSprawdziłem u siebie i u mnie działa. W pliku
.htaccess
wpisałeś77.
jako numer IP? Sprawdź też wcześniej czy zabezpieczenie działa Ci z pełnym adresem.Z pełnym działa.
odpowiedzOk, tak zadziałało sprawdź czy możesz teraz wejść :) ja mogę ty nie powinieneś mieć takiej możliwości. Pozdrawiam.
odpowiedzNie mogę, pokazuje mi się eror404. :-)
odpowiedzHaker musiałby kupić simdatę:) bo takiego proxy nie znajdzie:P chyba, że samo korzysta z Iplusa:P
odpowiedzA 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 ; )
odpowiedzUsunąłem informację o wersji, ale punkt 4. nie jest dla mnie – zbyt często wykonuję jakieś czynności związane z blogiem u znajomego.
odpowiedz@Ravicious,
Możesz tam wpisać kilka adresów IP:
odpowiedzallow from xx.xx.xxx.xx
allow from xx.xx.xxx.xx
allow from xx.xx.xxx.xx
(...)
@Ravicious:
odpowiedzDodanie nowego wpisu ip via ftp to 2 minuty:)
Czyli mogę nad tym pomyśleć ;) Dzięki.
odpowiedza jak ma się zmienne ip? ;>
odpowiedzto się wpisuje
odpowiedz„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
odpowiedzAle plagiat:) Tragedia.
odpowiedzE tam, przesadzacie :-). Ja tej wiedzy nie wziąłem z kosmosu, Grzegorz pewnie korzystał z podobnych źródeł lub bazował na podobnych doświadczeniach…
odpowiedz:P
odpowiedzno 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.
odpowiedzdla 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,
odpowiedzm1chu
Słuszna uwaga m1chu – dzięki :-).
odpowiedzDziekuje za informacje
odpowiedza co jeśli się niema wartości z punktu 8. Zmień standardowy login administratora (admin)
odpowiedzTzn? Nie rozumiem zbytnio pytania.
odpowiedz[…] które są kombinacją uzupełnionych wcześniej pól (nazwa użytkownika jest wygaszona ponieważ można ją zmienić tylko z poziomu bazy […]
odpowiedzSkorzystał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?
odpowiedzTak, to normalna sytuacja.
odpowiedzwp-login
i tak później przenosi dowp-admin
więc i tak się nie zalogujesz (z innego niż podanego w pliku.htaccess
IP).Dzieki
odpowiedzDzięki.
odpowiedzCo 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
odpowiedzZastanawiam 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?
odpowiedz@Łukasz,
Świetna sprawa. Ręczne grzebanie w bazie danych nigdy nie należało do najprzyjemniejszych rzeczy :-).
odpowiedzWitam
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.
odpowiedzWię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 ;)
odpowiedzJeśli nie ma pliku .htaccess (lub functions.php) to trzeba go utworzyć na własnym komputerze i następnie wgrać do odpowiedniego katalogu na serwerze poprzez klienta FTP. Może zdarzyć się taka sytuacja, że system operacyjny nie pozwoli na stworzenie pliku o takiej nazwie – wtedy wystarczy utworzyć go pod inną nazwą, przegrać na serwer i dopiero tam zmienić nazwę na .htaccess.
Gdyby coś było niejasne to proszę śmiało pisać.
odpowiedzCo 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ć
odpowiedzTak trudno… stworzyc plik .htaccess? Len.
odpowiedzProsta obsługa WordPressa sprawia, że korzystają z niego użytkownicy o różnym stopniu znajomości, powiedzmy, kwestii związanych z administracją stron internetowych. Dla niektórych stworzenie pliku .htaccess to błahostka a dla innych uruchomienie edytora tekstu graniczy z cudem.
odpowiedzA ja sobie teraz odpocznę.
odpowiedzJutro 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
odpowiedzTo 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?
odpowiedz2.7.1
odpowiedzStyl: Ahren Ahimsa
Tu tak trochę przysiadło. U mnie wszystko O.K. Z problemami radzę sobie na bieżąco. Wtyczki problematyczne omijam szeroki lukiem.
odpowiedzMoje 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?
odpowiedzw 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ć.
odpowiedzCzy stosujecie jeszcze inne zabezpieczenia, niż te tutaj opisane. Np instalacja w innym katalogu niż defaultowy, zmiana prefixu bazy?
[…] jest zabezpieczyć swoje “dane” w możliwie najlepszy sposób. WPNinja opisał 11 sposobów na zabezpieczenie bloga – ja… postanowiłem je zebrać u siebie w celu odświeżenia tematu zabezpieczeń […]
odpowiedzAby 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.
odpowiedz[…] zapasowa, w przeciwieństwie do innych typów zabezpieczeń, nie ochroni przed włamaniem, nieumyślnym skasowaniem zawartości, spaleniem dysku w serwerowni […]
odpowiedzHej,
fajny art – dodałem do zakładki. Ja dodatkowo zabezpieczam swoje stronki zmieniają domyślny prefiks dla tabel w bazie danych. Domyślnie jest zawsze wp_ .
odpowiedzHej
Super przydatny artykuł i mam pytanie.
Przed instalacją bezprzewodowego internetu .htaccess działał prawidłowo, a teraz nie moge się zalogować do panelu zmieniając i wprowadzając nowe IP które mam w cmg – ipconfig, wiesz może co jest przyczyną?
odpowiedzPorównywałeś może otrzymany w ten sposób IP np. ze stroną http://whatismyipaddress.com/ ?
odpowiedzDziękuję. Niby prosta rzecz, a tu adres IP zły wpisałem:)
odpowiedzSuper art :) Takie rzeczy to podstawa. Oprócz punktu trzeciego polecałbym jeszcze wywalenie pliku readme.html z głównego katalogu instalacji – w nim też zawarta jest informacja na temat wersji WordPressa.
odpowiedzPoza waszymi powyższymi uwagi, dorzucę coś od siebie.
odpowiedzJa mam taką zasadę, a wywodzi się z pracy – zmieniam hasło co x dni – a wymusza to system.
Jest to upierdliwe – trudno ma być bezpiecznie.
Tak polityka bezpieczeństwa pkt 8..
Bardzo fajny merytoryczny artykuł – właśnie walczę z dwoma WP które uległy hakerom – dość gładko poszło mi usunięcie złośliwego kodu, a teraz wprowadzam zmiany opisane wyżej. Mam nadzieję, że to wystarczy na przyszłość.
PS. jest sporo bardzo podobnych artykułów pisanych po angielsku – to a propos dyskusji powyżej – nie sądzę aby to był problem dla kogokolwiek
odpowiedzNa pewno się przyda. Dzięki.
odpowiedzSzkoda, że punkt 4 nie można wykorzystać, jeśli Twój serwis pozwala na rejestrację nowych użytkowników.
odpowiedzA jak wyłączyć te wszystkie kanały RSS i zbędne linki w metach ? Poda ktoś kod na to ?
odpowiedzWybaczcie mi za moja niewiedzę ale kto pytanie nie bladzi a ja dopiero uczę się wordpressa i mam pytanie czy jest możliwość zmiany prefiksu wp_ przed instalacją wordpress, tzn przygotować tak pliki instalacyjne by już od razu ze zmienionymi prefiksami bazy go zainstalować a nie po instalacji grzebać w kodzie i bazie lub dodawać jakieś nie widomego pochodzenia wtyczki (nie chce nikogo obrazić poprostu nie jestem zwolennikiem żadnych wtyczek na wp im mniej tym lepiej najlepiej w ogóle, sam używam tylko duch wtyczek do indexowania google) A prawie wszystkie pokazane tutaj kroki można zrobić bez wtyczek, prawie bo tego akurat nie wiem jak dokonać???
odpowiedzJuż od dłuższego czasu WP umożliwia wybranie własnego prefiksu tabel podczas instalacji :-).
odpowiedzTAK TAK Wszytko w wp-config.php juz to wiem zrozum ze to moje początki z wp ;) teraz szukam szablonu z tym ze nie wiem dlaczego wszystkie w demo mają ruchomy obraz typu np to http://www.e-ga.com.au/ a jak zainstaluje ten szablon to nie ma śladu ze takie coś jest dostępne Proszę o pomoc znasz jakieś poradniki opisy dodawania „ruchomego layouta” do strony ????
odpowiedzMówiąc „ruchome obrazy” masz na myśli pokaz slajdów, zgadza się?
Jeśli chodzi o darmowe motywy spoza oficjalnego katalogu to nie ma tutaj żadnej reguły. Jeśli autor ma trochę oleju w głowie to takie informacje poda w dokumentacji, która zazwyczaj jest plikiem tekstowym znajdującym się w katalogu motywu.
odpowiedzDzięki za odpowiedz ;) Nauczyłem się już robić własne szablony z szablonów html i teraz ruchome layouty czy mała ilość darmowych szablonów do wordpressa mi nie straszna ;D WordPress jest SUPER!!! Pozdrawiam ;););)
odpowiedzA da się jakoś usunąć wersję WordPressa z funkcji wp_head() ??
Funkcja ta generuje m.in. linijkę:
i chodzi mi o usunięcie tego ’?ver=3.5′.
odpowiedzDa się to jakoś usunąć czy raczej nie ? :/
Tak, możesz skorzystać z poniższego kodu:
odpowiedzhttps://gist.github.com/2657482
A co z wtyczkami? Przecież jest tyle różnych zabezpieczających…
odpowiedzZgadza się, ale dużo lepiej najpierw przyswoić i zastosować podstawy a dopiero potem sięgać po dodatkowe wtyczki. Polecasz jakieś konkretne?
odpowiedzWitaj, święty poradnik ale mam mały problem i pytanie. Czy da się zmienić dostęp do panelu admina na WordPressie. Chodzi mi o to aby zmienić
odpowiedzmojastrona.pl/admin
namojastrona.pl/nowe
i tak samomojastrona.pl/wp-login.php
Da się takie coś zrobić?Dzięki! Adres strony logowania możesz zmienić np. przy wykorzystaniu poniższej wtyczki: https://wordpress.org/plugins/stealth-login-page/
odpowiedzI jeszcze dwa pytania
1. Czy da się tak zrobić aby po wejściu na moją stronę i kliknięciu źródło strony nie było informacji o szablonach i wtyczkach ( robiłem wedle punktu 5 ale nic nie pomogło)
2. Jeśli na 1 pytanie odp. brzmi NIE. To czy da się zmienić nazwy ty wtyczek\szablonów. Jeśli tak, jak to zrobić. Próbowałem coś ale mi nie wychodziło
odpowiedzW punkcie 5. chodziło mi o ukrycie zawartości katalogów z wtyczkami/motywami tak aby po wejściu w
./wp-content/plugins/
nie było widocznej listy wtyczek.To, o czym piszesz to trochę co innego. Niektóre wtyczki i motywy do poprawnego działania potrzebują dodatkowych plików – stylów CSS lub skryptów JavaScript i te właśnie odwołania są widoczne w źródle strony.
Nie da się ich ukryć w prosty sposób, ale zawsze możesz nieco utrudnić ich identyfikację poprzez wykorzystanie jakiejś wtyczki do scalania i kompresji takich plików (np. WP Minify albo W3 Total Cache).
odpowiedzAd.5 Listowanie katalogów można wyeliminować poprzez zamieszczenie dyrektywy
odpowiedzOptions -Indexes
w pliku .htaccess (dyrektywa będzie działała na wszystkie katalogi znajdujące się na tym samym poziomie i poniżej tego pliku).Zgadza się, dzięki za przydatną informację!
odpowiedzWitam, a co z taką sytuacją?
odpowiedzTzw. „po ptokach” – Twoja strona została zhakowana.
Najszybszym rozwiązaniem będzie wgranie kopii zapasowej. Jeśli nie przygotowałeś jej wcześniej we własnym zakresie (np. za pomocą BackWPUp) to możesz jeszcze zgłosić taką prośbę do firmy, w której masz wykupiony hosting.
Żeby uniknąć takich sytuacji w przyszłości dobrze wprowadzić dodatkowe zabezpieczenia wymienione w powyższym artykule.
odpowiedzSzymon dwa pytania:
1. Czy zalecana przez wielu zmiana prefiksu tabel po instalacji jest dobrym krokiem oraz czy nie powoduje dodatkowych problemów?
2. Jakie rozwiązanie możesz polecić jeżeli chodzi o bezpieczne logowanie do panelu jeżeli nie mam i nie zamierzam na razie inwestować we własny certyfikat SSL. W sieci widziałem jakieś portale pośredniczące jak : https://portal.wpengine.com/login.php rozumiem, że polega to na tym, że dodajesz konto z poziomu tego portalu a on się loguje do panelu? Czy znasz jakieś podobne pewne i sprawdzone rozwiązania? Bo logowanie się z wielu miejsc po gołym http chyba nie jest najlepszym rozwiązaniem prawda?
odpowiedzZawsze możesz się logować do panelu używając nieważnego certyfikatu SSL – wpisz w przeglądarce pod https (jeśli Twój serwer to obsługuję). Polecam Ci wtyczkę „Login LockDown” która zabezpiecza logowanie – np.: wpisze 3 razy źle hasło wtedy logowanie dla mojego IP się blokuje na np.: pół godziny (ustawiasz w panelu). Pozdrawiam.
odpowiedzAd 1. Tak, zawsze powinno się to robić i nie powoduje to absolutnie żadnych problemów.
Ad 2. Nie wiem na jakiej zasadzie działa wspomniana przez Ciebie usługa WPEngine, ale dobrym sposobem na dodatkowe zabezpieczenie panelu administracyjnego jest nałożenie hasła poprzez .htaccess.
Na
odpowiedzwtorekśrodę mam zaplanowaną publikację artykułu, który będzie poruszał te tematy! :-)@Krzysiekn po https – 404 Not Found The resource requested could not be found on this server! Co trzeba zrobić aby działało nawiązuje się połączenie jest informacja, że strona może być fałszywa i finał jak podałem. Rozumiem, że trzeba coś zmienić w wp-cofig? Takie połączenie jest w pełni szyfrowane tak? Rozumiem, że jedyny minus to ta pojawiająca się informacja co nie ma znaczenia w przypadku logowania przez właściciela bloga do panelu.
@Szymon Skulimowski : dzięki za odpowiedź. Mogę zmienić ten prefiks za pomocą wtyczki Wordfence?
odpowiedzNiestety zawsze będzie wiadomość o fałszywym ssl – w google chroma można kliknąć „kontynuuj mimo to”. Nie wiem czy to prawda ale musisz mieć własne IP. Największy host w Polsce – home.pl oferuje w każdym pakiecie za darmo otrzymujesz swoje IP. Pozdrawiam.
odpowiedzNie zauważyłem żeby wtyczka miała taką funkcję. Na pewno możesz to zrobić za pomocą Change DB Prefix, ale na wszelki wypadek zrób wcześniej kopię zapasową.
odpowiedzObiecany artykuł – Jak zabezpieczyć WordPressa przed atakiem „brute force” i dlaczego jeszcze tego nie zrobiłeś?
odpowiedz[…] Oprócz powyższego na pewno warto jeszcze zadbać o niestandardową nazwę użytkownika (możesz to zrobić w dowolnym momencie) oraz o silne hasło, najlepiej wygenerowane […]
odpowiedzZ dużym zainteresowaniem (wywołanym oczywiście upierdliwymi atakami spamerów na stworzoną i administrowaną przeze mnie stronę na WP) przeczytałem powyższy artykuł.
Zainteresował mnie szczególnie p.3 – „ukryj wersję” – no przyznam nie sprawdzałem czy na wszystkich stronach Twojego bloga wszystko jest wyczyszczone – zrobiłem tylko jedno wywołanie
wpninja.pl/r.......html
i widzę doskonale, że masz już najnowsze dziecko WP tj. wersję 3.6. ;)BTW podaj czy w ogóle korzystasz z wersji spolszczonych, a jeśli tak – to skąd masz „spolszczenie” do wersji 3.6. ?
odpowiedzW momencie, w którym pisałeś komentarz była już dostępna polska wersja 3.6 :-). Jeśli interesuje Cię bezpieczeństwo to polecam jeszcze artykuły znajdujące się pod poniższym odnośnikiem:
https://wpninja.pl/tagi/bezpieczenstwo/
odpowiedzDziękuje bardzo za wszystkie artykuły w zakresie bezpieczeństwa WP jak i za odpowiedź na pytanie postawione przy okazji (BTW :-p ). Precyzyjnie rzecz ujmując to w momencie pisania przeze mnie komentarza dostrzegłem angielską wersję w/w pliku na Twoim serwerze i stąd było moje pytanie. Dopiero za dwa dni ukazała się polska wersja, w której jak widzę u siebie inkryminowany plik jest również po polsku.
W kwestii zasadniczej mojego komentarza – plik „znikł” i o ułamek procenta poprawiło się bezpieczeństwo – i o to chodzi.
odpowiedzPonieważ struktura katalogów WordPressie ciągle nie jest dla mnie do końca zrozumiała, mam pytanie: Czy nie istnieje pewne ryzyko, że kopiując żywcem skrypt z kroku 7. odbiorę robocikowi googla dostęp do jakichś elementów, które lepiej by było, żeby jednak obejrzał? Ostatnio dużo czasu poświęciłem na walkę z SEO i głupio by było zniweczyć wszystko zablokowaniem czegoś istotnego. A w ogóle to sądziłem, że po to się dodaje mapę strony, żeby bot zaglądał tylko w miejsca z mapy. Rozumiem, że byłem w błędzie?
A teraz żeby nie było, że tylko roszczeniowo dwie rzeczy od siebie:
Ad. 3. Wtyczki by Yoast (np. SEO albo Google Analytics) również informują o swojej wersji (widać to jak się otworzy źródło strony), aby to zmienić trzeba znaleźć w katalogu danej wtyczki, w podkatalogu frontend, plik o nazwie class-frontend.php i tam usunąć wpis o wersji. Tylko w tym pliku aktualna wersja jest oczywiście przesyłana jako zmienna, więc żeby znaleźć ten wpis nie można szukać całego opisu ze źródła strony, tylko jakiś fragment. Kurcze, trzy kliknięcia a ja to opisałem jakby to było nie wiem co – przepraszam, prościej nie umiem.
Ad. 5. Chyba WP już sam o to dba. Nic nie robiłem a katologi wyświetlają się jak puste (z resztą w każdym z nich siedzi jakiś index.php). Inna rzecz, że jakby ktoś się bardzo uparł, żeby sprawdzić czy używam jakiejś konkretnej wtyczki to może po prostu sprawdzić czy jej katalog istnieje i już wie.
odpowiedz@Dziabong, oczywiście, przy nieumiejętnej konfiguracji pliku Robots można sobie zablokować za dużo. Załączony do tego wpisu kod jednak nie powinien żadnej krzywdy wyrządzić.
I nie, robot nie podąża jedynie za linkami z sitemapy. Będzie podążał za każdym linkiem, który nie został wykluczony – bądź to w Robots, bądź przez noindex / nofollow.
Ad 3. Wycinanie wersji nie ma większego sensu. I tak często wersję można sprawdzić na kilka innych sposobów, usunięcie komentarza jest tylko pozornym utrudnieniem.
A tak na marginesie, w żadnym wypadku nie grzebiemy w plikach wordpressa czy wtyczek.
Wersję Yoast’a z komentarza można usunąć przykładowo takim kawałeczkiem kodu nie ingerując w pliki samej wtyczki:
Ad 5. W ograniczonym zakresie. Za listowanie plików odpowiada konfig serwera, nie wordpress. Trik z plikiem index jest tylko niedoskonałym obejściem problemu.
Lepiej jest w .htaccess wrzucić dyrektywę: Options -Indexes
odpowiedzCześć
1 z 4 największych mitów na temat bezpieczeństwa Word Pressa, to świadomość, że
jeśli jest się początkującym i mało znanym blogerem, to nie jest się narażonym na atak hakerów, ale to nie prawda ponieważ hakerzy tworzą skrypty, które automatycznie wykonują
za nich pracę, że tak powiem.
Polecam krótki artykuł Kamili Nitschka na temat 4 największych mitów bezpieczeństwa WP i innych platform pod tym linkiem http://bit.ly/4-Największe-Mity-o-Bezpieczeństwie-Word-Pressa
odpowiedzPolecam przeczytać „Mit 1 i 3”, bo pozostałe zawierają informacje, które zostały już poruszone w tym artykule.
Ponieważ sam doświadczam wielu ataków na swoje blogi to polecam zapoznać się ze stroną SafeWordpress.pl. Są tam praktyczne wskazówki jak zabezpieczyć wordpressa.
odpowiedzPolecam lekturę: https://wordpress.org/about/domains/ :)
odpowiedzBardzo przydatny tip o usunięciu z nagłówka informacji o używanej wersji. Temat rzadko poruszany. Wzmianki o tym nie ma również na oficjalnym poradniku na wordpress.org. Polecam również lekturę tego artykułu. Znajdziecie tam kilka dodatkowych sposobów na zabezpieczenie swojego wordpressa.
odpowiedzDzięki! Od czasu napisania artykułu (2008) trochę się pozmieniało i usunięcie informacji o wersji WordPressa z nagłówka nie można już traktować w kategoriach poprawy bezpieczeństwa ponieważ istnieje dużo innych sposobów na taką identyfikację :)
odpowiedzJeszcze bym polecał wgranie .htaccess z sblam.com , który blokuje boty spamujące już na poziomie wejścia.
odpowiedzWpis opublikowany dawno temu jednak nadal się przydaje do zabezpieczenia wordpressa. Obecnie stawiam portfolio swojej dziewczynie i chce zadbac o wysoki poziom zabezpieczenia, twoj porady przydaly mi sie :)
odpowiedzNa jednym z blogów o podobnej tematyce autor polecał „od czasu do czasu” przeskanować serwis przy pomocy takiego narzędzia online —> https://sitecheck.sucuri.net . Jakie jest Twoje zdanie na ten temat?
odpowiedzJak najbardziej warto …jednak wynik takiego skanu nie jest bezwzględnie jednoznaczny i nie należy go brać jako pewnik.
odpowiedzJeżeli Sucuri nie zasygnalizuje zagrożenia, nie oznacza to automatycznie iż strona jest na sto procent czysta. Jeżeli jednak sygnalizuje jakiś problem – coś może być na rzeczy i warto dokładniej przyglądnąć się stronie.
Dzięki za odpowiedź. Tak, jak myślałem, nie można być w 100% pewnym bezpieczeństwa. No, ale na pewno lepiej zapobiegać, niż leczyć i od czasu do czasu przeskanować, użyć jakiejś wtyczki – przynajmniej teoretycznie – poprawiającej bezpieczeństwo, etc.
odpowiedzPropozycje jak zablokować rejestrację fikcyjnych użytkowników? Codziennie pojawiają mi się nowi spamerzy ale w komentarzach spam się nie pojawia. Co prawda dopiero zamieszczam treść na stronie ale już jeden wpis testowy jest.
odpowiedzPodstawowe pytanie – czy faktycznie potrzebujesz rejestracji użytkowników?
odpowiedz-jeżeli tak, to najprostszym rozwiązaniem jest zmiana adresu logowania (a zarazem rejestracji). W repozytorium znajdziesz sporo wtyczek z taką funkcjonalnością.
Dzięki za odpowiedź. Zainstalowałem wp-spamshield. Pomogło. Pozdrawiam :)
odpowiedzJa od paru miesięcy testuję u siebie płatne rozwiązanie – wtyczkę CleanTalk, która filtruje jednocześnie rejestrację użytkowników i komentarze. Sprawdza się znakomicie.
odpowiedzDobre!
odpowiedzNie jest kwestią „czy zostaniesz shakowany” lecz kiedy.
Wtyczki Wordfence oraz „All In One WP Security & Firewall” załatwią większość z twoich sugestii.
Witam
Ok, mam właśnie u jednego klienta problem z notorycznymi włamaniami. Wordfence sypie kilkanaście razy dziennie o próbie włamu, tak jest od kilku miechów. Co z tym zrobić ? Ostatnio znajomy mi podesłał CLEF , wtyczka do logowania za pomocą smartfona, ale klient niestety nei ma smartfona …….
jakieś propozycje ? Jak skutecznie i by działało ukryć lub zmienić WP-admin ?
odpowiedz>> https://wpninja.pl/artykuly/jak-zabezpieczyc-wordpressa-przed-atakiem-brute-force-i-dlaczego-jeszcze-tego-nie-zrobiles/
odpowiedzCo do punktu trzeciego – dodałem ten drugi skrypt na samą górę skryptów (bo zrozumiałem, że mogę dać to gdzie chcę), w pliku functions.php i mi pokazuje się na stronie „Parse error: syntax error, unexpected '<' in /profiles/f/fi/fio/fiolekcoolsims/coolsims.com.pl/wp-content/themes/colormag/inc/functions.php on line 15". Jak to naprawić?
odpowiedzNajprawdopodobniej błąd spowodowany jest tym, że wkleiłeś funkcję razem ze znacznikami otwierającymi i zamykającymi kod PHP (
< ?php
oraz?>
) w miejscu gdzie nie jest to już wymagane (znacznik otwarcia był użyty już wcześniej).Spróbuj dodać funkcję bez wspomnianych znaczników.
odpowiedzZrobiłam to samo co kolega, z tym ze wkleiłam na samym dole….teraz nie dziala mi zupelnie nic..wyskakuje ten sam blad Parse error: syntax error, unexpected '<' in /wp-content/themes/amadeus/functions.php on line 343 ''
odpowiedzI co teraz zrobić :(((((
Jeśli chodzi o punkt 5 w obecnych wersjach WordPressa pliki index.php/html są automatycznie dodawane. Co do trójki… chciałem usunąć informacje o używanej wersji ale okazało się że moja skórka też ich nie pokazuje w sekcji head. Czwórka, no cóż chyba większość z nas ma zmienny IP, poza tym jeżeli chcemy się logować z różnych urządzeń, stacjonarnych, mobilnych jest lepsze rozwiązanie. Polecam wtyczkę do ukrywania wp-admin i ustawiania innego adresu do logowania, który jest tylko nam znany: Lockdown WordPress Admin.
odpowiedzZgadza się. Jakby nie patrzeć, od publikacji upłynęło już ponad 8 lat a w tym czasie WordPress się mocno zmienił :-)
odpowiedzHej Szymon,
jeszcze przed przeczytaniem Twojego artykułu moja strona na WordPressie (serwer zenboxa) chyba została zaatakowana- Google pokazuje ją jako niebezpieczną :(
Czy mogę Cię prosić o pomoc albo chociaż poradę co mam z tym zrobić?
Będę ogromnie zobowiązany!
Rozchodzi się o http://www.aptekakomandosow.pl
odpowiedzJak nie wiesz co robić, to zgłoś się do supportu Zena – na czyszczeniu to oni się tam zbytnio nie znają, ale mogą usunąć obecną wersję i przywrócić całość z czystego backupa wykonanego przed infekcja. Potem już tylko zostaje aktualizacja i zabezpieczenie strony (v4.4.6 – o aktualizacjach chyba się nie pamiętało, co? Teraz mamy v 4.7.1).
odpowiedzAaaa, na końcu to wypadało by do Googla podesłać wniosek o ponowne sprawdzenie strony, co by szybciej się wygrzebac z blacklisty >> https://www.google.com/webmasters/tools/reconsideration
Dla tych co nie poradzili sobie z wklejeniem kodu w plik .htaccess mogę polecić wtyczkę do WordPress – IP Geo Block. Wtyczka pozwala ustawić swój adres IP oraz zablokować niepożadane logowania oraz spam.
odpowiedzJestem na etapie testowania, po jakimś czasie będę mogła napisać czy są z nią problemy. Ważne, że jest aktualizowana i aktualnie zgodna z obowiązującą wersją WordPress.
Super Magda, dzięki za dodatkową wskazówkę! :)
odpowiedzWersja wordpressa jest też w kanałach RSS. Można ją usunąć dodając do functions.php motywu kod:
Z tego co zauważyłem WordPress dodaje do katalogów plik index.php nie licząc katalog uploads. Czy może być php, czy lepiej zmienić na index.html ? Ma to jakieś znacznie?
odpowiedzDodaj własny komentarz
Odnośniki z innych stron
Lista innych stron, które w jakiś sposób odnoszą się do opublikowanej tutaj treści:
[…] które są kombinacją uzupełnionych wcześniej pól (nazwa użytkownika jest wygaszona ponieważ można ją zmienić tylko z poziomu bazy […]
[…] jest zabezpieczyć swoje “dane” w możliwie najlepszy sposób. WPNinja opisał 11 sposobów na zabezpieczenie bloga – ja… postanowiłem je zebrać u siebie w celu odświeżenia tematu zabezpieczeń […]
[…] zapasowa, w przeciwieństwie do innych typów zabezpieczeń, nie ochroni przed włamaniem, nieumyślnym skasowaniem zawartości, spaleniem dysku w serwerowni […]
[…] Oprócz powyższego na pewno warto jeszcze zadbać o niestandardową nazwę użytkownika (możesz to zrobić w dowolnym momencie) oraz o silne hasło, najlepiej wygenerowane […]