Biografie xmlrpc php. Inleiding tot XML-RPC. XML-RPC blokkeren

  • Ondersteuning voor het maken van zowel xmlrpc-clients als -servers
  • Volledig geautomatiseerd of volledig handmatig, fijnmazige codering en decodering van php-waarden tot xmlrpc
  • Ondersteuning voor UTF8-, Latin-1- en ASCII-tekencoderingen. Als de php mbstring-extensie is ingeschakeld, worden nog meer tekensets ondersteund.
  • Ondersteuning voor http-compressie van zowel verzoeken als antwoorden, cookies, proxy's, basisauthenticatie en https, ntlm auth en keepalives met de php cURL-extensie
  • Optionele validatie van parametertypen van binnenkomend xmlrpc-verzoek
  • Ondersteuning voor de methoden system.listMethods, system.methodHelp, system.multicall en system.getCapabilities
  • Ondersteuning voor de En extensies voor xmlrpc
  • Mogelijkheid om bestaande php-functie of klassemethoden te registreren als webservices, waardoor informatie met toegevoegde waarde uit phpdoc-opmerkingen wordt geëxtraheerd
  • Een webgebaseerde visuele debugger wordt bij de bibliotheek geleverd

Vereisten

  • PHP 5.3.0 of hoger; 5.5 of hoger aanbevolen
  • de php "curl" -extensie is nodig als u SSL of HTTP 1.1 wilt gebruiken om met externe servers te communiceren
  • de php "mbstring"-extensie is nodig om de ontvangst van verzoeken/antwoorden in andere tekensets dan ASCII, Latin-1, UTF-8 mogelijk te maken
  • de php "xmlrpc" native extensie is niet vereist, maar als deze geïnstalleerd is, zal er geen interferentie zijn met de werking van deze bibliotheek.

Downloaden

Nieuws

  • 1 juli 2017
    Uitgebrachte lib-versies 4.2.0 en 3.1.0.
    De releaseopmerkingen zijn beschikbaar op Github
  • 20 januari 2016
    Uitgebrachte lib-versie 4.0.0.
    Dit is de eerste keer ooit dat de API grote veranderingen ziet, waardoor het verleden wordt afgeschaft en een transitie naar moderne php begint.
    Naamruimten zijn geïntroduceerd en de standaardtekenset wordt gebruikt als UTF-8; ondersteuning voor mbstring is toegevoegd, en nog veel meer.
    Ga voor een volledige lijst met wijzigingen naar Github
  • 19 april 2015
    Lib-versie 3.0.1 uitgebracht.
  • 15 juni 2014
    Lib-versie 3.0.0 uitgebracht.
  • 15 december 2013
    Het project is verplaatst naar GitHub

    Online xmlrpc-foutopsporingsprogramma

    Een demo xmlrpc debugger-applicatie, gebouwd bovenop deze bibliotheek, is actief op het adres http://gggeek.altervista.org/sw/xmlrpc/debugger/. U kunt de debugger gebruiken om b.v. bevraag de SF-demoserver, of debug uw eigen persoonlijke xmlrpc-server, als deze toegankelijk is op het net.

    Ontwikkeling

    BeschrijvingStatus - bijgewerkt op 26/07/2009
    Update de documentatie voor alle functies die sinds versie 2 zijn toegevoegdLangzaam vordert...
    Voeg de mogelijkheid toe om de opmaak van de XML-berichten te kiezenVergelijkbaar met wat de php-native xmlrpc-extensie doet
    Oplossing voor waarschuwingen die werden afgegeven bij het uitvoeren van PHP 5 in de STRICT-modusMogelijk is dit al gedaan in versie 3.0, waarbij de php 4-compatibiliteit is opgegeven...
    Breid de automatische php-functie uit naar de xmlrpc-methode-wrapper om te profiteren van de afhandeling van uitzonderingen en xmlrpc-foutreacties te retourneren
    Breid de automatische stubgenerator uit voor het automatisch converteren van php-functies naar xmlrpc-methoden voor PHP<= 5.0.2 kijk naar AMFPHP-code om te zien hoe u dit moet doen.
    Veel verbeteringen in versie 2.1
    Nu de server automatisch php-functies kan registreren, is er minder behoefte aan...
    Betere ondersteuning voor mbstring wanneer deze is ingeschakeldMoet b.v. tekensetcodering sneller raden
    Verbeter de ondersteuning voor cookies van versie 1
    Voeg een mogelijkheid toe om te gebruiken in plaats van de native foutcodes
    PEAR-compatibiliteit: voeg synoniemen toe voor functies die met verschillende namen bestaan ​​in de PEAR-versie van de lib
    Ondersteuning toegevoegd voor de xmlrpc-extensie
    Voeg aan de debugger de mogelijkheid toe om een ​​complete set validator1-tests te starten
    Onderzoek de bruikbaarheid van WSDL voor het beschrijven van blootgestelde services en vertaling van/naar system.methodSignature en system.describeMethodsEr doen zich enkele problemen voor bij het gebruik van een XSD om xmlrpc strikt te definiëren. Relax NG is absoluut een beter alternatief, maar er is weinig ondersteuning in andere toolkits voor gebruik in combinatie met een WSDL-bestand...
    Ondersteuning van http-omleidingen (302)
    Voeg aan sf.net een kleine database toe, zodat we een validatorpagina kunnen implementeren die inkomende gebruikers logt, zoals aanwezig is op de xmlrpc.com-site
    Voeg aan de benchmarksuite de mogelijkheid toe om resultaten naar sf.net te uploaden
    Schrijf een php-extensie die de meest gebruikte functies van de lib zal versnellenZie hoe adodb het deed als voorbeeld
    Test snelheids-/geheugenwinst met behulp van simplexml en relaxng in plaats van het handmatig parseren van XML

    Beveiliging

    De derde inbreuk op de beveiliging: augustus 2005

    Dit was een verdere en proactieve reactie op de tweede inbreuk op de beveiliging hieronder. Al het gebruik van eval() is verwijderd omdat het nog steeds een potentiële exploit was.

    Toen de bibliotheek oorspronkelijk werd geschreven, bevatten de versies van php die op dat moment beschikbaar waren geen call_user_func(), et al. Binnen deze beperkingen werd dus geschreven om eval() te gebruiken in twee van de functies die door de xml-parser worden aangeroepen. Vanwege dit gebruik gebruikte de serverklasse ook eval() omdat deze XML moest parseren met dezelfde functies.

    Deze handlerfuncties en de array die wordt gebruikt om de inhoud van het oorspronkelijke bericht te behouden, zijn herschreven om php-waarden te construeren in plaats van php-code te bouwen voor evaluatie. Dit zou elk potentieel voor code-uitvoering moeten wegnemen.

    De tweede inbreuk op de beveiliging: juli 2005

    Het beveiligingsprobleem dat op 27 juni 2005 door James Bercegay van GulfTech Security Research werd ontdekt, heeft voor veel opschudding gezorgd. Het heeft de voorpagina van Salshdot gehaald en is vermeld op Netcraft, LWN en vele andere sites.

    Er zijn gedetailleerde instructies voor het bouwen van exploitcode op internet verschenen, en veel webhostingbeheerders vragen zich af wat het beste verdedigingsplan is en wat de echte risico's zijn. Hier zijn enkele antwoorden.

    Omvang van het probleem

    • de bug treft de twee bibliotheken die bekend staan ​​als PEAR::XMLRPC en PHPXMLRMPC.
      Het heeft GEEN invloed op de xmlrpc-implementatie die in php is ingebouwd en tijdens het compileren is ingeschakeld met de optie "--with-xmlrpc" (op Unix, op Windows wordt dit over het algemeen in-/uitgeschakeld door de juiste regel in php.ini te wijzigen )
    • de bug (uitvoering van php-code geïnjecteerd door externe hosts) bevindt zich uitsluitend in het bestand xmlrpc.inc in de phpxmlrpc-distributie en RPC.php in de PEAR-distributie
    • zowel PEAR::XMLRPC als PHPXMLRMPC hebben bijgewerkte versies van de bibliotheek uitgebracht die het probleem oplossen
    • beide bibliotheken zijn gebruikt in een groot aantal PHP-toepassingen (zie de onvolledige lijst hierboven).
      Omdat de hele lib feitelijk uit 2 zeer eenvoudige bestanden bestaat, heeft iedereen de neiging deze naar eigen smaak/behoeften te patchen en te bundelen bij het distribueren van hun app.
      De meeste spraakmakende projecten zijn extreem snel geweest met het uitbrengen van nieuwe versies van hun respectievelijke apps, maar het zal veel langer duren voordat elke gebruiker zijn systeem heeft bijgewerkt.
      Het moet gezegd worden dat tot voor kort veel applicaties op de markt kwamen met extreem verouderde versies van de phpxmlrpc-bibliotheek; een eerste injectiebug was in 2001 opgelost zonder dat iemand er ogenschijnlijk iets van merkt (...)

      Dit maakt het helaas een stuk moeilijker voor systeembeheerders om een ​​gemakkelijke oplossing voor het probleem te vinden: de kans is groot dat op publieke hostingservers de bovengenoemde bestanden in veel verschillende mappen en in veel verschillende versies te vinden zijn.

    Hoe de kwetsbaarheid wordt geactiveerd

    • Om de bug te activeren moet een aanvaller een speciaal vervaardigde XML laten evalueren tijdens het creatieproces van een xmlrpcval-object. Xmlrpcval-objecten worden gemaakt wanneer het serverscript xmlrpc-verzoeken decodeert of wanneer sommige php-scripts fungeren als een xmlrpc-client en een antwoord decoderen dat door een server is verzonden.
      Het serverscript is toepassingsspecifiek en heet vaak server.php (maar elke project- of door de gebruiker gekozen variant is mogelijk), en het moet zowel xmlrpc.inc- als xmlrpcs.inc-bestanden bevatten (voor de peerversie, server .php is het equivalent van xmlrpcs.inc).
    • Alleen het opnemen van xmlrpc.inc en xmlrpcs.inc in php-scripts is (afaik...) volkomen veilig, evenals het rechtstreeks aanroepen ervan via http-verzoeken, aangezien in deze twee bestanden alleen de definitie van functies, variabelen en klassen wordt uitgevoerd, d.w.z. geen onmiddellijke uitvoering van code.
    • De server.php- en discuss.php-bestanden die met de volledige phpxmlrpc-lib worden gedistribueerd, implementeren feitelijk een live xmlrpc-server, dus je zou kunnen overwegen de toegang daartoe te blokkeren of, nog beter, ze te verwijderen als je ze op productieservers ziet geïmplementeerd (off the top of my geest, ik kan een soort aanval bedenken waarbij een tweede php-app betrokken is die lijdt aan een inbreuk op de takeover-php-file-include om ze binnen te halen + de bekende lib-bug te exploiteren)

    Beschermingsmiddelen

    • Geef uw webserverproces zo weinig mogelijk systeemrechten. Op Unix houdt dit doorgaans in dat Apache wordt uitgevoerd als gebruiker niemand en/of in een gejailroote/chroote omgeving. Omdat de PHP-engine onder dezelfde gebruiker als de webserver draait, is dit de eerste verdedigingslinie: elke php-code die door een aanvaller wordt geïnjecteerd, zal op de server worden uitgevoerd als een minst bevoorrechte gebruiker, en alle schade die deze kan aanrichten zal beperkt blijven tot het verstoren van de php-applicatie zelf
    • Voer php uit in de veilige modus. Als u een openbare host bent en dit niet doet, is de kans groot dat uw server toch is geroot. Dit voorkomt dat de PHP-scripts een functie gebruiken die u onveilig acht, zoals system() of eval()
    • Het harde blok: zoek alle bestaande phpxmlrpc-bestanden (xmlrpc.inc en xmlrpcs.inc) en schakel ze uit (chmod 0) op het hele systeem.
      Dit kan er uiteraard voor zorgen dat sommige gebruikersapplicaties niet werken, dus u moet uw gebruikers hiervan op de hoogte stellen wanneer u dit doet.
    • Het zachte blok: vervang alle kopieën van bestaande phpmlrpc-bestanden (xmlrpc.inc en xmlrpcs.inc) door degenen die uit versie 1.1.1 komen.
      Helaas is het bij deze methode niet 100% gegarandeerd dat alle apps blijven werken. Sommige interne onderdelen van de lib-objecten zijn gewijzigd van versie 0.9 naar 1.0 naar 1.1 (bijvoorbeeld de weergave van http-headers die zijn opgeslagen in een xmlrpcresp-object), en als de code die u op uw servers hebt geïmplementeerd deze in subklassen brengt, kan dit in de problemen komen. De xml die via de draad wordt verzonden, is ook veranderd ten opzichte van sommige oudere versies van de lib (in het bijzonder: versie 1.0.99.2 codeerde tekens buiten het ASCII-bereik verkeerd als html-entiteiten, terwijl ze nu zijn gecodeerd als xml-tekenset-entiteiten). Er zijn ook een aantal nieuwe foutreactiecodes toegevoegd. Dat gezegd hebbende, zou je 95% veilig moeten zijn om dat script uit te voeren en te wachten tot gebruikers beginnen te schreeuwen dat er iets kapot is...
    • de PHP PEAR-bibliotheek kan worden geüpgraded met een opdracht van één regel, dus dat is niet echt een groot probleem:
      peer upgrade XML_RPC en om te vertellen of het is geüpgraded (1.3.1 of hoger is OK, de laatste is vanaf nu 1.3.2):
      perenlijst | grep-RPC

    Enkele extra overwegingen

    Het bestand xmlrpcs.inc is ook gepatcht in release 1.1.1 om een ​​betere gebruikerservaring te bieden. Meer gedetailleerd: het verzenden van speciaal vervaardigde, verkeerd opgemaakte XML naar een server zou ervoor zorgen dat het php-script een php-fout uitzendt in plaats van een passend XML-antwoord terug te sturen.
    Volgens sommigen houdt dit in feite een "padvrijgave van de beveiliging" in (d.w.z. de weergegeven php-foutmelding bevat meestal gevoelige informatie over bestandssysteempaden), maar elk afzonderlijk PHP-script lijdt aan hetzelfde beveiligingsprobleem als de sysadmin productieservers draait met de ini-richtlijn display_errors=On.
    Ik weet ook zeker dat er veel plaatsen in xmlrpc.inc zijn waar het aanroepen van een functie met een onverwachte parameter een php-waarschuwing of -fout zal genereren, en ik ben niet van plan binnenkort een strikte parametercontrole voor elke afzonderlijke functie te implementeren - als je streef daar naar, imho, je kunt net zo goed in Java coderen.

    Is dit het einde van de wereld?

    Ik hoop het niet.
    De reden is dat er tientallen PHP-applicaties zijn die last hebben van exploits van code-injectie. Kijk maar eens naar het beveiligingsspoor van bulletinboards... en toch denken veel mensen nog steeds dat PHP een goede keuze is voor webontwikkeling.
    Onthoud: veiligheid is een proces, niet een toestand die bereikt kan worden.

    De eerste inbreuk op de beveiliging: september 2001

    Ik kreeg dit advies van Dan Libby. Met zijn toestemming wordt het hier weergegeven. Merk op dat deze exploit is opgelost in revisies 1.01 en hoger van XML-RPC voor PHP. -- Edd Dumbill dinsdag 24 september 2001 ============== PHP-beveiligingslek: potentiële XML-RPC-exploit ================== = ========================= Samenvatting: Met behulp van de nieuwste versie van de php xmlrpc-bibliotheek van Useful Inc, versie 1.0, is het voor een aanvaller mogelijk om structureer de xml op zo'n manier dat de xml-rpc-bibliotheek wordt misleid om php-code op een webserver uit te voeren. Ik kon willekeurige php-code uitvoeren, en met de veilige modus van php uitgeschakeld, systeemopdrachten. Een aanvaller zou dit gemakkelijk kunnen gebruiken als toegangspoort voor het lanceren van virussen. Details: Ik heb het probleem gedemonstreerd door het server.php-voorbeeldscript dat bij de xmlrpc-distributie is geleverd, aan te passen en het vervolgens aan te roepen via het client.php-script, ook onderdeel van de distributie. Ik omzeilde de standaard servercode en echode eenvoudigweg de antwoorden terug naar de client. Ik kon de client zover krijgen dat hij willekeurige php-code uitvoerde. Vervolgens herstelde ik het server.php-voorbeeld naar de oorspronkelijke staat en gebruikte telnet om een ​​aangepast bericht te verzenden. request. Ik was ook in staat om code op de server uit te voeren, hoewel dit een iets andere syntaxis vereiste. De aanval draait om het gebruik van de eval()-functie van php. Omdat ik wist dat de xml-rpc-bibliotheek eval gebruikt om zijn datastructuren op te bouwen uit xml-invoer, was het gewoon een kwestie van het structureren van de invoer-xml op een zodanige manier dat deze: a) niet wordt geëscaped voordat deze wordt doorgegeven aan eval b) dat wel doet geen php-syntaxisfout genereren Normaal gesproken worden alle niet-numerieke gegevens door de bibliotheek geëscaped voordat ze worden doorgegeven aan eval. Het blijkt echter dat als je een tag, gevolgd door een onverwachte tag, zoals , wordt de ontsnappende code omzeild en worden in plaats daarvan "onbewerkte" gegevens geëvalueerd. De client exploiteren: Hier is een typisch xml-rpc-antwoord: hallo wereld

    Wanneer een dergelijk antwoord wordt geëvalueerd, ziet het er als volgt uit: new xmlrpcval("hello world", "string") Hier is een xml-rpc-antwoord dat php-code zal uitvoeren om te echo "

    hallo wereld " aan de klantzijde:

    ", "tekenreeks"); echo "

    hallo wereld
    "; \$waste = array("

    ", "tekenreeks"); echo "

    In dit geval is de string die wordt geëvalueerd: new xmlrpcval("", "string"); echo " "; $waste = array("", "string") Het is mogelijk om alles tussen "string"); en \$waste te vervangen door willekeurige code van vrijwel elke lengte. Tenslotte is hier een code die de inhoud afdrukt van de huidige map:

    ", "tekenreeks"); echo "

    "; echo `ls -al`; echo "
    De server exploiteren: De server-exploit is vrijwel hetzelfde als die van de client, behalve dat de server een ander eval-commando gebruikt, en dus een iets andere begin- en eindsyntaxis vereist om php-syntaxisfouten te voorkomen. Hier is dezelfde code als hierboven, maar deze werkt tegen een server. system.listMethoden ", "tekenreeks")); echo "

    als je een directorylijst ziet, heb ik zojuist php en systeemcode uitgevoerd via xml-rpc.

    "; echo "nu zal ik proberen een directorylijst op te stellen met ls -al:\n ", "tekenreeks"); echo ""; echo "Ik had gewoon rm -rf kunnen aanroepen, of een programma naar schijf kunnen schrijven en het kunnen uitvoeren (bijvoorbeeld een virus) of enkele bestanden kunnen lezen. Prettige dag.

    "; afsluiten; $waste = array(array("
    Probleemgebied: in xmlrpc.inc is er een functie genaamd xmlrpc_cd(), die door de xml-parser wordt aangeroepen om tekengegevens te verwerken. function xmlrpc_cd($parser, $data) ( global $_xh, $xmlrpc_backslash, $xmlrpc_twoslash; //if (ereg("^[\n\r \t]+$", $data)) return; // print " toevoegen van [$(data)]\n"; if ($_xh[$parser]["lv"]==1) ( $_xh[$parser]["qt"]=1; $_xh[$parser][ "lv"]=2; ) if ($_xh[$parser]["qt"]) ( // tekenreeks tussen aanhalingstekens $_xh[$parser]["ac"].=str_replace("\$", "\\ $", str_replace(""", "\"", str_replace(chr(92),$xmlrpc_backslash, $data))); ) else $_xh[$parser]["ac"].=$data; ) Het is het laatste andere dat ervoor zorgt dat gegevens worden toegevoegd zonder te ontsnappen. Het is erg gevaarlijk om dit te hebben. Dit lijkt anders bedoeld te zijn voor numerieke gegevens, en er wordt veel moeite gedaan om de "qt" (quote) variabele in en uit te schakelen, die het ontsnappen aan en uit zet. Het is mij echter niet meteen duidelijk waarom numerieke gegevens niet op dezelfde manier zouden moeten worden ontsnapt en de if/else zou moeten worden verwijderd, zodat de kans op dit soort misbruik nul is.

XML-RPC gebruiken in PHP om materiaal te publiceren op LiveJournal.com (LJ)

Eerst moet u de XML-RPC-bibliotheek downloaden. Het lijkt mij dat de meest succesvolle versie gratis wordt verspreid via sourceforge " ": Alle onderstaande voorbeelden worden gegeven voor deze bibliotheek, versie 2.2.

Wat is XML-RPC? RPC staat voor Remote Procedure Call, wat betekent dat het in het Russisch kan worden vertaald als remote procedure call met behulp van XML. De remote procedure call-techniek zelf is al lang bekend en wordt gebruikt in technologieën zoals DCOM, SOAP, CORBA. RPC is ontworpen voor het bouwen van gedistribueerde client-serverapplicaties. Dit maakt het mogelijk om applicaties te bouwen die in heterogene netwerken werken, bijvoorbeeld op computers van verschillende systemen, om gegevensverwerking op afstand uit te voeren en applicaties op afstand te beheren. Dit protocol wordt met name gebruikt door de bekende website livejournal.com in Rusland.

Laten we eens kijken naar een voorbeeld van hoe u een Cyrillisch item kunt plaatsen (en dit is waar vaak problemen optreden) in LiveJournal. Hieronder vindt u de werkende code met commentaar:

nieuwe xmlrpcval($name, "string"), "password" => nieuwe xmlrpcval($password, "string"), "event" => nieuwe xmlrpcval($text, "string"), "onderwerp" => nieuwe xmlrpcval ($subj, "string"), "lineendings" => new xmlrpcval("unix", "string"), "year" => new xmlrpcval($year, "int"), "mon" => new xmlrpcval( $mon, "int"), "day" => nieuwe xmlrpcval($day, "int"), "hour" => nieuwe xmlrpcval($hour, "int"), "min" => nieuwe xmlrpcval($min , "int"), "ver" => nieuwe xmlrpcval(2, "int"));

/* maak een structuur gebaseerd op de array */ $post2 = array(new xmlrpcval($post, "struct"));

Iedereen die een eigen website heeft, wil de beveiliging ervan vergroten, zo niet, dan willen ze dat deze altijd veilig is... Eigenlijk zullen we in dit artikel de principes en basisprincipes van het beschermen van de WordPress-engine analyseren, en specifiek zullen we kijken naar meer details in het bestand xmlrpc.php. Vergeet niet om back-ups te maken bij het wijzigen of wijzigen van bestanden. Laten we beginnen.

WordPress-kwetsbaarheid via xmlrpc.php-bestand, oplossing voor het probleem:

Ik zal het uitleggen voor degenen die het doel van dit bestand niet kennen of begrijpen. Met zijn hulp kunt u uw WordPress-blog beheren via verschillende applicaties. Natuurlijk weet ik niet hoe het met de meerderheid zit, maar ik gebruik dit persoonlijk niet en daarom, waarom zou ik een extra kans laten om de site te hacken, ik zal deze verwijderen... Dit bestand is tenslotte behoorlijk kwetsbaar. Houd er echter rekening mee dat u het buiten gebruik kunt stellen en dat u het later altijd kunt retourneren als u het nodig heeft.

Laten we eerst het bestand uitschakelen xmlrpc.php, er passeren nogal wat aanvallen op de site doorheen, en dit is niet goed. Zoals gewoonlijk zijn er twee opties om dit te doen, de eerste is door wijzigingen aan te brengen in de .htaccess- en function.php-bestanden, evenals header.php (naar mijn mening de meest correcte manier). En de installatiemethode van de plug-in, maar daarover later meer. Laten we verder gaan met het bewerken van bestanden.

In het function.php-bestand voegen we het volgende in:

// xmlrpc.php uitschakelen add_filter("xmlrpc_enabled", "__return_false"); remove_action("wp_head", "rsd_link");

In het header.php-bestand verwijderen we:

bestelling weigeren, weigeren van iedereen toestaan

Naast deze methode is er als het ware een automatische, waar ik het eerder over had. De essentie ervan is dat we een extra plug-in installeren. De methode is zeker goed en vrij eenvoudig, maar ik raad het gebruik ervan niet aan. Waarom? Nou, het is simpel, een extra plug-in is een extra last. En waarom zouden we een plug-in installeren waarbij we, grofweg, door een paar regels toe te voegen een functie verwijderen die we niet nodig hebben en de site productiever en eenvoudiger maken.

Vanaf zaterdagmiddag begon mijn server, waarop ongeveer 25 Wordpress-sites worden gehost, ernstige vertragingen te ondervinden. Omdat ik eerdere aanvallen (aanval 1 - precies een jaar geleden, aanval 2 - in maart) wist te overleven zonder opgemerkt te worden, begreep ik niet meteen wat er gebeurde.

Toen ik erachter kwam, bleek dat er op wachtwoorden werd gezocht + veel verzoeken aan XMLRPC.

Als gevolg hiervan zijn we erin geslaagd alles af te sluiten, hoewel niet onmiddellijk. Hier zijn drie eenvoudige trucs om dit te voorkomen.

Deze technieken zijn waarschijnlijk bij iedereen bekend, maar ik heb een paar fouten ontdekt die ik niet in de beschrijvingen heb gevonden - misschien bespaart dit iemand tijd.

1. Stop de zoekopdracht, installeer de plug-in Limit Login Attempts - installeer deze, omdat andere beveiligingen de server aanzienlijk vertragen. Bij gebruik van de plug-in Login Security Solution stierf de server bijvoorbeeld na een half uur, de plug-in belast de database zwaar .

Zorg ervoor dat u in de instellingen het selectievakje 'Voor proxy' inschakelt, anders wordt voor iedereen het IP-adres van uw server bepaald en wordt iedereen automatisch geblokkeerd.
UPDATE, dankzij DarkByte, details hieronder in de opmerkingen - schakel het selectievakje "For proxy" alleen in als de detectie niet werkt wanneer "Directe verbinding" is ingeschakeld

2. Schakel XML-RPC uit - de plug-in Schakel XML-RPC uit (deze is eenvoudig te activeren en dat is alles).

3. Sluit wp-login.php - als u de site bezoekt via IP, werkt de plug-in niet en blijven de pickers de site crashen. Om dit te voorkomen, voegt u aan .htaccess toe:

Bestelling weigeren, weigeren van iedereen toestaan

We kopiëren het wp-login-bestand, hernoemen het naar een vreemde naam, bijvoorbeeld poletnormalny.php, en gebruiken binnen het bestand autocorrectie om alle wp-login.php-inscripties te wijzigen in poletnormalny.php.
Dat is alles, nu hebt u alleen toegang tot het beheerderspaneel met uw bestand.

Na deze 3 eenvoudige stappen begonnen de locaties weer te vliegen en kwam er rust.

Nou, opeens is het interessant

Een van de opties is om te kijken of je wordt aangevallen. Dit is te zien in de nginx-logboeken (hier is bijvoorbeeld het pad voor het bestand Debian /var/log/nginx access.log).