前提
各セキュリティ施策は定義したセキュリティ要件をクリアするために設定するので、要件を定義せずに完璧を目指すのはあまり意味がありません
。
要件なしで極論を話し出すと関係者全員が脅迫されるところまで考える必要が出てきてしまいますし、
逆に、自分しか触らない&秘密鍵とパスフレーズが十分に安全なのでそういう対策は要らないと言うことも言えます。
(実際、割と規模が大きめでセキュリティ要件の厳しいところでも固定IPによる接続元制限+鍵認証だけで踏み台サーバを用意しないケースもあったりします)
ですので、それぞれの施策によってどういう要件が満たされるのかという観点で考えてみて下さい。
回答
- 接続元のPCを踏み台サーバーに限定することで不特定多数の外部からのアクセスを制限できる。踏み台サーバーへの接続も特定のIPアドレスに制限する
1に関して、そもそも接続先のサーバーへのアクセスを自分のネットワークのIPに限定することで解決しませんか?
二度手間のように思えてしまいます
例えば100台のEC2があった場合、そもそも必要の無いインスタンスにはパブリックIPを付けない方が考える事が減り管理が楽になるなど、いくつもメリットがあります。
具体的には
- 踏み台サーバが起動していないという事さえ確認出来れば、外からのアクセスを完全無効化出来る
- インターネットに出る時の経路を絞れるので内部→外部への不正アクセスも防ぎやすい
- 純粋に管理する項目が減るので、管理ドキュメントの更新運用のコストが下がる
- 踏み台のユーザーを削除すれば、そのユーザーは確実に内部のインスタンスにはログイン出来なくなるので、管理者の退職や鍵の漏洩の際の初手が迅速に打てる(内部インスタンスの認証をどう管理するかはまた別の観点ですが、少なくとも「ログインを禁止する」ような対応がすぐに取れる)
等です。
こういったメリットが優先順位の高い要件と合致した場合は
1台のパブリックIPを持つ踏み台サーバと99台のプライベートIPしか持たないサーバという構成にする
という選択肢の妥当性が向上します。
別の観点だと、
99台のうち、管理責任を分担する場合(一部のセキュリティ要件が緩いor厳しいサーバだけ管理を外部に任せるとか)は踏み台サーバを分ければ、責任分界点の設定が楽になったりもします。
- 通常時は踏み台サーバーを停止させておくことでメンテナンス時以外は目的のサーバーに到達できないようにする
2に関して、ただ時間帯による制限を増やしただけで本質的にセキュリティの向上になっている気がしません
また、踏み台サーバーを停止・起動させる作業が必要であるならば、そもそもAWSのコンソールからインターネットからのアクセスをON・OFFすれば良いように思えます
セキュリティに完璧はありませんが、別の層で防御することによる効果はあります。
例えば、
- sshでログインする人はマネジメントコンソールにログイン出来ず、踏み台サーバ起動には別の人の許可が必要
という運用にすれば、SSHで管理する役割の人が酔っ払って秘密鍵とパスフレーズをセットで無くしても悪用される前に対処が可能になります。
(このインシデントは結構発生しているので、どこでも何らかの対応をしています)
- (同じ人がインスタンス起動とsshログインを出来る場合であっても、)マネジメントコンソールへのログインにMFAを必須とする運用にすれば、秘密鍵とパスフレーズとマネジメントコンソールのIDとパスワードとMFAデバイスを全部セットで盗まれない限りは悪用されない
- 踏み台インスタンスが起動したらアラートを上げるようにして、事前申請が無い場合は問答無用で踏み台サーバを落とす
と言う様な運用を設計することが出来ます。
踏み台サーバーのメリットがいまいちわかりません
前述のとおりですが、強いて言うなら、
発生するコストに対して運用をセキュアに保つ効果が高い。運用設計に柔軟度が生まれる
と言うところでしょうか。