1

찾는 검토, 의견을 사용할 수 테스트, 더 나은 솔루션에 대한 문제, 링크를 지적 업데이트, 패키지 설치 등을 위해 백엔드 인스턴스가 인터넷에 연결될 수 있도록 허용합니다. 방금 ​​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 거부로 구성 할 수 있습니다. 그래서 그것은 좋아 보인다 ...

감사합니다.

답변

3

사소한 설정을 위해 너무 많은 노력이 필요합니다.필요한 것은 다음과 같습니다. VPC with Public and Private Subnets (NAT)

왜 NAT가 설정에 과도하다고 생각하십니까? 그것은 당신의 셋업에 딱 맞습니다. 비용이 문제인 경우 t2.nano으로 가면 월 5 달러입니다. 정확히 무엇을하는지 모르는 경우 ACL을 사용하지 마십시오. 보안 그룹과 함께 NAT 및 요새 (모두 t2.nano)가 문제를 해결할 수 있습니다. AWS가 이미 제공하는 것을 과도하게 복제하거나 재발 명하지 마십시오.

+0

나는 바퀴를 다시 발명하고 있습니다. AWS를 처음 사용합니다. 누군가 이미 이것을 자동화했을 수 있습니다. 나는 그/그녀의 솔루션을 복사 할 수 있습니다. 그러면 NAT 및 점프 서비스를 설치하는 것이 더 쉬워야합니다. AWS에서 작업하지 않기 때문에이 운동에서는 더 많은 호기심과 학습 AWS가 있습니다. 아래 답변을 참조하십시오 .. –

0

죄송합니다. 댓글 상자에 불충분 한 공간이 있습니다.

CSA-Associate 시험을 준비하려면 NAT 인스턴스와 게이트웨이를 모두 설치하고 직접 서버를 점프해야합니다. 그러면 시험을 치르는 것이 더 쉽지 않을 것입니다. 아직도 알아야합니다). 그런 다음 HA를 테스트하고, 페일 오버를 테스트하고, 인스턴스를 패치하고, 모니터링 할 필요가없고, 호스트를 호스트 할 필요가없고, ssh 통과 또는 ssh 취약성에 대해 너무 많이 걱정할 필요가 없습니다.

그래서 NAT 및 점프 상자보다 덜 복잡한 설정처럼 보입니다.

네트워크 ACL을 쉽게 이해할 수 있으며 필수 트래픽 만 허용하도록 구성해야한다고 생각합니다. 보안 그룹과는 잘 작동합니다. SG는 stateful 및 ACL stateful-less를 제공합니다. 둘 다 잘 사용되어야합니다. 네트워크 보안은 IAM 최소 개념의 개념을 따라야합니다.

9 월 7 일 추가; 기술 ssh가 현재 IP에서 인스턴스에 액세스 한 다음 인스턴스에 EiP를 추가 할 수 있습니다. 공공연한 상황과 똑같이 만듭니다.

웹 콘솔을 사용하여 ACL을 통한 ssh 진입을 허용하고 EIP를 인스턴스에 할당하는 방법을 알고 있다면 스크립트가 대신이를 수행합니다. 더 나은 스크립트는 쉽고 빠르게 만드는 데 도움이됩니다.

ACL이 엉망이 될 염려가있는 경우. 나에게 ACL과 보안 그룹은 조여 져야한다. NAT 인스턴스와 Bastion을 구현하면 다른 서브넷에 있고 자신의 ACL & SG를 보호합니다. 어느 것이 더 복잡하게 만듭니다. NAT 및 점프 기능은 제한적인 ACL 및 SG를 대체하거나 줄이지 않습니다.

저에게이 아이디어는 이해하기 쉽고 구현하기가 쉽지 않습니다. 아무 것도하지 않고 두 가지를 구현하는 것 사이의 중간 지점입니다. & 점프 서비스. PAT (NAT), SSH가 필요 없음, 파일 전송, 여분의 서브넷, ACL, SG 등 Winscp를 구성 할 필요 없음. 그것을 제거하십시오. https://aws.amazon.com/blogs/mt/replacing-a-bastion-host-with-amazon-ec2-systems-manager/

나는 좋은 생각이라고 생각합니다. Bastion 호스트가 제거되면 백엔드 인스턴스로 직접 ssh 할 필요가 있다면 ACL을 통해 ssh를 허용하고 EIP를 임시로 추가 할 수 있습니다.

AWS는 보안 DNS와 공유 프록시 게이트웨이를 출시합니까? 더 빠르고 저렴해야합니까? (트래픽이 적어짐에 따라) 보안 성이 뛰어납니다. NAT 게이트웨이/인스턴스를 AWS로 바꾸는 대신 AWS를 넘겨주는 작업을한다면 ...