Hlavní navigace

Začínáme bezpečně s FreeBSD (7)

Jiří Bělka 3. 8. 2004

V minulém dílu jsme probrali upgrade FreeBSD. Dnes probereme různé metody instalace software třetích stran na FreeBSD a zmíníme se i o možnosti dodatečné ochrany před instalováním bugového software. Dále si řekneme, do jakých emailových konferencí o bezpečnosti se přihlásit, abyste byli stále informováni o případných bezpečnostních chybách.

Bezpečnostní konference

Hlavní emailovou konferencí o bezpečnostních chybách ve FreeBSD je freebsd-security-notifications@freebsd.org. Hlavním obsahem tohoto mailing listu jsou bezpečnostní upozornění – FreeBSD Security Advisory. Jedná se o upozornění na bezpečnostní chybu v systému, které zahrnuje též informace, jaké verze jsou postiženy, popis chyby, útoku a řešení, jak tuto chybu opravit. Nejjednoduššeji se můžete do tohoto listu přihlásit přes webovou stránku FreeBSD Register nebo přímo přes webové rozhraní listu. Nic vám samozřejmě nebrání v tom, abyste se přihlásili klasicky pomocí odeslání emailu na majordomo@FreeBSD.org s textem subscribe FreeBSD-security-notifications v těle zprávy. Projekt FreeBSD nemá nemá zdroje, aby zajišťovat i bezpečnostní servis pro dodatečný software, který může být nainstalovaný. Řešením může být přihlásit se např. do mailing listu BugTraq. V takovém případě ale počítejte s tím, že vám budou docházet i zprávy ohledně software, který jste si nenainstalovali. Přesto ale vývojáři mysleli i na vytížené správce, a tak přišli s nástrojem portaudit. Ten u software instalovaného z portů (zdrojových kódů) kontroluje jeho verzi oproti databázi, zda u něj není známa nějaká chyba. Základem je VuXML – XML aplikace, kterou využívá i OpenBSD.

Dodatečný software

Kromě ruční kompilace zdrojových kódů FreeBSD nabízí dvě možnosti instalace dalších programů. Obě řeší často diskutované závislosti, takže se vám nainstalují i případné další programy, které jsou nutné pro chod. Buď můžete využít předem připravené binární balíčky – tzv. packages, nebo systém portů (ports), což jsou vlastně instrukce pro pohodlné nainstalování software z originálních zdrojáků. (Uživatele Gentoo Linuxu upozorňuji, že základ pro jejich portage systém je převzat z BSD.)

Výhoda balíků je, že je můžete rychle nainstalovat (takto jsme v minulém dílu nainstalovali cvsup) a jsou menší než zdrojové kódy. Na druhou stranu může být package zkompilován s určitým nastavením, které vám nebude vyhovovat.

Samotný port pro určitý program je několik souborů s údaji, jak naložit s originálními zdrojovými kódy, aby běžely na FreeBSD. Tudíž můžete zkompilovat program s vámi požadovanými volbami a optimalizovat jej na váš stroj. Nevýhodou je, že kompilace zabere více času.

Packages

Packages jsou binární balíčky zkompilované z portů. Jak jinak. Balíky můžete získat buď z CD, nebo z FTP. Na instalačním CD jsou umístěny v adresáři /cdrom/packages. V případě FTP jsou umístěny v /pub/FreeBSD/ports/i386/packages-VAŠEVERZE. Samotný adresář je rozdělen do podadresářů, do stromu zcela identického s rozdělením adresáře ports – tomuto rozdělení se říká ports tree.

Jestliže jste si během instalace nenainstalovali porty, můžete vyhledávat programy pouze pomocí webové stránky FreeBSD Ports.

K jejich používání je totiž potřeba soubor /usr/ports/INDEX  – seznam souborů, který se generuje z ports tree nebo může být stažen z Internetu, případně může být součástí nainstalovaných portů z CD.

V případě, že byste ale chtěli lokálně prohledávat balíky s absencí kompletního ports tree, budete potřebovat udělat malý hack. Budete muset získat několik souborů, které vám dovolí stažení každé dvě hodiny hodiny aktualizovaného INDEX souboru – seznamu portů.

V případě, že máte INDEX v /usr/ports, můžete prohledávat ports tree. V adresáři /usr/ports můžete využít příkazy jako make search name=name pro vyhledání jména v názvech portů nebo make search key=keyword pro vyhledání klíčového slova ve více polích (nejen tedy v názvu).

srot# make search name=lsof
Port: lsof-4.72.1
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))
Maint: obrien@FreeBSD.org
B-deps:
R-deps: 

Dle /usr/ports/CHANGES byly k make search přidány další volby. Pro podrobnější info si projděte tento soubor. Vyzkoušíme si např., jak vyhledat porty v sekci sysutils od jednoho českého uživatele:

srot# make search maint=hsn@netmag.cz path=/sysutils/ xname='upti' display=path,info
Path: /usr/ports/sysutils/portindex
Info: Incremental ports INDEX file builder 

Např. portindex je zajímavý nástroj určený k nejen upgradu portů. Povíme se o něm v příštím dílu.

Také můžete k vyhledávání použít příkaz whereis:

srot# whereis silc-client
silc-client: /usr/ports/net/silc-client 

Nyní je čas nainstalovat nějaký package. Před instalací určitého balíku je rovněž vhodné překontrolovat jeho verzi s databází VuXML, jestli neobsahuje nějakou chybu. Ukážeme si tedy instalaci např. programu irssi. Instalování balíčku se provádí pomocí pkg_add, volba -r stáhne z internetu automaticky nejnovější verzi balíku:

srotl# pkg_add -r irssi
Fetching ftp://ftp.freebsd.cz/pub/FreeBSD/ ports/i386/ packages-4.9-release/ Latest/irssi.tgz...    Done.
Fetching ftp://ftp.freebsd.cz/pub/FreeBSD/ ports/i386/ packages-4.9-release/ All/pkgconfig-0.15.0.tgz...    Done.
Fetching ftp://ftp.freebsd.cz/pub/FreeBSD/ ports/i386/ packages-4.9-release/ All/glib-1.2.10_10.tgz...    Done. 

Co se přesně stalo? Na uvedeném příkladě pkg_add stahuje balík z ftp.freebsd.org i jeho závislosti (Run depends). Tato URL je výchozí, sice neexistuje žádný konfigurační soubor pro pkg_add, ale bližší mirror může být nastaven jako proměnná shellu:

srot# setenv PACKAGEROOT ftp://ftp.FreeBSD.cz 

Tuto proměnnou si můžete vložit např. do .cshrc. Dále pkg_add rozbalí do proměnné PKG_TMPDIR balík (je-li tato proměnná definována; jinak postupně zkouší /tmp, /var/tmp a /usr/tmp). Tato volba se vám může hodit i v případě, že máte např. /tmp přimountovaný jakonoexec a chcete definovat jinou PKG_TMPDIR. Balík může rovněž obsahovat instalační skript +INSTALL, který se musí spustit, tento skript je častý u větších balíků, které mají složitější závislosti. Jestliže instalace proběhne úspěšně, je balík zaregistrován do /var/db/pkg/nazev_baliku. Z tohoto zdroje rovněž čte pkg_info, který slouží k výpisu nainstalovaných balíků/portů. Další info  man pkg_add.

Jak již bylo řečeno, přehled nainstalovaných balíků/portů získate buď prohlédnutím adresáře /var/db/pkg, nebo příkazem pkg_info:

srot# pkg_info
cvsup-without-gui-16.1h General network file distribution system optimized for    CVS
glib-1.2.10_10 Some useful routines of C programming (previous stable vers
irssi-0.8.6_2 A modular IRC client with many features
pkgconfig-0.15.0 A utility used to retrieve information about installed libr 

Rovněž si vyzkoušejte kombinace pkg_info -d cvsup-without-gui-16.1h, pkg_info -x cvsup-without-gui.

Další důležitou informací, kterou byste určitě chtěli vědět, je, jaké soubory byly s programem nainstalovány (příkaz je ekvivalentem pkg_info -L cvsup-without-gui-16.1h, ovšem bez již zmiňované nutnosti udávat verzi):

srot# pkg_info -xL cvsup-without-gui
Information for cvsup-without-gui-16.1h:

Files:
/usr/local/man/man1/cvpasswd.1.gz
/usr/local/man/man1/cvsup.1.gz
/usr/local/man/man8/cvsupd.8.gz
/usr/local/bin/cvpasswd
/usr/local/bin/cvsup
/usr/local/sbin/cvsupd
/usr/local/share/cvsup/License 

Nebo zjistit, k jakému balíku soubor patří:

srot# pkg_info -W cvsup
/usr/local/bin/cvsup was installed by package cvsup-without-gui-16.1h 

Dále můžete využít pkg_info -r balik k vypsání, na čem dalším je package závislý. Nebo pkg_info -R balik ke zjištění, jaký jiný balík jej nainstaloval jako svou závislost. Níže uvedený příklad ukazuje, že je za to zodpovědný irssi.

srotl# pkg_info -R pkgconfig-0.15.0
Information for pkgconfig-0.15.0:

Required by:
glib-1.2.10_10
irssi-0.8.6_2 

Odinstalace packages

Odinstalovat package/port můžete nejjednoduššeji pomocí pkg_delete /var/db/pkg/balik. Standardní pkg_delete neumí odinstalovat balík plus jeho závislosti. V tomto případě se lépe chodí port portupgrade a jeho příkaz pkg_deinstall  – o pokročilé správě packages/portů bude řeč v příštím dílu. V případě, že experimentujete, můžete ještě využít voleb -a pro odinstalování všech balíků nebo -x, kterou můžete definovat pkg_name jako regulární výraz.

Ports

Jak již bylo řečeno, port je několik souborů, které popisují, jak mají být originální zdrojáky upraveny, aby běžely na FreeBSD. Jestliže samotný port tree nemáte, získáte jej buď z CD, nebo stažením z Internetu. Snapshot aktuálního port tree můžete stáhnout z ftp nebo pomocí cvsup. Stáhneme pomocí cvsup (základy o cvsup  jsou v minulém dílu):

srot# cp /usr/share/examples/cvsup/ports-supfile /root/ 

Pozměníme port-supfile, aby obsahoval minimálně toto:

*default host=cvsup.cz.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
*default compress
ports-all 

Oproti standart-supfile z minulého dílu se tento liší pouze v tagu ( tag=. udává poslední verzi) a cílem, tj. ports-all. Následující příkaz vám tedy stáhne celý ports tree včetně zmiňovaného souboru INDEX a uloží jej do

/usr/ports. Soubor INDEX není ale aktualizován, vystavění nového INDEX souboru (seznamu portů) můžete buď provést oproti vašemu ports tree příkazem make index v adresáři /usr/ports (který zabere opravdu velmi hodně času), nebo jej můžete stáhnout příkazem make fetchindex spuštěným opět ve stejném adresáři. Jestliže se porozhlédnete po adresáři

/usr/ports, můžete vidět kategorie portů, které vás nebudou zajímat, např. různé jazykové mutace programů. Můžete nastavit cvsup pomocí refuse souboru, které kategorie má ignorovat… Více o cvsup  opět zde.

Podíváme se na port editoru nano. Ukázka na editoru nano:

srot# cd /usr/ports/editors/nano && file *
Makefile: ASCII text
distinfo: ASCII text
files: directory
pkg-descr: ASCII English text
pkg-plist: ASCII text 

Soubour Makefile obsahuje od maintainera instrukce, jakým způsobem má být port zkompilován, distinfo obsahuje kontrolní součty v velikost tarballu, adresář files obsahuje případné patche programu pro FreeBSD, pkg-descr je popis programu a konečně pkg-list obsahuje seznam souborů, které budou s portem nainstalovány. V případě určitých voleb se proto budete muset do tohoto souboru podívat, abyste zjistili, jaké možnosti můžete využít pro sestavení portu s určitými vlastnostmi. Rovněž obsahuje údaje definující port, jako PORTNAME, PORTVERSION, CATEGORIES atd.

Samotná instalace portu se provádí příkazem make install. Příkaz make install je posledním krokem samotného sestavení portu. Je složen z make fetch, make checksum, make depends, make extract, make patch, make configure, make build a ukončen právě make install  – tj. pomocí make install se provedou automaticky i předešlé kroky.

Ukážeme si tedy instalaci velmi důležitého portu portaudit  – Checks installed ports against a list of security vulnerabilities (po instalaci proveďte doporučovaný příkaz –  portaudit -Fda):

srot# cd /usr/ports/security/portaudit && make install 

Po nainstalování můžeme pracovat s porty stejně jako s balíčky, tj. můžeme využít pkg_infopkg_delete. Rovněž jde v adresáři portu provést make deinstall, což je stejné jako pkg_delete. Jediným rozdílem je to, že port ve svém adresáři vytvoří složku work a do ní rozbalí zdrojový kód a zaznamená fáze sestavení. To můžeme využít např. k novému pozměněnému sestavení. Například když pomocí pkg_delete smažete některý port a nesmažete složku work, můžete port pomocí make reinstall znovu lehce nainstalovat.

Závěr

Oproti packages jsou porty výhodnější, můžete využít kontrolní součty ( make checksum) a také nastavit portu volby, které v binárním package být nemusí. Nevýhodou je delší čas pro sestavení a také pracnější instalace. O tom, jak efektivně spravovat porty – tj. čistit work adresáře, mazat /usr/ports/distfiles, nebo jak upgradovat všechny nainstalované porty, si povíme příště.

Našli jste v článku chybu?

7. 8. 2004 13:19

jack_neo (neregistrovaný)

No, asi to taky zkusim, spis se bojim, ze bude problem v tom, ze to jde do AP, ktere jede na 11Mb/s a ze on to porad posila a zaplni si tak buffer. Jinak uz vazne nevim, pristi tyden to predelam cely a uvidim..:(

5. 8. 2004 23:22

michal00 (neregistrovaný)

mal som podobny problem. divna sietovka/divny driver (nejaky sk). ked som prehodil na inu sietovku (klasicka sis za 200 korun) zacalo to slapat bezproblemovo.

Podnikatel.cz: Alza.cz má StreetShop. Mall.cz více výdejních míst

Alza.cz má StreetShop. Mall.cz více výdejních míst

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Vitalia.cz: Znáte „černý detox“? Ani to nezkoušejte

Znáte „černý detox“? Ani to nezkoušejte

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Vitalia.cz: Často čůrá a má žízeň? Příznaky dětské cukrovky

Často čůrá a má žízeň? Příznaky dětské cukrovky

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?