Obsah

JMÉNO

make-ssh-known-hosts - podle informací z DNS vytvoří soubor ssh_known_hosts

POUŽITÍ

make-ssh-known-hosts
[--initialdns počáteční_dns]
[--server domain_name_server]
[--subdomains čárkami_oddělený_seznam_poddomén]
[--debug ladící_úroveň]
[--timeout timeout_pro_ssh]
[--pingtimeout timeout_pro_ping]
[--passwordtimeout timeout_při_vyžádání_hesla]
[--notrustdaemon]
[--norecursive]
[--domainnamesplit]
[--silent]
[--keyscan]
[--nslookup cesta_k_programu_nslookup]
[--ssh cesta_k_programu_ssh]
doména [take_regexp [remove_regexp]]"

POPIS

Program make-ssh-known-hosts je skript napsaný v jazyce Perl verze 5. Slouží pro vytvoření souboru /etc/ssh/ssh_known_hosts, ve kterém program ssh hledá ssh klíče veřejně známých počítačů. Program ssh normálně nepřipouští přihlášení s použitím autentizace pomocí souborů rhosts nebo /etc/hosts.equiv, pokud server nezná klíč klientského počítače. Klíče počítačů jsou použity k zabránění útokům typu man-in-the-middle.

Kromě souboru /etc/ssh/ssh_known_hosts ssh také používá uživatelské soubory $HOME/.ssh/known_hosts. Tento soubor je použit pouze pro ty počítače, na které se přihlašuje určitý uživatel, ale které nejsou v globálním souboru. Soubor /etc/ssh/ssh_known_hosts by měl být udržován správcem systému tak, aby obsahoval klíče všech počítačů v uzlu, na které je možné se přihlásit pomocí ssh.

Program make-ssh-known-hosts nejdříve dotazem na master domain name server domény zjistí seznam všech počítačů v doméně. Master domain name server je hledán dotazem na SOA záznam domény na počátečním domain name serveru (který může být zadán volbou --initialdns). Master domain name server může být také zadán přímo volbou --server.

Po získání seznamu počítačů se program make-ssh-known-hosts pokusí získat veřejný klíč jednotlivých počítačů v doméně. Připojuje se na ssh port, aby zkontroloval, zda je počítač v provozu, a potom na vzdáleném stroji zkusí použitím ssh spustit příkaz cat /etc/ssh/ssh_host_key.pub. V případě úspěchu je zjištěno, že vzdálený stroj má správně nainstalované ssh, a zároveň je získán veřejný klíč vzdáleného počítače, který bude uložen do /etc/ssh/ssh_known_hosts. Protože make-ssh-known-hosts bývá obvykle spouštěn dříve než mají vzdálené stroje soubor /etc/ssh/ssh_known_hosts, bude pravděpodobně nutné pro povolení přístupu na počítače použít RSA autentizaci.

Jestliže příkaz z nějakého důvodu selže, zkontroluje, zdali ssh klient získal veřejný klíč ze vzdáleného počítače v úvodním dialogu, a pokud ano, vypíše odpovídající položku. Jestliže byla zadána volba --notrustdaemon, bude položka vypsána jako vykomentovaná.

Parametr domain_name je jméno domény, pro kterou má být generován soubor. Implicitně příkaz make-ssh-known-hosts také zpracuje všechny poddomény dané domény. V uzlech, které budou potřebovat zahrnout několik domén do svých souborů /etc/ssh/ssh_known_hosts, bude muset být program make-ssh-known-hosts spuštěn znovu pro jednotlivé domény. Výsledky potom musí být zkombinovány do výsledného souboru.

Parametr take_regexp je regulární výraz jazyka Perl, kterým lze omezit, jaké počítače z domény mají být kontrolovány. S regulárním výrazem se porovnávají DNS záznamy zapsané ve tvaru "jméno=hodnota". Položky jsou odděleny znaky newline, a Perlovský test na regulární výraz je prováděn v multiline módu a bez rozlišování malých a velkých písmen. Multiline mód znamená, že lze použít regulární výraz jako "^wks=.*telnet.*$" pro vyběr všech počítačů, jejichž WKS (well known services) záznamy obsahují hodnotu "telnet".

Parametr remove_regexp se použije podobným způsobem, ale počítače, které vyhovují tomuto regulárnímu výrazu, nebudou přidány (parametr může být použit například pro odfiltrování počítačů PC a Mac, které mají v DNS položku HINFO: "^hinfo=.*(mac|pc)").

VOLBY

--initialdns počáteční_dns-i počáteční_dnsUrčuje domain name server použitý pro počáteční dotaz na SOA
záznam zpracovávané domény.

--server domain_name_server-se domain_name_serverUrčuje master domain name server domény, který bude použit
pro získání informací o všech počítačích v dané doméně.

--subdomains seznam_poddomén-su seznam_poddoménČárkami oddělený seznam poddomén, které jsou přidávány ke
jménům počítačů. Například když seznam_poddomén je ",foo, foo.bar, foo.bar.zappa, foo.bar.zappa.hut.fi", potom když počítač foobar je přidán do souboru /etc/ssh/ssh_known_hosts bude mít uvedeny aliasy "foobar, foobar.foo, foobar.foo.bar, foobar.foo.bar.zappa, foobar.foo.bar.zappa.hut.fi". Implicitně se použijí všechny části jmen kromě předposlední ode všech počítačů. (Poslední část je obvykle kód země, proto aliasy jako foobar.foo.bar.zappa.hut nemají význam.)

--debug ladící_úroveň-de ladící_úroveňNastaví úroveň ladění. Implicitní hodnota je 5, větší hodnoty
dávají rozsáhlejší výstup. Použití velkých hodnot (jako 999) způsobí velmi rozsáhlý ladící výstup.

--timeout timeout_pro_ssh-ti timeout_pro_sshTimeout pro příkaz
ssh. Implicitní hodnota je 60 sekund.

--pingtimeout timeout_pro_ping-pi timeout_pro_pingTimeout pro zkoušení pingu na ssh port. Implicitní hodnota je 3
sekundy.

--passwordtimeout timeout_při_vyžádání_hesla-pa timeout_při_vyžádání_heslaTimeout při dotazu na přihlašovací heslo pro příkaz ssh. Implicitně
se o žádná přihlašovací hesla nežádá. Použití hodnoty 0 znamená žádný timeout pro dotazy na přihlašovací heslo.

--notrustdaemon-notrJestliže příkaz
ssh selže, použije se veřejný klíč uložený v souboru local_known_hosts a předpokládá se, že je to správný klíč pro daný počítač. Jestliže toto volba není zadána, budou takto získané položky ve vygenerovaném souboru /etc/ssh/ssh_known_hosts přidány jako vykomentované.

--norecursive-norProgram
make-ssh-known-hosts bude získávat pouze klíče pro danou doménu, ne pro její poddomény.

--domainnamesplit-doPro získání seznamu poddomén se bude rozdělovat pouze jméno domény,
nikoli i jméno počítače. Implicitně je rozklad proveden na každé jméno počítače. Jestliže je doména zappa.hut.fi a jméno počítače je foo.bar, potom se implicitně přidají položky "foo, foo.bar, foo.bar.zappa, foo.bar.zappa.hut.fi", zatímco s touto volbou se přidají položky "foo.bar, foo.bar.zappa, foo.bar.zappa.hut.fi").

--silent-siNebude nic vypisovat.

--keyscan-kVypíše seznam všech počítačů ve formátu "ipaddr1,ipaddr2,...ipaddrn
počítač.doména.co, počítač,ipaddr1,ipaddr2,všechny_ostatní_položky". Tento výstup může být použit programem ssh-keyscan pro získání klíčů.

--nslookup cesta_k_programu_nslookup-n cesta_k_programu_nslookupCesta k programu
nslookup.

--ssh cesta_k_programu_ssh-ss cesta_k_programu_sshCesta k programu
ssh, včetně všech voleb.

PŘÍKLADY

Příkaz

example# make-ssh-known-hosts cs.hut.fi > /etc/ssh/ssh_known_hosts

najde všechny veřejné klíče počítačů v doméně cs.hut.fi a uloží je do souboru /etc/ssh/ssh_known_hosts přičemž rozkládá doménová jména jednotlivých počítačů.

Příkaz

example% make-ssh-known-hosts hut.fi '^wks=.*ssh' > hut-hosts

najde v doméně hut.fi a jejích poddoménách, které mají vlastní name servery (cs.hut.fi, tf.hut.fi, tky.hut.fi), všechny počítače, které mají v DNS uvedenu službu ssh a uloží jejich veřejné klíče do souboru hut-hosts. Vyžaduje, aby všechny počítače, na kterých běží sshd, měly v DNS WKS záznam obsahující službu ssh. Pokud jste zvlášť neupravovali DNS, bude vhodnější použít příkaz

example% make-ssh-known-hosts hut.fi '^wks=.*telnet' > hut-hosts

který zkontroluje počítače které mají v DNS uvedeno, že na nich běží telnet démon. Používá implicitní seznam poddomén.

Příkaz

example% make-ssh-known-hosts hut.fi 'dipoli.hut.fi' '^hinfo=.*(mac|pc)' > dipoli-hosts

najde všechny počítače v doméně hut.fi, které jsou v poddoméně dipoli.hut.fi (všimněte si, že doména dipoli.hut.fi nemá vlastní name server, takže její položky jsou na serveru pro hut.fi), a které nejsou Macintoshe nebo PC.

SOUBORY

/etc/ssh/ssh_known_hosts    Globalní seznam veřejných klíčů počítačů

VIZ TÉŽ

ssh(1) , sshd(8) , ssh-keygen(1) , ping(8) , nslookup(8) , perl(1) , perlre(1)

AUTOR

Tero Kivinen <kivinen@hut.fi>

KOPÍROVÁNÍ

Je povoleno vytvářet a distribuovat doslovné kopie tohoto manuálu, za předpokladu, že ve všech kopiích bude informace o autorských právech a tato poznámka.

Je povoleno vytvářet a distribuovat modifikované kopie tohoto manuálu za stejných podmínek jako doslovné kopie, za předpokladu, že celá výsledná odvozená práce bude distribuována podle podmínek identických těmto požadavkům.

Je povoleno vytvářet a distribuovat překlady tohoto manuálu do jiného jazyka za výše zmíněných podmínek pro modifikované verze, s tou výhradou, že tato poznámka o kopírování může být obsažena v překladu schváleném autorem místo v angličtině.

Takže ještě totéž anglicky:

COPYING

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the the author instead of in the original English.


Obsah

[^obsah^]

xzarsky@fi.muni.cz