minute to read


cron-apt - automatische Sicherheitsupdates

Nicht immer ist es möglich alle Server mit den nötigsten Sicherheitsupdates zu versehen. Zum Beispiel, wenn man im Urlaub ist und keinen Internetzugang hat.

Damit meine Server auch während meiner Abwesenheit mit Sicherheitsupdates versorgt werden, habe ich das Programm cron-apt auf all meinen Servern installiert.

Cron-apt kann automatisch Sicherheitsupdates herunterladen und diese auch gleich installieren. 

Bevor das nun automatisiert laufen kann, muss noch etwas Vorarbeit geleistet werden.

Ich habe mir eine extra security.sources.list unter /etc/apt/ erstellt, die nur die Quellen von security.debian.org enthält.

deb http://security.debian.org/ lenny/updates main contrib non-free 
deb-src http://security.debian.org/ lenny/updates main contrib non-free
Jetzt wird das Programm installiert:
apt-get install cron-apt

Nun muss die config Datei von cron-apt angepasst werden.

Hier der Auszug aus meiner config Datei. Es werden nur die auskommentierten Zeilen angezeigt.

grep -v ^# /etc/cron-apt/config  APTCOMMAND=/usr/bin/apt-get  export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin  ACTIONDIR="/etc/cron-apt/action.d"  ACTIONCONFDIR="/etc/cron-apt/config.d"  SYSLOGMSGDIR="/etc/cron-apt/syslogmsg.d"  ERRORMSGDIR="/etc/cron-apt/errormsg.d"  MAILONMSGSDIR="/etc/cron-apt/mailonmsgs"  TEMP="/var/log/cron-apt/temp"  MAIL="/var/log/cron-apt/mail"  MAILTO="meine@e-mail-adresse.de"  MAILON="always"  OPTIONS="-o quiet=1 -o Dir::Etc::SourceList=  /etc/apt/security.sources.list"  HOSTNAME=""

Die config Datei ist gut beschrieben, sodass ich keine Erklärung zu den einzelnen Zeilen schreibe.

Voraussetzung, dass cron-apt auch E-Mails versendet ist ein fertig konfigurierter Mailserver, wie z.B. Postfix.

Damit cron-apt nicht nur die Sicherheitsupdates herunterlädt, sondern auch installiert, muss folgende Datei noch bearbeitet werden.

/etc/cron-apt/action.d/3-download

Hier muss der Parameter -d entfernt werden.

Jetzt fehlt nur noch die Uhrzeit, wann cron-apt die Sicherheitsupdates aus dem Internet herunterladen soll. Standardmäßig würde dies jede Nacht um 4 Uhr passieren. 

Da meine Firewall die Internetverbindung um 2 Uhr trennt, würde cron-apt ins Leere laufen.

Hier muss die Datei /etc/cron.d/cron-apt bearbeitet werden und die gewünschte Uhrzeit eingetragen werden.

# Regular cron jobs for the cron-apt package # Every night at 4 o'clock. 0 4    * * *   root    test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt # Every hour. # 0 *   * * *   root    test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt /etc/cron-apt/config2 # Every five minutes. # */5 * * * *   root    test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt /etc/cron-apt/config2

Um zu sehen, ob auch alles funktioniert, kann ein Testlauf mit cron-apt -s durch geführt werden.

cron-apt -s CRON-APT RUN [/etc/cron-apt/config]: Sat Sep 18 04:00:02 CEST 2010 CRON-APT SLEEP: 1637, Sat Sep 18 04:27:19 CEST 2010 CRON-APT ACTION: 3-download CRON-APT LINE: /usr/bin/apt-get dist-upgrade -y -o APT::Get::Show-Upgraded=true Reading package lists... Building dependency tree... Reading state information... The following packages will be upgraded:linux-libc-dev 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 769kB of archives. After this operation, 4096B of additional disk space will be used. Get:1 http://security.debian.org stable/updates/main linux-libc-dev 2.6.26-25lenny1 [769kB] Fetched 769kB in 0s (1575kB/s) (Reading database ... 54113 files and directories currently installed.) Preparing to replace linux-libc-dev 2.6.26-25 (using ... /linux-libc-dev_2.6.26-25lenny1_i386.deb) ... Unpacking replacement linux-libc-dev ... Setting up linux-libc-dev (2.6.26-25lenny1) ...