Ruční nastavení sítě
Nastavení sítě se skládá z identifikování stroje vlastní IP adresou, nastavení výchozí brány a IP adresy name serveru, který překládá doménové názvy na IP a obráceně.
K přiřazení IP adresy k síťové kartě slouží příkaz ifconfig
. Přečtěte si man ifconfig
. Interface = název karty, který je odvozen od ovladače. Ty jsou označeny podle výrobce, příklad pro síťovou kartu:
srot# dmesg | grep Ethernet
rl0: Ethernet address: 00:50:fc:a8:a2:89
Víme tedy, že síťová karta je rl0
(RealTek). Použijeme statickou adresu (v tomto případě IP místní sítě):
srot# ifconfig rl0 inet 10.0.0.1 netmask 255.255.255.0
Pro ověření funkčnosti si zkuste otestovat, zdali karta reaguje – ping 10.0.0.1
. Dále musíme mít nastavenu výchozí bránu. Ta přesměrovává provoz dál, jestliže nemá cílovou adresu v dosahu (což by splňovala např. jiná adresa místní sítě).
srot# route add default 10.0.0.138
Výchozí brána je poté zapsána do routovací/směrovací tabulky. Vypíšeme si položku pro výchozí bránu z tabulky:
srot# netstat -r -f inet | grep default
default 10.0.0.138 UGSc 3 0 rl0
V případě, že byste si vypsali celou tabulku, uvidíte spoustu položek. Jestli chcete pochopit položky v routovací tabulce, doporučuji Handbook, man netstat
je dost těžko stravitelný.
Pro funkční převod doménových názvů na IP a obráceně je důležité míti v souboru /etc/resolv.conf
funkční IP name serveru.
srot# echo "nameserver 212.158.128.2" > /etc/resolv.conf
Nyní už funguje i pingování na domény, o převod se stará námi definovaný name server.
srot# ping -c 2 root.cz
PING root.cz (81.31.5.5): 56 data bytes
64 bytes from 81.31.5.5: icmp_seq=0 ttl=58 time=31.151 ms
64 bytes from 81.31.5.5: icmp_seq=1 ttl=58 time=30.147 ms
...
Poslední věcí, kterou bychom chtěli nastavit, je název stroje – hostname.
srot# hostname srot.patridosberu.cz
Automatické nastavení sítě
Automatické nastavení sítě při startu systému má opět na starosti /etc/rc.conf
a tyto položky:
defaultrouter="10.0.0.138"
hostname="srot.patridosberu.cz"
ifconfig_rl0="inet 10.0.0.1 netmask 255.255.255.0"
V případě, že nehovíte příkazovému řádku, použijte příkaz /stand/sysinstall
, a ten vám nabídne dialogové okno, které jste mohli vidět při instalaci systému.
Důležité kroky po instalaci
Je možné, že pár dní po instalaci vašeho systému byla objevena bezpečnostní chyba v jeho části. Předtím je nutno zjistit vaši verzi FreeBSD pomocí uname
:
srot# uname -r
4.9-RELEASE
Další vaše kroky by měly směřovat na stránku Release information a odkaz Errata pro vaši verzi. Na této stránce je důležité si pečlivě přečíst Security Advisories. Nutno ještě zmínit větu na začátku errata pro verzi 4.9: „This errata document for FreeBSD 4.9-RELEASE will be maintained until the release of FreeBSD 4.10-RELEASE.“ Tzn. jestliže jste instalovali jakoukoli starší verzi než poslední release, měli byste projít errata pro vaši verzi i všechny vyšší! Článek vysvětlující, jak se označují verze ve FreeBSD, najdete zde. Stránka, která vám trochu ulehčí orientaci, je Security. Z errata pro svou verzi 4.9 vím o chybách FreeBSD-SA-03:19,
FreeBSD-SA-04:02, FreeBSD-SA-04:04 a FreeBSD-SA-04:05. Ze Security zjistím, že se k mé verzi vztahují i další chyby: FreeBSD-SA-04:07.cvs, FreeBSD-SA-04:08.heimdal, FreeBSD-SA-04:09.kadmind, FreeBSD-SA-04:10.cvs, FreeBSD-SA-04:11.msync,
FreeBSD-SA-04:12.jailroute, FreeBSD-SA-04:13.linux.Možnosti, jak opravit tyto chyby, jsou dvě. Buď aplikovat příslušný patch podle návodu, nebo upgradovat na vyšší verzi, která již tyto chyby nemá. Když se podíváme na FreeBSD-SA-04:13.linux:
Corrected: 2004-06-30 17:31:44 UTC (RELENG_4)
2004-06-30 17:34:38 UTC (RELENG_5_2, 5.2.1-RELEASE-p9)
2004-06-30 17:33:59 UTC (RELENG_4_10, 4.10-RELEASE-p2)
2004-06-30 17:33:24 UTC (RELENG_4_9, 4.9-RELEASE-p11)
2004-06-30 17:32:24 UTC (RELENG_4_8, 4.8-RELEASE-p24)
Zjistíme, že bychom měli mít tedy poslední verzi 4.9 větve, což je 4.9-RELEASE-p11. Ono to -p11 rovněž značí počet záplat v dané release. Když spočítáme námi zjištěné chyby, dojdeme rovněž k č. 11.
Upgrade
Upgrade lze provést dvěma způsoby. První způsob využívá instalačního média novější release verze, tedy např. upgrade z nového CD 4.10 přes nainstalovanou verzi 4.7. Při tomto postupu lze upgradovat POUZE na vyšší podverzi-release. Druhým způsobem je stažení zdrojových kódů příslušné verze, jejich zkompilování a nainstalování. Provedeme tedy upgrade druhým způsobem na poslední release „stabilní větve“, teda na 4.10, resp. automaticky na poslední verzi s opravami bezpečnostních chyb. Druhý způsob nám rovněž dovoluje určitou optimalizaci, např. kompilaci pro procesor i686.
Stažení zdrojových kódů
Samotné stažení zdrojových kódů provedeme programem cvsup
. Ten není součástí systému, ale můžeme jej nainstalovat jako binární balíček. (Dále provedeme znovunačtení souborů ve spustitelných cestách – PATH.)
srot# pkg_add -r cvsup-without-gui
srot# rehash
Samotné zdrojové kódy se nacházejí v /usr/src
. Jestliže je adresář prázdný, zdrojáky nemáte. Nejjednodušší cestou je stáhnout veškeré zdrojáky pomocí cvsup
, to může ale být i 300 MB. Program cvsup
tedy distribuuje a updatuje kolekci zdrojových kódů. Informace udávající, co má být updatováno, se defaultně nachází v /usr/sup
v tzv. checkouts files. Dle záznamů v checkouts files cvsup maže/aktualizuje místní kolekci oproti CVSup serveru.
Jestliže jste si tedy někdy dříve nainstalovali zdrojáky z CD, pak nemáte patřičné checkouts files. Díky tomu pak je možné, že cvsup
nesmaže nějaký důležitý soubor. Jestliže jsou zdrojáky relativně čerstvé, můžete spustit cvsup
, a ten pomocí checksums zjistí, jakou verzi kolekce souborů máte. Více na toto téma zde.
V případě našeho článku jsme instalovali minimální distribuci – bez zdrojových kódů. Pustíme se tedy do konfigurace cvsup
. Program cvsup
čte návod, jak pracovat, z konfiguračního souboru, tzv. supfile. Příkladové supfiles se nacházejí v /usr/share/examples/cvsup
. V našem případě nás bude zajímat soubor standart-supfile
:
srot# cp /usr/share/examples/cvsup/standard-supfile /root/
Soubor zeditujeme tak, aby řádky začínající *
obsahovaly následující:
*default host=cvsup.cz.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=RELENG_4_10
*default delete use-rel-suffix
*default compress
src-all
Tento supfile je pln vyčerpávajících komentářů, přesto letmo popíši. První řádek je jasný, jedná se o místní mirror cvsup serveru. Druhý řádek ( *default base
) definuje základnu-rodičovský adresář pro sup
složku obsahující vlastní informace cvsup (např. chechouts files) – díky tomuto řádku tedy v /usr/sup
. Řádek s
*default prefix
zadává základnu pro adresář s kolekcemi zdrojáků. V případě zdrojáků systému, které se ukládají do adresáře src
, tedy /usr/src
. Na dalším řádku nás zajímá položka tag=RELENG_4_10
. Ta určuje, která verze se bude pomocí cvsup
udržovat – bude to tedy vždy nejaktuálnější z 4.10. Poslední řádek definuje, jaké části zdrojáků budou zahrnuty – src-all
– je zástupce pro všechny části, dále v
src
, což vlastně budou podadresáře v /usr/src
. Podrobný lidsky čitelný popis cvsup
najdete v Handbooku.
Stažení kolekce tedy provedeme příkazem:
srot# cvsup standard-supfile
Po činnosti, jejíž dobu jste odvodili z rychlosti vašeho internetového připojení, zjistíte, že se vám /usr/src
pěkně zaplnil. Nyní je čas na přečtení souboru /usr/src/UPDATING
, zda se teoreticky od vaší starší verze něco zásadně nezměnilo, co by vám vývojáři rádi sdělili, nebo jaké chyby byly v této verzi opraveny.
Optimalizace
Předtím, než se pustíme do samotného znovusestavení systému, zeditujeme soubor make.conf
, který má mimo jiné na starosti optimalizaci kompilace systému.
srot# cp /etc/defaults/make.conf /etc
Soubor obsahuje opět tunu komentářů, nás však momentálně nejvíce zajímají tyto položky (pro detailnější popis man make.conf
):
CPUTYPE=i686
CFLAGS= -O -pipe
COPTFLAGS= -O -pipe
INSTALL=install -C
NO_X= true # do not compile in XWindows support (e.g. doscmd)
MAKE_IDEA= YES # IDEA (128 bit symmetric encryption)
USA_RESIDENT= NO
Zkompilování a instalace nové verze
srot# cd /usr/src
srot# make buildworld
Po tomto příkazu se vytvoří nový adresář /usr/obj
, který bude obsahovat všechny dočasné soubory – dočasnou strukturu nového systému, začne kompilovat vlastní kompilátor, knihovny a následně vlastní systém. Proces musí skončit bez chyb. Jestliže se během sestavování vyskytly chyby, před znovusestavením proveďte tyto kroky:
srot# chflags -R noschg /usr/obj/usr
srot# rm -rf /usr/obj/usr
srot# cd /usr/src
srot# make cleandir
srot# make cleandir
Mně se např. jednou ukončilo sestavování s chybami kvůli make -j4 buildworld
, kdy to můj obstarožní šrot nezvládl.
Dalším krokem je jádro. Nechápu tu hysterii ohledně sestavování jádra (hlavně u Linuxu). Postup je to jasný a přímočarý. Na FreeBSD se nic neodentrovává, ale editují se konfigurační soubory. Ty se nacházejí v /usr/src/sys/i386/conf
. Jedná se o soubory GENERIC
a LINT
. Soubor GENERIC
je defaultní konfigurací soubor pro sestavení jádra, LINT
obsahuje všechny možné položky, které mohou být do vašeho konfiguračního souboru přidány. Soubor GENERIC
needitujte přímo, ale zkopírujte jej – většinou podle názvu stroje.
srot# cd /usr/src/sys/i386/conf
srot# cp GENERIC SROT
Před samotnou editací je dobré znát něco o svém hw. Můžete si projít pomocí dmesg
záznam, který vypisuje jádro při bootování a který se nachází ve /var/run/dmesg.boot
. Určitě je lepší, aby konfigurační soubor byl obecnější, než abyste něco zapomněli. Vždy se můžete vrátit a patřičné volby do jádra doplnit, resp. některé věci odebrat. Protože je soubor dlouhý, představím pouze položky, které jsem na svém systému upravil a přidal:
----upraveno---------
machine i386
cpu I686_CPU
ident SROT
----pridano----
options NETSMB #SMB/CIFS requester
options NETSMBCRYPTO #encrypted password support for SMB
options LIBMCHAIN #mbuf management library
options LIBICONV
options IPFILTER #ipfilter support
options IPFILTER_LOG #ipfilter logging
options IPSTEALTH #support for stealth forwarding
options TCPDEBUG
options QUOTA #enable disk quotas
pseudo-device vn #Vnode driver (turns a file into a device)
pseudo-device snp #Snoop device - to look at pty/vty/etc..
pseudo-device ccd 4 #Concatenated disk driver
options VGA_WIDTH90 # support 90 column modes
options VESA
options SC_DISABLE_DDBKEY # disable `debug' key
options SC_DISABLE_REBOOT # disable reboot key sequence
options SC_PIXEL_MODE # add support for the raster text mode
V knize BSD Hacks je jednoduchý tip, jak si uložit provedené změny v konfiguračním souboru kernelu. Nejdříve smažete patřičné řádky a provedete:
srot# echo "Toto jsem smazal" > changes.txt & diff GENERIC SROT >> changes.txt
Pak z LINT
přidáte vaše dodatečné volby a provedete:
srot# echo "A toto jsem tam pridal z LINTu" >> changes.txt & diff GENERIC SROT >> changes.txt
Nic světoborného, ale může se hodit. Nyní se pustíme do kompilace našeho nového kernelu.
srot# cd /usr/src && make buildkernel KERNCONF=SROT
Jestliže všechno dobře dopadne, pokračujeme instalací nového jádra. Pokud jste předtím dávali na jádro nějaké příznaky souborů, např. schg
, udělejte chflags noschg /kernel
, popř. běží-li securelevel >=1, budete se muset přepnout do single-user-mode.
srot# cd /usr/src && make installkernel KERNCONF=SROT
Nyní je čas, aby vaše nové jádro podstoupilo skutečnou zkoušku. Restartujeme systém a pak vyzkoušíme, zda vše pod novým jádrem funguje…
Pomocí příkazu shutdown now
se přepneme do jednouživatelského režimu a dokončíme instalaci nově zkompilovaného systému z /usr/obj
.
# cd /usr/src && make installworld
Konfigurační soubory
Po celé této úmorné práci nás čeká ještě jeden zásadní krok. Je možné, že se rovněž s novou verzi změnil i obsah některých konfiguračních souborů, mohl být přidán řádek s novou volbou. Nyní je čas na paranoidní zálohu /etc
, tedy:
srot# cp -Rp /etc /etc.old
FreeBSD pro tento update konfiguračních souborů přichází s nástrojem mergemaster
. Ten vezme novou verzi /etc
z /usr/src/etc
a zkopíruje ji do /var/tmp
. Totéž následuje, jestliže se změnily devices – obsah adresáře
/dev
. Poté mergemaster porovná tento nový /etc
s aktuálním v systému a začne svou práci. Jestliže se některý soubor změnil, mergemaster
vám na obrazovku vytiskne „jejich průnik“ s patřičnými komentáři. V případě, že do nové verze aktuálního souboru byla přidána nějaká řádka, bude začínat +
(plus). Jestli byla odebrána, tak -
(mínus). Svůj výstup
mergemaster
ukončí nabídkou k akci: d
– smaže dočasný, i
– instaluje dočasný, m
– spojuje dohromady. V případě, že jste schopni si konfigurační soubory opět upravit, zvolte ‚ i
‘. Pokud znáte
diff
můžete zvolit i ‚ m
‘, v případě chyby však budete ještě rádi hledat svoji zálohu /etc
.
Dále, jestliže by se změnily nějaké devices, změnil by se i skript /dev/MAKEDEV
, který slouží k jejich správnému vytvoření. Pokud mergemaster
oznámí změnu, spusťte jej.
Toť vše. Nyní reboot a můžete se poté pomocí uname -v
nabažit vaší nové verze.
Závěr
V příštím dílu si řekneme o instalaci binárních balíčků a kompilaci software ze zdrojových kódů. Rovněž se objeví tipy na pár security konferencí, abyste byli up-to-date.