FreeBSD: updatarea pachetelor si a sistemului de operare

0

Updatarea si mentinerea sistemului de operare si a pachetelor instalate la zi este o operatiune usoara, asa cum e aproape orice operatiune de administrare in FreeBSD. Importanta mentinerii la zi a unui sistem de operare sau a unei aplicatii nu are rost sa fie dezbatuta. Se stie ca e importanta atat pentru securitate cat si pentru fiabilitate.

Pentru a mentine updatat la zi un server care ruleaza FreeBSD vom avea nevoie de cinci comenzi:

  • freebsd-update – un utilitar care downloadeaza si instaleaza updateurile sistemului de operare in mod binar.
  • portsnap – pentru mentinerea la zi a sistemului de porturi.
  • portaudit – pentru verificarea aplicatiilor instalate in baza de date cu aplicatiile vulnerabile.
  • pkg_version – pentru compararea versiunii pachetelor instalate cu ultimele versiuni aparute.
  • portmanager – utilitarul care il folosim pentru updatarea porturilor dupa ce avem un raport complet asupra starii aplicatiilor instalate.

Updatarea sistemului de operare

Sistemul de operare va primi dupa lansare o perioada lunga de timp updateuri care sa acopere gaurile de securitate sau care sa rezolve diferite buguri care pot deranja buna functionare a sistemului. Folosind comanda freebsd-update putem instala ultimele patchuri ale versiunii sistemului de operare care o utilizam. Pentru a updata sistemul trebuie sa folosim comanda freebsd-update pentru a downloada patchurile iar apoi pentru a le instala. Downloadarea patchurilor se face folosind comanda freebsd-update fetch iar instalarea lor se face cu freebsd-update install:

Dupa cum se poate vedea, comanda freebsd-update fetch a descarcat patchurile necesare iar apoi comanda freebsd-update install le-a instalat. In majoritatea cazurilor rularea celor doua comenzi este suficienta. Cum majoritatea pathcurilor sunt legate de surse sau aplicatii de sine statatoare foarte rar este nevoie de un restart.

Dupa instalarea patchurilor daca ceva merge prost putem oricand sa revenim la versiunea anterioara folosind comanda freebsd-update rollback care va sterge fisierele modificate iar in locul lor va pune fisierele originale.

Updatarea porturilor

In FreeBSD majoritatea aplicatiilor se instaleaza din porturi. Pentru ca aplicatiile sa fie tinute la zi cu updateurile va trebui sa avem in sistem ultima versiune a porturilor. Pentru asta vom folosi comanda portsnap care, similar comenzii freebsd-update, downloadeaza iar apoi instaleaza ultima versiune a porturilor. Downloadarea ultimei versiuni a porturilor se face folosind comanda portsnap fetch. Apoi, pentru a instala porturile descarcate, vom folosi portsnap extract care extrage din snapshotul descarcat porturile:

Folosind comenzile de mai sus, in cateva minute putem avea ultima versiune a porturilor. Mai departe nu ne ramane decat sa verificam porturile care necesita updatare si sa le updatam.

Verificarea aplicatiilor vulnerabile

De obicei nu este necesara updatarea tuturor pachetelor. Pe un server pus in productie pot fi instalate cateva zeci de pachete din care mai putin de 10 sunt vitale. De exemplu, e posibil ca un anumit pachet sa fie instalat doar pentru una din facilitatile unei aplicatii, facilitate care in cazul nostru nu ne intereseaza. In astfel de cazuri, care sunt multe, nu este necesara updatarea pachetelor respective. In schimb este important sa stim care pachete pot reprezenta un risc din punct de vedere al securitatii. In astfel de situatii putem folosi comanda portaudit.

Daca nu avem deja instalata aplicatia o putem instala ruland comanda:

La rulare comanda portaudit descarca o lista cu pachetele care sunt stiute ca fiind vulnerabile si compara pachetele instalate local cu cele din lista. Daca o aplicatie este gasita ca fiind vulnerabila se afiseaza numele aplicatiei, o scurta descriere a vulnerabilitatii si un link la care putem gasi mai multe detalii legate de pachetul vulnerabil:

Comanda folosita mai sus primeste parametri „-Fda„. Parametrul -F este pasat pentru a-i spune aplicatiei sa downloadeze ultima versiune a bazei de date cu vulnerabilitati inainte de a incepe scanarea, parametrul d ne afiseaza data la care a fost creata baza de date cu vulnerabilitati iar parametrul -a e cel care determina aplicatia sa verifice toate pachetele instalate.

Verificarea aplicatiilor outdated

Comanda portaudit ne face o lista cu pachetele vulnerabila, dar ocazional e bine sa verificam starea tuturor pachetelor instalate pentru a avea o imagine de ansamblu asupra starii serverului. Pentru a verifica pachetele instalate si pentru a compara versiunile pachetelor instalate cu ultimele versiuni ale pachetelor vom folosi comandapkg_version -vIL=. Comanda va genera o lista cu pachetele care necesita updatarea:

Dupa cum se poate vedea din rezultatul afisat, avem o lista de pachete care va trebui sa le updatam in functie de importanta care le-o acordam.

Updatarea porturilor cu portmanager

portmanager este un utilitar cu ajutorul caruia putem updata o aplicatie instalata din porturi sau, dupa preferinte, toate aplicatiile instalate.

Daca nu avem utilitarul portmanager deja instalat, il putem instala din porturi ruland comanda:

O updatare a intregului sistem necesita mult timp datorita utilizarii porturilor. Fiecare aplicatie va trebui sa fie downloadata, compliata si apoi instalata. Folosind comenzileportaudit si pkg_version ne-am facut o parere legata de pachetele care necesita updatarea. Pentru a termina totul rapid putem face o lista cu pachetele care necesita updatare iar apoi sa le updatam folosind comanda portmanager. Sa presupunem, de exemplu, ca dorim sa updatam doar pachetul ruby care a fost detectat de comandaportaudit ca fiind vulnerabil. Pentru a-l updata vom folosi urmatoarea comanda:

Am folosit comanda portmanager impreuna cu parametri „-f -l -u” care ii spun comenzii sa forteze recompilarea dependintelor (-f), sa salveze un log in/var/log/portmanager.log (-l) si sa updateze pachetul mentionat ca prim parametru al comenzii (-u). Primul parametru in cazul nostru este lang/ruby18, calea relativa la directorul de porturi pentru pachetul ruby1.8 care il avem instalat in sistem.

In cazul in care avem suficient timp la dispozitie pentru a upgrada toate pachetele disponibile in sistem, indiferent de importanta lor, putem folosi comanda portmanager -u -l care, daca nu primeste un anumit port pentru updatare, va updata toate pachetele instalate in sistem:

Folosind informatia de mai sus putem pune la punct o rutina care sa fie rulata saptamanal si care sa ne asigure ca serverul nostru are instalate ultimele versiuni ale aplicatiilor folosite, astfel prevenind problemele legate de eventualele atacuri datorate hackerilor sau pierderile de date datorate bugurilor nerezolvate.

Leave A Reply