Tuesday, January 13, 2009

Instalarea si mentinerea unui sistem FreeBSD updatat

Fast Install FreeBSD


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

etc


- editarea fisierului /etc/make.conf si setarea variabilelor dupa exemplul din /etc/defaults/make.conf
CPUTYPE=p4
WITHOUT_X11=YES
etc

- 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/

No comments:

Post a Comment