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


56

サーバー管理の少しを学ぶために、私は単純なUbuntu 14.04サーバーをセットアップし、その上で個人のWebサイトを実行しています。セキュリティ更新プログラムを自動的にインストールするように設定しましたが、他の更新は省略します。これはかなりうまくいくようです。サーバーに(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

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

しかし一つの最後の質問:あるlowmediumhighだけ緊急性の可能性、または任意のは、より多くのような例のためにそこにありますcriticalextremelyimportant


質問がわかりません。トラフィックの多いWebサイトは、トラフィックの少ない期間にこのダウンタイムをスケジュールするだけです。緊急度は、正確に更新される内容によって異なります。
ラムハウンド14

14
私は、彼らが「ホットネットワークの質問」リストに質問を見て、虚辞が何であったか疑問に思ったので、多くの人がここに来たんだろう... *提起手*
デビッドRicherby

6
@Ramhound:ええ、いや、彼らはメンテナンス期間中に透過的にセカンダリサーバーに切り替えます。
、モニカとライトネスレース、

1
最後の質問について:私はおよびを除外し、他のすべての/未知のレベルを緊急に検討することを念頭に置いています: | grep 'urgency=' | egrep -v '=(low|medium)'
KajMagnus

回答:


45

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

99.9%を超える可用性を保証する場合、ほとんど常にクラスター化されたシステムがあり、サービスを中断することなくノードを1つずつリブートできます。

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


2
ご回答有難うございます。最初の質問に少しだけ追加しました。cat /var/run/reboot-required.pkgs再起動が必要なパッケージを取得するためにできることを知っています。しかし、これらがマイナーな修正にすぎないのか、それとも深刻なセキュリティ脆弱性であるのかをどのようにして知ることができますか?
kramer65 14

2
@ kramer65各パッケージには変更ログがあります。例えば、カーネルのchanglogはここにあります
ウーヴェPlonus

2
それでは、これらの変更が重要であるかどうかを判断するのはシステム管理者(つまり、この場合は自分)です。私はLinuxカーネルについてこれを判断するための知識があまりにも少なすぎて、他のすべてのパッケージについては言うまでもありません。セキュリティのために更新プログラムが絶対に必要かどうかを判断できる中心的な場所はありませんか?
kramer65 14

8
@ kramer65 Run aptitude changelog <package>、ここに出力例があります:paste.ubuntu.com/8410798(これはUbuntuではなくDebianシステム上にありますが、Ubuntuでも同じように動作します。)
nyuszika7h

5
ここのすべての助けてくれてありがとう。最後に、ここで学んだすべてのことを1つのコマンドに結合しましたxargs aptitude changelog < /var/run/reboot-required.pkgs | grep urgency=high(最初の質問にも追加しました)。これにより、どのパッケージに緊急のパッチが適用されているかがわかります。その後、個々のパッケージを検査できます。すべての答えとアイデアに感謝します!
kramer65 14

3

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

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

「トピック」ソリューションに2つの問題があります。

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

私の論理は:

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

Debianのドキュメントを使用して、「緊急度」に5つの可能な値を見つけました。また、その後にequal( "=")またはセミコロン( ":")文字が続くこともあります。また、大文字と小文字を使用できます

だから私は次のようになりました:

#!/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%の時間になるはずのWebサーバーでこれがどのように機能するのですか?セキュリティ更新プログラムがインストールされていないために、単に再起動せず、セキュリティが侵害される危険性はありませんか(想像できません)。または、彼らは当然のこととしてダウンタイムを取りますか(私も想像できません)?

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

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


1
これは理論的には正しいBig web serversですが、Linuxのカスタムバージョンを実行します。System restart required対話は表示されず、セキュリティを維持するために必要なものを更新します。ほとんどの場合、システムの実行中にすべてではないにしても多くの更新を実行できます(実行中のシステムでLinuxカーネルを再起動せずに更新することも可能だと思います)。
joeeey

面白い。Amazonにサーバーがあり、このメッセージのために頻繁に再起動します...サーバーでUbuntuを実行しています。時々再起動する必要がないようにカスタマイズする方法は?
ロム

Amazonサーバーの使用経験はありません。Big web servers専用サーバーとVPSで実行されます。このため、システム管理者はソフトウェアをより詳細に制御できます。Amazonは、サーバーへのルートシェルアクセスを提供しますか?
joeeey

はい、rootアクセスが可能です。
ロム

その後、パッケージを手動で更新し、影響を受けるサービスを再起動し、カーネルの更新にKspliceのようなものを使用するのが1つの方法です。freezes execution of a computer so it is the only program runningパッチを適用する際にKsplice を使用することは注目に値します。そのため、(Webサーバープロセスが「フリーズ」しているため)少しのダウンタイムがある可能性があります。ここで、@ Uwe Plonusの答えが出てきます。
joeeey
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.