Un sistem FreeBSD , ca si alte sisteme de operare nu este perfect si uneori se depisteaza probleme de securitate in sistemul de baza sau softul aditional. Mentinerea la curent a sistemului in ce priveste securitatea, include:
1. Mentinerea sistemului de baza si a kernel-ului.
2. Mentinerea la curent a colectiei de porturi.
3. Mentinerea la curent a softului instalat din porturi/pachete .
4. Mentinerea la curent a softului aditional, instalat din alte surse.
1. Updatarea sistemului de baza si a kernel-ului.
a) updatarea din binare precompilate , folosind “freebsd-update” ( disponibil in colectia de porturi )
[root@host]$ cd /usr/ports/security/freebsd-update [root@host]$ make install cleandir
sau
[root@host]$ pkg_add -r freebsd-update
Folosim fisierul de configurare implicit:
[root@host]$ cp /usr/local/etc/freebsd-update.conf.sample /usr/local/etc/freebsd-update.conf
Descarcam update-urile existente:
[root@host]$ freebsd-update -v fetch
Putem adauga un cronjob care va rula zilnic si va executa /usr/local/sbin/freebsd-update cron
Daca sunt disponibile updateuri, contul root va primi un email cu detalii.
pentru a instala update-urile descarcate, rulam
[root@host]$ freebsd-update -v install
restartam sistemul.
Dupa aceasta procedura trebuie recompilate programele linkate cu bibliotecile afectate de update (daca upgrade-ul a fost unul major, de exemplu de la FreeBSD 4.4 la FreeBSD 4.11) Aceasta metoda e un avantaj cand ai de mentinut ferme de servere , si update-urile din surse ar fi o problema. Mai multe amanunte despre sistemul de updateuri binare - la http://www.daemonology.net/freebsd-update/binup.html
b) metoda clasica, compilarea sistemului/kernel-ului folosind sursele .
- Instalarea utilitarului cvsup , din porturi/pachete:
[root@host]$ cd /usr/ports/net/cvsup-without-gui; make install clean
sau
[root@host]$ pkg_add -r cvsup-without-gui
- Updatarea surselor sistemului:
[root@host]$ cp /usr/share/examples/cvsup/stable-supfile /usr/local/etc/
- Editarea /usr/local/etc/stable-supfile
E de ajuns sa schimbam 1-2 parametri in fisierul implicit:
*default host=CHANGE_THIS.FreeBSD.org *default release=cvs tag=RELENG_5
in
*default host=cvsup.ro.FreeBSD.org *default release=cvs tag=RELENG_5_4
Folosesc RELENG_5_4 si nu RELENG_5 deoarece am nevoie de un sistem stabil si securizat. Mai multe detalii despre taguri si lista de cvs servere disponibile la
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/cvs-tags.html
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/cvsup.html
- updarea surselor propriu-zisa:
[root@host]$ /usr/local/bin/cvsup /usr/local/etc/stable-supfile
- urmeaza neaparat consultarea fisierului /usr/src/UPDATING
- editarea fisierului de configurare a kernelului
Pe un sistem i386 acest fisier se afla in /usr/src/sys/i386/conf/
, Il copiem intr-un fisier oarecare, pe care il modificam ulterior
[root@host]$ cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/MYKERNEL-SMP
Urmeaza personalizarea sa prin scoaterea tuturor optiunilor si driverelor de care avem nevoie ( device-uri ISA, firewire, pcmcia, wireless ), precum si adaugarea unor parametri aditionali, precum
- options SMP # daca este cazul
- options QUOTA #enable disk quotas
- editarea fisierului /etc/make.conf si setarea variabilelor dupa exemplul din /etc/defaults/make.conf
CPUTYPE=p4 WITHOUT_X11=YES
- construirea sistemului nou din surse:
[root@host]$ cd /usr/obj ; chflags -R noschg * ; rm -rf * [root@host]$ make cleandir [root@host]$ cd /usr/src [root@host]$ make buildworld [root@host]$ make buildkernel KERNCONF=MYKERNEL-SMP [root@host]$ make installkernel KERNCONF=MYKERNEL-SMP
- optional, daca exista posibilitatea - in continuare rebootati si incarcati sistemul in single mode pentru a preveni eventualele probleme de compatibilitate binare/kernel , sau continuati direct cu make installworld.
- mountati partitiile necesare
[root@host]$ mount -u -o w / [root@host]$ mount -a -t ufs [root@host]$ adjkerntz -i [root@host]$ cd /usr/src [root@host]$ make installworld
- rulati mergemaster - un script care are rolul de a updata fisierele de configurare a sistemului/adauga userii necesari.
Eventual puteti face un backup al /etc si /usr/local/etc inainte. In majoritatea cazurilor megememaster -ai va fi suficient
[root@host]$ mergemaster -ai
restartati sistemul
2. Updatarea sistemului de porturi .
a) updatarea colectiei de porturi folosind cvsup
[root@host]$ cp /usr/share/examples/cvsup/ports-supfile /usr/local/etc/
- Editarea /usr/local/etc/ports-supfile
E de ajuns sa schimbam 1 parametru in fisierul implicit:
*default host=CHANGE_THIS.FreeBSD.org
in
*default host=cvsup.ro.FreeBSD.org
Rulam
[root@host]$ /usr/local/bin/cvsup /usr/local/etc/ports-supfile
putem sa adaugam un cronjob care va rula acest program
b) updatarea colectiei de porturi folosind portsnap este recomandata utilizarea portsnap in locul cvsup, deoarece -
* CVSup nu este atat de securizat : Protocolul nu cripteaza datele si nu folosete semnaturi digitale, astfel oricine care poate intercepta conexiunea poate insera date arbitrare in fisierele pe care le updatati .
* CVSup nu este end-to-end: Oricine a compromis un mirror CVSup poate insera date arbitrare in surse, care ulterior vor fi folosite de persoanele ce folosesc acest mirror.
* CVSup nu a fost proiectat pentru updateuri mici si frecvente. Atata timp cat este bun pentru distributia unui numar mare de fisiere, care s-au shimbat semnificativ, nu este eficient in cazul in care putine fisiere au fost modificate.
* CVSup foloseste propriul protocol. Aceasta ar putea cauza probleme persoanelor protejate de firewall-uri complexe, conexiunile catre portul 5999 trebuie sa fie permise, plus mai are nevoie de un server - cvsupd.
daca avem deja colectia de porturi, continuam cu pasii urmatori altfel o descarcam de pe ftp.freebsd.org
[root@host]$ cd /usr [root@host]$ fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/ports-current/ports.tar.gz [root@host]$ tar -xzf ports.tar.gz [root@host]$ rm -rf ports.tar.gz [root@host]$ cd /usr/ports/sysutils/portsnap [root@host]$ make install clean
Fisierul implicit de configurare e de ajuns.
[root@host]$ cp /usr/local/etc/portsnap.conf.sample /usr/local/etc/portsnap.conf [root@host]$ portsnap fetch [root@host]$ portsnap extract [root@host]$ portsnap update
cream un cronjob care va rula /usr/local/sbin/portsnap cron; /usr/local/sbin/portsnap update
3. Updatarea softului instalat din porturi/pachete . Exista cateva metode, vom folosi portsupgrade .
[root@host]$ cd /usr/ports/sysutils/portupgrade; make install clean
sau
[root@host]$ pkg_add -r portupgrade
Editam fisierul de configurare /usr/local/etc/pkgtools.conf , la nevoie modificam parametri, precum
MAKE_ARGS = { 'editors/vim' => 'WITHOUT_X11=yes WITH_PERL=yes WITH_PYTHON=yes', 'databases/mysql40-server' => 'WITHOUT_INNODB=yes WITH_LINUXTHREADS=yes BUILD_STATIC=yes BUILD_OPTIMIZED=yes' } [root@host]$ cd /usr/ports/sysutils/portupgrade;make install clean
sau
[root@host]$ pkg_add -r portupgrade
Rulam:
[root@host]$ portsdb -Uu # creaza o baza de date necesara utilitarelor folosite in continuare, procesul ia ceva timp [root@host]$ portupgrade -arR # insusi procesul de update
detalii in man (1) portupgrade
4. Updatarea softului aditional, instalat din surse .
Ramane la dispozitia fiecaruia.
handbook FreeBSD - http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/
freebsd-update - http://www.daemonology.net/freebsd-update/
portsnap - http://www.daemonology.net/portsnap/