Tunelovani FTP pres SSH ve Windows

Opet muj staly problem, ktery resim uz nekolik let – jak ve Windows bez admin prav pripojit sitovy disk bez nutnosti instalovat programy, nebo pouzivat nesifrovanou Sambu pres Internet. Jednou z moznosti je vyuzit vestaveny FTP klient ve Windows.

Nebyl by to Microsoft, aby to nemelo nejaky hacek – FTP jde pouze nesifrovane.

Ono pouziti FTP protokolu je i tak dost diskutabilni, je to jeden z nejstarsich internetovych protokolu. Prvni RFC je z roku 1971! V roce 2015 je to neskutecnych 44 let. Pri pouzivani FTP pres internet je absolutni nutnosti pouzivat jeho novejsi, sifrovanou variantu. Jmenujete se to FTPs, nebo FTPes. S znaci implicitni SSL a ES explicitni SSL. Implicitni FTPs pouziva jiny port (990), FPTes pouziva stejny port (21) a zahaji spojeni nesifrovane, pomoci prikzu si pak vyjedna sifrovani – preferovany zpusob.
Konec teorie – ve Windows to stejne nefunguje.

Co nam zbyva? Pouzit klasicke nesifrovane FTP a protunelovat si ho pres SSH. A to ma zase problem. FTP pouziva jeden ridici port 21 a pro kazdy prenaseny soubor otevira nove spojeni na „nahodnem portu“ (da se nastavit rozsah). Proto je problem i s FTP skrz NAT (v roce 1971 to asi byl dobry napad, prasarna jmenem NAT jeste neexistovala).

Muj nejoblibenejsi FTP server VSFTPD, v me verzi Ubuntu Serveru ma chybu a tak jsem ho nemohl pouzit :-(. Nakonec jsem vyzkousel PROFTPD a funguje to dobre.

Nastaveni serveru

Nainstalujeme server:

V souboru /etc/proftpd/proftpd.conf natavime porty. Nechame standardni 21 + si nastavime rozsah pasivnich portu:

Vychozi rozsah je veliky, pres 16 tisic portu. Omezime ho na 15 portu. Ja jsem zvolil 60000 az 60014.

Ve vychozi konfiguraci muze byt zakazan pasivni FTP mod. Pokud se v souboru nachazi direktiva <Limit EPSV PASV>, zakomentujeme ji.

Nyni bude FTP server pracovat pouze v pasivnim modu na rozsahu 15 portu. Pokud se pripoji hodne klientu a bude hodne spojeni, asi to bude delat bordel (nebude fungovat), to jsem netestoval. FTP server pouzivam na svem serveru pouze ja sam.
Idelani by bylo tunelovat co nejvic portu, klidne vsech 16k, to ale nejde. Nevim, jaky ma limit samotny OpenSSH server na pocet tunelovanych portu. Kazdopadne plink mi nedovolil tunelovat vic nez asi 15 portu, proto ten pocet.

Pripojeni z Windows klienta

Windows (prekvapive) neumi SSH. Pouzijeme oblibene PuTTY, konkretne soubor plink.exe. Plink umi navazat SSH tunel a nemusi se instalovat ani nevyzaduje admin prava ve Windows. Velky je asi 350kB.
Nize uvedenym prikazem navazeme spojeni pod uzivatelem martin na server example.net
Parametry maji nasledujici vyznam:

  • -ssh – vynuceni SSH protokolu
  • -2 – vynuceni SSH protokolu verze 2
  • -4 – vynuceni IPv4 spojeni
  • -N – po prihlaseni se nespusti shell
  • -C – zapneme kompresi
  • -L 127.0.0.1:21:192.168.1.1:21 – L je lokalni tunel, syntaxe je: IP_ADRESA_NA_LOKALNIM_PC:LOKALNI_PORT:IP_ADRESA_NA_SERVERU:PORT_NA_SERVERU

striska ^ dovoluje rozdelit prikaz na vice radku, je to jako zpetne lomitko \ v Linuxu.

Celkove tunelujeme ridici FTP port a pasivni FTP porty.

Prikaz se primo nabizi ulozit do davkoveho souboru s priponou CMD (pametnici MS-DOSu klidne mohou pouzit BAT) – neco jako „pripojit.cmd“. Ve stejnem adresari, nebo v promenne PATH musi byt plink.exe!

Potom staci spustit skript, zadat heslo a nechat spustene okno prikazoveho radku! Po zavreni okna se automaticky zrusi tunel a spadne FTP spojeni.

Nyni uz staci naklikat pruvodce pripojenim sitoveho disku. Bohuzel to nejde primo v prvnim okne a disk se neda pripojit pod pismenko. Pripojujeme se na server localhost, nebo IP 127.0.0.1!

Pripojeni z Linux klienta

Kazdy normalni clovek pouzije v Linuxu bezne sifrovane FTP(s,es), nebo radeji primo SFTP.
Tunelovani pres SSH by ale samozrejme taky fungovalo…

Tunelovani Samby & WebDAV

Jiste kazdeho hned napadne protunelovat si Sambu na TCP portu 445 – to nejde. Windows totiz pri pripojeni sitoveho disku (SMB, CIFS) neumoznuji zadat cislo portu a na portu TCP 445 (vychozi) bezi lokalni „Samba“ ve Windows. To je taky duvod, proc nejde pouzit Sambu pres stunnel.
Resit to jde, ale musi se pouzit virtualni sitova karta (loopback adapter). Da to more prace a jsou potreba admin prava. Na tunelovani Samby pres Internet se proto temer vzdy pouziva VPN.

Jedine pouzitelne reseni na pripojeni sitoveho disku do Windnows „pod pismenko“ je WebDAV (a sifrovany WebDAVs). Neni ani potreba pouzivat zadne externi programy typu plink, vse potrebne je primo ve Windows. Ruzne verze Windows ale obsahuji ruzne chyby ve WebDAV implementaci, proto to neni tak jednoduche.
Uz mam rozepsany navod na nastaveni Linuxoveho WebDAV serveru, brzo (behem par mesicu) ho snad dopisu.

 

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *