Samba tunnel beállítása smbm-hez (Ubuntu)
Ebben a leírásban SSH-tunnelezett kapcsolatot állítunk be Ubuntu 16.04 LTS (desktop vagy notebook) munkaállomásról egy (távoli) Samba szerverre, amelyet elsősorban fájlkiszolgálóként szeretnénk használni.
A leírás - értelemszerű módosításokkal - Lubuntu 16.04 LTS alatt is használható.
Tartalomjegyzék
Szerver oldali teendők
A szerver oldalon:
- létre kell hozni a (Samba/Windows mapped) Linux felhasználót és be kell sorolni a jogosultságainak megfelelő (Samba/Windows-mapped) Linux csoportokba. Ennek módja a használt backendtől és adminisztrációs felülettől (pl. tdbsam/Samba Manager, LDAP/phpLDAPadmin, egyéb Samba GUI, stb.) függ.
- szükségünk lesz egy SSH-tunnelezésre alkalmas, passphrase-zel védett RSA-2 kulcspárra, melynek privát kulcsa legyen OpenSSH formátumú, publikus kulcsát pedig a létrehozott (Samba/Windows mapped) Linux felhasználó ~/.ssh/authorized_keys2 könyvtárában kell elhelyeznünk, célszerűen az alábbi korlátozásokkal:
command="/bin/false",no-pty,no-X11-forwarding,no-agent-forwarding,no-port-forwarding,permitopen="localhost:139",permitopen="127.0.0.1:139",permitopen="localhost:445",permitopen="127.0.0.1:445" ssh-rsa ...
Megjegyzés: a Samba Manager a kulcspárt felhasználó létrehozatalakor automatikusan elkészíti és elhelyezi.
Ha a felhasználó korábban már létrejött, van kulcspárja és a csoportokba sorolás is megtörtént, szerver oldali tennivaló nincsen.
Szerver oldali teendők smbm használata esetén
Az alábbiak csak arra az esetre vonatkoznak, ha a szerveren a Samba Manager (smbm) toolkit telepítve van.
Feltételezzük, hogy a házirend szerinti Samba/Windows felhasználónév vezeteknev.keresztnev alakú.
A Samba Managert futtató fájlszerveren root-ként adjuk ki ezeket a parancsokat:
smbm -au vezeteknev.keresztnev password # password opcionális
- Létrehozza a felhasználót vezeteknev.keresztnev Samba/Windows felhasználónévvel és ha nem adunk meg jelszót, generált jelszóval; valamint a háttérben smbNNNNN Linux felhasználónévvel (jelszavas belépés lehetősége nélkül).
- Létrehozza a felhasználó home könyvtárát, elhelyez benne egy generált, tunnelezésre használható kulcspárt, amelynek jelszava (passphrase) a Samba/Windows jelszóval megegyezik.
A csoportokba soroláshoz:
smbm -lg # Listázza a létező Samba/Windows csoportokat smbm -aug vezeteknev.keresztnev "Windows csoportnév" # Beteszi a felhasználót a csoportba smbm -lug vezeteknev.keresztnev # Listázza a felhasználó csoporttagságait
Ha ezzel készen vagyunk, kiléphetünk a szervergépből.
Kliens oldali teendők
Az alábbiakban a szerver oldali TCP/445-ös port forgalmát fogjuk tunnelezni a local interface (127.0.0.1) TCP/44445-ös portjára, majd a Nautilus fájlkezelőben könyvjelző(ke)t állítunk be, amelyeken a távoli megosztás(ok) elérhető(ek). Így, a tunnelt elindítva, a távoli tárhelyen a helyi fájlrendszerrel analóg módon dolgozhatunk.
Szükségünk lesz:
- a felhasználó tunnelezésre alkalmas privát kulcsára és annak passphrase-ára;
- a felhasználó Samba/Windows felhasználónevére (pl. vezeteknev.keresztnev) és Samba/Windows jelszavára;
- a felhasználó gépén sudo képességre a szükséges eszközök telepítéséhez.
Teendők adminisztrátorként
Adminisztrátorként (sudo-képes felhasználóként) lépjünk be a beállítandó munkaállomásra.
Jelen leírásban a Gnome SSH Tunnel Manager-t használjuk grafikus felületként a tunnel(ek) kezelésére. A gSTM az Ubuntu terjesztés része, CTRL-ALT-T (terminál ablak hívása) után a
sudo apt-get install gstm # + függőségek
paranccsal telepíthető. Telepítés után a Dash-ból, vagy a Classic Menu - Internet menüpontjából indítható.
Teendők korlátozott felhasználóként
Kérjük meg a felhasználót, hogy lépjen be a beállítandó munkaállomásra a saját nevében, és ha használ pl. VeraCryptet, csatolja fel a titkosított meghajtót.
A privát kulcs elhelyezése
Ha a felhasználó több, tunnelezésre használt privát kulccsal is rendelkezik, az alábbiakat külön-külön, minden kulcsra el kell végeznünk.
- Ha a felhasználó rendelkezik titkosított meghajtóval, a Samba tunnelezéshez használatos privát kulcsát mozgassuk át a titkosított meghajtóra (pl. a [mount point]/Keys könyvtárba). Opcionálisan elhelyezhetünk a kulcs(ok) mellett, a titkosított meghajtón egy szövegfájlt is, amelyben az eredeti passphrase és a Samba/Windows felhasználónév illetve jelszó is szerepel.
- Ha nincs titkosított meghajtó, a kulcsot a felhasználó home könyvtárában a ~/.ssh alatt helyezzük el.
Sajnos, úgy tűnik, a gSTM nem használ kulcskarikát, illetve nem tudja megjegyezni a kulcshoz tartozó passphrase-t (TODO!), így azt minden tunnel indításkor újra meg kellene adni.
- Ha a kulcs titkosított meghajtón van, opcionálisan készíthetünk róla passphrase nélküli másolatot:
openssl rsa -in [key_pathname] -out [key_pathname]-nopass # Ez utóbbi már nem kér jelmondatot
- Ha a kulcs nem titkosított meghajtón van, nem javasolt elvennünk a passphrase-t(!), de megváltoztathatjuk azt a felhasználó által megjegyezhetőre (próbáljuk meggyőzni a felhasználót a relatív erős passphrase - még inkább a titkosított meghajtó! - szükségességéről):
openssl rsa -in [key_pathname] -des3 -out [key_pathname]-newpass # Ez utóbbi az újonnan begépelt jelmondattal nyitható
A hozzáférés beállítása
Dash-ból, vagy a Classic Menu - Internet menüpontjából indítsuk el a gSTM-et, és rögzítsük a Launcherre.
A Hozzáadás nyomógombbal készítsünk egy új tunnelt:
- a Tunnel configuration részben értelemszerűen töltsük ki a távoli szerver elérési adatait (az smbm használata esetén a szükséges login név smbNNNNN alakú), illetve írjuk be a használandó privát kulcs abszolút(!) elérési útvonalát (sajnos nem lehet tallózni). Az Autostart engedélyezése akkor célszerű, ha a felhasználó csak egy tunnelt használ - ez esetben a program elindítása azonnal meg is nyitja a tunnelt;
- egyetlen Port redirection szükséges, a Hozzáadás nyomógomb után Type: local, Port: 44445, Host: localhost, To port: 445 paraméterekkel. Több tunnel beállítása esetén a már foglalt 44445 helyett tetszőleges további, magas (1024 feletti) helyi portszámokat használhatunk.
A Tunnel properties ablak bezárása (OK) után indítsuk el a tunnelt (Start) - zöld ikon jelzi a sikeres indulást. A port továbbítás létrejöttét az alábbi parancsokkal ellenőrizhetjük:
netstat -tanu | grep ':44445' # illetve, amilyen portszámot beállítottunk tcp 0 0 127.0.0.1:44445 0.0.0.0:* LISTEN
Funkcionális teszt:
telnet 127:0.0.1 44445 # illetve, a beállított portszám; kilépés: CTRL-5, ENTER, quit Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'.
Megjegyzés: a fenti beállításokkal a gSTM az alábbihoz hasonló parancsot futtat a háttérben:
ps aux | grep ssh # keressük meg a futó folyamatok között [...] ssh fileserver.mydomain.com -p 22 -i ~/Security/Keys/smbNNNNN_AT_fileserver.mydomain.com-nopass -l smbNNNNN -nN -L44445:localhost:445
Hiba esetén a fenti parancssor teminál ablakban történő elindításával az esetleges hibaüzenetek megtekinthetőek.
Siker esetén indítsuk el a Nautilust (Fájlok ikon), és CTRL-L után navigáljunk az smb://USERNAME@1ocalhost:44445/ helyre (ahol USERNAME a Samba/Windows felhasználónév - smbm használata esetén vezetknev.keresztnev alakú)! A Samba/Windows authentikációt érdemes(?) örökre megjegyeztetnünk a Nautilussal; ezután a távoli Samba szerver megosztásai tallózhatóak. Érdemes lehet a felhasználó számára releváns megosztásokat a Nautilusban könyvjelzőzni.
Irodalom
- Multiple loopback interfaces (Ubuntu Forums)