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.slackware.com/pub/slackware/slackware-9.1/patches, ale lze tahat i z rychlejších ftp serverů, jako třeba ftp.vslib.cz/pub/unix/slackware/slackware-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 sshkernel-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éstkernel-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.
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:
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.slackware.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í).