サーバー管理のビットを学ぶために、私は私が個人的なウェブサイトを実行しているシンプルなUbuntu 14.04サーバーを設定しました。私はそれを自動的にセキュリティアップデートをインストールするように設定しましたが、他のアップデートを放置しています。これはかなりうまくいっているようです。時折、サーバーにログインすると(sshで)こういったメッセージが出ます
*** System restart required ***
このようなことが起こった回は、Ubuntuを簡単に再起動してみたところ、すべて問題ありませんでした。それは単純な個人のウェブサイトだから、これは大丈夫です。私が疑問に思うことは、しかし、これは時間の99.9999etc%をアップする必要がありますWebサーバーのためにどのように動作するのでしょうか?単に再起動しないだけで、セキュリティアップデートがインストールされていないためにセキュリティが破られる危険性があるのだろうか(私には想像もつかない)。それとも、ダウンタイムを当然のことだと思っているのでしょうか?
これが非常に重要な本番サーバーで、常に稼働させておきたい場合、どのように対処すればいいのでしょうか?すべてのヒントを歓迎します!
EDIT] 再起動の原因となるパッケージをリストアップするために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] よし、これで便利だと思ったコマンドを1つにまとめてみた
xargs aptitude changelog < /var/run/reboot-required.pkgs | grep urgency=high
これで何も出力されないのであれば、緊急性の高いセキュリティ上の問題はなさそうです
最後の質問ですが、low
, medium
, high
だけが緊急性の可能性があるのでしょうか?
57 None 2014-09-23
アップデートの内容にもよりますので、簡単な答えはありません。カーネルに深刻なセキュリティ問題があった場合は、できるだけ早く再起動するのが良いでしょう。カーネルにマイナーな修正があった場合は、再起動を延期することができます
99.9%の可用性が保証されていれば、ほとんどの場合、サービスを中断することなくノードを1つずつ再起動することができるクラスタ化されたシステムになります
最初のシステムを再起動してクラスタに再接続します。次に2番目のシステムなどを再起動します。そうすれば、サービスが利用できなくなることはありません
46 Uwe Plonus 2014-09-23
トピック解決のためのアドオンです
zabbix監視システムの再起動要件についても同様のチェックを行っています
トピック」の解決策には2つの問題があります
- aptitudeは通常スクリプトではうまく動作しません。数時間潰してもzabbixでは動かなかった
- 1つの変更履歴に緊急アップデートが含まれている場合 – あなたのチェックは常にポジティブな結果を示します
私の論理は
- システムの再起動を必要とするすべてのパッケージについて、 changelog の最後の変更のみをチェックします
- 出力としては、優先度の高い更新のみを表示します
Debian ドキュメント を使って、’urgency’ には 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’ を返します
それは誰かが時間を節約するのに役立ちます。)
3 user2658174 2015-12-05
しかし、私が疑問に思うのは、99.9999%etc.の確率で稼働しているはずのウェブサーバでは、どのように動作するのかということです。単に再起動しないだけで、セキュリティアップデートがインストールされていないためにセキュリティが破られる危険性があるのでしょうか(私には想像できません)?それとも、ダウンタイムを当然のことだと思っているのでしょうか?
セキュリティ上の理由により、システムの再起動が必要と表示された場合、ビッグウェブサーバが再起動されます
しかし、これはユーザーには透過的で、サイトがダウンすることはありません。なぜなら、大きなサーバーはしばしば、全く同じファイルを保存し、同じサイトを表示する2つまたは3つのサーバーを実行しているからです。最初の1台はメインサーバーで、他の2台はセカンダリで、メインサーバーがダウンしている時だけ使用します
0 rom 2015-05-02