सुरक्षा के लिए *** सिस्टम रिस्टार्ट आवश्यक *** कितना जरूरी है?


56

सर्वर प्रशासन का एक सा सीखने के लिए मैंने एक साधारण Ubuntu 14.04 सर्वर स्थापित किया है, जिस पर मैं एक निजी वेबसाइट चलाता हूं। मैंने इसे स्वचालित रूप से सुरक्षा अद्यतन स्थापित करने के लिए सेट किया है, लेकिन अन्य अपडेट छोड़ दें। यह बहुत अच्छा काम करने लगता है। कभी-कभी सर्वर में लॉग इन करते समय मुझे एक संदेश मिलता है (ssh के साथ) यह कहते हुए:

*** System restart required ***

कई बार ऐसा हुआ जब मैंने उबंटू को सरल रीबूट किया और सब ठीक था। यह ठीक है क्योंकि यह एक साधारण व्यक्तिगत वेबसाइट है। हालांकि मुझे आश्चर्य है कि यह वेबसर्वर्स के लिए कैसे काम करता है जो कि 99.9999etc% समय तक होना चाहिए? क्या वे केवल सुरक्षा को फिर से शुरू करने और जोखिम में डालने का जोखिम नहीं उठाते क्योंकि सुरक्षा अद्यतन स्थापित नहीं हैं (जिसकी मैं कल्पना नहीं कर सकता)? या क्या वे नीचे दिए गए समय को लेते हैं (जिसकी मैं कल्पना भी नहीं कर सकता)?

अगर मैं एक बहुत ही महत्वपूर्ण प्रोडक्शन सर्वर हूं, जिसे मैं चालू रखना चाहता हूं, तो मुझे इसे कैसे संभालना चाहिए? सभी सुझावों का स्वागत है!

[संपादित करें] मुझे पता है कि मैं उन cat /var/run/reboot-required.pkgsपैकेजों को सूचीबद्ध करने के लिए कर सकता हूं जो रिबूट का कारण बनते हैं। वर्तमान में आदेश निम्न पैदावार देता है:

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

लेकिन मुझे कैसे पता चलेगा कि अपडेट्स छोटी चीजें हैं या नहीं, अगर मैं पुनरारंभ नहीं करता हूं तो क्या मुझे सुरक्षा की गंभीर सुरक्षा क्षमता है?

[EDIT2] ठीक है, मैंने अब उन कमांडों को जोड़ दिया है जिन्हें मैंने एक में उपयोगी पाया है:

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

यदि यह कुछ भी आउटपुट नहीं करता है, तो उच्च तात्कालिकता के साथ सुरक्षा मुद्दे प्रतीत नहीं होते हैं।

एक अंतिम प्रश्न हालांकि: हैं low, mediumऔर highकेवल तात्कालिक संभावनाएं हैं, या उदाहरण के लिए कोई और अधिक है criticalया extremelyimportant?


मुझे सवाल समझ नहीं आ रहा है। बड़े ट्रैफ़िक वाली वेबसाइटें कम ट्रैफ़िक के साथ समय-समय पर इस डाउनटाइम को शेड्यूल करती हैं। यह कितना जरूरी है यह इस बात पर निर्भर करता है कि वास्तव में क्या अपडेट किया जा रहा है।
रामहाउंड

14
मुझे आश्चर्य है कि कितने लोग यहां आए क्योंकि उन्होंने "हॉट नेटवर्क क्वेश्चन" सूची में प्रश्न देखा और आश्चर्य किया कि क्या
एक्सपेक्टिव

6
@ रामहाउंड: एहम, नहीं, वे रखरखाव की अवधि के लिए पारदर्शी रूप से एक माध्यमिक सर्वर पर स्विच करते हैं।
मोनिका

1
आखिरी सवाल: मैं ध्यान में रख रहा हूं कि निम्न और मध्यम फ़िल्टर करें और अन्य सभी / अज्ञात स्तरों पर तत्काल विचार करें: | grep 'urgency=' | egrep -v '=(low|medium)'
काजाग्नस

जवाबों:


45

कोई सरल जवाब नहीं है क्योंकि यह किए गए अपडेट पर निर्भर करता है। यदि कर्नेल को एक गंभीर सुरक्षा समस्या थी, तो जल्द से जल्द पुनः आरंभ करना अच्छा है। यदि कर्नेल में केवल मामूली सुधार होते हैं, तो पुनरारंभ को स्थगित किया जा सकता है।

यदि आप एक उपलब्धता की गारंटी देते हैं> 99.9% तो आपके पास लगभग हमेशा एक क्लस्टर सिस्टम होगा जहां आप सेवा को बाधित किए बिना एक-एक करके नोड्स को रिबूट कर सकते हैं।

तो आप पहले सिस्टम को रिबूट करें और इसे क्लस्टर में रीटच करें। फिर दूसरा वगैरह। फिर सेवा कभी भी अनुपलब्ध नहीं होगी।


2
आपके उत्तर के लिए धन्यवाद। मैंने अपने शुरुआती प्रश्न में थोड़ा सा टुकड़ा जोड़ा; मुझे पता है कि मैं उन cat /var/run/reboot-required.pkgsपैकेजों को प्राप्त करने के लिए कर सकता हूं जिनके लिए रिबूट की आवश्यकता होती है। लेकिन मुझे कैसे पता चलेगा कि ये केवल मामूली सुधार हैं, या क्या यह एक गंभीर सुरक्षा भेद्यता है?
kramer65

2
@ kramer65 प्रत्येक पैकेज में एक चैंज होता है। उदाहरण के लिए कर्नेल के लिए परिवर्तन यहाँ पाया जा सकता है
उवे प्लोनस

2
ठीक है, तो फिर यह sysadmin पर निर्भर है (यानी: इस मामले में खुद) यह निर्धारित करने के लिए कि क्या वे परिवर्तन महत्वपूर्ण हैं? लिनक्स कर्नेल के लिए इसे निर्धारित करने के लिए मेरे पास अभी तक बहुत कम ज्ञान है, अकेले सभी zillion अन्य पैकेजों के लिए। क्या कोई केंद्रीय स्थान नहीं है जहां मैं एक दृढ़ संकल्प पा सकता हूं कि क्या सुरक्षा के लिए अद्यतन की आवश्यकता है?
kramer65

8
@ kramer65 रन aptitude changelog <package>, यहां एक उदाहरण आउटपुट है: paste.ubuntu.com/8410798 (यह एक डेबियन सिस्टम पर है, उबंटू नहीं, लेकिन उबंटू पर भी यही काम करेगा।)
nyuszika7h

5
यहाँ सभी की मदद के लिए धन्यवाद। मैंने अंततः उन सभी चीजों को मिलाया है जो मैंने यहां एक कमांड में सीखी हैं: xargs aptitude changelog < /var/run/reboot-required.pkgs | grep urgency=high(इसे प्रारंभिक प्रश्न के साथ भी जोड़ा) जो कुछ आउटपुट देता है, जिसमें पैकेज अत्यधिक जरूरी पैच होते हैं। उसके बाद, व्यक्तिगत पैकेजों का निरीक्षण किया जा सकता है। सभी उत्तर और विचारों के लिए एक लाख धन्यवाद!
kramer65

3

विषय समाधान के लिए addon

मैं zabbix निगरानी प्रणाली के लिए 'रिबूट आवश्यकता' के लिए समान जांच करता हूं

मैं 'विषय' समाधान में 2 अंक देखता हूं:

  1. योग्यता आमतौर पर लिपियों में बुरी तरह से काम करती है। मैं कुछ घंटे मारता हूं, लेकिन फिर भी यह zabbix के साथ काम नहीं करता है
  2. यदि केवल 1 चैंज में तत्काल अपडेट शामिल है - तो आपका चेक हमेशा सकारात्मक परिणाम दिखाएगा

मेरा तर्क है:

  1. हर पैकेज के लिए केवल चैंज में अंतिम बदलाव की जाँच करें जिसमें सिस्टम रिबूट की आवश्यकता होती है
  2. एक आउटपुट के रूप में केवल सर्वोच्च प्राथमिकता अद्यतन दिखा

डेबियन दस्तावेज़ीकरण का उपयोग करते हुए मुझे 'तात्कालिकता' के लिए 5 संभावित मान मिले और यह भी कि यह समान ("=") या अर्धविराम (":") वर्णों का अनुसरण कर सकता है। इसके अलावा ऊपरी और निचले मामले के पात्र भी हो सकते हैं

तो मैं निम्नलिखित के साथ समाप्त हुआ:

#!/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

नतीजतन:

  • reboot_required_check.sh status अगर रिबूट की आवश्यकता है तो 1 रिटर्न, 0 नहीं है तो
  • reboot_required_check.sh urgency रिबूट की आवश्यकता नहीं होने पर उच्चतम 'तात्कालिकता' स्तर या '0' देता है

आशा है कि यह किसी को समय बचाने में मदद करता है;)


0

हालांकि मुझे आश्चर्य है कि यह वेबसर्वर्स के लिए कैसे काम करता है जो कि 99.9999etc% समय तक होना चाहिए? क्या वे केवल सुरक्षा को फिर से शुरू करने और जोखिम में डालने का जोखिम नहीं उठाते क्योंकि सुरक्षा अद्यतन स्थापित नहीं हैं (जिसकी मैं कल्पना नहीं कर सकता)? या क्या वे नीचे दिए गए समय को लेते हैं (जिसकी मैं कल्पना भी नहीं कर सकता)?

सुरक्षा कारणों से * सिस्टम रिस्टार्ट * दिखाई देने पर बड़े वेब सर्वर को फिर से शुरू किया जाता है।

लेकिन यह उपयोगकर्ता के लिए पारदर्शी है और साइट कभी भी डाउन नहीं होती है क्योंकि बड़े सर्वर अक्सर दो या तीन सर्वर चलाते हैं जो बिल्कुल उसी फाइलों को स्टोर करते हैं और उसी साइट को प्रदर्शित करते हैं। पहला मुख्य सर्वर है जबकि दो अन्य माध्यमिक हैं और केवल मुख्य सर्वर के डाउन होने पर उपयोग किया जाता है।


1
जबकि यह सैद्धांतिक रूप से सही है, Big web serversलिनक्स के कस्टम संस्करण चलाएं। वे एक System restart requiredसंवाद नहीं देखेंगे , वे अपडेट करते हैं कि उन्हें सुरक्षित रहने के लिए क्या चाहिए। ज्यादातर मामलों में, कई अगर सिस्टम चल रहा है तो सभी अपडेट नहीं किए जा सकते हैं (मेरा मानना ​​है कि रिबूट के बिना चल रहे सिस्टम पर लिनक्स कर्नेल को अपडेट करना और भी संभव है)।
जोइए

दिलचस्प। मेरे पास अमेज़ॅन पर एक सर्वर है और मैं अक्सर इस संदेश के कारण इसे पुनरारंभ करता हूं ... मैं अपने सर्वर पर उबंटू चला रहा हूं। इसे कैसे कस्टमाइज़ किया जाए ताकि मुझे इसे हर बार रिबूट न ​​करना पड़े?
रोम

मुझे अमेज़ॅन सर्वर के साथ कोई अनुभव नहीं है। Big web serversसमर्पित सर्वर और वीपीएस पर चलाए जाते हैं। इस वजह से, सिस्टम प्रशासक का सॉफ्टवेयर पर अधिक नियंत्रण होता है। क्या अमेज़ॅन आपको अपने सर्वर पर रूट शेल एक्सेस देता है?
जॉय

हाँ, रूट एक्सेस करना संभव है।
रोम

फिर मैन्युअल रूप से पैकेजों को अपडेट करना, और फिर प्रभावित सेवाओं को फिर से शुरू करना, और कर्नेल अपडेट के लिए Ksplice जैसी किसी चीज़ का उपयोग करना एक तरीका होगा। यह ध्यान देने योग्य है कि freezes execution of a computer so it is the only program runningपैच लगाते समय Ksplice , इसलिए थोड़ा सा डाउनटाइम (वेब ​​सर्वर प्रक्रिया 'स्थिर' होने के कारण) हो सकता है। यह वह जगह है जहाँ @Uwe Plonus का जवाब आता है।
joeeey
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.