今回の内容
各Cloudベンダで仮想OSを気軽に構築可能になった時代だが、疎かになりがちなセキュリティ。(この記事ももっとセキュリティ考えないといけないが…)
今回はその中でssh接続をセキュリティを考慮しながら簡単に運用できるような検討をしたので備忘録として記事にした。
※既に世に出回っている内容で恐縮ですが。。。
Cloudあるある
- どこのCloudベンダもssh用の鍵(公開鍵/秘密鍵)を使用して環境にアクセスするのが一般的となっている
- 踏み台サーバーを作成するのが必須
- sshd_configのPasswordAuthenticationを構築後に変更してパスワード認証にするのも可能だが、セキュリティ的にはアウト
環境の前提
今回検討した内容の環境構成を例として以下に図示する。
※可用性等については省略。
- Web/AP/DBサーバーへのsshアクセスは踏み台サーバーを経由する必要がある
- (可能なら)踏み台サーバーへのアクセス元も制御する(今回は図示していない)
- クライアント端末はWindowsとする
sshで考慮したい内容
上記の環境の場合にsshで考慮したい内容としては以下が考えられる。
- Web/AP/DBサーバーにアクセスするための秘密鍵を踏み台サーバーに保持したくない
- (可能なら)それぞれの鍵は違う鍵にしたい
使用するツール
Pageantを使用すると考慮したい内容をクリアにできる。
Pageantとは
OpenSSHのssh-agentと似たアプリで、エージェント転送を実施してくれるため、クライアント端末で起動したPageantに秘密鍵を登録することで、踏み台サーバーから他サーバーに経由する場合に、その秘密鍵を使用してsshを実施してくれる。
概要図
わかりずらいかもしれないので概要図を記載。
注意事項
この構成を取るための注意事項としては、sshで考慮したい内容の2であげていた、それぞれの鍵は違う鍵にしたいという要件は満たすことができるが、Pageantは登録した秘密鍵を上から順に実行していくため、sshd_configのMaxAuthTriesを超えないようにする設計が必要だ。
追加考慮事項
また、公開鍵/秘密鍵のセットは、例えばOSユーザー毎に用意することでセキュリティを最低限担保した方が良いと考える。
※管理する鍵が多くなるので大変…
動作確認
実際に動作方法について簡単に記載する。
以下については今回は割愛するが、設定されていること。
- Teratermがクライアント端末にインストールされていること
- Pageantがクライアント端末にインストールされていること
- 公開鍵/秘密鍵があり、公開鍵だけが各サーバーに配置されていること
Pageantの起動
[秘密鍵の登録]
上記のPageantで右クリックして、「Add Key」を押す。
上記の後に秘密鍵を選択して、パスフレーズを入力する。
以上でPageantの起動が完了。
Teratermの起動
[Teratermの起動]
Teratermを起動して、接続したい踏み台サーバーにアクセスする。
認証画面で
- ユーザー名の入力
- エージェント転送するにチェック
- Pageantを使うを選択
[他サーバーへのssh]
Linuxのssh-agentは-Aオプションが必要だが、Pageantの場合はいらないので、下記で良い。
ssh XX.XX.XX.XX
sshをすると、下記の「エージェント転送要求を受け入れますか?」と表示されるので、「はい」を押す。
下記画面はわかりずらいけど、踏み台サーバーから他サーバーにssh出来た。
最後に注意したい点
今回の方式(Pageant)は、結局はクライアントで秘密鍵をメモリに保持してしまうため、ある程度の妥協点だと考えている。
また、他にも考慮しないといけない部分たくさんあるけど難しいので割愛。(セキュリティとしてどうなの!?とは思うが…)