Samba tunnel beállítása smbm-hez (Ubuntu)

Innen: AdminWiki

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ó.

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