Windows - Szerver-szerver FTP kapcsolatok kiépítése

forráskód letöltése
Az FTP szolgáltatás egy ritkábban használatos funkciója lehetőséget biztosít két FTP szerver összekötésére egy tetszőleges kliens segítségével. Ezután a két szerver között fájlokat másolhatunk oda-vissza. A módszer használatával könnyen és biztonságosan megoldható két kiszolgáló közötti fájlátvitel távolról, akár egy Windows 95-ös parancssori FTP kliens segítségével is.
Cikkünk mellékletében található egy registry állomány "EnablePortAttack.reg" néven. Futtatása engedélyezi a Windows 2000-ben található IIS 5.0 FTP szolgáltatásának passzív módú elérését.
Alapvető feltételek
Szükséges két IIS (Internet Information Services) által üzemeltetett FTP szerver. Nevük legyen: SERVER1 és SERVER2. Szükség van továbbá egy FTP kliens programra, ami futhat valamelyik szerveren, de egy harmadik gépen is. Egyetlen megkötés van csupán, ismernie kell az alábbi parancsokat. A legtöbb grafikus klienssel könnyen kiépíthető egy alapszintű kapcsolat, amivel a normál (szerver - kliens) fájlátvitel megoldható, de nincs lehetőség további parancsok kiadására. Ezért javasoljuk a legegyszerűbb és leginkább kéznél lévő megoldást: használjuk a Windows parancssori FTP kliens programját.
Mi az a port támadás (Port Attack)?
Az FTP specifikációja megengedi a passzív kapcsolat felépítést a kiszolgáló és a kliens között úgy, hogy utóbbi határozza meg a kapcsolat portjának számát. Ezt használhatják rosszindulatú támadók a kiszolgáló manipulálására. Az IIS alapértelmezésben nem engedélyez ilyenfajta kapcsolat felépítést, de ha két kiszolgálót csatlakoztatunk, akkor be kell kapcsolnunk. Indítsuk el a REGEDIT.EXE segédprogramot és keressük meg a következő kulcsot:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSFTPSVC\Parameters
Keressük meg az "EnablePortAttack" bejegyzést (típusa: REG_DWORD). Értéke 0 (nulla), ami a passzív kapcsolatok tiltását jelenti. Állítsuk át 1-re, ezzel engedélyezve a passzív kapcsolat felépítést.
A beállítás érvényesítéséhez újra kell indítani az IIS-t:
Nyissuk meg a Felügyeleti eszközök > Internet szolgáltatáskezelő (Administrative Tools > Internet Services Manager) konzolt. Kattintsunk a kiszolgáló nevére a jobboldali egérgombbal és válasszuk "Az IIS újraindítása" ("Restart IIS") menüt.
Melyik kiszolgálón kell ezt megtennünk? Amelyiken kiadjuk a LITERAL PORT parancsot. Alábbi példánkban a SERVER1-en.
Literal (~szó vagy betű szerinti) kapcsolatok
Két kiszolgáló az úgynevezett literal kapcsolatokkal köthető össze. Mindkét kiszolgálónak részletesen el kell mondani, hogy mit tegyen és kicsit szokatlanabb a nyelvezete, mint a szerver - kliens kapcsolatoknál.
Jogosultságok
Ahhoz, hogy FTP szolgáltatással fájlokat másoljunk fel egy kiszolgálóra, elsőként engedélyezni kell az alapértelmezésben letiltott írási jogosultságot. Nyissuk meg a Felügyeleti eszközök > Internet szolgáltatáskezelő (Administrative Tools > Internet Services Manager) konzolt. Keressük meg a használandó FTP helyet. Kattintsunk rá a jobboldali egérgombbal, majd a "Tulajdonságok" ("Properties") menüre. Lépjünk a "Kezdőkönyvtár" ("Home Directory") oldalra és kapcsoljuk be az "FTP-hely könyvtára" ("FTP-Site Directory") szekcióban az "Írás" ("Write") jelölőnégyzetet.
A kapcsolat felépítése
Nyissunk meg két parancssori ablakot a kliensen és az egyikben kapcsolódjunk az egyik szerverhez:
ftp SERVER1
Míg a másikban a másikhoz:
ftp SERVER2
Ha kér a rendszer felhasználói nevet és jelszót, adjuk meg. Sikeres bejelentkezésnél a következő üzenet jelenik meg:
230 User administrator logged in.
Feltételezve, hogy administrator volt a bejelentkezési nevünk.
Adjuk ki a SERVER2 kapcsolaton (de a kliens gépen) az alábbi parancsot:
literal pasv
A következő választ kell kapnunk:
227 Entering Passive Mode (192,168,0,12,7,40).
Ahol a 192.168.0.12 helyett a kiszolgáló IP címét látjuk, csak vesszővel elválasztva a szokásos pontok helyett. Míg a 7, 40 a passzív kapcsolat véletlenszerűen előállított portszáma. Jelen esetben a 15 az alacsony (low), míg a 61 a magas (high) portot jelenti. A számok kapcsolatonként változnak.
Felhasználva a kapott számsort, adjuk meg a SERVER1 kapcsolaton a másik fél által szolgáltatott adatokat:
literal port 192,168,0,12,7,40
Ekkor a következő üzenet jelenik meg:
200 PORT command successful
Ha nem, akkor nincs engedélyezve az "EnablePortAttack" bejegyzés a regisztrációs adatbázisban.
Adjuk ki mindkét gépen az alábbi parancsot az átviteli mód beállítására:
literal type i
A válasz, amit kapnunk kell:
200 Type set to I.
Következhet a fájlátvitel. Adjuk ki a SERVER1-nek a következőt:
literal retr xyz.123
Ahol az xyz.123 egy másolandó fájl neve és a visszakapott üzenet:
125 Data Connection already open; Transfer Starting
A SERVER2-n fogadni kell az adatokat:
literal stor xyz.123
Itt pedig a következőt láthatjuk:
Opening BINARY mode data connection for xyz.123 (x bytes)
Ha a SERVER2-ről akarunk adatokat küldeni, akkor ott adjuk ki a LITERAL RETR parancsot és a SERVER1-en a LITERAL STOR-t.
Megjegyzés
A fent ismertetett módszer működőképes és sokszor igen hatásos és hasznos is lehet, de biztonsági szempontból felvet két megfontolandó dolgot: az egyik, hogy bekapcsoltuk az "EnablePortAttack" funkciót a másik, hogy engedélyeztük az FTP-n keresztüli fájlfeltöltést (írási jog bekapcsolása). Előbbi hátrányáról már írtunk, utóbbi viszont lehetőséget nyújt destruktív programok elhelyezésére a kiszolgálón.
Szigorúan beállított NTFS jogosultságok és felhasználói nevet illetve jelszót kérő FTP szolgáltatás mellett - ahol csak megbízható személyek érhetik el a szolgáltatást - minimálisra korlátozható a veszély.