ugrás a tartalomhoz

FTP felhasználó átirányítása egy központi helyről egy alszerverre.

mapdesign18 · 2011. Nov. 12. (Szo), 17.26
Üdvözletem!

Van három Debian alapú linuxos szerverem, ebből egy központi és a többi alszerver. Az alszerverek rendelkeznek egy PureFTPd nevű FTP szerverrel.

Az FTP autentikáció az alszervereken unix user alapon történik, viszont a központi szerveren egy adatbázisban (MySQL) megtalálható, hogy melyik user melyik alszerverhez tartozik (IP cím).

Azt szeretném elérni, hogy a felhasználóknak ne kelljen az alszerverek IP címeit külön-külön beírniuk, hanem egy központi címről belehessen csatlakozni (pl.: ftp.akarmi.hu).

Tehát:
-----
1. Becsatlakozás az "ftp.akarmi.hu" címre.
2. Felhasználói név bekérése.
3. Felhasználói név alapján eldöntjük, hogy hova tartozik a felhasználó és valahogy átirányítjuk a megfelelő alszerverre + elküldjük a felhasználói nevet, hogy ne kelljen újra megadni.
4. A kapcsolat átirányítva, bekérjük a jelszót.
5. A kapcsolat létrejött, mehet a munka.
----

Nos találtam egy "FTP relay" nevezetű kis programit az sf-en, ami egy kis fejlesztéssel jól működne. A problémám csak az, hogy hogyan irányítsam át konkrétan a kapcsolatot a másik szerverre, hogy ne a központi szerver közvetítésével menjenek át az adatok?

Íme a kód:
http://sourceforge.net/projects/ftprelay/

Egyébként leginkább ezt PHP segítségével szeretném megvalósítani, így ezért is írtam a PHP fórumra.

Eddig az alábbi kulcsszavakra keresgéltem, kevés sikerrel:
- ftp route
- ftp routing
- ftp relay
- ftp user redirect
- ftp nat

Ha esetleg valakinek volna ötlete, hogy merre felé kezdjek indulni, kérem írja meg.

Köszönöm!
 
1

Nem lehet megfordítani a

H.Z. v2 · 2011. Nov. 12. (Szo), 19.41
Nem lehet megfordítani a problémát?
Úgy értem: egy ftp szerver és a szükséges területeket sambával, NFS-en stb. éri el és tolja a user alá?
4

Jó is, meg nem is.

mapdesign18 · 2011. Nov. 12. (Szo), 23.09
Erre őszintén szólva én is gondoltam. Ez akkor lenne csak jó, ha a szerverek egy helyen lennének. De megesik, hogy a szerver között több mint ~400-500km van. Ezeket a hálózati összemountolást kerülni szeretném.

Bár ha jól értelmezem az NFS lényegét, akkor ugyanúgy a központi szerver küldi tovább az alszerverek felé az anyagot oda-vissza, így terhelve a sávszélességét, akár csak az FTP relay amit belinkeltem.
5

Így valóban felejtős az

H.Z. v2 · 2011. Nov. 13. (V), 07.37
Így valóban felejtős az ötlet.
2

Több megoldás is van

janoszen · 2011. Nov. 12. (Szo), 20.37
Több megoldás is van.

  • Építesz egy okos FTP proxyt. Erre kiválóan alkalmas a SUSE-sok által fejlesztett proxy-suite. Hátránya, hogy csak FTP-t tud, SFTP-t nem.
  • Minden usernek adsz egy egyedi FTP szerver nevet. Pl. usernév.ftp.tedomained.hu. Ennek az a hátránya, hogy fel kell húznod az ftp.tedomained.hu-ra egy DNS szervert és az új usereket mindig bele kell tolni, ami némi hozzáértést igényel.


Hálózati szinten azért nem tudod megoldani, mert ahhoz az infóhoz, hogy a user milyen szerveren van, csak a protokoll kibontása után jutsz. PHP-ban ezt ugyan meg lehet valósítani, de nem túl alkalmas rá.

Üdv

János
3

Szerintem rövidre zárom a

mapdesign18 · 2011. Nov. 12. (Szo), 23.05
Szerintem rövidre zárom a történetet és az utóbbi pontot választom. Bár kicsit még vacillálok, de inkább maradok a biztonságnál, mint a "kényelmességnél".

Mivel elég macerás lenne valóban felvenni/törölni/módosítani DNS record-ba az új usereknek az elérésüket, ezért a szervergép kap konkrét subdomain nevet, amire majd lehet csatlakozni (ez a név egyébként se változik majd sűrűn). A dolog már csak az ügyfél kiértesítése lesz, hogy hol található az FTP szervere. De ez még odébb lesz.

Lényegében a protokoll kibontás megtörtént, még a felhasználó név értékét is áttudtam venni.. csak az átirányításnál bukott meg a dolog, mivel ahogy néztem az FTP természeténél fogva nem tud szerver oldalról küldeni a kliens felé egy új kapcsolat indítását más szerver felé. Szóval ez rossz irány volt.
6

DNS szerkesztés

H.Z. v2 · 2011. Nov. 13. (V), 07.41
Azért nem olyan nagyon bonyolult dolog, persze függ attól is, hogy milyen szervert használsz.
Bind esetében valóban nehézkes lehet (bár ott sem reménytelen), de ha nincs túl sok usered/DNS bejegyzésed, akkor szóbajöhet a dnsmasq is, ő a /etc/hosts-ból szedi a címeket és nem kell pl. verziószámozással meg hasonlókkal szórakozni.
7

Miért is?

janoszen · 2011. Nov. 13. (V), 09.11
Miért lenne bonyolult szerkeszteni? Nézzük a következő setupot:

  • Felveszel a domained alá egy ilyen rekordot: ftp IN NS fogep.tedomained.hu.
  • Ott elindítasz egy PowerDNS-t MySQL backenddel, hogy szolgálja ki a fenti zónát.
  • A usereket betolod MySQL-be.


Ha több száz kilométer van a szervereid között, akkor nem akarsz FTP proxyzni, mert inged-gatyád kifizeted a sávszélességre, ugyanis 3x lesz kiszámlázva: egyszer, amikor bejön a főgépedre, egyszer amikor kijön belőle, egyszer pedig a célgépen.
8

Eddig még igazából bind-el

mapdesign18 · 2011. Nov. 13. (V), 10.43
Eddig még igazából bind-el volt dolgom, ami keményen fájlba dolgozott, bár lehet van MySQL backend is hozzá.

Való igaz, hogy ebben az esetben nem jó a proxy-s megoldás, sem anyagilag, sem erőforrásban, se sehogy :).

Összességében, akkor egy variáció maradt:
janoszen I proclub: Minden usernek adsz egy egyedi FTP szerver nevet. Pl. usernév.ftp.tedomained.hu. Ennek az a hátránya, hogy fel kell húznod az ftp.tedomained.hu-ra egy DNS szervert és az új usereket mindig bele kell tolni, ami némi hozzáértést igényel.


Elkezdem bütykölni a PowerDNS-t kíváncsi vagyok rá mit tud, de eddig fórum postok alapján csak jót hallottam róla.

Köszönöm a segítségetek!
9

Van hozzá mysql backend, de

H.Z. v2 · 2011. Nov. 13. (V), 11.02
Van hozzá mysql backend, de állítólag használhatatlan. (nem saját tapasztalat, én is csak olvastam)
10

Tényleg

janoszen · 2011. Nov. 13. (V), 13.01
A BIND a file backenden kívül minden mással használhatatlan. Nem erre lett tervezve. Egyébként RNDC-vel lehet egész jól vezérelni, de ez esetben a kisebb ellenállás iránya a PowerDNS vagy a MyDNS irányába vezet.
11

Teszteltük

janoszen · 2011. Nov. 13. (V), 13.02
Annó teszteltük LDAP backenddel és beletoltunk néhány 100k zónát, nem volt gond vele.

Más: ha már FTP szervert építesz, a ProFTPd-nek van egy SFTP modulja, amivel SSH csatornán keresztül lehet feltölteni. Próbáld meg leszoktatni a jónépet az FTP-ről, mert szar is és insecure is.
12

Nos ennek örülök. Egyébként

mapdesign18 · 2011. Nov. 13. (V), 13.20
Nos ennek örülök. Egyébként megtetszett a PowerDNS, eddig mindent megtudtam vele csinálni amit kell.

Elvileg a PureFTPd is tudja az SSH-s dolgot, csak úgy kell fordítani. Meg nekem valamiért sokkal szimpatikusabb, mint a ProFTPd. Egyébként nem elég szimplán TLS?
13

Mert...

janoszen · 2011. Nov. 13. (V), 18.07
A TLS biztonsági szempontból elég lenne, de az FTP összes többi hülyeségét nem küszöböli ki. Szívni fogsz pl. a karakterkódolással, a fájlnév eleji/végi szóközökkel és még csomó más aprósággal.

Én ha tehetném, az FTP-t kompletten kitiltanám a rendszereimből.
14

Első az irány, aztán a részletek.

mapdesign18 · 2011. Nov. 14. (H), 17.24
Sajnos az FTP-t, mint szolgáltatás nem vonhatom ki a listáról, mint ahogy nem kérhetem meg az ügyfelet, hogy töltsön le egy másik programot csak azért, hogy a szerverünkre csatlakozni tudjon. De ha van olyan megoldás, ami működik pl: Total Commander alatt (úgy hogy lehetőleg ne kelljen letölteni kiegészítőt), akkor az is megfelelne (szerintem).

Jobban belegondolva, még nem vagyok biztos benne, hogy melyik FTP szervert válasszam. A ProFTPd SSH modulja valóban csábító, de teszteléseket kell végeznem, hogy melyik használható jobban. Egyesek szerint a vsftpd is jó választás lenne.

A kérdésem: Van-e bevált FTP szerver, amiről bárki azt mondhatja: biztonságos, stabil és gyors?
15

Pro

janoszen · 2011. Nov. 14. (H), 18.04
Funkcionalitás, kezelhetőség és biztonság terén toronymagasan a Pro vezet. Több éve használom és nem volt még vele problémám.
16

Köszönöm!

mapdesign18 · 2011. Nov. 14. (H), 18.14
Rendben, nagyon szépen köszönöm a segítséget!