尋求審查,評議,指出問題,鏈接到可用的測試,更好的解決辦法...AWS小設置,確保公衆獲得的想法。與NAT網關做掉
這個想法是提供安全的遠程接入到EC2實例並允許後端實例在需要更新,安裝軟件包等時到達互聯網。 我剛剛開始自行取得AWS,並且此前沒有AWS的經驗。我學到了保護遠程訪問(如SSH)的方法是限制SSH源IP,創建跳轉/堡壘主機,然後對後端/私有子網的Internet訪問將是NAT實例/網關或代理。對於一個小型的< 20臺服務器,1到2個管理員看起來過度。
我想使用AWS CLI,安全組和網絡ACL爲小型設置提供「足夠」的保護。無需在不需要時將SSH公開給公衆,或僅限於特定IP,額外實例或按照AZ支付NAT網關。我搜索了一下,但似乎無法找到想法,所以我做了一些小腳本來測試。我的腳本經驗非常低,更多的是GUI用戶。所以請耐心等待。
測試設置; 1公有子網,安全組允許來自所有IP的http,https & ssh。 ACL允許http/https &短暫端口的入口,並向所有端口出站。自動分配公共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
然後,另一個刪除SSH的腳本允許ACL中的規則。 公有子網實例,只需要添加SSH並刪除規則即可。
有改進的餘地;如自動選擇實例,自動每日檢查(可能使用AWS config/Lambda),並在未刪除後端實例公用IP和ACL SSH規則時發出警報。腳本缺乏錯誤檢查,沒有MFA(不知道如何)等。
我沒有測試與Web服務器和數據庫設置,不知道會有服務中斷。
問題?太多的努力?在後端實例訪問互聯網期間,SG和ACL會阻止傳入的流量。可以將專用網絡ACL配置爲拒絕來自公共子網實例的SSH。所以它看起來不錯..
問候。
我不知道我是否重新發明輪子,因爲我AWS新手。有人可能已經自動化了。我可以複製她/他的解決方案,然後設置NAT和Jump服務應該更容易。在這個運動中,它更加好奇並且學習AWS,因爲我沒有在AWS上工作。請參閱下面的答案.. –