Linux jako internetová gateway (3)

28. 1. 2004
Doba čtení: 4 minuty

Sdílet

Dnes se podíváme na to, jak router ovládat z dálky přes telnet nebo ssh.

Dálková správa

Zprovozníme si dálkovou správu. Budeme k tomu používat telnet server, realizován in.telnetd, v linuxové terminologii daemon, a ten bude spouštěn programem inetd. Tento daemon řídí spouštění všech ostatních daemonů pro síťové služby, třeba i ftp. Novějším daemonem xinetd se zabývat nebudeme, tento stačí. Editujte tedy soubor  /etc/inetd.conf.

Služby, které mají na začátku řádku #, jsou zakomentované a nespouštějí se. Měli byste dosáhnout stavu, že spuštěné jsou jen ty služby, které skutečně potřebujete, takže zde může být jen jeden řádek a ten se týká telnetu.

Telnet je služba poněkud napadnutelná a odposlechnutelná, proto bych ji třeba na Internetu nepoužil, ovšem v rámci lokální sítě, kde nehrozí nebezpečí odposlechu rootovského hesla, bych řekl, že to nevadí, ale stejně si tuto službu ještě dodatečně zabezpečíme. Pokud budete chtít dělat správu z Internetu, použijeme sshd, ale pro jednodušší ovládání teď použijeme telnet.

Abychom se na náš router mohli zalogovat, musíme ještě povolit logování jako root přes telnet, editujte soubor /etc/securetty a zde zrušte # u několika, třeba tří pts/x. V tomto souboru je seznam bezpečných terminálů pro nalogování roota, jako výchozí nastavení je ttyx, což je konzole s klávesnicí. ttySx jsou seriové porty, ttyp, paralelní a pts telnet… Pokud toto máme, ještě musíme nechat inetd načíst naši novou konfiguraci a zároveň si ověříme, zda běží.

Ještě odbočím, abyste zjistili, jaké služby váš server nabízí, a také, zda byla vaše rekonfigurace úspěsná, napište netstat -a, rychlejší je parametr -an, nepřekládá čísla na jména, třeba u služeb, že 23 je telnet, nebo doménová jména místo IP adres. Zobrazí se tabulka a v ní jsou služby, i s omezeními přístupu, a u které je listen, tam server poslouchá a může se s ním navazovat spojení.

root@thovt:~# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address  Foreign Address  State
tcp        0      0 0.0.0.0:21     0.0.0.0:*        LISTEN
tcp        0      0 0.0.0.0:23     0.0.0.0:*        LISTEN
tcp        0    138 192.168.1.1:23 192.168.1.2:1027 ESTABLISHED
udp        0      0 0.0.0.0:68     0.0.0.0:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type  State I-Node Path
unix  4      [ ]   DGRAM       64     /dev/log
unix  2      [ ]   DGRAM       9860
unix  2      [ ]   DGRAM       67 

To ale neznamená, že služba skutečně funguje, protože pokud tam máte třeba FTP a FTP server není vůbec nainstalovaný a rozchozený, pak se tam prostě přes FTP nenalogujete. Nyní vám to vypsalo spoustu služeb, mnoho z nich není vůbec nainstalováno, toto je nějaké výchozí nastavení, jdeme tedy restartovat inetd.

Napište ps aux a objeví se vám seznam procesů, které právě běží, a jedním z nich by měl být i náš inetd. Pokud jej nemůžete najít, zkuste napsat ps aux | grep inetd, tento výpis vám vrátí jeden řádek, ten, co obsahuje slovo inetd (grep lze použít k libovolnému příkazu):

root@thovt:~# ps aux | grep inetd
root 81 0.0 1.7 1412 492 ? S 2003 0:00 /usr/sbin/inetd 

Podrobným rozebíráním položek se zde zabývat nebudeme, na to je třeba Linux dokumentační projekt nebo manuálové stránky, man ps, ale pro nás je podstatné následující – číslo v druhém sloupci a samozřejmě poslední sloupec, kde je napsáno, o jaký program se jedná. To číslo se nazývá PID a s jeho pomocí program můžeme třeba násilně ukončit nebo nechat znovu načíst konfiguraci. PID si programy ještě ukládají na disk do textového souboru, to je kvůli tomu, aby se nemusel takto pracně vždy hledat a dal se třeba použít ve skriptech. Ukládá se do adresáře /var/run. Zadejte:

root@thovt:~# cat /var/run/inetd.pid

81

Jak je vidět, oba výpisy nám vrátily stejnou hodnotu, a to číslo 81. Nyní můžeme daemon restartovat, a to dvěma způsoby, zde pozor na velikost písmen!!!

kill -HUP 81

nebo

kill -HUP `cat /var/run/inetd.pid`

Při použití druhého způsobu odpadá zjišťování PIDu pomocí ps. Pokud byste nedali parametr -HUP, program by se okamžitě ukončil.

Nyní je server restartován a my si to ověříme pomocí netstatu, jak jsem psal výše. Měla by spousta služeb zmizet a stačí, když zůstane jen jedna.

Nyní bychom se na náš server již měli telnetem zalogovat, tedy pokud nám ping proběhl dobře a síť nám funguje, popsáno výše. Chvíli to může trvat, než se spustí in.telnetd pomocí inetd, a pak se objeví logovací obrazovka, zalogujete se a jste tam. Pokud toto funguje, již není klávesnice a monitor u našeho routeru k ničemu a vše se může dělat na dálku. Ale ještě ji tam chvilku nechte, kdyby se vám stalo, že se další konfigurací odříznete :-)

Teď se můžeme nalogovat na náš router odkudkoliv, ale to by mohlo být i nebezpečné, takže si to trochu zabezpečíme. K tomu slouží dva soubory hosts.allow a hosts.deny v adresáři etc. Politika psaní pro oba soubory je následující:

ict ve školství 24

Tabulka č. 540
seznam_daemonů : seznam počítačů nebo sítí
in.telnetd : 192.168.1. #povolí/zakáže přihlášení na počítač telnetem ze sítě 192.168.1.
all : 192.168.1.2 #povolí/zakáže přihlášení na všechny služby z počítače 192.168.1.2
all : all #povolí/zakáže všechno

Zcela určitě patří do souboru hosts.deny all:all, vše se zakáže, ale ještě před tím nesmíme zapomenout dát povolení pro naši správu do hosts.allow, například all:192.168.1., jako to mám já, jinak se odřízneme a nastupuje konzole a oprava hosts.allow. O dalším zabezpečení si budeme povídat v části věnované firewallu. Hosts allow a deny používají všichni daemoni, takže pozor na to, až budete rozcházet nějakou službu a ona vám nebude běžet!

Ještě popíši rozchození správy přes ssh. To je velice prosté, nainstalujete prostě balíček sshd, ten se zapíše do startovacích skriptů a při startu se sám bude spouštět, bez inetd, ale lze ho spouštět i přes něj. Při prvním spuštění ssh serveru se vygenerují klíče, samy, a vše je připraveno pro nalogování se.

Autor článku

V současné době pracuje jako správce linuxových systémů na Univerzitě Pardubice.