Właśnie otrzymałem wiadomość e-mail od mojego dostawcy, zgodnie z którą masowe automatyczne wywołania do pliku xmlrpc.php na moim blogu spowodowały, że cały serwer osiągnął limit wydajności. Ponieważ blog działa na współdzielonym hostingu firmy All-Inkl, wymagane było oczywiście szybkie działanie. Chłopaki z pomocy technicznej po raz pierwszy uniemożliwili wywołanie skryptu, zmieniając prawa pliku z 744 na 300. Oznacza to, że telefony od jokera, który chce się do niego włamać, na nic się nie zdadzą.
Tymczasem mam tego rodzaju ataki na inne witryny Wordpress i inne hostery. Wyciąg z danych dziennika pokazuje powtarzające się próby złamania Wordpressa za pomocą wywołania POST do xmlrpc.php. Całość wygląda tak:
[ 112] '0-3”-„0/0/2867”.”171.83”2228”121334”0.0”0.00”45.59”5.199.XXX.XXX”POST” www.kindskopp.com”/xmlrpc.php'
[461] '0-3”-„0/0/3058”.”171.77”2228”128420”0.0”0.00”97.27”5.199.XXX.XXX”POST” www.kindskopp.com”/xmlrpc.php'
[216] '0-3”-„0/0/2878”.”171.40”2228”2765”0.0”0.00”43.40”5.199.XXX.XXX”POST” www.kindskopp.com”/xmlrpc.php'
[361] '0-3”-„0/0/2844”.”171.66”2228”23121”0.0”0.00”38.72”5.199.XXX.XXX”POST” www.kindskopp.com”/xmlrpc.php'
[508] '0-3”-„0/0/3038”.”171.80”2228”78254”0.0”0.00”44.41”5.199.XXX.XXX”POST” www.kindskopp.com”/xmlrpc.php'
[ 68] '0-3”-„0/0/3018”.”171.65”2228”118321”0.0”0.00”41.81”5.199.XXX.XXX”POST” www.kindskopp.com”/xmlrpc.php'
Ten inny hoster powiedział mi również, że te ataki mogą wywierać presję na cały serwer, nawet jeśli mój Wordpress działa tylko na hostingu współdzielonym.
Następnie sprawdziłem, co jeszcze można zrobić, aby chronić ten plik i znalazłem następujące opcje:
Rozdziały w tym poście:
1. Całkowity zakaz dostępu do interfejsu XML-RPC
Plik xmlrpc.php jest całkowicie chroniony przez wpis w pliku .htaccess. Oznacza to, że nikt nie może uzyskać dostępu do tego pliku z zewnątrz. Ochrona jest w 100% i bezpieczna, ale ma tę wadę, że nie można już uzyskać do niej dostępu za pomocą programów takich jak Wordpress na iOS lub Windows Live Writer. Pingbacki lub trackbacki nie mogą już „przebijać się” z zewnętrznych blogów do Twojego własnego bloga. Jeśli nie masz z tym problemu, bo i tak zawsze pracujesz w adminie WordPressa i nie chcesz żadnych trackbacków z innych blogów, to rozwiązanie jest dobrym wyborem.
Oto odpowiedni kod, który należy umieścić w pliku .htaccess w folderze głównym instalacji WordPress:
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Wstaw – inne ciekawe wpisy na blogu:
- Jak wyczyścić historię Google
- Zapomniałem hasła do Apple ID - co robić?
- Kabel do ładowania Samsung Galaxy
- Bestseller kabli LAN
- Najlepsze roboty odkurzające według Stiftung Warentest
2. Tylko częściowo ogranicz dostęp do xmlrpc.php
Każdy, kto ma program Windows Live Writer, plakat, a nawet iOS App Wordpress na iOS działa, na pewno nie będziesz chciał się bez niego obejść. Z tego powodu następujący wariant wyżej wspomnianego dodatku do pliku .htaccess, który utrzymuje interfejs XMP-RPC wolny dla wspólnego oprogramowania firm trzecich, jest idealny dla tych blogerów. Jednak trackbacki z innych blogów są nadal blokowane.
Dostosowany kod wygląda tak:
<IfModule mod_setenvif.c>
<Files xmlrpc.php>
BrowserMatch "Poster" allowed
BrowserMatch "WordPress" allowed
BrowserMatch "Windows Live Writer" allowed
BrowserMatch "wp-iphone" allowed
BrowserMatch "wp-android" allowed
Order Deny,Allow
Deny from All
Allow from env=allowed
</Files>
</IfModule>
Oczywiście linie z „BrowserMatch” można dowolnie dostosować, jeśli używasz określonego programu, który nie został uwzględniony we wspomnianym skrypcie. Ważne jest, aby moduł Apache „mod_setenvif” był zainstalowany, aby ochrona działała. Jednak ten moduł jest już zainstalowany na wielu serwerach WWW. Ważne jest również, aby wiedzieć, że agent użytkownika jest bardzo łatwy do sfałszowania. Więc to nie jest wodoodporna ochrona, którą tu robisz!
W obecnym przypadku zdecydowałem się na rygorystyczny wariant i po prostu zablokowałem wszystko, co chce uzyskać dostęp do pliku. Prawie nie otrzymuję żadnych trackbacków i nie używam żadnego oprogramowania innych firm, tylko administratora Wordpressa do pisania postów na blogu. Tak wygląda teraz mój plik WordPress htaccess:
aktualizacja: Od czasu aktualizacji Wordpressa do wersji 3.9.2 nie jest to już możliwe ataki DDoS przejdź do xmp-rpc.php. Zespół WordPress odpowiedział i odpowiednio zmienił kod. Dzięki temu możesz zapisać sobie modyfikację, jak opisano powyżej, począwszy od tej wersji.
Related Stories
Jens prowadzi bloga od 2012 roku. Pełni rolę Sir Apfelot dla swoich czytelników i pomaga im w problemach natury technicznej. W wolnych chwilach jeździ na elektrycznych monocyklach, robi zdjęcia (najlepiej iPhonem oczywiście), wspina się po górach Hesji lub wędruje z rodziną. Jego artykuły dotyczą produktów Apple, nowości ze świata dronów czy rozwiązań aktualnych błędów.
Pingback: Bezpieczeństwo WordPress: zmień nazwę wp-login.php i chroń ją przed hakerami » Sir Apfelot
Miałem ten sam atak z 280.000 XNUMX trafień jednego dnia.
Dzięki opisanemu rozwiązaniu (z częściowym zwolnieniem) udało mi się ponownie aktywować stronę.
Teraz jedynym problemem, jaki mam, jest to, że Jetpack (wordpres.com) nie ma już do niego dostępu. Pojawia się następujący komunikat:
Twoja witryna musi być publicznie dostępna, aby korzystać z Jetpack: site_inaccessible
Szczegóły błędu: Serwer Jetpack nie mógł skomunikować się z Twoją witryną [HTTP 403]. Zapytaj swojego usługodawcę hostingowego, czy zezwala na połączenia z WordPress.com. Jeśli potrzebujesz dalszej pomocy, skontaktuj się z pomocą techniczną Jetpack: http://jetpack.me/support/
Pytanie: W tym celu należy podać dopasowanie przeglądarki.
Cześć! Więc nie mogłem określić dopasowania przeglądarki. Nie mam instalacji Jetpack do przetestowania. Ale w twoim przypadku może zadziałać, jeśli zablokujesz dostęp do xmlrpc.php dla wszystkich adresów IP z wyjątkiem Wordpress.com. Sprawdziłem, który to adres IP, ale nie będę go tutaj publikował. Powinieneś być z tym ostrożny. :)
Ale wskazówka: po prostu otwórz okno terminala na komputerze Mac lub PC, a następnie wpisz „ping wordpress.com”. Następnie otrzymujesz adres IP, który umieszczasz w następującym wpisie, który jest następnie umieszczany w pliku htaccess:
<Files xmlrpc.php>
Order Deny,Allow
Deny from All
Allow from HIER.DIE.IP.EINGEBEN
</Files>
Przy odrobinie szczęścia WordPress-Jetpack użyje tego samego adresu IP co domena. Jeśli to nie zadziała, spróbuj pominąć ostatni oktet (czyli ostatni punkt i liczbę po nim) w adresie IP. Wtedy plik zostanie otwarty dla całego bloku IP - z dużą szansą, że Jetpack też tam będzie.
Cześć,
Miałem również ten komunikat o błędzie z „jetpack”, a następnie zdecydowałem się użyć wtyczki „WPtouch Mobile Plugin”. Nie jest też prawie tak duży jak plecak odrzutowy, a także „gruzuje” stronę główną dla urządzeń mobilnych. (Z tego powodu zainstalowałem tylko „jetpack”).
Co powinien przynieść 403? Aby serwer był mocno obciążony i stale odpowiadał na tysiące żądań z różnych adresów IP bez uprawnień 403? Żeby osoby atakujące jeszcze bardziej agresywnie rozpoczęły atak DoS i sparaliżowały serwer? nie –
Do czego zostały zaprojektowane zapory sieciowe? Więc…
Zainstaluj fail2ban i użyj twardej reguły, która blokuje (głównie) ataki botnetowe na poziomie sieci. Nie na poziomie serwera. Już za późno. Stwórz więc filtry z np.:
—> failregex = -.*-.* „(GET|POST) .*\/xmlrpc\.php.*
a w więzieniu maxretry = 1. Wtedy Apache/nginx jest szczęśliwy i może skoncentrować się na podstawach...
Inne usługi można również cudownie zablokować za pomocą fail2ban. Wp-login-php jest również pożądanym celem.
hp Twój skrypt przewijania jest zbyt szybki na gładziku Maca, a przycisk Subit zniknął do 1×1 pikseli w Firefoksie...
Witaj Marcusie!
Dziękuję za podpowiedź. Nie wiem o fail2ban, ale jeśli dobrze to przeczytam, możesz bardzo elastycznie z niego korzystać. Obecnie używam wtyczki Wordfence dla większości blogów. Dzięki temu ataki DoS są również na dystans.
Z powodu PS: wywołałem stronę na gładziku na MacBooku i właściwie przewija się normalnie. Przycisk przesyłania komentarzy również działa poprawnie. Teraz nie wiem jak szukać błędu... :-(