- Debian セキュリティ勧告:DSA-1571-1 openssl -- 予測可能な乱数の生成
- Debian JP:OpenSSL パッケージの脆弱性とその影響について (SSH鍵、SSL証明書等)
- Shash.dot.jp: Debianのopensslパッケージに欠陥発覚
- Debian, Ubuntu等に限定したOpenSSLの脆弱性
- Debian Wiki: SSL keys
この脆弱性は面倒だ。OpenSSHを使っているとき、Etch(stable), Lenny(testing), Sid (unstable)で秘密鍵と公開鍵をつくり、その公開鍵を用いて他のサーバにログインしているならば、この公開鍵をすべて置き換えないといけない。
うぁ、午後がつぶれる。
追記 (2008/05/16 16:50)
この脆弱性は、安定版ディストリビューション(etch)では0.9.8c-4etch3で、テスト版(lenny)および不安定版ディストリビューション(sid)ではバージョン 0.9.8g-9 でそれぞれ修正されている。利用者は問題のあるバージョンのOpenSSLで生成された暗号鍵かどうかを調べるツールで確認の上、該当パッケージをアップグレード、暗号鍵を再生成することが推奨される。
自分のバージョンを以下のコマンドで確認
% cat /proc/version
現在インストールされているバージョンを以下のコマンドで確認
% dpkg -l | grep openssl
Ringserver Projectの理研のサーバからダウンロードしていたのだけれども、16:50現在、理研のRing server内のパッケージは古いバージョンのままだった。
自分がDebian系でサーバーを立てている場合
とにかく、opensslを差し替える必要あり。特にこだわりがなければアップグレードをする。なお、このときにサーバの秘密鍵が自動的に差し替えられるので、他のマシンからSSHログインしようとするとエラーが出る。そのマシンのknown_hostsをクリアすること。
etchの場合
% sudo aptitude update % sudo aptitude dist-upgrade
lennyの場合
% sudo aptitude update % sudo aptitude safe-upgrade
次に、Apache SSLとかSMTP AUTHとかover SSL/TLSを使っているサービスにおける証明書を作り直す。個々のやり方は以下を参照。
最後にそのサーバにログイン可能なユーザーが使用している公開鍵が安全なものかどうかを確かめる。etchとsidの場合は、ssh-vulnkeyというコマンドを使えば良いらしい。openssl-serverをアップグレードしたときに自動的に追加されるコマンドらしい。
% sudo ssh-vulnkey -a
Lennyの場合は、どうもssh-vulnkeyというコマンドがインストールされていない。downk.plをダウンロードしチェックする。参考
% cd /tmp % wget http://security.debian.org/project/extra/dowkd/dowkd.pl.gz % wget http://security.debian.org/project/extra/dowkd/dowkd.pl.gz.asc % gpg --keyserver subkeys.pgp.net --recv-keys 02D524BE % gpg --verify dowkd.pl.gz.asc % gunzip dowkd.pl.gz % perl dowkd.pl user
脆弱性のある鍵を使っている利用者がいたら、連絡して差し替えさせる。
自分がDebian以外のサーバを立てている場合
downk.plをダウンロードし、脆弱性のある公開鍵でログインしているユーザーがいないかどうかをチェックする。参考
% cd /tmp % wget http://security.debian.org/project/extra/dowkd/dowkd.pl.gz % wget http://security.debian.org/project/extra/dowkd/dowkd.pl.gz.asc % gpg --keyserver subkeys.pgp.net --recv-keys 02D524BE % gpg --verify dowkd.pl.gz.asc % gunzip dowkd.pl.gz % perl dowkd.pl user
脆弱性のある鍵を使っている利用者がいたら、連絡して差し替えさせる。
クライアント(サーバに接続する側)としてDebianを使っているとき
公開鍵認証しか許されていないときには、サーバの管理者の協力が必要なので協力要請すること。
自分のDebianマシンで作った秘密鍵と公開鍵のペアを使ってSSHログインしている場合、そのログイン先に脆弱性を配布しているようなものなので、すべてもれなく公開鍵を差し替えること。
まず、opensslをアップデート。特にこだわりがなければaptitudeを用いてupgradeをする。
% sudo aptitude update % sudo aptitude dist-upgrade か sudo aptitude safe-upgrade
次に~/.ssh/known_hostsの中身を削除。
% cat /dev/null > ~/.ssh/know_hosts
そして、秘密鍵と公開鍵ペアの作り直す。
% ssh-keygen -t rsa か ssh-keygen -t dsa
公開鍵をサーバーへコピー。本来は物理的な手段で移動させるべきだけれどもパスワード認証が許可されるなら横着してssh経由で移動させる。
% scp ~/.ssh/id_rsa.pub ユーザー名@サーバーのFQDN:
次にサーバーへログインする。
% ssh ユーザー名@サーバーのFQDN
~/.ssh/authorized_keysから古い鍵を削除する。
% vi ~/.ssh/authorized_keys
どれが古い鍵か分からない場合はauthorized_keysの中身をすべて消して,必要な公開鍵を一から登録しなおす。すべての鍵を消す場合には以下のようにする。
% cat /dev/null > ~/.ssh/authorized_keys
公開鍵を追加する。
% cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
以上で終わり。