問: apt-get upgrade (yum upgrade) だけでいいんだろうか
きっかけ: http://heartbleed.com/
めばえ: それは愛
起動しているプロセス全部をリブートしてくれるわけではないので、それだけだと「アップデートされたライブラリは生きてるプロセスから参照され続ける」という話がありまして。
以下は一例とのことですが。
# lsof -d DEL | fgrep -v -e /dev/zero -e /SYSV
... (うぞうむぞう)
これだけだとChromeプロセスの有象無象まで出てきますけど、ヒントですので十分です。
あと、こういうのもあるんだとか
最近ではReVIEW界隈でも色々救ってもらう機会が増えているむとぅ神です。
# grep ssl /proc/[0-9]*/maps | grep deleted
... (山ほどのlibssl.so)
手動でやる場合は、以降プロセスを殺すかサービス再起動するかすれば大体消えます。OSを丸ごとリブートするというのでも、まぁいいのか。
(めんせきそのほか: 筆者はこの記事の内容その他に責任を負い(え)ません。特にセキュリティが絡むことですので対応にはご注意ください。間違いや不足を見つけたらTwitter @amedamaまでご連絡ください。コメント欄は見てないかもしれません。適当に書いた後で不安になってめんせきそのほかがどんどん編集で増えているのは秘密です!)
(追加: 2014-04-09 8:12、9:30)
コメントいただきました。Debianのみの条件かもしれませんがさらにこういうのもあるようです
# apt-get install debian-goodies
# checkrestart
Found 29 processes using old versions of upgraded files
(3 distinct programs)
(3 distinct packages)
...
(以下詳細な説明)
...
These are the init scripts:
service ssh restart
service snmpd restart
service zabbix-server restart
強烈に有用なのは最後の部分という印象。
checkrestart自身が把握できる範囲で、何をやれば良いの一応の候補も教えてくれます。
init script周りであればservice hoge restart
の実行を推してくれるでしょう。
分からない範囲でも対処に必要な情報は色々くれます。
例としてPython製デーモンのceleryd。こちらはservice celeryd restart
できるのですが、このツールはあくまで"python2.7-minimal"のプロセスでありinit scriptはない、と判断し、上記のような提案はされませんでした。
それでも
These processes do not seem to have an associated init script to restart them:
...
python2.7-minimal:
3288 /usr/bin/python2.7
3303 /usr/bin/python2.7
3360 /usr/bin/python2.7
3359 /usr/bin/python2.7
といった形で再起動の判断に必要な情報は提供してくれました。
なおCentOSにcheckrestart
コマンド自体があるという様子はありませんでした。
参考(古いけど): https://www.centos.org/forums/viewtopic.php?t=17947
(追記 2014-04-09 14:17)
そういやもう少し重要な場所が書かれてなかった。念の為。
「サーバ証明書の見直し等も合わせてご検討ください」
(上の話はこれまでの普通のバグでもある程度通用するけど、ここだけはHeartbleedの特徴的な部分かなぁと)