Meniu

Mentinerea unui sistem FreeBSD updatat.

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/

Andreea

"Rome wasn't built in a day" !
  • | 120 articole

Nici un comentariu inca. Fii primul!
  • powered by Verysign