Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Začínáme s
SSH & VNC - Pracujeme na vzdáleném stroji bezpečně
25. července 2005, 00.00 | Dnešní článek je rozšíření předchozího článku o VNC - Krok za krokem - Spravujeme počítač na dálku přes VNC. Na rozdíl od předchozího dílu dnes se budeme zabývat tím, jak zabezpečit spojení mezi serverem a klientem. Na připojení k serveru budeme využívat spojení přes SSH tunel, které zabezpečí veškerá přenášená data tak aby nikdo napojený na naši síť nemohl jednoduše odchytit hesla zasílaná VNC bez kódování.
Dnešní článek je rozšíření předchozího článku o VNC - Krok za krokem - Spravujeme počítač na dálku přes VNC. Na rozdíl od předchozího dílu dnes se budeme zabývat tím, jak zabezpečit spojení mezi serverem a klientem. Na připojení k serveru budeme využívat spojení přes SSH tunel, které zabezpečí veškerá přenášená data tak, aby nikdo napojený na naši síť nemohl jednoduše odchytit hesla zasílaná VNC bez kódování. Mimochodem pokud vás tato problematika zajímá a máte zájem o podobné články, napište do diskuse pod článkem.
V následujícím textu budu používat termín server pro vzdálený počítač, na který se budeme připojovat. A termín klient budu používat pro počítač, ze kterého se připojujeme. Pro ilustraci připojení používám server na adrese 192.168.2.100 (Sedmnactka) a klient na adrese 192.168.2.112 (Dvanactka). Tyto stroje jsou na stejném segmentu sítě, ale všechny příkazy budou fungovat i mezi stroji na různých místech internetu (pokud jsou viditelné na veřejné adrese). Pokud váš stroj dostává dynamickou IP adresu od poskytovatele, doporučuji použít službu jako DynDNS.com. Ta umožní takovému stroji přiřadit doménové jméno a tak ho zviditelnit na internetu. Pokud používáte router s NAT, budete ho muset nastavit tak, aby přeposílal všechny SSH pakety na cílový stroj. Tohle je vyšší dívčí do které se dnes nebudeme pouštět. Opět pokud je tu dost lidí co tahle problematika zajímá, nebude problém napsat pokračování tohoto článku (prosím o komentáře pod článkem).
Připravujeme server
Jako první musíme na serveru povolit připojení přes VNC. Pokud máte na stroji OS X Jaguar či Panther můžete postupovat podle návodu v Petrově článku. Pokud vlastníte OS X Tiger tak je nastavení serveru možné přímo z System Preferences, kde v položce Sharing nastartujeme službu Apple Remote Desktop. A poté ještě změníme nastavení Access Privileges. Zde můžete velice přesně kontrolovat co může každý z uživatelů dělat pokud přistupuje na stroj přes VNC. Povolte přístup jen uživatelům, kteří mají na stroj přístup na dálku. Čím méně lidí má přístup, tím méně děr je otevřených. Dále doporučuji nastavit heslo pro přístup na VNC server v položce 'VNC viewers may control screen with password:' jak je vidět na následujícím obrázku.
Nyní na serveru musíme povolit přístup přes SSH. To uděláme opět v System Preferences v položce Sharing. Stačí spustit položku Remote Login. V tomhle kroku dojde k povolení připojení na server přes protokol SSH, který budeme používat jako tunel pro ochranu přenášených dat. Pokud se chcete pohrabat v nastavení SSH serveru, tak budete muset editovat soubor /etc/sshd_config. Pro zvýšení bezpečnosti doporučuji provést následující změny. První je změna protokolu SSH jen na verzi 2 - změňte linku #Protocol 2,1 na Protocol 2. Dále můžete omezit připojení pouze pro vybrané uživatele AllowUsers honza. To povoluje připojení přes SSH pouze uživateli honza. Dále pokud při připojení na server dochází k timeoutu doporučuji změnit položku LoginGraceTime na hodnotu 0.
Připojení z klienta přes SSH
Tímto jsme připravili server na vzdálené připojení, a teď se pustíme do klienta. Pro připojení na VNC server budeme používat Chicken of the VNC, jehož popis je v Petrově článku, takže ho tady nebudeme opakovat. Nyní si ověříme, že připojení přes SSH funguje.
Dvanactka:~ krux$ ssh honza@192.168.2.100
The authenticity of host '192.168.2.100 (192.168.2.100)' can't be established.
RSA key fingerprint is XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.100' (RSA) to the list of known hosts.
honza@192.168.2.100's password:
Last login: Sun Jul 17 21:39:48 2005
Welcome to Darwin!
[Sedmnactka:~] honza%
Vypadá to, že vše jede v pohodě, takže se odpojíme (napište exit).
Při dalším spojení vytvoříme tunel, přes který budeme posílat data na server. Příkaz na vytvoření tunelu je následující ssh -L [lokální port]:127.0.0.1:[vzdálený port] [uživatel]@[adresa.serveru]. To znamená, že vytvoříme tunel z lokálního stroje z lokálního portu (v našem případě to bude port 59005) na vzdálený stroj a vzdálený port (v našem případě je to VNC, které běží na portu 5900). Zvolený port 59005 je jen příklad a můžete použít jakýkoli neobsazený port. Je lepší použít port nad 10000, které jsou běžně neobsazené ostatními službami.
V našem případě bude příkaz pro vytvoření tunelu vypadat následovně:
Dvanactka:~ krux$ ssh -L59005:127.0.0.1:5900 honza@192.168.2.100
Po vytvoření tunelu spustíme Chicken of the VNC a připojíme se na lokální port 59005. Parametry připojení jsou uvedeny na dalším obrázku.
Po připojení na server bude obrazovka vypadat podobně jako následující obrázek. V případě, že rozlišení serveru je větší než rozlišení klienta, budete muset skrolovat tak, abyste viděli celou obrazovku. Jak tomu je ostatně na obrázku níže.
Používáme asymetrickou autentikaci pomocí veřejného klíče
Pokud chcete zvýšit bezpečnost takto konfigurovaného spojení, můžete použít autentikaci pomocí veřejného klíče. Při takovém nastavení nebudete muset zadávat heslo pro vzdáleného uživatele, ale namísto toho budete zadávat heslo pro klíč. Prvním krokem pro takové nastavení je vygenerování klíče na straně klienta, jak je ukázáno níže.
Dvanactka:~ krux$ sh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/Users/krux/.ssh/id_dsa):
Enter passphrase (empty for no passphrase): mojeheslo
Enter same passphrase again: mojeheslo
V předchozím kroce jsme vygenerovali DSA klíče. Teď musíme nakopírovat veřejný klíč na server do adresáře ~/.ssh/authorized_keys2, aby docházelo k autentikaci pomocí takto vygenerovaného veřejného klíče. Následující příkaz kopíruje klíč z klienta na server.
Dvanactka:~ krux$ scp ~/.ssh/id_dsa.pub honza@192.168.2.100:~/.ssh/authorized_keys2
A teď otestujeme připojení pomocí veřejného klíče následujícím příkazem:
Dvanactka:~ krux$ ssh honza@192.168.2.100
Enter passphrase for key '/Users/krux/.ssh/id_dsa':
Last login: Sun Jul 17 18:09:32 2005 from 192.168.2.112
Welcome to Darwin!
[Sedmnactka:~] honza%
Výborně, vše funguje, takže při příštím spojení bude probíhat autentikace pomocí veřejného klíče.
Záplatujeme díry na serveru
Skoro to vypadá, že máme vše hotovo. Ale není tomu docela tak. Doporučuji ještě zabezpečit server firewallem. Pokud máte OS X Panther nebo Jaguar jednoduše zapněte firewall a mělo by vše jet v pohodě. V případě, že máte OS X Tiger, budeme muset provést trošku jiné nastavení firewallu. Apple nedořešil docela nastavení, a tak nemůžeme změnit pravidla pro port 5900 přímo v System Preferences. Osobně využívám nastavení, které jsem před nějakou dobou popsal na serveru Roberta Černého v článku Dynamický firewall. Zcela určitě bude fungovat i pro vás. Opět toto nastavení je celkem spolehlivé a zvyšuje zabezpečení serveru před útoky z venčí.
Ještě mi zbývá poděkovat autorovi článku SSH in OS X ze kterého jsem se inspiroval.
Diskuse k článku
Vložit nový příspěvek Sbalit příspěvky
|
|
|