web-dev-qa-db-ja.com

セキュリティのために***システムの再起動が必要です***

サーバーの管理について少し学ぶために、個人のWebサイトを実行する単純なUbuntu 14.04サーバーをセットアップしました。セキュリティ更新プログラムを自動的にインストールするように設定しましたが、他の更新プログラムは除外します。これはかなりうまくいくようです。サーバーに(sshで)ログインすると、次のようなメッセージが表示されることがあります。

*** System restart required ***

これが起こったとき、私はUbuntuを単純に再起動しましたが、すべてうまくいきました。これはシンプルな個人用Webサイトなので問題ありません。しかし、私が疑問に思っているのは、これが時間の99.9999etc%であるはずのWebサーバーに対してどのように機能するのでしょうか。彼らは単に再起動せず、セキュリティ更新プログラムがインストールされていないためにセキュリティが侵害される危険を冒しているのでしょうか(想像できませんが)。または、彼らは当然のことながらダウンタ​​イムをとっていますか?

これが私が稼働し続けたい非常に重要な本番サーバーである場合、これをどのように処理すればよいですか?すべてのヒントは大歓迎です!

[編集]できることがわかっている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

しかし、再起動を行わなかった場合に深刻なセキュリティの脆弱性があるかどうかについて、更新が小さなものであるかどうかをどのようにして知ることができますか?

[編集2]さて、便利なコマンドを1つにまとめました。

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

これで何も出力されない場合、緊急性の高いセキュリティの問題はないようです。

最後の質問ですが、lowmedium、およびhighが緊急性の唯一の可能性です。または、たとえばcriticalextremelyimportant

57
kramer65

これは、行われた更新に依存するため、単純な答えではありません。カーネルに深刻なセキュリティ問題があった場合は、できるだけ早く再起動することをお勧めします。カーネルに小さな修正しかなかった場合は、再起動が延期される可能性があります。

99.9%を超える可用性が保証されている場合は、ほとんどの場合、サービスを中断せずにノードを1つずつ再起動できるクラスター化システムがあります。

したがって、最初のシステムを再起動して、クラスターに再接続します。次に2番目のように続きます。その後、サービスは利用できなくなります。

46
Uwe Plonus

トピックソリューションのアドオン

Zabbix監視システムの「再起動要件」について同様のチェックを実行します

「トピック」ソリューションに2つの問題がある:

  1. aptitudeは通常、スクリプトではうまく機能しません。私は数時間殺しましたが、それでもzabbixで動作しませんでした
  2. 緊急更新が1つだけ変更ログに含まれている場合-チェックは常に肯定的な結果を示します

私の論理は:

  1. システムの再起動が必要なすべてのパッケージについて、変更ログでのみ最後の変更を確認します
  2. 出力として、最高の優先順位の更新のみを表示します

Debianドキュメント を使用すると、 'urgency'に5つの可能な値が見つかり、equal( "=")またはセミコロン( ":")文字が後に続く可能性があることもわかりました。また、大文字と小文字を含めることができます

したがって、私は次のようになりました:

#!/bin/bash
##################################
# Zabbix monitoring script
#
# Checking urgency in changelog 
# for updates which require system restart
#
##################################
# Contact:
#  [email protected]
##################################
# 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」を返します

それが誰かが時間を節約するのに役立つことを願っています;)

3
user2658174

しかし、私が疑問に思っているのは、これが時間の99.9999etc%であるはずのWebサーバーに対してどのように機能するのでしょうか。彼らは単に再起動せず、セキュリティ更新プログラムがインストールされていないためにセキュリティが侵害される危険を冒しているのでしょうか(想像できませんが)。あるいは、彼らはダウンタイムを当然のことと思っていますか(私は想像もできません)?

*システムの再起動が必要*がセキュリティ上の理由で表示された場合、大きなWebサーバーが再起動されます。

しかし、これはユーザーには透過的であり、大きなサーバーが2つまたは3つのサーバーを実行して、まったく同じファイルを格納し、同じサイトを表示するため、サイトがダウンすることはありません。最初の1つはメインサーバーですが、他の2つはセカンダリであり、メインサーバーがダウンしている場合にのみ使用されます。

0
rom