advchk – Automagisch uptodate mit advisories

Es gibt dutzende Webseiten und Mailinglisten die sicherheitsrelevante Advisories verbreiten. Hier auf dem letzten Stand zu bleiben und sofort zu wissen was wo upgedated werden muss ist mitunter etwas mühseelig. Hier hilft advchk welches sich die Advisories per RSS-Feed holt und gegen die aktuellste Paketliste der Systeme vergleicht.

 

HP: http://advchk.unixgu.ru/

Dependencies: LWP::Simple

 

User „advchk“ anlegen:
In /etc/passwd: advchk:x:1000:1000:Automated Advisory Check:/home/advchk:/bin/sh
In /etc/shadow: advchk:*:12433:0:99999:7:::
In /etc/groups: advchk:x:1000:

 

Installieren (als advchk User):
$ wget http://advchk.unixgu.ru/advchk-0.91.tar.gz
$ tar xzf advchk-0.91.tar.gz
$ cd advchk-0.91
advchk-0.91 $ ./addFeeds.sh
advchk-0.91 $ for i in host1 host2 host3 user@host4; do ./enableSshUpdate.sh $i; done

Statt enableSshUpdate.sh (dann müssten die Accounts kurzfristig ein Passwort bekommen) kann man die Accounts auch händisch einrichten. Dann muss/sollte man aber die Zeile „‚command=“dpkg -l || pkg_info || rpm -qa || equery list -i“ ‚“ auch händisch in die authorized_keys eintragen.

Ggf. kann man vor dem ausführen von addFeeds.sh noch folgende RSS-Feeds in das Shellscript eintragen:
http://www.linux-community.de/Ticker/advisories.rdf\
http://seclists.org/rss/bugtraq.rss\
http://seclists.org/rss/fulldisclosure.rss\
http://CERT.Uni-Stuttgart.DE/ticker/rus-cert-elsewhere.rdf\
http://groups.google.com/group/de.comp.security.misc/feed/rss_v2_0_topics.xml\
http://cert.uni-stuttgart.de/ticker/rus-cert.rdf\

 

„Konfigurieren“:
advchk-0.91 $ vi sshUpdate.sh

HOSTLIST=“host1 host2 host3 user@host4″;

Und löschen der 6. Zeile!

 

Erstausführung von sshUpdate.sh um eine initialliste der Pakete zu haben und ggf. Fehler beim Listenholen mitzubekommen und zu beheben:
advchk-0.91 $ ./sshUpdate.sh

 

Cronjobs einrichten:
advchk-0.91 $ crontab -e

MAILTO=“sysadmin@domain.de“
0 5,11,17,23 * * * cd ~/advchk-0.91; ./sshUpdate.sh
0 0,6,12,18 * * * cd ~/advchk-0.91; ./advchk -cql advchk.log

 

Und das wars. 🙂