V dnešní době, kdy je více a více počítačů instalovaných do prostředí sítě,
je často nezbytné, aby se k nim dalo vzdáleně přistupovat. Obvykle to
znamená, že se uživatel přihlásí – zašle přihlašovací jméno a heslo. Pokud
jsou však tyto údaje zasílány přes síť jako prostý text, může se stát, že je
cestou někdo odposlechne a získá přístup k účtu uživatele, aniž by o tom
oprávněný uživatel věděl. Kromě toho, že útočník takto získá přístup k
souborům uživatele, může se dostat i k účtu uživatele root nebo napadat další počítače. V minulosti
se přihlašovalo na vzdálené počítače programem telnet, který nenabízí žádné
bezpečnostní mechanismy pro utajení přenášených údajů. Podobné chování mají
i další často používané programy pro vzdálený přístup, např. ftp.
SSH naproti tomu nabízí ochranu přenášených informací. Šifruje jak přihlašovací údaje (login a heslo), tak i veškerou další komunikaci mezi počítači. Útočník stále může odposlouchávat, ale bez znalosti šifrovacího klíče nemůže získat původní obsah zasílaných dat. SSH tedy umožňuje bezpečně komunikovat se vzdálenými systémy přes nezabezpečenou síť, jako je např. Internet. Sada programů, které se v systému SUSE Linux starají o zabezpečení vzdáleného přístupu, se jmenuje OpenSSH.
SUSE Linux instaluje balíček OpenSSH automaticky. Programy ssh, scp a sftp jsou pak dostupné jako alternativa programů telnet, rlogin, rsh, rcp a ftp. Ve výchozím nastavení je síťový přístup k systému možný jen pomocí OpenSSH nástrojů a pouze v případě, že je povolen na firewallu.
Program ssh vám umožní připojovat se na vzdálené stroje a interaktivně
pracovat. Nahrazuje telnet i rlogin. Program slogin je jen symbolický
odkaz na ssh. Například na vzdálený počítač sun se můžete
přihlásit pomocí příkazu
ssh sun.
Vzdálený systém vás požádá o heslo (které máte nastavené na vzdáleném
počítači sun).
Po úspěšném přihlášení můžete pracovat s příkazovým řádkem na vzdáleném
stroji, nebo spouštět interaktivní aplikace, např. YaST. Pokud máte
na vzdáleném počítači nastavené jiné přihlašovací jméno než na lokálním
počítači, můžete se přihlásit s použitím jiného přihlašovacího jména
příkazem
ssh -l augustynka sun
nebo
ssh augustynka@sun.
Navíc můžete pomocí ssh spouštět příkazy na vzdáleném systému, stejně
jako s programem rsh. Na následujícím příkladě si ukážeme, jak spustit
příkaz uptime na počítači sun, a jak
vytvořit adresář se jménem tmp. Výstup programů
se zobrazí na terminálu lokálního počítače earth.
ssh slunce "uptime; mkdir tmp" tux@slunce's password: 1:21pm up 2:17, 9 users, load average: 0.15, 0.04, 0.02
Uvozovky jsou nezbytné, aby byly obě instrukce zaslány jedním příkazem. Jen tak se druhý příkaz spustí na počítači sun.
Program scp kopíruje soubory na vzdálený počítač. Je to bezpečná a
šifrovaná náhrada za program rcp. Například příkaz
scp dopis.tex sun:
zkopíruje soubor dopis.tex z aktuálního adresáře
lokálního počítače earth na počítač sun. Pokud
máte na počítači sun jiné uživatelské jméno než na počítači
earth, zadejte uživatelské jméno pro vzdálený počítač ve
formátu username@host. Pro tento příkaz neexistuje
volba -l.
Po zadání správného hesla začne scp přenášet soubor a zobrazuje při tom stav přenosu jako rostoucí řadu hvězdiček. Navíc zobrazuje i odhadovaný čas trvání přenosu. Tyto výstupy můžete vypnout použitím parametru -q.
Program scp také zvládá rekursivní kopírování celých adresářů. Příkaz
scp -r src/ sun:backup/
zkopíruje obsah adresáře src/ včetně jeho podadresářů
do adresáře backup/ na počítači sun.
Pokud tento adresář neexistuje, scp ho automaticky vytvoří.
Parametrem -p řeknete scp, aby neměnil časové údaje u souborů. Volba -C zapne kompresi dat při přenosu, takže sníží velikost přenášených dat (zvýší se tím ale zatížení procesoru).
Program sftp lze použít místo scp pro bezpečný přenos souborů. Během sftp relace můžete používat některé z příkazů známých z ftp. Program sftp se hodí hlavně pro situace, kdy předem neznáte názvy souborů na vzdáleném počítači.
Pro práci s SSH klienty ssh a scp musí v pozadí běžet SSH server (démon)
naslouchající na TCP/IP portu 22. Démon při prvním
spuštění generuje tři páry klíčů. Každý pár sestává ze soukromého a
veřejného klíče. Proto se jedná o tzv. proceduru založenou na veřejném
klíči. Aby byla zaručena bezpečnost komunikace pomocí SSH, musí mít přístup
k soukromému klíči pouze administrátor systému. Ve standardní instalaci jsou
přístupová práva k souborům podle toho nastavena. Soukromé klíče jsou
potřebné pouze lokálně pro démona SSH a nesmíte je nikomu poskytnout.
Veřejné části klíče (soubory s příponovou .pub) jsou
zasílány klientům požadujícím spojení; mohou je číst všichni uživatelé.
Spojení je vždy iniciováno klientem. Čekající démon si s klientem nejdříve vymění identifikační data (zjistí jakou verzi protokolu, případně jaký program a port, používá protější strana). Protože na požadavek odpovídá potomek hlavního procesu démona SSH, může současně běžet více různých SSH spojení.
Pro komunikaci mezi serverem a klientem podporuje program OpenSSH verzi
1 i 2 protokolu SSH. Nově instalovaný systém SUSE Linux používá standardně
verzi 2. Pokud chcete u staršího systému po aktualizaci i nadále používat
verzi 1, držte se instrukcí popsaných v souboru
/usr/share/doc/packages/openssh/README.SuSE. V tomto
dokumentu také najdete informace o tom, jak v několika krocích přejít
z prostředí verze SSH 1 na verzi SSH 2.
Pokud používáte SSH verze 1, zasílá server svůj veřejný klíč stroje a klíč serveru, který je SSH démonem znovu vytvářen každou hodinu. Oba umožňují SSH klientovi zašifrovat libovolně zvolený klíč relace, který je zaslán SSH serveru. SSH klient také serveru oznámí, jaký šifrovací algoritmus používá.
Verze 2 protokolu SSH nevyžaduje klíč serveru. Obě strany používají pro výměnu klíčů algoritmus Diffie-Helman.
Pokud chcete rozšifrovat klíč relace, musíte znát soukromý klíč stroje
i serveru, které nelze odvodit z veřejných klíčů. Pouze kontaktovaný SSH
démon může rozšifrovat klíč relace pomocí svých soukromých klíčů (více
viz man
/usr/share/doc/packages/openssh/RFC.nroff). Počáteční
fázi relace můžete podrobně sledovat, pokud zapnete u klienta SSH tzv.
"užvaněný" režim volbou -v.
Výchozí je verze 2 SSH protokolu. Verzi 1 můžete vynutit přepínačem
-1. Klient si po prvním kontaktu se serverem ukládá
jeho veřejný klíč stroje do souboru ~/.ssh/known_hosts.
Tak se zabrání útokům cizích serverů s falešnými jmény a IP adresami
(tzv. "man-in-the-middle" útok). Takový útok je odhalen buď díky
klíči stroje nepřítomnému v ~/.ssh/known_hosts
nebo díky neschopnosti serveru rozšifrovat klíč relace kvůli tomu, že
nemá odpovídající soukromé klíče.
Doporučujeme vám zálohovat na bezpečné místo veřejný i soukromý klíč
(uloženy jsou v /etc/ssh/). Můžete tak odhalit
manipulace s klíči, a pokud budete muset reinstalovat systém, můžete opět
použít staré klíče. Tak ušetříte uživatele znepokojivých varování o změně
klíče. Pokud se v případě varování o změně klíče ověří, že se skutečně
jedná o správný SSH server, musí uživatel odstranit existující záznam
o tomto serveru ze souboru ~/.ssh/known_hosts.
Vlastní autentizace, v nejjednodušší formě, sestává z vložení hesla, jak
bylo uvedeno výše. Cílem SSH bylo přinést snadno použitelný, ale bezpečný,
software. Protože cílem je nahradit rsh a rlogin, SSH musí poskytovat
autentizační metodu vhodnou pro každodenní použití. SSH toho dosahuje pomocí
dalšího páru klíčů generovaného uživatelem. Balíček SSH k tomuto účelu
obsahuje pomocný program ssh-keygen. Příkazem
ssh-keygen -t rsa nebo
ssh-keygen -t dsa se vygeneruje pár
uživatelských klíčů a uživatel je dotázán, do jakého souboru se mají uložit.
Potvrďte standardní název a odpovězte na žádost o zadání hesla.
I když vám program navrhne použít prázdné heslo, je lepší zadat
netriviální heslo o délce 10 až 30 znaků. Potvrďte zopakováním
hesla. Následně se uloží klíče do souborů, v našem příkladě do
id_rsa (soukromý) a
id_rsa.pub (veřejný) a program zobrazí celou
cestu k souborům.
Pro změnu hesla u již vygenerovaných klíčů použijte (podle typu
vašeho klíče) příkaz
ssh-keygen -p -t rsa nebo
ssh-keygen -p -t dsa.
Nyní si na vzdáleném počítači, kam se chcete přihlašovat, uložte
váš veřejný klíč (id_rsa.pub) do souboru
~/.ssh/authorized_keys. Při přihlášení pak
budete dotázáni na heslo ke klíči. Pokud se tak nestane,
překontrolujte, zda jste vše správně uložili.
Tato procedura může vypadat složitěji, než samotné přihlašování
pomocí přihlašovacího jména a hesla. SSH ale nabízí další nástroj,
program ssh-agent, který si pamatuje privátní klíče během sezení.
Celé sezení (X session) se musí spustit jako potomek programu
ssh-agent. Nejjednodušší cestou je nastavit na začátku konfiguračního
souboru .xsession proměnnou
usessh na yes a přihlásit
se přes KDM nebo XDM. Eventuálně spusťte X Window pomocí příkazu
ssh-agent startx.
Nyní můžete používat ssh nebo scp jako obvykle. Pokud jste uložili na vzdálené počítače váš veřejný klíč, nebude po vás systém vyžadovat heslo. Nezapomeňte ale, pokud odejdete od počítače, zamknout váš desktop (např. pomocí xlock).
Veškeré změny SSH protokolu 2 oproti dřívější verzi jsou popsány
v souboru
/usr/share/doc/packages/openssh/README.SuSE.
Kromě vylepšení bezpečnostních mechanismů popsaných výše, SSH také
zjednodušuje používání vzdálených aplikací pro X server. Jestliže
spustíte ssh s parametrem -X,
proměnná DISPLAY se na vzdáleném stroji nastaví na hodnotu počítače,
odkud se přihlašujete, a veškerý výstup X aplikací bude přeposílán
na vzdálený počítač přes existující ssh spojení. Navíc tyto aplikace
spuštěné vzdáleně a zobrazované lokálně nemohou být díky přenosu přes
ssh odposlechnuty útočníkem.
Pokud při spouštění přidáte parametr -A, bude se
ssh-agent autentizační mechanismus přenášet i na stroje, na které
se připojíte. Můžete se tedy bez zadávání hesel přihlašovat na další
počítače. Stačí abyste všude uložili váš veřejný klíč.
Oba tyto mechanismy jsou standardně vypnuty, ale lze je kdykoliv
zapnout v systémovém souboru /etc/ssh/sshd_config
nebo v uživatelském souboru ~/.ssh/config.
Program ssh můžete také použít pro přesměrování TCP/IP spojení. V následujícím příkladě SSH přesměruje SMTP a POP3 port:
ssh -L 25:sun:25 earth
Tedy každé SMTP spojení, které půjde na port 25 (SMTP) počítače earth, je přes šifrovaný kanál přesměrováno na SMTP port počítače sun. To se může hodit, pokud nepoužíváte SMTP server s funkcemi SMTP-AUTH nebo POP-before-SMTP. Z jakéhokoliv místa připojeného k síti lze veškerý poštovní provoz přesměrovat na hlavní poštovní server. Stejně tak lze přesměrovat POP3 spojení (port 110) z počítače earth na počítač sun pomocí příkazu:
ssh -L 110:sun:110 earth
Oba dva příkazy musíte spustit jako superuživatel
root, protože jde
o přesměrování privilegovaných portů. Elektronická pošta je
normálními uživateli odesílána a přijímána pomocí existujícího SSH
spojení. SMTP a POP3 host musí být nastaven na
localhost. Další informace naleznete v manuálových
stránkách k jednotlivým programům a v adresáři
/usr/share/doc/packages/openssh.