Ubuntu'da bekleyen güvenlik güncellemelerinin sayısını kontrol et


25

Hem güvenlik hem de normal paketler için Ubuntu sunucularımızda otomatik güncellemeleri etkinleştirmemin yasak olduğunu söyleyerek başlayayım.

Dört Ubuntu sunucumdan birine giriş yaptığımda hoşgeldin mesajı şunu içeriyor:

39 packages can be updated.
26 updates are security updates.

Ancak, APT'yi izleyen Nagios eklentisini çalıştırdığımda şunu alıyorum:

% /usr/lib/nagios/plugins/check_apt
APT WARNING: 33 packages available for upgrade (0 critical updates). 

Bekleyen güvenlik güncelleştirmelerinin ve düzenli güncelleştirmelerin nasıl düzgün bir şekilde algılandığını bilmem gerekiyor. Bunu yapabildiğimde, bekleyen güncellemeler için WARNING ve bekleyen güvenlik güncellemeleri için CRITICAL'i döndürecek bir Nagios betiği yazmayı planlıyorum .

Bu iki durumu nasıl tespit edeceğini bilen var mı?

Yanıtlar:


12

Nagios eklentisi /usr/lib/nagios/plugins/check_apt, Ubuntu'daki kritik aptolmayan güncellemelerin yayınlanma şekliyle birlikte kritik güncellemeleri nasıl algıladığından dolayı kritik güncellemeleri Ubuntu'da doğru şekilde algılamıyor . Burda daha fazla ayrıntı var: https://bugs.launchpad.net/bugs/1031680

/usr/lib/update-notifier/apt-checkBunun yerine kullanmak güvenilir bir geçici çözümdür.


31

Bekleyen düzenli güncelleme sayısının aşağıdakiler kullanılarak bulunabileceğini belirtir :

/usr/lib/update-notifier/apt-check 2>&1 | cut -d ';' -f 1

Ve bekleyen güvenlik güncellemelerinin sayısı aşağıdakileri kullanarak bulunabilir:

/usr/lib/update-notifier/apt-check 2>&1 | cut -d ';' -f 2

Sonunda, Nagios eklentim aşağıdaki gibidir:

#!/bin/sh
#
# Standard Nagios plugin return codes.
STATUS_OK=0
STATUS_WARNING=1
STATUS_CRITICAL=2
STATUS_UNKNOWN=3

# Query pending updates.
updates=$(/usr/lib/update-notifier/apt-check 2>&1)
if [ $? -ne 0 ]; then
    echo "Querying pending updates failed."
    exit $STATUS_UNKNOWN
fi

# Check for the case where there are no updates.
if [ "$updates" = "0;0" ]; then
    echo "All packages are up-to-date."
    exit $STATUS_OK
fi

# Check for pending security updates.
pending=$(echo "${updates}" | cut -d ";" -f 2)
if [ "$pending" != "0" ]; then
    echo "${pending} security update(s) pending."
    exit $STATUS_CRITICAL
fi

# Check for pending non-security updates.
pending=$(echo "${updates}" | cut -d ";" -f 1)
if [ "$pending" != "0" ]; then
    echo "${pending} non-security update(s) pending."
    exit $STATUS_WARNING
fi

# If we've gotten here, we did something wrong since our "0;0" check should have
# matched at the very least.
echo "Script failed, manual intervention required."
exit $STATUS_UNKNOWN

1

Neden apt-get komutunu kullanmıyorsunuz ?:

apt-get -s dist-upgrade | grep "^Inst" | grep -i security | wc -l

2
Bu kesmek, güvenlikle güvenlikle ilgili olmayan güncelleştirmeler arasında güvenilir bir ayrım yapmaz. Örneğin, Ubuntu'da, güvenlik güncellemeleri güncellemeler cebinde de yayınlanır. Güncellemeler cebinde ilk olarak listelenirse sources.list, öneriniz eksik güvenlik güncellemesi bildirimlerine yol açacaktır. apt, onları güncellemeler cebinden indirmeyi seçecek ve grep'iniz onları özleyecektir.
Robie Basak,

@RobieBasak tarafından tanımlanan sorun serverfault.com/a/856769/134053
13.03

0

Nagios, güvenlik güncellemelerinin olduğunu bildirdikten sonra, hangilerinin gerekli olduğunu gösteren bir liste çıkar.

grep security /etc/apt/sources.list > /tmp/security.list
sudo apt-get upgrade -oDir::Etc::Sourcelist=/tmp/security.list -s

Size sayımı vermek için wc -l içine aktarılan bu komutları da kullanabilirsiniz, ancak yukarıdaki cevaplar muhtemelen Nagios betiği için daha verimli ve uygundur.


"-ODir" bir yazım hatası mı?
Travis van der Font,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.