Internet Info, s.r.o. Lupa Root Měšec Podnikatel DigiZone Slunečnice Vitalianew Bomba Navrcholu Weblogy Jagg Woko Dobrý web Computer.cz SK: MojeLinky

Hlavní navigace

ssh intimně aneb úvod do paranoii

Co jsou to ssh klíče a podrobný BFUnesní návod k použití. Jaké verze ssh, protokolů a šifrování jsou na trhu k mání a jak je přimějeme k tomu, aby si spolu povídaly, jak se bezpečně připojit z ciziny a různé další hinty dobré hospodyňky. Ale většina z toho se do prvního dílu nevešla :).

[kecy]

Disclaimer: Ideologie může být místy nepodložená (prostě můžu kecat kraviny), ale praktické návody by měly fungovat :). Kde si nejsem jistá a nic mě zatím nenutilo si danou vec oveřit, přikládám poznámku NO WARRANTY s přiměřeným počtem vykřičníků. Pokud jsem na něco nepřišla, rozhodně to neznamená, že to nejde, takže mi nenadávejte, nýbrž buďte rádi, že jste se dozvěděli alespoň něco :), případně přidejte své komentáře a hinty do diskuse. Nehodlám zde přednést nic objevného, pouze dát do kupy užitečné věci, které jednak (ze zkušenosti) mnoho lidí vůbec neví, druhak já sama je sice znám a používám, ale kdybych to neměla sepsáno, musím to opakovaně hledat v man-pagích a věřím, ze mnozí z vás jsou na tom podobně. Text přehledně rozčlením na sekce [data] a [kecy], aby se vám v něm později snadněji hledalo :).

Milé děti,

předpokládám, že už jste všichni velcí, takže víte, že slova telnet a ftp jsou zapovězena (o BBSkách a anonymous ftp serverech se teď samozřejmě nebavíme), vaše hesla mají alespoň N znaků z K různých tříd, nemáte je napsaná na monitoru a občas si je měníte. Ale pro bezpecnost a pohodlí práce toho lze samozřejme udělat i více, zde si přiblížíme lehčí i težší paranoidní postupy při práci s ssh (z hlediska klienta, konfigurací serveru se zabývat nebudeme).

Slovníček – pojmovníček – análníček

OpenSSH x SSH

Existuje spousta různých ssh, na Linuxu potkáte s největší pravděpodobnosti jedno z těchto dvou – OpenSSH, které je součástí všech normálních distribucí a používá ho 99% lidí, a ssh, které není open (říkejme mu SSH, jak se obecně značí) a používá ho johanka. ssh malými písmeny zůstane jako označení obecného protokolu. SSH má nekomerční verzi (tou se zde budeme zabývat, komerční toho údajně umí více) s takovou zajímavou licencí, co jsem pochopila (NO WARRANTY!), tak většina normálních lidí se do toho vejde, např. pod Linuxem a Free-, Open-, NetBSD ho můžete používat nekomerčně i komerčně, akorát musíte odevzdat každé druhé hříbě, chci říct jakékoliv patche apod., co na SSH napíšete, a oni je pak mohou libovolně distribuovat. Ale jinak se mi tohle ssh líbí víc, zdrojáky k němu jsou, lépe se s ním pracuje, je v něm méně děr a vůbec, co se s váma budu hádat, je to moje věc :). To jen na vysvětlenou, proč většina postupů bude prezentována pro oba druhy ssh. K tomu, jak si OpenSSH a SSH povídají mezi sebou navzájem, se (doufám) dostaneme k závěru (jen nevím, kterého dílu..).

[/kecy][data]

Jaké ssh máte, zjistíte buď lokálně (klient)

johanka@atrey:~/.ssh$ ssh -V
OpenSSH_3.4p1 Debian 1:3.4p1-1, ssh protocols 1.5/2.0,
 OpenSSL 0x0090603f

johanka@arc:~$ ssh -V
SSH: SSH Secure Shell 3.2.0 (non-commercial version)
 on i686-pc-linux-gnu

nebo vzdáleně (daemon na serveru)

johanka@atrey:~$ telnet localhost 22
Trying 195.113.31.123...
Connected to atrey.karlin.mff.cuni.cz.
Escape character is '^]'.
SSH-1.99-OpenSSH_3.4p1 Debian 1:3.4p1-1

johanka@atrey:~$ telnet arc.ms.mff.cuni.cz 22
Trying 195.113.18.218...
Connected to arc.ms.mff.cuni.cz.
Escape character is '^]'.
SSH-2.0-3.2.0 SSH Secure Shell (non-commercial)

Dá se předpokládat, že klient i daemon budou ze stejného vrhu, ale nikdy nevíte :). Za domácí úkol zkuste poznat, které je které ;))). Ulovili-li jste něco úplně jiného, samozřejmě se pochlubte do diskuse. SSH-x.xx značí verzi protokolu, kterou server podporuje (viz dále), 1.99 znamená, že 1 i 2.

[/data][kecy]

Pokud budu mluvit o tom, že dané ssh umí či defaultně dělá to či ono, vždy se tím rozumí přiměřeně aktuální verze, tedy u OpenSSH 3.4p1 a výše (nejnovější je tuším 3.5p1), u SSH 3.2.0 a výše. Mimochodem (thanx to qiq), verze OpenSSH se číslují tak, že vždy nejprve vyjde OpenSSH x.x (pro OpenBSD), poté k číslu verze přibyde p.x, což znamená portable, tedy i pro ostatní systémy.

OpenSSH si svůj (user-specific) bordýlek (klíče apod.) kompostuje (a taky ho tam posléze hledá) v adresáři ~/.ssh, SSH v ~/.ssh2, takže v tomto směru se nepotlučou, pěstujete-li obojí v jednom teráriu (k tomu se taky možná časem dostaneme :)).

Protokol 1 (1.x) x Protokol 2

Mezi těmito protokoly není (z uživatelského pohledu) žádný fatální rozdíl, protokol 1 používá pouze šifrování RSA, dvojka umí podle specifikace DSA a ve většině implementací i RSA, navíc jsou v ní vyladěné některé bugy a znemožněné některé druhy útoků, tedy je o fous bezpečnější. Aktuální OpenSSH podporuje 1 i 2, SSH pouze 2, potřebujete-li (např. kvůli scp kompatibilitě, viz někdy příště) protokol 1, můžete si z www.ssh.com stáhnout některou ze starších verzí a k aktuální dvojkové ji dobastlit. Jaký protokol upřednostňuje vaše OpenSSH, zjistíte v /etc/ssh/ssh_con­fig. Hledejte nezakomentovanou řádku, která bude vypadat něco jako Protocol 1,2 nebo Protocol 2,1 :). Pokud tam žádná taková není, zjistíte default experimentálně :) (já experimentálně zjistila 2, ale NO WARRANTY). Použití vytouženého protokolu v OpenSSH si buď určíte v souboru config (viz někdy příště), nebo forcenete parametrem –2 nebo –1. Já osobně mám raději protokol 2, proto jsou klíčové postupy vyzkoušeny pouze pro něj, použití pro 1 (je velmi podobné až stejné) naznačím.

RSA x DSA (též DSS)

Jak jsem už uvedla, při použití ssh protokolu 1 nemáte na výběr, u 2 většinou ano. V zásadě je to jedno, RSA bylo dřív chráněno patentem nebo čímsi takovým, teď už není, bezpečnostní díru v SSL také zatím na ssh nikdo neportoval :). Ohledně klíčů serveru (viz dále), SSH ukazuje pri konexi fingeprinty z DSA public klíčů, OpenSSH se dohodne, defaultně RSA, lze nastavit (to abyste se nedivili, ze vám váš oblíbený server podle typu klienta hlásí různé fingerprinty, ale víc než tři různé by být neměly :)). Ohledne klíčů uživatelů, SSH defaultně generuje DSA a umí i RSA, OpenSSH umí také obě a musíte mu vytouženou šifru explicitně zadat opšnou. Já preferuji DSA, a proto budou příklady pro něj (RSA verze lze odvodit triviální modifikací).

Klíč x Fingerprint

Klíč je obecně věc větší dvoudílná a skládá se z public a private části (vzory ssh klíčů všech možných kategorií). Fingerprint je obecně věc malá jednodílná jednořádková, generovaná jednoznačně z daného public klíče, aby se pomocí ní pohodlněji kontrolovala shodnost oněch public klíčů, a vypadá nějak takto

1d:b6:94:d5:e1:5f:c3:cd:7d:07:53:3d:48:b7:86:c2

nebo takto

xukip-sihoh-hisah-kevad-fyzyt-bulah-cyzuz-mezid-bereg-lovys-pixux

Jde o jiné otisky téhož public klíče, prvnímu formátu se říká SHA-1 (podle algoritmu, kterým je generován) a používá jej OpenSSH, druhému se říká Bubble Babble, je generován pomocí MD5 a používá jej SSH. OpenSSH umí i bublavý MD5 fingerprint, zatímco SSH SHA-1 neumí (NO WARRANTY).

První akční paranoidní postup – kontrola public klíče serveru.

Já to teda v životě nedělala, takže jsem dost nevěřila :), když se kamarád z mé chroustalky logoval k sobě domů a hned vytáhl análníček, kde si kontroloval fingerprint stroje. Ale chcete-li být úderní, je to dobrý způsob, jak zamezit odposlechnutí (zneužití, podchycení, rozvrácení, pozvracení…) konexe. Pokud public key serveru, na který se logujete, sedí, vydáváte se všanc pouze potenciálním škůdcům sedícím přímo na vašem stroji nebo onom serveru (resp. tomu, kdo ukradl privátní klíč serveru, ale to většinou už znamená, že se tam usídlil :)).

Jistě ty dialogy o klíči serveru znáte, při prvním připojení z místa A na místo B se vás ssh samo zeptá, jestli se vám fingeprint místa B líbí, pak si public klíč uloží a vysílá warningy jen tehdy, když se změní. Pozor, pokud se klíč změnil, v 99% případů to neznamená žádný útok, nýbrž pouze to, ze stroj byl jemněji či hruběji přeinstalován. Pokud o tom víte, nic se neděje, ale ssh občas prudí a nechce vás pustit dál, v tom případě pomůže (if OpenSSH) smazání příslušných řádek (začínajících jménem cílového stroje) v ~/.ssh/known_hosts (já nejsem troškař a rovnou smažu celé known_hosts, kdo to tam má hledat :)) resp. (if SSH) smazání příslušných souborů v ~/.ssh2/hostkeys.

[/kecy][data]

Fingerprint public klíče svého stroje zjistíte takto (server = stroj, na který se chci pojit, zrovna na něm sedím, klient = stroj, ze kterého si chci pojit):

Server i klient OpenSSH (vetšina případů):

echo /etc/ssh/ssh_host_*|xargs -n 1 ssh-keygen -l -f

Dostanu tři klíče a jeden z nich při konexi musí sedět, případně zvlášť takto (popořadě protokol 1 (RSA), 2 DSA, 2 RSA):

ssh-keygen -l -f /etc/ssh/ssh_host_key.pub
ssh-keygen -l -f /etc/ssh/ssh_host_dsa_key.pub
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub

Server i klient SSH (default protokol 2 DSA):

ssh-keygen2 -F /etc/ssh2/hostkey.pub

Server OpenSSH, klient SSH (default protokol 2 DSA):

ssh-keygen -B -f /etc/ssh/ssh_host_dsa_key.pub

Server SSH, klient OpenSSH:

Tady je to složitější, protože SSH neumí generovat OpenSSH fingerprinty, ale my paranoici si poradíme (nebo se poradíme, a to s ještě horšími paranoiky :)). Následuje Laceův akční postup:

Klíč serveru zjistíme normálně, jako bychom se chtěli pojit z SSH.

johanka@arc:~$ ssh-keygen2 -F /etc/ssh2/hostkey.pub
Fingerprint for key:
xodev-sabuf-cafun-laruf-venob-zuzum-mekyc-logyb-nyfat-husiv-tuxux

Připojení se z neznámého klienta s OpenSSH:

johanka@atrey:~$ ssh arc
The authenticity of host 'arc.ms.mff.cuni.cz (195.113.18.218)'
 can't be established.
DSA key fingerprint is
 7a:04:e5:41:6b:8a:5d:3f:95:50:89:03:95:8a:9e:64.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'arc.ms.mff.cuni.cz,195.113.18.218'
 (DSA) to the list of known hosts.
johanka@arc.ms.mff.cuni.cz's password:

akceptujeme fingeprint, ale nezadáme heslo, nýbrž Ctrl+C

johanka@atrey:~$ ssh-keygen -B -l -f ~/.ssh/known_hosts | grep arc
1024
xodev-sabuf-cafun-laruf-venob-zuzum-mekyc-logyb-nyfat-husiv-tuxux
 arc.ms.mff.cuni.cz,195.113.18.218

Vidíme, že bublavý fingerprint sedí, takže spustíme ssh znovu a tentokrát už se bez obav přihlásíme.

[/data][kecy]

Příště konečně dostanete slibovaný návod na výrobu klíčů (má to 17 kilo, tak bych to sem nenarvala :)).

Extra special thanx to: Lace, Qiq

Domácí úkol: Windoze (která nepoužívám, takže se mi po tom nechtělo pátrat) si public klíče strojů také někam ukládají a pak mají kecy, když se změní. Kam, a jak je odsmahnout, víte to někdo?

Drahomíra Johanka Spoustová

johanka

Autorka je doktorandka na MFF UK, kde bádá v oboru počítačové lingvistiky. Ve volném čase se věnuje zejména vykrmování manžela, buddhismu diamantové cesty a četbě všeho druhu.

Školení: JavaScript a AJAX

Akademie Root
  • tvorba základníchskriptů pro dynamický web
  • řídící struktury, jednotlivé typy, funkce, objekty
  • propojení JavaScriptu a AJAX s HTML
  • využití moderních funkcí prohlížečů

Detailní informace o kurzu...

Ohodnoťte jako ve škole:
Průměrná známka 2,92
Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Přehled názorů

Reseni domaciho ukolu :-)
Mmm 25. 3. 2003 00:22
├ 
Re: Reseni domaciho ukolu :-)
NOD 25. 3. 2003 09:18
└ 
Re: Reseni domaciho ukolu :-)
Iany 25. 3. 2003 20:17
Verze ssh
BFU 25. 3. 2003 07:50
├ 
Re: Verze ssh
reggae 25. 3. 2003 08:22
│
└ 
Re: Verze ssh
lzap 31. 3. 2003 16:18
├ 
Re: Verze ssh
Mti. 25. 3. 2003 08:55
│
└ 
Re: Verze ssh
NOD 25. 3. 2003 09:15
├ 
Re: Verze ssh
Brain 25. 3. 2003 09:00
└ 
Re: Verze ssh
legrab3tL 25. 3. 2003 09:02
Žvatlavost?!
Vlastimil Ott 25. 3. 2003 09:31
├ 
Re: Žvatlavost?!
pajout 25. 3. 2003 09:57
├ 
Re: Žvatlavost?!
mgolem 25. 3. 2003 10:02
├ 
Re: Žvatlavost?!
Johanka 25. 3. 2003 10:07
│
├ 
Re: Žvatlavost?!
Fergol 25. 3. 2003 10:18
│
├ 
Re: Žvatlavost?!
dusko 25. 3. 2003 10:35
│
├ 
Re: Žvatlavost?!To asi ne!!!
sent 25. 3. 2003 13:50
│
├ 
Re: Žvatlavost?!
seth 25. 3. 2003 14:56
│
└ 
Re: Žvatlavost?!
anonymní uživatel 25. 3. 2003 20:44
│
 
├ 
Re: Žvatlavost?!
cfrketx 28. 3. 2003 11:58
│
 
├ 
Re: Žvatlavost?!
Jan Moravec 2. 4. 2003 21:44
│
 
└ 
Re: Žvatlavost?!
networ 29. 5. 2003 12:03
├ 
Re: Žvatlavost?!
Karel 25. 3. 2003 10:08
│
├ 
Re: Zvatlavost?!
Johanka 25. 3. 2003 10:41
│
│
├ 
Re: Zvatlavost?!
Antonín Kolísek 25. 3. 2003 16:06
│
│
│
└ 
Re: Zvatlavost?!
VM 25. 3. 2003 16:42
│
│
└ 
Re: Zvatlavost?!
cfrketx 28. 3. 2003 12:08
│
└ 
Re: Žvatlavost?!
Michal Kara 25. 3. 2003 10:43
│
 
├ 
UG.CZ: TO je clanek o SSH, diky!
dip 25. 3. 2003 11:07
│
 
├ 
UG.CZ: TO je clanek o SSH, diky!
dip 25. 3. 2003 11:08
│
 
└ 
Re: Zvatlavost?!
Johanka 25. 3. 2003 11:10
│
 
 
├ 
Re: Zvatlavost?!
Michal Kara 25. 3. 2003 12:04
│
 
 
└ 
Re: Zvatlavost?!
jk 27. 3. 2003 00:33
│
 
 
 
└ 
Re: Zvatlavost?!
Johanka 27. 3. 2003 09:15
│
 
 
 
 
└ 
Re: Zvatlavost?!
jj 10. 10. 2005 19:14
├ 
Re: Žvatlavost?!
bhole 25. 3. 2003 11:09
│
└ 
Re: Zvatlavost?!
Johanka 25. 3. 2003 11:18
│
 
├ 
Re: Zvatlavost?!
Petr Jakubec 25. 3. 2003 19:12
│
 
└ 
Re: Zvatlavost?!
tomasgn 27. 3. 2003 08:01
├ 
Re: Žvatlavost?!
rADOn 25. 3. 2003 11:37
│
└ 
Re: Žvatlavost?!
gappa 25. 3. 2003 16:04
└ 
Re: Žvatlavost?!
pavel 'goldenfish' kysilka 25. 3. 2003 23:25
ukladanie klucov
macko 25. 3. 2003 10:15
Pěstování (Open)SSH
jiri 25. 3. 2003 10:25
└ 
Re: Pěstování (Open)SSH
Dex 25. 3. 2003 10:51
 
└ 
Re: Pěstování (Open)SSH
Dendak 25. 3. 2003 11:46
 
 
└ 
Re: Pěstování (Open)SSH
VM 25. 3. 2003 16:44
 
 
 
└ 
Re: Pěstování (Open)SSH
Dex 25. 3. 2003 17:38
 
 
 
 
└ 
Re: Pěstování (Open)SSH
Petr Jakubec 25. 3. 2003 21:18
Dost kecu; k veci!
anonymní uživatel 25. 3. 2003 10:49
├ 
Re: Dost kecu; k veci!
Johanka 25. 3. 2003 10:53
│
└ 
Re: Dost kecu; k veci!
seth 25. 3. 2003 15:18
│
 
└ 
Re: Dost kecu; k veci!
martin 26. 3. 2003 16:30
└ 
Re: Dost kecu; k veci!
Jan 25. 3. 2003 11:45
 
└ 
Re: Dost kecu; k veci!
wizard 25. 3. 2003 13:07
 
 
└ 
Re: Dost kecu; k veci!
Jan Lace Kratochvil 25. 3. 2003 16:03
 
 
 
└ 
Re: Dost kecu; k veci!
martin 26. 3. 2003 16:42
 
 
 
 
└ 
Re: Dost kecu; k veci!
Wejn 26. 3. 2003 21:55
Opravdu st'avnate... :o)
skrj 25. 3. 2003 11:57
└ 
Re: Opravdu st'avnate... :o)
gmmns 25. 3. 2003 13:20
bez titulku
Marys 25. 3. 2003 12:12
;)
Montyjack 25. 3. 2003 13:50
Styl článku :)
Jan Forman 25. 3. 2003 13:54
docela umirneny styl ...
Yokotashi 25. 3. 2003 14:11
Literární forma
Honza 25. 3. 2003 14:16
Ano! Pekny clanocek!
Pet 25. 3. 2003 14:39
Dobra prace...
V. 25. 3. 2003 14:40
Jeste ke kvalite clanku...
Georg 25. 3. 2003 14:43
└ 
Re: Jeste ke kvalite clanku...
Yeti 25. 3. 2003 18:17
OpenSSH x SSH
petrs 25. 3. 2003 14:46
└ 
Re: OpenSSH x SSH
Cohen 26. 3. 2003 00:16
styl
se3 25. 3. 2003 14:46
Tohle je Root!!
Joe 25. 3. 2003 15:25
└ 
Re: Tohle je Root!!
rob 25. 3. 2003 16:19
 
└ 
Re: Tohle je Root!!
kaMIL 25. 3. 2003 17:06
Prudicum
Johanka 25. 3. 2003 17:03
├ 
Re: Prudicum
codel 25. 3. 2003 17:51
├ 
Re: Prudicum
nishkam 25. 3. 2003 19:32
├ 
Re: Prudicum
Jan Stanicek 25. 3. 2003 19:39
├ 
Re: Prudicum
Martin 26. 3. 2003 15:55
└ 
Re: Prudicum
Jiri Borik 28. 3. 2003 16:09
Hmm super pobaveni
DuNSuN 25. 3. 2003 17:04
├ 
Re: Hmm super pobaveni
sojka 28. 8. 2005 19:39
└ 
Re: Hmm super pobaveni
sojka 28. 8. 2005 19:40
 
└ 
Re: Hmm super pobaveni
jak soj 28. 8. 2005 19:42
Neber si to tak...
Davidak 25. 3. 2003 17:30
└ 
Re: Neber si to tak...
johanka 25. 3. 2003 23:45
Hmm... tak se taky pridam
Jan Havlicek 25. 3. 2003 17:43
katovna
mq 25. 3. 2003 18:04
└ 
Re: katovna
anonymní uživatel 25. 3. 2003 21:11
 
├ 
Re: Re: katovna
vlk 26. 3. 2003 09:19
 
└ 
Re: re
mq 26. 3. 2003 09:38
Dobrý :-)))
Martin 25. 3. 2003 18:17
diky za clanek
Chris 25. 3. 2003 20:08
Nazor na flamewar
Pafal 25. 3. 2003 20:11
└ 
Re: Nazor na flamewar
Cohen 26. 3. 2003 00:34
trochu od veci (jako vetsina tehle diskuse)
maca 25. 3. 2003 21:01
└ 
Re: dost od veci (jako vetsina tehle diskuse)
nishkam 26. 3. 2003 00:28
Prudicum II
Johanka 26. 3. 2003 09:34
├ 
Re: Prudicum II
Pavel Vancura 26. 3. 2003 10:56
│
└ 
Re: Prudicum II
Johanka 26. 3. 2003 12:55
│
 
└ 
Re: Prudicum II
Jan Havlicek 26. 3. 2003 18:30
│
 
 
└ 
Re: Prudicum II
Johanka 26. 3. 2003 21:37
│
 
 
 
└ 
Re: Prudicum II
Letus 27. 3. 2003 12:53
│
 
 
 
 
└ 
Re: Prudicum II
anonymní uživatel 27. 3. 2003 13:09
└ 
Re: Prudicum II
pavel 'goldenfish' kysilka 27. 3. 2003 04:12
Johanka je dobra!!!
Jirka 26. 3. 2003 16:09
problem s pripojenim pres ssh
mao 26. 3. 2003 22:22
Globální reply
jk 27. 3. 2003 01:00
└ 
Re: Globalni reply
Johanka 27. 3. 2003 09:10
 
└ 
Re: Globalni reply
jk 27. 3. 2003 09:58
Hare Johnka!
Vitex 27. 3. 2003 16:27
├ 
Re: Hare Johnka!
Johanka 27. 3. 2003 18:11
│
└ 
Re: Hare Johnka!
Dex 28. 3. 2003 10:50
└ 
Re: Hare Johnka!
frodo 29. 3. 2003 02:13
 
└ 
Re: Hare Johnka!
Johanka 29. 3. 2003 13:01
mazani known_hosts
Cohen 28. 3. 2003 23:59
├ 
Re: mazani known_hosts
Johanka 29. 3. 2003 12:59
└ 
Re: mazani known_hosts
jk 29. 3. 2003 18:13
Johančin styl
Clock 30. 3. 2003 11:28
Další z věrných
Karel 30. 3. 2003 12:15
       
Zasílat nově přidané příspěvky e-mailem