Chroń interfejs XML-RPC w Wordpress przez .htaccess

Uprawnienia pliku XML-RPC
Uprawnienia pliku XML-RPC
Tak wygląda przypisanie praw po interwencji wsparcia technicznego w celu zablokowania skryptu.

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:

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:

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:

ochrona htaccess XML RPC
To jest mój kompletny plik htaccess w głównym katalogu WordPress, w tym kod blokujący do ochrony interfejsu XML-RPC.

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.

Podobał Ci się artykuł i czy instrukcje na blogu Ci pomogły? Wtedy byłbym szczęśliwy, gdybyś bloga poprzez stałe członkostwo będzie wspierać.

6 odpowiedzi na „Chroń interfejs XML-RPC w Wordpressie przez .htaccess”

  1. Pingback: Bezpieczeństwo WordPress: zmień nazwę wp-login.php i chroń ją przed hakerami » Sir Apfelot

  2. 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.

    1. sir appleot

      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.

    2. 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”).

    3. 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...

      1. 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... :-(

Napisz komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone * oznakowane

Na blogu Sir Apfelot znajdziesz porady, instrukcje i recenzje produktów Apple, takich jak iPhone, iPad, Apple Watch, AirPods, iMac, Mac Pro, Mac Mini i Mac Studio.

Promocje