「sshのログイン、パスワードなの?鍵のほうが楽だし、セキュリティ的にも良いんだよ。」
・・・たしかにそうかも知れない。しかし、秘密鍵をメールで送ったり、Backlogのファイルにあげるなどの運用をしてないでしょうか?
他にも、チームの開発者同士で鍵を共通にしていたり、他案件で同じ鍵を利用していたりしませんでしょうか?
この運用方法は基本間違ってると言いたい!
公開鍵と秘密鍵
公開鍵と秘密鍵はペアで作成することができます。
公開鍵からは秘密鍵を作成することができません。
逆に、秘密鍵からは公開鍵を作成することができます。
公開鍵
閉めることしかできない鍵と言われたりします。
この鍵は、不特定多数に渡しても、閉めることしかできない+公開鍵から秘密鍵は作れないので、
セキュリティ上問題ありません。
秘密鍵
開けることしかできない鍵と言われたりします。
この鍵は、基本的に複製したり、他の人に渡すことをしてはいけません。
セキュリティリスクが高まります。
sshログインの仕組み
sshでログインする方法は、パスワードでのログインと鍵によるログインがあります。
鍵のほうがセキュリティが高いと言われていますが、それは正しい鍵の使いをしている場合に言えます。
冒頭のように秘密鍵を複製して色んな人で使いまわしていたり、外部にメールで送信している場合、パスワードとセキュリティレベルはかわらないです。
パスワードのほうがメールで送信する時に気を使う文化がある分ましといえます。
鍵でのログインをざっくり説明すると、まず鍵以外のログイン方法で、サーバに入り、鍵でログインできる設定に変更します。
変更したら、ログインしたいユーザのホームディレクトリの下に .ssh
ディレクトリをつくります。
ディレクトリをつくったら .ssh/authorized_keys
というファイルをつくります。
このファイルに公開鍵の文字列を書き込みます。
.ssh
を 700
、 .ssh/authrized_keys
を 600
にパーミッションを設定します。
(パーミッションがおかしいとログインできません)
この設定ができたら、.ssh/authorized_keys
に記述した公開鍵のペアの秘密鍵でログインすることができます。
.ssh/authorized_keys
には公開鍵を改行区切りで複数記述することができます。
※ 複数記述できるのがポイント
正しい運用方法
家に例える
サーバを家に例えます。
秘密鍵は家の鍵、公開鍵は家の鍵穴付きのドアと言えます。
この鍵穴は中から開けることができなくて、オートロックであるものをイメージしてください。
秘密鍵を複製して複数人で使うのは、家の鍵の合鍵を作って渡すイメージです。
普通の家だと合鍵を作る発想が一般的ですよね。
この発想があるので間違った運用をしてしまう人が多いんだと思います。
間違った運用
メールで鍵を送信するのは、合鍵を郵便で送るイメージです。
この配布方法だと、悪意ある第三者に途中で合鍵を見られて型をとられて同じ鍵を作られる恐れがあります。
Backlogに鍵をアップロードするのは、パスワードロック付きのロッカーに鍵を入れておくみたいなイメージでしょうか。
この方法だと、パスワードがばれてしまうと、鍵を盗られてしまいます。
違うサーバで同じ鍵でログインできるようにするのは、違う家に同じ鍵穴のドアを設置しているイメージです。怖いですね。
そもそも合鍵を作る行為自体、紛失のリスクが高まります。
また、複数人に同じ鍵を配布しているので、誰が家に入ったのかわからなくなってしまい良くないです。
悪意ある人が家に侵入したと思われて、今後の侵入を防ぎたい場合、鍵の作り直しとドアの付替が発生します。
そうすると、悪意のない正しい人まで全員家に入れなくなってしまいます。
じゃあどうするの?
合鍵をつくらなければ良いんです。
sshの正しい運用方法は、家に入りたい人がいたら、その人自身で新しい秘密鍵と公開鍵、つまり、家の鍵と家の鍵穴付きのドアを作ってもらいます。
つぎに家の持ち主(サーバ管理者)に家の鍵穴付きのドア(公開鍵)を渡して、家に設置してもらいます。
設置してもらったら、自分の鍵で家に入ることができます。
この方法だと、秘密鍵の合鍵をつくったり、秘密鍵をネット上にさらす必要がなくなります。
家の鍵穴付きのドアは第三者に見られても全く問題ありません。
勝手に複製されて、どこかの家に取り付けられたとしても、自分以外鍵を持っていないので自分以外は入れません。
これによってセキュリティが向上します。
この方法でもユーザが勝手に合鍵をつくって第三者に渡してしまうリスクはあるので、不正ログインを完全に防ぐことはできません。
ただ発覚後は、不正にログインされているドアのみ取り外せば、ほかのユーザまでログインできなくなってしまうことはありません。
鍵と家の発想だと、違う鍵穴のドアを複数設置する発想がないので、この運用方法を知らないという人が多いのかもしれません。
邪道
秘密鍵を厳重に扱い、極力ネットワーク経由の配布をせずに共有する方法があります。
これだと第三者に鍵を見られるリスクは少ないので大丈夫だと思います。
合鍵を信頼できる人に手渡しするイメージです。
最後に
公開鍵と秘密鍵の扱いについて書きました。
これを知った上で、あえて利便性を考えて、邪道な方法で鍵共通にする。
なにかあればサーバ管理者が責任取るというなら運用上問題ないかと思います。
とりあえず、鍵だったら最強!安心!って思うのだけはやめましょう。