1

を行うコメント、問題を指摘し、テスト可能な、より良い解決策へのリンク...AWS小さなセットアップ、取り付けパブリックアクセスのアイデア..レビューを探しているNATゲートウェイと離れ

このアイデアは、EC2インスタンスへの安全なリモートアクセスを提供することですアップデートやパッケージのインストールなどのためにバックエンドインスタンスがインターネットに接続できるようにしてください。 私は自分でAWSをピックアップし始めましたが、AWSに関する以前の経験はありませんでした。 SSHのようなリモートアクセスを保護する方法を学んだのは、SSHソースIPを制限し、ジャンプ/バスティオンホストを作成し、バックエンド/プライベートサブネットのインターネットアクセスをNATインスタンス/ゲートウェイまたはプロキシにすることです。 < 20台のサーバーの小規模なセットアップでは、1〜2人の管理者が過度に見えました。

AWS CLI、セキュリティグループ、およびネットワークACLを使用して、小さな設定に「十分な」保護を提供すると思います。必須ではない場合にSSHを公開する必要はありません。また、特定のIP、追加のインスタンスのみに制限することも、AZごとにNATゲートウェイを支払う必要もありません。私はちょっと調べましたが、何を覚えているようにも見えないので、テストするための小さなスクリプトを作成しました。私のスクリプティングの経験は非常に低く、GUIの人が多いので、私に同行してください。

テストセットアップ。 1パブリックサブネット、セキュリティグループはhttp、https &すべてのIPからのsshを許可します。 ACLは、http/https &エフェメラルポートのイングレスを許可し、allへのアウトバウンドを許可します。自動的にパブリックIPを割り当てます。

1プライベート/バックエンドサブネット、セキュリティグループは、すべてのIPからパブリックサブネットおよびsshからの必須ポートを許可します。 ACLは、VPCのCIDR、一時的、および発信からすべてへのトラフィックを許可します。パブリックIPを割り当てないでください。 両方のサブネットがインターネットにアクセスできるようにするルーティングテーブル。

AWS CLIとアクセスキーで設定されたラップトップ。 ACLにSSHルールを追加して、現在のパブリックIPが特定のサブネットにアクセスできるようにするスクリプト。

aws ec2 create-network-acl-entry --network-acl-id acl-public/backend --ingress --rule-number 801 --protocol tcp --port-range From=22,To=22 --cidr-block “$(curl http://checkip.amazonaws.com)”/32 --rule-action allow 

現在のインスタンスとIPを表示します。

aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[InstanceId,NetworkInterfaces[*].Association.PublicIp,Tags[?Key==`Name`].Value]' --filters "Name=network-interface.subnet-id,Values=subnet-backend" 

バックエンドインスタンスにアクセスしてインターネットにアクセスできるようにする。スクリプトパラメータとして上記のInstanceIdをコピー&ペーストします。

if [ ! -n "$1" ] 
then 
    echo "need InstanceID" 
    exit 
fi 
#Get a EIP 
aws ec2 allocate-address --domain vpc --output text > $1.txt 
#read variables 
read eip d ip < $1.txt 
#Associate Ip to instance 
echo "issuing instance "$eip " with ip "$ip 
aws ec2 associate-address --output text --instance-id $1 --allocation-id $eip > $1"EIP".txt 
#ssh to instance 
echo "ssh to "$ip 
ssh [email protected]$ip -i Vrigina-private-key.pem 
#remove EIP 
read asid < $1"EIP".txt 
aws ec2 disassociate-address --association-id $asid 
aws ec2 release-address --allocation-id $eip 
echo "removed eip" 
cat $1.txt $1"EIP".txt > $1"-"`date +"%Hh-%Mm-%d-%b-%y"`.txt 
rm $1.txt $1"EIP".txt 

次に、ACLのSSH許可ルールを削除する別のスクリプトがあります。 パブリックサブネットインスタンスは、SSHを追加してルールを削除するだけで済みます。

改善の余地があります。インスタンスの選択を自動化したり、AWS config/Lambdaを使用したり、バックエンドインスタンスのパブリックIPとACL SSHルールがまだ削除されていないかどうかを自動的にチェックします。スクリプトにエラーチェックがない、MFAがありません(どう考えているかなど)。

私はウェブサーバとDB設定でテストしませんでしたが、サービスが中断されることはありません。

問題?多すぎる努力?バックエンドインスタンスがインターネットにアクセスしている間、SGとACLは着信トラフィックをブロックします。プライベートネットワークACLは、パブリックサブネットインスタンスからSSHを拒否するように設定できます。だからそれはOKに見えます。

よろしく。

答えて

3

些細なセットアップに多大な労力が必要です。あなたが必要とするのは次のようなものです: VPC with Public and Private Subnets (NAT)

なぜあなたはNATがあなたの設定の過剰なものだと思いますか?あなたのセットアップに最適です。費用が問題になる場合は、月額5ドルのt2.nanoに行ってください。あなたが何をしているのか分からない限り、ACLを混乱させないでください。セキュリティグループと共にNATと砦(t2.nano)を使用すると、問題を解決できます。 AWSが既に提供しているものを、過度に複雑化したり再作成したりしないでください。

+0

私は車輪を再発明しているのですか? AWSの初心者です。誰かが既にこれを自動化している可能性があります。私は彼女の/彼のソリューションをコピーすることができますし、その後、NATプラス、ジャンプサービスをセットアップする方が簡単になるはずです。この動きでは、私はAWSに取り組んでいないので、より多くの好奇心とAWSを学ぶことができます。以下の回答もご覧ください。 –

0

申し訳ありませんが、コメントボックスには十分なスペースがありません。

CSA-Associate試験の準備として、NATインスタンスとゲートウェイの両方をセットアップし、サーバーを手作業でジャンプさせてください。それで、それらを取り除くほうが簡単ではないと思います。それでも知る必要がある)。それから、HAのセットアップ、フェイルオーバーのテスト、インスタンスのパッチ、監視、ホストのジャンプ、sshのパススルー、またはsshの脆弱性に関する懸念があまりありません。

NAT、ジャンプボックスよりも複雑ではないようです。

ネットワークACLが分かりやすく、必要なトラフィックだけを許可するように設定する必要があります。セキュリティグループではうまく動作します。 SGはステートフルとACLステートフルレスを提供していますが、どちらも有効です。ネットワークセキュリティは、IAMの最低限の特権を遵守する必要があります。

Add on Sep; 技術sshが現在のIPからインスタンスにアクセスしてからインスタンスにEiPを追加できるようにするだけです。パブリックに直面するインスタンスのようにする。

Webコンソールを使用してACL経由でsshの入力を許可し、EIPをインスタンスに割り当てる方法がわかっている場合、スクリプトは代わりに私たちに代わって行います。より良いスクリプトは、それをより簡単かつ迅速にするのに役立ちます。

ACLの混乱が懸念される場合。私にとってACLとセキュリティグループは緊張していなければなりません。私がNATインスタンスとBastionを実装する場合、それらは別のサブネットにあり、自身のACL & SGを保護します。それはより複雑になります。 NATとジャンプ機能は、ACLやSGが制限されているため、置き換えたり縮小することはできません。

私には、この考え方は理解して実装するのが簡単です。何も持っていないことと、両方のNATを実装するという中間的な道のりです。 PAT(NAT)、SSHの要求なし、ファイル転送、余分なサブネット、ACL、SGなどのWinscpを設定する。

これはBastionホストを持っているという不利な点があり、それを除く。 https://aws.amazon.com/blogs/mt/replacing-a-bastion-host-with-amazon-ec2-systems-manager/

私は上記が良い提案だと思います。 Bastionホストが削除されると、バックエンドインスタンスに直接SSHする必要がある場合は、ACLを使用してsshを許可し、EIPを一時的に追加します。

セキュリティ保護されたDNSで共有プロキシゲートウェイをリリースしますか?それはより速く、安くすべきですか? (トラフィックが少ないので)安全です。私はNATゲートウェイ/インスタンスをこのように置き換えます。もしAWSを手渡している仕事があれば...

関連する問題