Skutecne je to jedna z tech vlastnosti ktera je opravdu dulezita? Proc potom vznikaji source-based distribuce typu Gentoo/Source Mage/Lunar Linux atd... ?
Myslím, že neznáte BSD. Tam je oddělený base system (základní utility) od balíčků.
Rozdíl mezi Linuxem a BSD je v tom, že Linux je složený z mnoha (nejčastěji GNU) balíčků, které tvoří základní systém, ale mohou se updatovat nezávisle (každý má svého vendora).
BSD má celý base system hotový jako release a vydávají se maximálně patche chyb. Vendor je jen jeden - FreeBSD team. Nevzniká tam potřeba updatovat balíčky base systému a vzniká tam naopak možnost base system chránit víc, než je možné u Linuxu. Tj. tyto dva světy nelze srovnávat.
Samozřejmě i BSD má balíčky, ale ne pro základní systém.
Základní systém se updatuje pomocí freebsd-update (https://www.freebsd.org/cgi/man.cgi?query=freebsd-update&apropos=0&sektion=0&manpath=FreeBSD+12.0-RELEASE+and+Ports&arch=default&format=html), a zkontrolovat se dá právě pomocí freebsd-update IDS. Díky tomu, že celý / a /usr patří base systemu, tak to funguje opravdu dobře. Vlastní balíčky patří do /usr/local, kde IDS kontrola nezasahuje.
Druhou možností je kompilovat pomocí buildworld a buildkernel. Pokud nezměníte volby v /etc/src.conf (https://www.freebsd.org/cgi/man.cgi?query=src.conf&apropos=0&sektion=0&manpath=FreeBSD+12.0-RELEASE+and+Ports&arch=default&format=html), je výsledek funkčně stejný jako v binární distribuci (kompilován je celý bootstrap, takže je to opravdu stejná binárka), jenže díky rozdílnosti timestampů už nikdy nebude sedět sum.
Třetí možností je vzít binární distribuci, ale použít upravené jádro (nezmění se /etc/src.conf, ale jen konfigurace jádra). To se pak kompiluje pomocí make buildkernel. IDS kontrola pak může proběhnout nad celým systémem, jen s výjimkou /boot/kernel.
Právě z těchto není vlastní kompilace preferovaná, protože na FreeBSD to skoro nikdy nic nepřináší.
Naopak, samotné balíčky (např. webserver, dns server, programovací jazyky, atd.) lze kompilovat a u nich je to dokonce preferovaná cesta. Ty se pak udržují jednoduše pomocí portmaster -ad (https://www.freebsd.org/cgi/man.cgi?query=portmaster&apropos=0&sektion=0&manpath=FreeBSD+12.0-RELEASE+and+Ports&arch=default&format=html).
Tím je FreeBSD jakožto základní systém robustnější, než většina Linuxových distribucí. Zároveň ale pro programy (balíčky) preferuje kompilaci, přesně jak sdělujete.
Doporučuju se tomu trochu pověnovat, kdo zná jak Linuxy, tak FreeBSD, tak co pamatuji, vždy od Linuxu utekl (na serverech, na desktopu je to naopak bída).
No IDS ma urcite svuj smysl, ale ma take omezeni:
FREEBSD-UPDATE(8):
In spite of its name, freebsd-update IDS should not be relied upon as an
"Intrusion Detection System", since if the system has been tampered with it
cannot be trusted to operate correctly. If you intend to use this command for
intrusion-detection purposes, make sure you boot from a secure disk (e.g., a
CD).
Na IDS se dá spolehnout v několika případech. Např. při externím skenu - buďto po NFS, nebo z nadřazeného systému směrem do jailu. Pak se nastaví base adresář pomocí parametru -b.
Jedním z dalších poměrně dobrých scénářů je připojení base sytému po NFS - to může být sdílené mezi více stroji, protože do /bin, /sbin, /usr atd. se nikdy nic nezapisuje. Na lokálním disku je pak jen /etc, /var, /usr/local apod. V tu chvíli IDS můžete použít křížem mezi dvěma stroji a riziko tamperování se zase sníží.
Jen upozornim, ze prechod updatu z kompilovaneho systemu na freebsd-update je (tedy minimalne drive) byla pakarna. Zkousel jsem to skoro na 15 strojich a vysledek byl dost spatny. Nekolik stroju jsem si musel dojet vyrestartovat, protoze proste pri restartu nenabehnou. Po nekterych updatech jsem mel napriklad 9.x userland, ale kernel 8. A nejhorsi bylo mergovani konf. souboru. Velmi casto se stalo, ze se ten nastroj rozhodl, ze mi jako rozdilne proste oznaci vsechny soubory (i kdyz se lisila jen hlavicka) a to je pak peklo to vse prochazet.
To vse opravit bylo nakonec pomalejsi nez si vse prekompilovat.
Dalsi problem je, kdyz se nepouzil GENERIC kernel. Pokud jsem chtel treba IPsec, nebo IPFIREWALL_NAT, musel jsem mit vlastni kernel. Dnes uz je v GENERIC temer vse podstatne a tento problem odpada.
Nedokazu rict, jak je to s binarnim updatem dnes nebo na strojich, ktere se vzdy delaly binarne. Ale v dobe verzi 9 to byla opravdu tragedie. A nebyla to jen ma zkusenost.
Přechod z kompilovaného na binární je trochu problematičtější. Víceméně, bezpečná cesta je nechat to projet freebsd-update, a pokud to něco nedokáže updatnout, tak ještě rozbalit ručně tar xJf base.txz (předtím zazálohovat /etc, jinak se rozbalí defaulty např. do passwd, mailer.conf apod., nebo jim nastavit chflags schg).
S mergováním konfigurace jsem poslední dobou problémy neměl, nicméně mergemaster vždy byl a je spolehlivější, konfigurovatelnější a ovladatelnější, než merge, které dělá freebsd-update.