あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

Raspbianの初回起動時に生成されるホスト鍵が予測可能なレベルのものらしいという話を見つけた

なんかネタが見つかったし、カレンダーも空いていたので、Raspberry Pi Advent Calendar 2015@Adventar 9日目です。

Raspberry Pi Advent Calendar 2015 - Adventar

Raspberry Pi • View topic - Predictable SSH host keysより、Raspbian(最新の2015-11-21-raspbian-jessie.zipを対象としていますがおそらくJessie全体かなと思います)の、初回起動時に実行されるregenerate_ssh_host_keysが生成するSSHホスト鍵が予測可能なのではないかとの指摘が上がっていました。

systemd-random-seedが/var/lib/systemd/random-seedができる前に/dev/urandomの準備しようとしてコケてしまい、続けてregenerate_ssh_host_keysが実行されるため、/dev/urandomが不十分な状態のままSSHホスト鍵を生成されることから、予測可能なレベルの鍵が生成されてしまう、という理由のようです。あとのリプライにありましたが、Raspbian・Raspberry Piにかぎらず、他のLinuxにも当てはまる事象とりことです(?)

Raspbianの場合は、/etc/init.d/regenerate_ssh_host_keysにパッチを当てたディスクイメージを作成することで問題を回避可能でスレッド内のoitta氏の投稿(by oittaa » Wed Nov 25, 2015 2:29 pm)によってパッチが示されています。ハードウェアRNGというものを利用する方法のようです。

    --- /tmp/orig/etc/init.d/regenerate_ssh_host_keys   2015-11-21 22:33:43.953655590 +0200
    +++ /tmp/patched/etc/init.d/regenerate_ssh_host_keys   2015-11-25 05:28:39.074387956 +0200
    @@ -16,6 +16,7 @@
     case "$1" in
       start)
         log_daemon_msg "Regenerating ssh host keys (in background)"
    +    modprobe -q bcm2708-rng && dd if=/dev/hwrng of=/dev/urandom count=1 bs=4096 2>/dev/null
         nohup sh -c "yes | ssh-keygen -q -N '' -t dsa -f /etc/ssh/ssh_host_dsa_key && \
           yes | ssh-keygen -q -N '' -t rsa -f /etc/ssh/ssh_host_rsa_key && \
           yes | ssh-keygen -q -N '' -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key && \

現在のところ、パッチ済みのディスクイメージは配布されていないようなので、気になる人はやってね、というレベルなんでしょうかね。

なんでこれを見つけたかというと、いつものEjebianを作ろうとしてググっていたのでした。どのパッケージにも含まれていないので自分で用意しないとだめっぽい。というわけでわたしもとりあえずパッチ済みのもので用意しようと思います。まだ試してないけど。