A Unix alapú rendszerekhez való távoli hozzáférés nem újkeletű módszer. Még pár évvel ezelőtt is igen népszerű volt a telnet protokoll, mely segítségével úgy jelentkezhetünk be egy számítógépre, mintha a gép előtt ülnénk, és szinte minden megkötés nélkül végezhetjük munkánkat. A telnet egyik legnagyobb hibája azonban sok rendszergazda kárára vált világossá: a rajta átmenő teljes adatforgalom - így a jelszavak is - titkosítatlanul halad át, így megfelelő eszközökkel pillanatok alatt ellopható akár a rendszergazdai jelszó is. Szükségessé vált tehát egy olyan protokoll kifejlesztése, mely eliminálja ezt a problémát. Így született meg 1995 környékén az SSH (Secure Shell). Az SSH támogatja mind az RSA, mind a DSA titkosítási eljárásokat. Az SSH-t fejlesztője egy idő után kivonta a GPL licencelés alól, ekkor vette át szerepét a Linuxban az OpenSSH (a részletes történetet itt olvashatjuk). Mára az OpenSSH az egyik legnépszerűbb szolgáltatás lett, a telnet gyakorlatilag eltűnt minden, magára valamit is adó rendszergazda gépéről.
Nem kizárólag távoli hozzáférésre alkalmas. Segítségével file-ok másolása is megoldható (scp, sftp alrendszer), közvetlen parancsokat is kiadhatunk egy távoli gépen, titkosított csatornákat (stunnel) létrehozására is alkalmas, sőt, akár egy X szerver képét is átvihetjük vele a hálózaton. Megbízhatósága, titkosítása tökéletes, fejlesztése folyamatos. Létezik Windowsra írt kliense is, ezt PuTTY néven ismerjük. Az SSH minden disztribúcióban megtalálható, szinte az összes rendszeren az alapértelmezett telepítés részévé vált. Az SSH szerveralkalmazása, az sshd minimális konfigurálás után már üzemképes. Az SSH-t sokféleképpen konfigurálhatjuk: korlátozhatjuk a bejelentkezést felhasználó, IP-cím, vagy akár kulcs alapján. Ez utóbbi azt jelenti, hogy kizárólag azok a felhasználók léphetnek be a gépükre, akik rendelkeznek egy megfelelő kulcspárral. Az sshd kiszolgáló működése a /etc/ssh/sshd_config file-on keresztül szabályozható.
A leggyakrabban használt paraméterek
- Protocol 2: az SSH átviteli protokollját állíthatjuk be. Célszerű a 2-es változatot hasznáni, az 1-esben voltak biztonsági hiányosságok.
- PermitRootLogin yes: ez egy igen fontos biztonsági beállítás: a root közvetlen hozzáférése nem megengedett, mindig használjuk ezt az opciót!
- PubkeyAuthentication yes: nyilvános kulcsú autentikáció engedélyezése. Ez szükséges a kulcs alapú ellenőrzéshez.
- AllowUsers user1 user2@192.168.0.1: az itt látható beállítások esetnén user1 bárhonnan be tud jelentkezni, user2 viszont kizárólag a 192.168.0.1-es címrőlSok rendszergazda kedvenc megoldása a kulcs alapú azonosítás. Lássuk, hogyan tehetjük biztonságossá és kényelmessé szerverünk távoli elérését e megoldással:
Linuxos kliensről való bejelentkezéshez
- Indítsuk el a kliensgépen az ssh-keygen -t rsa parancsot. Ez egy RSA kódolású kulcspárt fog számunkra generálni.
- Az Enter file in which to save the key (/home/bela/.ssh/id_rsa): kérdésre üssünk Entert.
- Az Enter passphrase (empty for no passphrase): üzenetre ismét Entert, majd a megerősítésre megint.
- Ekkor a .ssh könyvtárunkban létrejött két file id_rsa (ez a privát kulcsunk) és id_rsa.pub (ez pedig a publikus) néven.
- A szerveren lépjünk be userünk .ssh könyvtárába és hozzunk létre egy file-t authorized_keys néven.
- A kliensgépen létrehozott id_rsa.pub file-t másoljuk át a szerverre, és helyezzük el az előbb létrejött authorized_keys-be:
cat id_rsa.pub >> .ssh/authorized_keys - A szerveren található /etc/ssh/sshd_config file-ban változtassuk meg az alábbi paramétereket: AllowUsers usernév, AuthorizedKeysFile %h/.ssh/authorized_keys, PasswordAuthentication no
- Indítsuk újra az sshd-t: /etc/init.d/sshd restartWindowsos kliensről történő bejelentkezéshez:
- Indítsuk el a PuTTYgen alkalmazást.
- A Parameters-nél válasszuk ki az SSH RSA2-t.
- Kattintsunk a Generate gombra. Mozgassuk az egeret a fenti üres területen addig, amíg a kulcsunk el nem készül
- A Public key for pasting into authorized_keys file ablak tartalmát másoljuk be a szerveren található, az előbb említett módon létrehozott authorized_keys file-ba.
- A Save private key gombbal mentsük el privát kulcsunkat a helyi gépünkre, pl. privatekey.ppk néven.
- Hozzunk létre egy új kapcsolatot a PuTTY-ban, értelemszerűen kitöltve a host címét és a kapcsolódást.
- A Connection fül kiválasztása után írjuk be felhasználónevünket az Auto-login username mezőbe.
- Az SSH/Auth menüpontot kiválasztva a megjelenő Private key file for authentication mezőbe illesszük be az imént elmentett privát kulcsunk elérési útját, majd a Session fülre visszalépve mentsük el beállításainkat.
- A linuxos beállításoknál említett szerveroldali konfigurációt állítsuk be, majd indítsuk újra a sshd-t.
Mostantól kizárólag mi léphetünk be a rendszerbe és csak akkor, ha az ellenőrizni tudta privát kulcsunk meglétét. Vigyázat! A módszer semmit sem ér akkor, ha privát kulcsunkra nem vigyázunk, sőt, annak megszerzésekor a támadó jelszó nélkül léphet be szerverünkre. Érdemes pen-drive-on vagy egyéb adathordozón tárolni, a bátrabbak megpróbálkozhatnak chipkártyás nehezítéssel is.
- A PuTTY az alábbi címről tölthető le: http://www.chiark.greenend.org.uk/~sgtatham/putty/
- Hasznos olvasnivalókat találunk még a http://www.biztostu.hu/ címen is.