Verifikacija instaliranih paketa na Linux poslužiteljima

Kao sistemci često moramo  održavati poslužitelje koje održavaju i drugi sistemci. Bilo da mijenjamo sistemca koji je otišao na godišnji odmor, bilo da  je sistemac prešao na drugo radno mjesto, bilo da se radi o situaciji u kojoj grupa sistemaca održava isti skup poslužitelja. O kojem je god od tih slučajeva riječ, različite osobe pristupaju konfiguriranju i administriranju poslužitelja na različite načine, te ćemo nekako morati saznati koje je promjene druga osoba napravila na poslužitelju koji održavamo.

Jedno od pitanja koje si možemo postaviti jest koje su konfiguracijske datoteke na poslužitelju mijenjane? Jesu li možda mijenjane datoteke koje nisu konfiguracijske i za koje ne bismo očekivali da su mijenjane? Jesu li mijenjane init skripte pristigle s paketom? Ili jednostavno paket ima mnoštvo konfiguracijskih datoteka i želimo saznati u kojim datotekama su obavljene izmjene, a koje su ostale netaknute.

Ako radimo na Ubuntu ili Debian platformi, alat koji možemo koristiti jest debsums (dolazi kao paket istog imena te ako nije instaliran potrebno ga je instalirati).

debsums --config --changed <ime_paketa> prikazat će izmijenjene konfiguracijske datoteke zadanog paketa.

debsums --all --changed <ime_paketa> prikazat će sve izmijenjene datoteka zadanog paketa.

Ako ne navedemo ime paketa, naredba će se izvršiti za sve pakete instalirane na poslužitelju.

Primjeri:

root@posluzitelj:~# debsums --config --changed monit
/etc/monit/monitrc
/etc/init.d/monit

Izmijenjena je monitrc datoteka te init skripta monit paketa.

root@posluzitelj:~# debsums --changed --config
/etc/monit/monitrc
/etc/ntp.conf
debsums: missing file /etc/apt/sources.list.d/puppetlabs-pc1.list (from puppetlabs-release-pc1 package)
/etc/rsyslog.conf

Izmijenjene su monitrc, ntp.conf i rsyslog.conf datoteke te je datoteka puppetlabs-pc1.list iz paketa puppetlabs-release-pc1 obrisana.

Ako radimo na CentOS, Fedora ili RHEL platformi, alat koji možemo koristiti jest rpm s opcijom verify.

rpm --verify <ime_paketa> prikazat će sve izmijenjene datoteke zadanog paketa.

rpm --verify --all prikazat će sve izmijenjene datoteka svih paketa prisutnih na poslužitelju.

Primjeri:

[root@posluzitelj ~]# rpm --verify httpd
missing   c /etc/httpd/conf.d/userdir.conf
S.5....T.  c /etc/httpd/conf/httpd.conf

Nedostaje datoteka userdir.conf httpd paketa te su datoteci httpd.conf izmijenjeni sadržaj i veličina te je ažurirano vrijeme izmjene.

[root@posluzitelj ~]# rpm --verify --all
S.5....T.  c /etc/yum.repos.d/CentOS-Base.repo
missing   c /etc/httpd/conf.modules.d/10-wsgi.conf
S.5....T.  c /etc/yum.conf
S.5....T.  c /etc/rsyslog.conf
S.5...GT.  c /etc/postfix/main.cf
.....U...  c /etc/postfix/master.cf

Nedostaje datoteka 10-wsgi.conf. Datotekama CentOS-Base.repo, yum.conf i rsyslog.conf izmijenjeni su sadržaj i veličina te je ažurirano vrijeme izmjene, dok je datoteci main.cf izmijenjena i grupa korisnika kojoj datoteka pripada. Datoteci master.cf izmijenjen je samo vlasnik datoteke i ništa drugo.

Važniji atributi izlaza naredbe rpm --verify su sljedeći:

Atribut

na što se izmjena odnosi

S

veličina datoteke

M

mod (dozvole i vrsta) datoteke

5

sadržaj datoteke

U

vlasnik datoteke

G

grupa korisnika kojoj datoteka pripada.

T

vrijeme izmjene je ažurirano.

 

Kao što vidimo, alati debsums i rpm s opcijom verify, umnogome nam mogu olakšati praćenje izmjena datoteka paketa na sustavima koje održavamo.

Alati posjeduju i druge korisne opcije te savjetujemo konzultirati njihove upute.