Għaliex il-listi tal-FTP jieqfu wara gateway VPN li jagħmel NAT
Id-dħul u PWD jirnexxu waqt li LIST u RETR jieqfu meta n-NAT jerġa’ jikteb biss l-intestaturi. Ara fejn irid joqgħod l-għajnuna tal-FTP u kif tissewwa l-modalità passiva.
Id-dħul jaħdem, PWD jaħdem, u mbagħad LIST jibqa’ mdendel sakemm il-klijent jaqta’ qalbu jew jgħaddi għal modalità oħra tad-data. Dan il-qsim huwa s-sinjal: il-konnessjoni tal-kontroll lejn il-port 21 hija b’saħħitha, filwaqt li l-konnessjoni tad-data tinbena minn indirizz jew port li n-naħa l-oħra ma tistax tilħaq. Wara gateway VPN li jagħmel NAT ukoll, il-ħati tas-soltu huwa kmand FTP li l-payload tiegħu jsemmi indirizz ta’ tunnel bħal 10.8.0.6. It-traduzzjoni tal-intestaturi qatt ma tmiss dak il-valur.
Dak li ġej huwa minn fejn ġej dak il-valur, u liema kaxxa hija permessa tibdlu.
Dak li jinqasam huwa l-payload, mhux it-tunnel
FTP iqiegħed it-tarf tad-data ġewwa l-fluss tal-kontroll. Fil-modalità attiva l-klijent jibgħat PORT bl-indirizz u l-port tiegħu stess, u s-server iċempel lura lejn dik il-par. Fil-modalità passiva s-server iwieġeb 227 b’par, u l-klijent iċempel lil dak minflok.
Iż-żewġ forom iġorru l-istess tip ta’ dikjarazzjoni: qabbad ma’ dan l-indirizz, fuq dan il-port. Apparat li jerġa’ jikteb biss l-intestaturi IP u TCP iħalli d-dikjarazzjoni kif inhi, u għalhekk naħa waħda tkompli tipprova tilħaq indirizz li jeżisti biss fuq in-naħa l-oħra ta’ tunnel. Il-konnessjoni tad-data tieqaf wara li l-konnessjoni tal-kontroll tkun diġà ġiet iddikjarata b’saħħitha.
Tliet modalitajiet, tliet payloads
It-tabella hawn taħt turi liema naħa qed tiġi mitluba ċċempel, u x’jista’ jagħmel NAT li jerġa’ jikteb biss l-intestaturi dwar dan.
Aqra l-aħħar kolonna bħala dak li jfalli l-ewwel. Fil-modalità attiva s-server iċempel indirizz privat; fil-modalità passiva huwa l-klijent; bil-FTPS il-payload huwa test sifrat u l-kaxxa tan-nofs għandha anqas saħansitra biex taħdem bih.
| Mode | Value in the control stream | Who dials whom | Header-only NAT leaves |
|---|---|---|---|
| Active (PORT) | client address and port | server dials the client | a server dialing an unreachable tunnel address |
| Passive (227) | server address and port | client dials the server | a client dialing an address it cannot route to |
| FTPS | the same values, inside TLS | as above | ciphertext, so no rewrite happens at all |
Qiegħed l-għajnuna fejn issir it-traduzzjoni
Fuq Linux it-tikteb mill-ġdid tal-payload isir mill-għajnuna nf_conntrack_ftp. Hija tosserva l-konnessjoni tal-kontroll, titgħallem il-port li ġie nnegozjat, toħloq aspettattiva għall-fluss tad-data, u fuq kaxxa NAT terġa’ tikteb l-indirizz u l-port ġewwa l-payload. Hija tgħin biss fuq l-apparat li jittraduċi l-indirizz tal-klijent. L-illowdjar tagħha fuq il-klijent, jew fuq router li sempliċement jgħaddi l-fluss, ma jbiddel xejn fis-sessjoni.
Dawn it-tliet kmandi juru jekk il-modulu huwiex preżenti, jekk huwiex imqabbad, u jekk teżistix aspettattiva waqt li sessjoni hija miftuħa:
modprobe nf_conntrack_ftp
lsmod | grep nf_conntrack_ftp
conntrack -L expect | grep ftp
L-illowdjar tal-modulu mhuwiex l-istess bħall-imqabbad tiegħu. Il-kernel minn 4.7 ’il fuq jiġu bi net.netfilter.nf_conntrack_helper=0, għalhekk l-għajnuna tistenna regola espliċita, pereżempju iptables -t raw -A PREROUTING -p tcp --dport 21 -j CT --helper ftp. Jekk il-lista tal-aspettattivi tibqa’ vojta waqt li jiġi ppruvat trasferiment, l-imqabbad huwa dak li għandu jiġi ċċekkjat, mhux il-modulu.
Modalità passiva: għid lis-server x’għandu jħabbar
Il-modalità passiva hija aktar faċli biex issir deterministika għax lis-server jista’ jingħadlu x’għandu jpoġġi fit-tweġiba 227. Fil-vsftpd dak huwa pasv_address, flimkien ma’ pasv_min_port u pasv_max_port; ProFTPD juża MasqueradeAddress u PassivePorts. Issettja dawk l-ewwel, għax indirizz imħabbar b’mod korrett ineħħi l-bżonn li jerġa’ jinkiteb xi ħaġa fuq dik in-naħa.
Imbagħad ħalli eżatt dak il-firxa ta’ portijiet tgħaddi mill-gateway, pereżempju -A FORWARD -i tun0 -p tcp --dport 30000:30100 -j ACCEPT, sabiex ir-regola taqbel ma’ dak li jħabbar is-server.
Iż-żewġ settings iridu jaqblu. Server li jingħadlu biex iħabbar 30000-30100 waqt li l-gateway jippermetti 40000-40100 ifalli bl-inqas mod utli: il-konversazzjoni tal-kontroll tidher b’saħħitha u kull konnessjoni tad-data tmut. Qabbel in-numri qabel ma tiddebuddja xi ħaġa oħra.
Żewġ sinjali ta’ falliment, u x’tneħħi l-FTPS
Id-dendel fuq LIST jindika l-ewwel konnessjoni tad-data tas-sessjoni, fejn kemm it-tikteb mill-ġdid tal-indirizz kif ukoll l-aspettattiva jridu jaħdmu. Id-dendel fuq RETR wara LIST li jaħdem jindika t-trasferiment innifsu, jiġifieri l-firxa passiva jew l-MTU tat-tunnel. It-tieni sinjal mhuwiex problema tal-payload, u s-settings tal-għajnuna mhux se jsewwuh.
FTP fuq TLS ineħħi l-payload li taqra l-għajnuna. Kaxxa tan-nofs ma tistax terġa’ tikteb valur PORT jew PASV li ma tistax tiddikriptah, għalhekk jibqgħu prokura li ttemm it-TLS, server li jħabbar indirizz li jintlaħaq fi firxa limitata, jew protokoll ieħor tat-trasferiment.
Sekwenza qasira ta’ verifiki
Aħdem mis-sintomu ’l barra. Ikkonferma li LIST ifalli waqt li PWD jirnexxi, aqbad l-indirizz ġewwa l-payload PORT jew 227, u staqsi liema apparat jittraduċi dak l-indirizz. Qabbad l-għajnuna hemm, osserva l-lista tal-aspettattivi waqt trasferiment wieħed, imbagħad sewwi l-modalità passiva fuq is-server u rriferi l-firxa fir-regola tal-gateway.
Żomm il-falliment tal-mogħdija tad-data separat mill-falliment tat-trasferiment kbir, għax iwassluk għal settings differenti.