14
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

どうせなら、SSHDでrsaキーの拒否をしてみないか?

Last updated at Posted at 2017-10-12

もう、Linuxサーバーのssh-keygenでecdsaとed25519のキーが作成できるのだし、公開鍵認証に使用する鍵はセキュリティ的にもうあまり高くないrsaキーの4096bit以上ではなく、ecdsaかed25519に切り替えているとは思うけど、sshdの設定がそのままでは、結局、rsaが使用できるままなので、rsaが拒否できないかとおもったのでやってみた。

核心

/etc/ssh/sshd_config に PubkeyAcceptedKeyTypesという項目が設定できるので、それに使用するキーを設定するだけ、 但し安易に設定ミスしリモート接続のみの環境でsshdをリスタートさせると、2度とssh接続できないという悲しい羽目にならないように、十分気をつけ、かつ、別のconigを使って別のプロセスで検証し確実にOKの確信を得てから本番をやるべき

検証前準備

あらかじめssh接続検証ユーザー(sshd_test)とssh-keygenで検証用の各種キーペア(rsa,ecdsa[256|384|521],ed25519)を作成し、authorized_keysに追加しておく

#ユーザー作成
useradd sshd_test

# ssh鍵作成 & 公開鍵認証設定

su - sshd_test
mkdir .ssh
chmod 700 .ssh
cd .ssh
ssh-keygen -t rsa -b 4096 -f id_rsa
ssh-keygen -t ecdsa -b 256 -f id_ecdsa256
ssh-keygen -t ecdsa -b 384 -f id_ecdsa384
ssh-keygen -t ecdsa -b 521 -f id_ecdsa521
ssh-keygen -t ed25519 -f id_ed25519
cat id_*.pub > authorized_keys
chmod 600 authorized_keys

設定検証

下記で、sshd_configファイルを新規に用意して


cd /etc/ssh
cp -p sshd_config sshd_config.1

vi sshd_config.1

ecdsaの256bitと384bitと521bit、ed25519のみに限定するので、ファイル末尾に下記を追加

sshd_config.1

PubkeyAcceptedKeyTypes=ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519

下記で、設定ファイルをsshd_config.1でport:23を使用するsshdプロセスを別途たてる


 /usr/sbin/sshd -f /etc/ssh/sshd_config.1 -p 23

接続テスト

検証用の各種の鍵でport:22とport:23とに接続テストして挙動を確認してみる


cd /home/sshd_test/.ssh

# port:22に接続テスト
ssh -i id_rsa      sshd_test@localhos
#=> 接続OK

ssh -i id_ecdsa256 sshd_test@localhost 
#=> 接続OK

ssh -i id_ecdsa384 sshd_test@localhost 
#=> 接続OK

ssh -i id_ecdsa521 sshd_test@localhost 
#=> 接続OK

ssh -i id_ed25519  sshd_test@localhost 
#=> 接続OK

# port:23に接続テスト
ssh -i id_rsa      sshd_test@localhost -p 23
#=> Permission denied (publickey).

ssh -i id_ecdsa256 sshd_test@localhost -p 23
#=> 接続OK

ssh -i id_ecdsa384 sshd_test@localhost -p 23
#=> 接続OK

ssh -i id_ecdsa521 sshd_test@localhost -p 23
#=> 接続OK

ssh -i id_ed25519  sshd_test@localhost -P 23 
#=> 接続OK

設定適用

挙動に問題がなければ


# sshd_configファイルを上書き
cd /etc/ssh
mv -f sshd_config.1 sshd_config 

#リブートかける
sync;sync; init 0

注意

rsaの拒否は、自己責任の下で、確実に検証と確認をして行いましょう
とくに、言語のsshモジュールの古いversionのものには、rsa形式までしかサポートしていないものもあるので、itamaeやansibleなどを使用している際に使えなくなる場合があるので、十分に気をつけてください。

14
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?