찾는 검토, 의견을 사용할 수 테스트, 더 나은 솔루션에 대한 문제, 링크를 지적 업데이트, 패키지 설치 등을 위해 백엔드 인스턴스가 인터넷에 연결될 수 있도록 허용합니다. 방금 AWS를 직접 시작했으며 AWS에 대한 사전 경험이 없었습니다. 원격 액세스 (SSH와 같은)를 확보하는 방법은 SSH 소스 IP를 제한하고 점프/바스 티언 호스트를 만든 다음 백엔드/개인 서브넷에 대한 인터넷 액세스를 NAT 인스턴스/게이트웨이 또는 프록시로 지정하는 방법을 배웠습니다. < 서버가 20 대 설치되어있는 경우 1 ~ 2 명의 관리자가 과도하게 보였습니다.AWS 작은 설정이 확보 공용 액세스의 생각은 ..</p> <p>이 아이디어는 EC2 인스턴스에 안전한 원격 액세스를 제공하는 것입니다 ..., NAT 게이트웨이와 멀리
AWS CLI, 보안 그룹 및 네트워크 ACL을 사용하여 작은 설정을 "충분하게"보호한다고 생각합니다. 필요하지 않을 때 SSH를 대중에게 공개 할 필요가 없으며 특정 IP에만 추가로 인스턴스를 제한하거나 AZ 당 NAT 게이트웨이 비용을 지불 할 필요가 없습니다. 조금이라도 검색했지만 마음에 무엇이 있는지 찾을 수 없으므로 테스트 할 스크립트를 조금만 만들었습니다. 내 스크립팅 경험이 매우 낮고 GUI 사용자가 더 많습니다. 그러니 나와 함께 견뎌주십시오.
테스트 설정; 1 공용 서브넷, 보안 그룹은 http, https & ssh를 모든 IP에서 허용합니다. 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 (아무 생각이 들지 않음) 등이 없습니다.
웹 서버 및 DB 설정으로 테스트하지 않았습니다. 서비스 중단이 있는지 확실하지 않습니다.
문제? 너무 많은 노력? 백엔드 인스턴스가 인터넷에 액세스하는 동안 SG와 ACL은 들어오는 트래픽을 차단합니다. 개인 네트워크 ACL은 공용 서브넷 인스턴스에서 SSH 거부로 구성 할 수 있습니다. 그래서 그것은 좋아 보인다 ...
감사합니다.
나는 바퀴를 다시 발명하고 있습니다. AWS를 처음 사용합니다. 누군가 이미 이것을 자동화했을 수 있습니다. 나는 그/그녀의 솔루션을 복사 할 수 있습니다. 그러면 NAT 및 점프 서비스를 설치하는 것이 더 쉬워야합니다. AWS에서 작업하지 않기 때문에이 운동에서는 더 많은 호기심과 학습 AWS가 있습니다. 아래 답변을 참조하십시오 .. –