Linux jako internetová gateway (5)

11. 2. 2004
Doba čtení: 6 minut

Sdílet

V pokračování návodu se již nesoustředíme na instalaci základních komponent nutných k fungování routeru, ale zaměříme se na věci týkající se bezpečnosti a rozšíření nad rámec routeru, proxy, cachovací dns, ftp a podobně. Nebudu se zabývat všemi programy do podrobností, protože podobné články už vyšly, ale zaměřím se jen na instalaci a rozchození na našem routeru. Dnes dojde na bezpečnostní upgrady a ruční kompilaci jádra.

Bezpečnostní upgrady

Již dříve jsme se zmiňovali o vzdálené správě routeru, z hlediska bezpečnosti je to samozřejmě rozumné dělat přes ssh. Jenže u ssh se objevilo také pár děr stejně jako v jádře 2.4.22, které je v této distribuci. Takže si ukážeme, jak toto vyřešit. Nejdříve si stáhneme soubory. Já je tahal z ftp.slackwa­re.com/pub/slac­kware/slackwa­re-9.1/patches, ale lze tahat i z rychlejších ftp serverů, jako třeba ftp.vslib.cz/pub/u­nix/slackware/slac­kware-9.1/patches. Nám stačí stáhnout jen několik balíků:

z adresáře packages

  • openssl-solibs  – balíček týkající se opravy děr v ssh
  • kernel-modules-2.4.24  – moduly pro nové jádro, pokud budete chtít upgradovat i jádro, což doporučuji vzhledem k tomu, že to není vůbec náročné provést
  • kernel-source-2.4.24  – zdrojové kódy, pokud budete chtít kompilovat nové jádro

z adresáře kernels

  • bare.i  – nové předkompilované jádro

Až bude mít soubory stažené a nahrané na router, stačí se přihlásit jako root a v adresáři, kam jste soubory nahráli, napsat:

root@thovt:~# upgradepkg openssl-solibs-0.9.7c-i486-2.tgz 

A o zbytek se postará program sám, smaže staré věci, nahradí je novými a v přehledu nainstalovaných balíčků se vám objeví už jen nové. Přehled získáte dvěma způsoby, buď volbou view v pkgtool, a nebo jednoduššeji a rychleji výpisem adresáře /var/adm/packages, kde se nachází přehled toho, co je nainstalováno a co každý nainstalovaný balíček obsahuje.

Při upgradu jádra je úkonů o něco více. Nejdříve si nahrajeme do adresáře boot nové jádro a někam na router balíček kernel-modules-2.4.24, abychom pak mohli nainstalovat nové moduly, protože ty stávající nám už fungovat nebudou. Ještě musím upozornit, že toto lze provádět pouze z konzole, ne na dálku, po nabootování nového jádra bez nových modulů vám totiž nebude běžet síť!

Můžeme použít jádro bare.i, které jsme si stáhli, a nebo můžete použít některá z jader, která jsem předpřipravil:

Jediná výhoda použití těchto jader je v tom, že jsou kompilovaná pro jiné procesory než bare.i. Bare.i je totiž kompilováno pro 486, a pokud máte třeba Pentium, tak tímto jádrem ztrácíte až 30% výkonu procesoru. Ale pozor, neděste se. Poznáte to pouze v případech, kdy procesor vytěžujete třeba kryptací při ipsecovém spojení nebo vytvářením mp3. Takže v našem případě, tedy snad kromě ipsecu a stroje, který bude dělat bránu pro 70 počítačů, cachovat dns a provozovat squid, můžete klidně ponechat jádro bare.i. Tato jádra jsem kompiloval tak, že jsem vzal config z jádra bare.i a pouze změnil typ procesoru; vy, kdo nevíte, o jakém configu mluvím, nezoufejte, za chvíli se o tom dozvíte. No a pokud přesně nevíte, jaký typ procesoru máte, dozvíte se to zde:

root@thovt:~# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 5
model           : 4
model name      : Pentium MMX
stepping        : 3
cpu MHz         : 167.049
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : yes
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr mce cx8 mmx
bogomips        : 333.41

Jádro si tedy nakopírujeme do adresáře boot a jméno zkrátíme tak, aby mělo maximálně 14 znaků. Ještě lepší je nastavit práva k tomuto souboru jen pro čtení a vlastníka na roota, pro ty, kteří nevědí, jak se to dělá a jak to má vypadat:

root@thovt:~# mv -v /home/ftp/kernel2.4.24-pentium-mmx /boot/kernel2.4.24-p `/home/ftp/kernel2.4.24-pentium-mmx' -> `/boot/kernel2.4.24-p'
root@thovt:~# chown root:root /boot/kernel2.4.24-p
root@thovt:~# chmod 400 /boot/kernel2.4.24-p
root@thovt:~# ls -l /boot/kernel2.4.24-p
-r--------    1 root     root      1234539 Jan 24 11:18 /boot/kernel2.4.24-p 

Pak editujeme /etc/lilo.conf, aby se nové jádro mohlo nahrát. Doplníme:

image = /boot/kernel2.4.24-p
  root = /dev/hda1
  label = kernel2.4.24
  read-only

Vysvětlovat to snad nemusím. Jen připomenu, že label nesmí mít mezery a tento název, pokud se boot nového jádra zdaří, napíšeme k hodnotě default. Pokud jste ještě jiné než defaultní jádro nedávali, tak vám hodnota default úplně chybí. Dopište ji prostě třeba pod timeout a výchozí jádro má název Linux, bude to tedy default=Linux. Pak lilo spustíme, to aby se nám odkaz na jádro zapsal do zaváděcího sektoru disku, takhle to vypadá:

root@thovt:~# lilo
Added Linux *
Added kernel2.4.24
root@thovt:~#

Pak už zbývá jen rebootovat počítač a při startu nenechat natáhnout původní jádro, ale vybrat jádro nové a nechat nabootovat. Pokud se jádro natáhlo a vy se můžete nalogovat do počítače, je vše v pořádku a můžeme pokračovat v upragu modulů. Pokud se to nepovedlo a počítač se kousnul s hláškou kernel panic, rebootujte, vyberte jiné jádro a zkuste to znovu. Právě pro tento případ jsme si nechali ještě i staré jádro v záloze. Stát se to může třeba jako u mě, že můj procesor se nějak nesnáší s jádrem s podporou MMX, i když píše, že je MMX :-)

Řekněme si tedy, že nové jádro se nám spustilo a běží, upgradujeme tedy moduly. Dělá se to podobně jako při upgradu ssh:

root@thovt:~# upgradepkg /home/ftp/kernel-modules-2.4.24-i486-1.tgz 

Pak si v lilo.conf změníme defaultní kernel na náš nový, nezapomeneme lilo spustit!!! A ještě jednou rebootujeme, abychom zjistili, jestli nám router naběhne a bude fungovat i se stítí a vším ostatním, co tam má být spuštěno. Další informace k lilu můžete nalézt třeba zde.

ict ve školství 24

Kompilace jádra

Pokud si přece někdo bude chtít jádro zkompilovat sám, ukážeme si, co je k tomu potřeba. Nainstalujte si následující balíky:

Tabulka č. 542
kategorie balíček
D bin86
D binutils
A findutils
D gcc
D gcc-g++
D gcc-objc
L glibc-2.3.2
K kernel-source (instalujte zdrojáky buď 2.4.22, ty jsou na cd, nebo 2.4.24 a ty si musíte stáhnout, viz začátek s ftp.slackwa­re.com)
D hernel-headers (nebojte se, jádro 2.4.24 vám půjde zkompilovat i s hlavičkami z jádra 2.4.22)
D m4
D make
L ncurses

Pokud máte vše nainstalováno, přejděte to adresáře /usr/src/linux a zadejte make menuconfig. Spustí se menu na výběr komponent, které budeme chtít dát do nového jádra. Po ukončení výběru se vše uloží do konfiguračního souboru .config, to je ten, o kterém byla řeč výše. Tedy pokud chceme třeba jen změnit typ procesoru u jádra bare.i, zkopírujeme si soubor config z adresáře bare.i, dáme ho sem, spustíme menuconfig a máme nastavení z jádra bare.i. Nesmíte ale zapomenout na tečku na začátku názvu souboru, mimo jiné způsobí, že soubor není standardně viditelný. Pokud máme config hotový, napíšeme make dep;make clean;make bzImage, já tyto tři příkazy dávám takto za sebe, aby se vykonaly všechny a já je nemusel hlídat. Po ukončení kompilace nalezneme nové jádro zde: /usr/src/linux/arch/i386/boot/bzImage. Ještě uvedu odkazy na podrobnější rozbory kompilace jádra, Triky pro začátečníky a Jak rychlý je váš počítač (přímo nesouvisí).

Autor článku

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