Güvenlik için bir *** Sistemin yeniden başlatılması gerekiyor *** ne kadar acil?


56

Biraz sunucu yönetimi öğrenmek için üzerinde kişisel bir web sitesi işlettiğim basit bir Ubuntu 14.04 sunucusu kurdum. Güvenlik güncelleştirmelerini otomatik olarak yüklemesini ayarladım, ancak diğer güncelleştirmeleri dışarıda bıraktım. Bu oldukça iyi çalışıyor gibi görünüyor. Bazen sunucuya giriş yaparken bir mesaj alıyorum (ssh ile):

*** System restart required ***

Bu oldu kez basit Ubuntu yeniden başlattı ve her şey iyiydi. Bu tamam, çünkü basit bir kişisel web sitesi. Bununla ilgili merak ettiğim şey, bunun% 99,9999 upa kadar çıkması gereken web sunucuları için nasıl çalıştığıdır? Güvenlik güncelleştirmeleri yüklenmediği için (yeniden düşünemiyorum) yalnızca yeniden başlatılmıyorlar ve güvenlik ihlallerinden etkilenmiyorlar mı? Yoksa verilenler için kesinti yapıyorlar (hangisini hayal edemiyorum)?

Bu, sürdürmek ve çalıştırmak istediğim çok önemli bir üretim sunucusuysa, bununla nasıl başa çıkmalıyım? Tüm ipuçları bekliyoruz!

[EDIT] cat /var/run/reboot-required.pkgsYeniden başlatmaya neden olan paketleri listelemek için yapabileceğimi biliyorum . Komut şu anda aşağıdakileri sağlar:

linux-image-3.13.0-36-generic
linux-base
dbus
linux-image-extra-3.13.0-36-generic
linux-base

Ancak, yeniden başlatmayı yapmazsam, güncellemelerin ciddi bir güvenlik açığı olup olmadığına dair küçük şeyler olup olmadığını nasıl anlarım?

[EDIT2] Tamam, şimdi yararlı bulduğum komutları bire bir birleştirdim:

xargs aptitude changelog < /var/run/reboot-required.pkgs | grep urgency=high

Bu bir şey çıkarmazsa, aciliyeti yüksek güvenlik sorunları gibi görünmüyor.

Son bir soru olsa: vardır low, mediumve highsadece aciliyet olanakları veya daha fazla, örneğin gibi var criticalya extremelyimportant?


Soruyu anlamıyorum. Daha yoğun trafiğe sahip web siteleri bu aksama süresini daha az trafik olan bir süre boyunca basitçe zamanlar. Ne kadar acil olduğu tam olarak neyin güncellendiğine bağlı.
Ramhound

14
Buraya kaç kişinin geldiğini merak ediyorum, çünkü "Sıcak Ağ Soruları" listesinde soruyu gördüler ve
patlayıcıların

6
@Ramhound: Ehm, hayır, bakım süresince şeffaf bir şekilde ikincil bir sunucuya geçiyorlar.
Monica ile

1
Son soru: Düşük ve orta filtrelemeyi ve diğer tüm / bilinmeyen seviyeleri acil olarak | grep 'urgency=' | egrep -v '=(low|medium)'
düşünmeyi aklımda tutuyorum

Yanıtlar:


45

Yapılan güncellemelere bağlı olarak basit bir cevap değildir. Çekirdeğin ciddi bir güvenlik sorunu varsa, o zaman en kısa zamanda yeniden başlamak iyidir. Çekirdeğin küçük düzeltmeleri varsa, yeniden başlatma ertelenebilir.

% 99,9'dan fazla kullanılabilirlik garantisi veriyorsanız, hizmeti kesmeden düğümleri tek tek yeniden başlatabileceğiniz kümelenmiş bir sisteminiz olacaktır.

Böylece ilk sistemi yeniden başlatıyor ve kümeye yeniden yerleştiriyorsunuz. Sonra ikinci ve benzeri. O zaman servis asla kullanılamayacak.


2
Cevabınız için teşekkürler. İlk soruma küçük bir parça ekledim; cat /var/run/reboot-required.pkgsYeniden başlatma gerektiren paketleri almak için yapabileceğimi biliyorum . Ancak bunların yalnızca küçük düzeltmeler olup olmadığını veya ciddi bir güvenlik açığı olup olmadığını nasıl bilebilirim?
kramer65

2
@ kramer65 her paket bir değişmeze sahiptir. Örneğin, çekirdek için changlog burada bulunabilir .
Uwe Plonus

2
Tamam, öyleyse o zaman bu değişikliklerin önemli olup olmadığını belirlemek sysadmin'e (yani: bu durumda kendim) kalmış mı? Linux çekirdeği için bunu belirlemek için çok az bilgim var, diğer tüm zillion paketlerinde bile. Güncelleştirmenin güvenlik için kesinlikle gerekli olup olmadığına karar verebileceğim merkezi bir yer yok mu?
kramer65

8
@ kramer65 Çalıştır aptitude changelog <package>, işte örnek bir çıktı: paste.ubuntu.com/8410798 (Bu bir Debian sisteminde, Ubuntu'da değil, aynı şey Ubuntu'da da çalışacak.)
nyuszika7h 23:14

5
Buradaki yardımların için teşekkürler. Sonunda burada öğrendiğim her şeyi tek bir komutta birleştirdim: xargs aptitude changelog < /var/run/reboot-required.pkgs | grep urgency=high(ilk soruyu da ekledi) hangi paketlerin çok acil yamalar olduğu konusunda bazı çıktılar verdi. Bundan sonra, bireysel paketler elbette denetlenebilir. Tüm cevaplar ve fikirler için bir milyon teşekkürler!
kramer65

3

konu çözümü için addon

Zabbix izleme sistemi için 'yeniden başlatma gereksinimi' için benzer kontroller yapıyorum

'Konu' çözümünde 2 sayı görüyorum:

  1. yetenek genellikle senaryolarda kötü çalışır. Birkaç saatimi öldürdüm ama hala zabbix ile çalışmasını sağlayamadım
  2. sadece 1 değişiklik listesi acil güncelleme içeriyorsa - çekiniz her zaman olumlu sonuçlar gösterecektir

Benim mantığım:

  1. Sistemin yeniden başlatılmasını gerektiren her paket için yalnızca değişiklik sırasında son değişiklikleri kontrol et
  2. Bir çıktı olarak sadece en yüksek öncelikli güncellemeyi göster

Debian belgelerini kullanarak 'aciliyet' için 5 olası değer buldum ve aynı zamanda eşit ("=") veya noktalı virgül (":") karakterleri izleyebileceğini gördüm. Ayrıca büyük ve küçük harfler olabilir.

Bu yüzden aşağıdaki ile sona erdi:

#!/bin/bash
##################################
# Zabbix monitoring script
#
# Checking urgency in changelog 
# for updates which require system restart
#
##################################
# Contact:
#  anton.lugovoi@yandex.ru
##################################
# ChangeLog:
#  20151205    initial creation
#  20151208    check uniq packages only 
##################################

case "$1" in

status)
    if [ -f /var/run/reboot-required ]; then
      echo 1
    else
      echo 0
    fi 
    ;;

urgency)
    if [ -f /var/run/reboot-required.pkgs ]; then
      while read pkg; do
        tmp=`/usr/bin/apt-get changelog $pkg | \
             /bin/grep -m1 -ioP '(?<=[Uu]rgency[=:])(low|medium|high|emergency|critical)' | \
             tr '[:upper:]' '[:lower:]'`
        if [ -n $tmp ]; then
          if   [ "$tmp" == "low" ] && \
               [ "$urgency" != "medium" ] && \
               [ "$urgency" != "high" ] && \
               [ "$urgency" != "emergency" ] && \
               [ "$urgency" != "critical" ]; then 
            urgency=low
          elif [ "$tmp" == "medium" ] && \
               [ "$urgency" != "high" ] && \
               [ "$urgency" != "emergency" ] && \
               [ "$urgency" != "critical" ]; then 
            urgency=medium
          elif [ "$tmp" == "high" ] && \
               [ "$urgency" != "emergency" ] && \
               [ "$urgency" != "critical" ]; then 
            urgency=high
          elif [ "$tmp" == "emergency" ] && \
               [ "$urgency" != "critical" ]; then 
            urgency=emergency
          elif [ "$tmp" == "critical" ]; then 
            urgency=critical
            break
          fi
        fi 
      done < <(sort -u /run/reboot-required.pkgs)
    else
      urgency=none
    fi

    case "$urgency" in
        none)      urgency=0 ;;
        low)       urgency=1 ;;
        medium)    urgency=2 ;;
        high)      urgency=3 ;;
        emergency) urgency=4 ;;
        critical)  urgency=5 ;;
        *)         urgency=42 ;;
    esac

    echo $urgency
    ;;
esac
exit 0

Sonuç olarak:

  • reboot_required_check.sh status eğer yeniden başlatma gerekirse 1, değilse
  • reboot_required_check.sh urgency yeniden başlatma gerekmiyorsa en yüksek 'acil' seviyesini veya '0' değerini döndürür

Birisi zaman kazanmak için yardımcı olur umarım;)


0

Bununla ilgili merak ettiğim şey, bunun% 99,9999 upa kadar çıkması gereken web sunucuları için nasıl çalıştığıdır? Güvenlik güncelleştirmeleri yüklenmediği için (yeniden düşünemiyorum) yalnızca yeniden başlatılmıyorlar ve güvenlik ihlallerinden etkilenmiyorlar mı? Yoksa verilenler için kesinti yapıyorlar (hangisini hayal edemiyorum)?

Güvenlik nedeniyle * Sistemin yeniden başlatılması gerekli * ifadesi göründüğünde büyük web sunucuları yeniden başlatılıyor .

Ancak bu kullanıcı için şeffaftır ve site hiçbir zaman çökmez, çünkü büyük sunucular genellikle aynı dosyaları depolayan ve aynı siteyi görüntüleyen iki veya üç sunucuyu çalıştırır. İlki ana sunucudur, diğer ikisi ikincildir ve yalnızca ana sunucu kapalıyken kullanılır.


1
Bu teorik olarak doğru olsa da Big web servers, Linux'un özel sürümlerini çalıştırın. Bir System restart requireddiyalog görmeyecekler , güvende kalmak için ihtiyaçları olanı güncelleyecekler. Çoğu durumda, sistem güncellemeleri sırasında sistem güncellemelerinin tamamı yapılamazsa, çoğu çalışan bir sistemde Linux çekirdeğini yeniden başlatmadan güncellemenin mümkün olduğuna inanıyorum).
joeeey

İlginç. Amazon'da bir sunucum var ve bu mesaj yüzünden sık sık yeniden başlatıyorum ... Sunucumda Ubuntu kullanıyorum. Nasıl özelleştirebilirim, böylece tekrar tekrar başlatmam gerekmiyor mu?
rom

Amazon sunucuları ile hiç bir deneyimim yok. Big web serversözel sunucularda ve VPS'lerde çalıştırılır. Bu nedenle, sistem yöneticisi yazılım üzerinde daha fazla kontrole sahiptir. Amazon, sunucunuza kök kabuğu erişimi veriyor mu?
joeeey,

Evet, kök erişimine sahip olmak mümkündür.
rom

Sonra paketleri el ile güncellemek ve etkilenen hizmetleri yeniden başlatmak ve çekirdek güncellemeleri için Ksplice gibi bir şey kullanmak tek yol olabilir. freezes execution of a computer so it is the only program runningBir yama uygularken Ksplice'nin dikkat edilmesi önemlidir , bu nedenle (web sunucusu işleminin 'donmuş' olmasından dolayı) hala biraz kesinti olabilir. @Uwe Plonus'un cevabının geldiği yer burasıdır.
joeeey
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.