AmazonEC2インスタンスをセットアップする準備をしています。これは、ローカルマシンに縛られることなく、PHP、Pythonなどのスクリプトをサーバーに配置できるようにするテストおよび開発マシンになります。現在、私はNitrousIOを使用していますが、EC2ボックスはいくつかの理由でより魅力的です。
しかし、1つのことが私を悩ませています。ほとんどのドキュメントには、SSHアクセスを自分のIPアドレスのみに制限することが明記されています。ほとんどの企業ではおそらく問題はありませんが(実際、私の雇用主はIP範囲を設定しています)、自宅のIPアドレスは動的です。このような状況で、IPアドレスによってEC2インスタンスへのSSHアクセスを制限する方法はありますか?不適当な時期に締め出されるのではないかと心配しています。
アマゾンウェブサービスコンソールのEC2パネルのセキュリティグループ設定にアクセスできる場合、これは問題になりません。
ログに記録されるたびに、EC2インスタンスにバインドされたセキュリティグループに移動し、Inboundアクセスを構成し、SSHルールを追加または変更できます。 「マイIP」と表示される便利なドロップダウンもあるので、スペースに情報が自動的に入力され、そのインスタンスがロックアウトされます。
現在のIPへのアクセスを許可して、セキュリティグループルールを追加/削除するスクリプトを作成する必要があります。
Web APIを使用して、現在のIPアドレスを取得します。 http://api.ipify.org/?format=json のようなもの
結果を使用してAWSCLIを呼び出します: http://docs.aws.Amazon.com/cli/latest/userguide/cli-ec2-sg.html
このようなものが機能するはずです:
aws ec2 authorize-security-group-ingress --group-name <SSH_ACCESS_GROUP_NAME> --protocol tcp --port 22 --cidr <MY_IP>
ルールも削除することを忘れないでください。
カップルのオプションが思い浮かびます。
1)ローカルISPにそのIPの静的IPホワイトリストを要求し、ローカルマシンから使用します。
2)ルーター接続からはごくわずかしか使用されない可能性があるため、ルーターの指定IP範囲からのみ許可してください。例の場合sshのホワイトリスト123.456.78.90/21。
3)オプション1または2が不可能な場合は、ローカルマシンからsshを使用する前に、コンソールGUIを使用してその接続の「既知の」現在のIPを手動で変更できます。
4)ホームルーターからも、そのマシンに静的IPのみを使用するように設定できるため、ISPが静的IPを提供しない場合でも、ホーム接続を介してルーティング可能なLAN静的IPを使用できます。
動的IPを使用する場合でも、取得するIPを時間の経過とともに確認するか、特定のIPプールについてISPに問い合わせることにより、該当する範囲を選択できるはずです。それが完了したら、デフォルトの拒否を設定し、次のようにIP範囲を許可できます。
iptables -A INPUT -s 192.168.0.0/16 -j ACCEPT
...もちろん、IP値を調査結果と一致するものに置き換えます。 /16
は、IPの最後の16ビットが何であっても、IPの.0.0
部分と一致することを意味します。
警告:デフォルトの拒否ルールを適用する前に、設定したことを100%確認してください。そうしないと、ロックアウトされます。可能であれば、静的IPを使用してシェルをどこかに取得し、それも追加して、万が一の場合に備えて代替ルートを用意することをお勧めします。