Pagina 1 di 1

una bella novita': FreeBSD 10

Inviato: sabato 1 febbraio 2014, 20:36
da kimj
sono sempre stato interessato a FreeBSD, sin da quando oracle compro' sun microsystems ed il futuro di OpenSolaris divenne incerto, poi certo, la sua fine.

OpenSolaris era parecchio promettente, e sebbene non maturo per un uso desktop, aveva parecchie caratteristiche al tempo invidiate da linux: (dopo aver scritto, ho deciso di mettere uno spoiler)
Spoiler
Mostra
ZFS. Presente il suo figlio illegittimo brtfs? Bene, ZFS era tutto questo, con qualcosa in piu', quindi un volume manager (una sorta), supporto alla deduplicazione dei dati, la compressione on the fly, gli snapshot, permetteva di creare array RAID software con un comando, e proteggeva dalla corruzione silente dei dati.

i dati nei dischi rigidi si corrompono, un bit cambia valore, e non lo scopri sino a che qualche file non si corrompe o qualcosa smette di funzionare. molti controller raid ignorano la cosa, si fidano del primo dato che arriva.

ZFS controllava per discrepanze, e teneva un hash dei blocchi. dalla modalita' menefreghista, alla modalita' nsa, alla modalita' menefrighista+controllo all'accesso. questo serviva ad individuare la corruzione silente, ed a "deduplicare" a livello di blocchi, file, o byte. Ovvero, hai 10 versioni di un filmato, con piccole modifiche o tagli. Con un volume zfs deduplicato, gran parte dei dati in comune tra i file verrebbero salvati una sola volta.

esisteva poi la possibilita' di riservare determinata capacita' a tenere copie dei dati da utilizzare qualora l'originale fosse risultato corrotto, stile fec.

insomma, gia' prima del 2010 era qualcosa di molto, molto futuristico e flessibile.

OpenSolaris aveva poi le "zone", un meccanismo di virtualizzazione a livello di sistema operativo, un po' come linuz vz. il kernel e' in comune, non c'e' questo overhead, ma possono esistere piu' "zone" separate, con piu' o meno privilegi, il loro utente root, le loro librerie. Vari ambienti.

OpenSolaris aveva lo scheduler di solaris, che solo recentemente linux ha avvicinato a modo suo, coi cgroup, ma ancora non ci siamo.

opensolaris supportava reti virtuali (crossbow) ben prima di Open vSwitch.

opensolaris supportava un modello di permessi molto avanzato, difficile da ottenere con sudo e selinux. non solo aveva un MAC come selinux, ma permetteva di delegare ad utenti normali compiti eseguibili da root, senza fornire a questi competo accesso root.

era possibile delegare a tiziocaio, con un meccanismo simile a sudo, la possibilita' di riavviare un servizio, diciamo apache. Ma non di cambiarne la configurazione, o di fermarlo. granulare e semplice.

ora, dico era possibile perche' opensolaris purtroppo e' morto, esistono cloni ed ovviamente, oracle solaris, che non posso permettermi, oltre che closed source.
purtroppo, con la fine del progetto opensolaris, quanto di piu' simile ad esso era FreeBSD, che conoscevo (poco) e che aveva appena implementato una vecchia versione di zfs.
tanto vecchia che non supportava nemmeno la deduplicazione, e me ne accorsi solo un anno dopo cercando di attivarla su una macchina freebsd 8 non aggiornata. Ma il supporto alla deduplicazione, che credevo automatico, era quanto mi spinse a scegliere freebsd, da giovane ed idiota (non che sia cambiato).

FreeBSD aveva alcuni vantaggi:
-zfs
-jail parte del sistema base, un meccanismo di virtualizzazione a livello di sistema operativo simile alle zone solaris o ad openvz
-solidita' del sistema base. mai avuto un crash non dovuto ad un... intervento umano
-separazione netta tra il sistema base ed i software di terze parti, relegati ad /usr/local, che mai andavano ad intaccare i binari di sistema, le librerie di sistema, o le loro configurazioni.
-ottima documentazione
-flessibilita' del sistema dei ports. Gentoo si ispiro' a questi, ma rimangono flessibili senza la complessita' di gentoo. Hanno, penso, lo stesso numero di software di debian.
-facilita' di aggiornamento, con freebsd-update. facile ed indolore, e stai sicuro che esiste "separazione" tra aggiornare "il sistema" ed "i software"
-facilita' nel controllare l'integrita' del sistema base, sia per bassa complessita' che per la funzione "IDS" di freebsd-update, che confrontava un hash sha256 di ogni file di sistema con un "known good" specifico per release ed architettura, fornito dal progetto freebsd.
-si puo' innalzare il "securelevel" sino a non permettere il caricamento di moduli kernel o il cambiamento di regole di firewalling. lo si puo' decrementare solo riavviando.

gli svantaggi:
-poca integrazione. 2 diversi meccanismi per fare resource capping, per limitare le jail, per controllare memoria e cpu servivano due sottosistemi diversi, ed uno richiedeva ricompilazione del kernel... (mi e' sempre riuscita su bsd, a differenza di linux)

-arretratezza del sistema dei pacchetti binari, il che richiede dei punti a parte:

-i tool pkg_ erano del decennio scorso. pkg_add, ad esempio. se ci avete mai avuto a che fare, non devo commentare. Pensate a slackware, senza gli "abomini", come credo li consideri bubu
-scarsita' di pacchetti binari/precompilati. arretratezza del software, spesso senza nemmeno aggiornamenti di sicurezza
-non esisteva, come in debian, la policy di separare un pacchetto in piu' componenti, installabili a piacere. un port corrispondeva ad un pacchetto, ed era compilato con le opzioni di default
questo significa, ad esempio, che apache era un solo pacchetto, il port 'apache' compilato a default, idem php, e non esisteva mod_php con i pacchetti binari del progetto. neanche php-fpm.
-i pacchetti non erano firmati, ne esisteva checksum. facile installare pacchetti corrotti. facile essere compromessi installando software modificato dal mirror, o via mitm

questo portava a dovere usare i port.
i port erano, e sono, firmati, aggiornati, molto flessibili. Si possono scegliere con un comodo menu curses le opzioni di compilazioni desiderate.
il che significa anche compilare, compilare, compilare, e quando c'e' un aggiornamento, ricompilare, e ricompilare tutte le librerie da cui dipende il pacchetto, ed i port che le forniscono. Non bello, su una macchina lenta. una mazzata sui testicoli sufficiente, dopo un anno e mezzo, ad abbandonare l'os.

-mancanza di supporto alla virtualizzazione. Non c'era virtualbox, non c'era un hypervisor come kvm, poco supporto a xen. Potevi scegliere tra la virtualizzazione a livello di sistema operativo, con le jail, e l'emulazione qemu/bochs

-scarso supporto a portatili, drm/kms intel, etc.


cosa cambia FreeBSD 10?

in FreeBSD 10 abbiamo:

migliorato supporto hardware, ovviamente.
supporto ai portatili molto migliorato, con KMS intel (e credo anche amd), supporto a piu' SoC wifi.

un hypervisor, http://bhyve.org/, al suo primo esordio. E' simile a kvm, usa anche VirtIO per garantirsi supporto dei sistemi operativi gia' compatibili con kvm. Da provare, incerte stabilita' e performance.

pkg(ng). una nuova infrastruttura per i pacchetti binari, un nuovo package manager.

e' una novita' pari all'introduzione di APT in debian.
il progetto FreeBSD ha deciso di concentrarsi di piu' sui pacchetti binari, oramai necessari, specie con la crisi di utenti e fondi del progetto.

pkg introduce diverse novita':
-concetto di repository. Si ispira ad aptitude/apt-get.
-i pacchetti sono firmati. non direttamente come in linux:
il singolo pacchetto ha una descrizione che include l'hash sha256 di ogni file fornito, e del suo path nel sistema.
il repository fornisce un file con le "signatures", che include, per ogni pacchetto/definizione, il suo hash (suppongo sha256), ed altri valori che non ho ancora indagato.
la signature e' firmata, ed e' fornita la chive pubblica con cui e' firmata.
il sistema arriva, in /usr/share/keys/pkg, con l'hash/impronta di ogni chiave pubblica supportata, e supporta la revoca.

si', a differenza di linux che firma ogni pacchetto, a loro piacciono gli hash, ma il risultato e' lo stesso, e probabilmente e' piu' rapido.

a proposito di rapidita', pkg e' veloce, e si basa su un database sqlite stile rpm, mentre dpkg usa ancora migliaia di file.

permette ricerca, autoremove, aggiornamento, addirittura controllo di integrita', controlla l'integrita' dei pacchetti installati confrontando l'hash dei singoli file con quello descritto.

su ubuntu, se viene backdoorato apache, hai voglia ad accorgertene con apt.

l'installer supporta finalmente una installazione zfs base, che prima andava eseguita a mano.

e' stato introdotto questo: http://info.iet.unipi.it/~luigi/netmap/
che dovrebbe permettere ottime performance di rete per le app/nic compatibili.

zfs supporta il TRIM per gli ssd, e fuse e' nel sistema base.

gli sto dando una occhiata in vm, per ora, prima di decidere se passare al fisico, e sembra molto piu' user friendly. Alla portata degli utenti archlinux, mentre prima richiedeva competenze, e pazienza, solitamente tipiche degli utenti gentoo

Re: una bella novita': FreeBSD 10

Inviato: sabato 1 febbraio 2014, 20:37
da kimj
oh, gnome e' stato aggiornato dalla versione 2.20.1 alla 2.22. si', altro che mate :d

e systemd? ma che, manco init di system V. usa ancora il rodato, e facile, rc di system III, qualcosa di simile a quanto usato da archlinux prima di passare a systemd

Re: una bella novita': FreeBSD 10

Inviato: sabato 1 febbraio 2014, 21:34
da Ikitt
kimj [url=http://forum.ubuntu-it.org/viewtopic.php?p=4526349#p4526349][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto: opensolaris supportava un modello di permessi molto avanzato, difficile da ottenere con sudo e selinux. non solo aveva un MAC come selinux, ma permetteva di delegare ad utenti normali compiti eseguibili da root, senza fornire a questi competo accesso root.

era possibile delegare a tiziocaio, con un meccanismo simile a sudo, la possibilita' di riavviare un servizio, diciamo apache. Ma non di cambiarne la configurazione, o di fermarlo. granulare e semplice.
Linux Capabilities. Circa linux 2.2
e systemd? ma che, manco init di system V. usa ancora il rodato, e facile, rc di system III, qualcosa di simile a quanto usato da archlinux prima di passare a systemd
L'init system modello BSD. Orgoglio e vanto di slackware et. al. Buon per loro, se si accontentano.

Re: una bella novita': FreeBSD 10

Inviato: sabato 1 febbraio 2014, 21:44
da kimj
Ikitt [url=http://forum.ubuntu-it.org/viewtopic.php?p=4526364#p4526364][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:
kimj [url=http://forum.ubuntu-it.org/viewtopic.php?p=4526349#p4526349][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto: opensolaris supportava un modello di permessi molto avanzato, difficile da ottenere con sudo e selinux. non solo aveva un MAC come selinux, ma permetteva di delegare ad utenti normali compiti eseguibili da root, senza fornire a questi competo accesso root.

era possibile delegare a tiziocaio, con un meccanismo simile a sudo, la possibilita' di riavviare un servizio, diciamo apache. Ma non di cambiarne la configurazione, o di fermarlo. granulare e semplice.
Linux Capabilities. Circa linux 2.2
e systemd? ma che, manco init di system V. usa ancora il rodato, e facile, rc di system III, qualcosa di simile a quanto usato da archlinux prima di passare a systemd
L'init system modello BSD. Orgoglio e vanto di slackware et. al. Buon per loro, se si accontentano.

le capabilities non sono cosi' granulari, e mi pare permettano ad un processo avviato sotto a root di abbassare i propri privilegi, o meglio, di avviare da root processi con privilegi piu' granulari (comunque mai come quanto possibile su solaris), non di delegare specifiche funzioni ad utenti. magari mi sbaglio

Re: una bella novita': FreeBSD 10

Inviato: sabato 1 febbraio 2014, 21:48
da Ikitt
Probabilmente la versione OpenSolaris *e`* migliore, tuttavia si, ti sbagli.
http://linux.die.net/man/7/capabilities
For the purpose of performing permission checks, traditional UNIX implementations distinguish two categories of processes: privileged processes (whose effective user ID is 0, referred to as superuser or root), and unprivileged processes (whose effective UID is nonzero). Privileged processes bypass all kernel permission checks, while unprivileged processes are subject to full permission checking based on the process's credentials (usually: effective UID, effective GID, and supplementary group list).

Starting with kernel 2.2, Linux divides the privileges traditionally associated with superuser into distinct units, known as capabilities, which can be independently enabled and disabled. Capabilities are a per-thread attribute.
Quindi: si, si possono suddividere i poteri di root. Per thread. Da linux 2.2

Re: una bella novita': FreeBSD 10

Inviato: sabato 1 febbraio 2014, 22:27
da kimj
no, non mi sbaglio: le capabilities si applicano a processi/thread, non ad azioni compiute da un dato utente.

e' possibile impostare capabilities al login, la faq suggerisce impostando capabilities all'eseguibile 'login' (quindi per tutti gli utenti...) o tramite un modulo pam. ho visto che effettivamente ora esiste qualcosa del genere, ma ho dovuto cercarlo, non ne avevo mai sentito parlare prima: http://www.sevagas.com/?Linux-security-using-a-limited

effettivamente, anche se questo permette a root di avviare un processo sotto ad un utente non privilegiato, impostandogli delle capabilities che gli permettano di svolgere le funzioni di cui necessita, le capabilities sono piu' che altro utilizzate in sostituzione dello suid.

per esempio, /bin/ping, invece di essere un file "suid", che quindi viene eseguito come root anche quando avviato da un utente non privilegiato, puo' avere cap_net_raw+ep, e svolgere lo stesso la propria funzione.

peccato che:
-praticamente nessuno usa le capabilities linux. sono taboo. nemmeno ubuntu. ping e' suid, per fare un esempio. l'unico binario con capabilities sul mio intero sistema e'

Codice: Seleziona tutto

/usr/bin/gnome-keyring-daemon = cap_ipc_lock+ep
possiamo dire siano un fallimento?

specie in confronto a solaris: http://www.c0t0d0s0.org/archives/4077-L ... leges.html

dove sono usate come su linux si usa sudo. vengono assegnati specifici permessi agli utenti, ovvero, vengono delegate loro azioni da super utente, in modo granulare, e possono usare con pfexec, dopo aver inserito la password utente.
i "permessi" sono definibili dall'amministratore, molto granulari, per utente, sino ad arrivare, appunto, al tipo di azione che e' possibile eseguire sul singolo servizio/demone.

su linux non mi pare sia cosa comune. e' forse possibile emulare la cosa con capabilities, selinux, sudo, ma non in modo facile, documentato, diffuso.

altrimenti, alzi la mano chi in questo forum ha impostato il sistema con qualcosa di simile al rbac solaris/aix/etc

credo sia per disinteresse verso questa granularita', o tipo di sicurezza. In fondo rms era quello che aveva abolito le password e creato una utility/syscall per crashare il sistema, ad opera di qualsiasi utente, ma rendendo noto chi avesse invocato il crash, per evitare che gli "script kiddie" del tempo avessero l'incentivo di sabotare i computer. questa era la sua idea di sicurezza.

Re: una bella novita': FreeBSD 10

Inviato: sabato 1 febbraio 2014, 22:33
da kimj
come non detto: http://bugs.debian.org/cgi-bin/bugrepor ... =509813#12

ho controllato sul mio sistema, ed effettivamente le capabilities sono usate: la distro non imposta l'eseguibile di ping con le capabilities minime necessarie, e' suid.

ping quindi parte come root, suppongo si associ al socket raw, poi ritorna con uid,gid dell'utente che lo ha invocato, mantenendo "cap_net_admin,cap_net_raw+p", le capabilities necessarie a funzionare senza essere superutente, mentre potrebbero essere impostate dall'inizio.

comunque, questo credo sia il maggior uso delle capabilities linux: SCALARE i privilegi DA root, ops, CAP_SYS_ADMIN, ad un utente limitato, pur mantenendo le "capabilities" necessarie a funzionare.

e' piu' un meccanismo usato come una sorta di selinux auto-imposto, che come rbac in solaris

Re: una bella novita': FreeBSD 10

Inviato: lunedì 3 febbraio 2014, 17:45
da kimj
l'ho installato sul portatile e... non mi sento di raccomandarlo.

sono stati troppo innovatori, introducento KMS, ma hanno fatto troppo poco per renderlo utilizzabile. In un certo senso, sono meglio i BSD piu' conservativi...

sto scrivendo da FreeBSD10 su un thinkpad t430, con zfs su geli ("luks").

non ci siamo. Ora la sospensione non e' funzionante, il portatile entra in acpi s3, ne esce, ma lo schermo rimane "blank"/nero. Ho constatato che il resto funziona, posso vedere attivita' disco lanciando un find su /, e creare file alla cieca.

mi sono detto, magari in X funziona. Installo X, gnome2, firefox.

non solo non va: l'implementazione di kms e' cosi' parziale, work in progress, che una volta in X e' impossibile cambiare tty e tornare ad una tty testuale ove fare login con root. Se il proprio utente non e' gia' in wheel, si e' a spasso.

non capisco come la grafica intel KMS possa essere stata accettata per una release. Il bello e' che il wiki freebsd lista tutta la serie thinkpad t400 come funzionante senza problemi, lato sospensione...

Re: una bella novita': FreeBSD 10

Inviato: lunedì 3 febbraio 2014, 17:48
da kimj
curioso che, lato hardware, sembra che i progressi vengano svolti in openbsd, e poi importanti, spesso a pezzi, in freebsd, ma il primo progetto e' conservativo per il resto e non implementa zfs, jail, pkgng, bhyve, etc

Re: una bella novita': FreeBSD 10

Inviato: lunedì 3 febbraio 2014, 23:24
da kimj
e la soluzione sarebbe... utilizzare il modulo "drm2.ko", che supporta la mia scheda grafica, e non dovrebbe dare problemi in Xorg.

ma servirebbe, al contempo, eliminare il driver "vesa" dal kernel, alias, ricompilarlo, e non credo andrebbero le tty perche' si appoggiano ancora a vesa, e la nuova infrastruttura tty che sfrutta kms dovrebbe arrivare "in futuro", probabilmente per freebsd 10.1...