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í:
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.