Daily Archives: 2008.12.10. 8:13

Request filteringgel a gonosz ellen

Az MSDN Kompetencia Központ honlapján megszaporodtak az olyan rossz indulatú webes kérések, amit szemmel láthatóan robotok küldenek, próbálva felderíteni a webhely által használt technológiákat, hogy kihasználhassák azok sebezhetőségeit. Itt az ideje, hogy megszabaduljunk tőlük.

Az ilyen kérések többnyire olyan URL-re mutatnak, ami nálunk tipikusan nem is létezik. Például teljesen hiába jön kérés errors.php oldalra, olyanunk biztosan nincs. Az ilyen nem létező URL-eket természetesen az IIS elhajtja 404-es hibával, kicsit szemeteli a logot, de komoly gondot nem okoz.

Ami viszont gondot jelent, az a /Articles útvonal, ebben a névtérben ugyanis virtuális URL-eket kezelünk (mint ahogyan azt egyébként több más blog motor is teszi). Magyarul a http://www.msdnkk.hu/Articles/Csharp_programozas_allasinterju_kerdesek oldal úgy készül, hogy a bejövő kérést keresztül zavarjuk az ASP.NET motoron, átadjuk a kérést egy teljesen más címen elérhető oldalnak, amely az URL vége alapján adatbázisból  megjeleníti a cikket. Ennek a folyamatnak sajnos csak a legvégén derül ki, ha az URL-ben megadott cikk nem létezik.

Ráadásul a gonosz kis robotok szemmel láthatóan felismerik az ilyen címeket és éppúgy próbálkoznak, mint amikor Article.aspx?id=<guid> típusú címeink voltak. (Bár nagyságrendekkel visszaesett az ilyen próbálkozások száma.) Az utóbbi időben például rengeteg kérés jön a /Articles/xmlrpc.php címre, amit természetesen naplózunk, hogy tudjuk javítani a hibás linkjeinket. Legegyszerűbben úgy lehet ezektől megszabadulni, hogy az IIS-ben bekonfiguráljuk a request filtering szolgáltatást. A request filteringhez nincs GUI az IIS Managerben, aki ragaszkodik hozzá, töltse le az IIS Admin Packot. A vagányabbak írhatják rögtön a web.configba:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <security>
                <requestFiltering>
                    <denyUrlSequences>
                        <add sequence="Articles/xmlrpc.php" />
                    </denyUrlSequences>
                </requestFiltering>
            </security>
        </system.webServer>
    </configuration>

A kérés el sem jut az ASP.NET motorig, a kliens pedig ezt kapja:

HTTP Error 404.5 – URL Sequence Denied

 

Érdekel valakit, hogy mit tud még az IIS 7, írjak róla?