EC2에 연결할 때 22번 포트를 열지 말고 Systems Manager를 사용합시다.
15148 단어 SSHSystemsManagerEC2AWS
소스 IP가 풀 오픈이라는 것은 없을지도 모르지만, 이 설정이라면 악의가 있는 사람으로부터 접속을 시도할 가능성이 있습니다.
키 인증을 하고 있다고는 해도 DDoS 공격의 표적이 될지도 모릅니다.
AWS에는 Systems Manager라는 서비스가 있습니다. Systems Manager의 기능 중 하나인 Session Manager를 사용하면 보안 그룹의 22번 포트는 닫힌 상태에서도 SSH 연결이 가능합니다.
악의가 있는 사람으로부터의 접속은 보안 그룹이 막아 주므로, EC2는 영향을 받지 않아도 됩니다.
설정 방법을 소개합니다.
환경
EC2는 다음과 같은 상태로 시작
품목
설정
VPC
기본 VPC
IP 주소
공용 IP 주소 있음
IAM 역할
없음
※퍼블릭 IP를 부여할 수 없는 경우는 NAT 게이트웨이나 VPC 게이트웨이를 사용하면 같은 것이 가능합니다.
설정
EC2에 필요한 IAM 역할 설정
Systems Manager에 액세스하려면 권한이 필요합니다. 개별적으로 설정해도 좋지만 Systems Manager에 "고속 설정"이라는 기능이 있으므로 이것을 사용해 봅시다.
Systems Manager 콘솔 화면의 왼쪽 상단 메뉴에 있습니다.
빠른 설정을 사용하면 정기적으로 Systems Manager 에이전트 업데이트를 자동화하고 CloudWatch 에이전트를 설치할 수 있습니다. 또한 Systems Manager를 사용하는 데 필요한 IAM 역할을 EC2에 자동으로 추가합니다.
적용 대상은 리전의 모든 인스턴스이거나 특정 인스턴스를 선택할 수 있습니다.
빠른 설정을 수행하면 EC2에 AmazonSSMRoleForInstancesQuickSetup
라는 IAM 역할이 적용됩니다. 이 IAM 역할에는 AmazonSSMManagedInstanceCore
정책과 AmazonSSMPatchAssociation
정책이 포함됩니다.
AmazonSSMManagedInstanceCore{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:DescribeAssociation",
"ssm:GetDeployablePatchSnapshotForInstance",
"ssm:GetDocument",
"ssm:DescribeDocument",
"ssm:GetManifest",
"ssm:GetParameter",
"ssm:GetParameters",
"ssm:ListAssociations",
"ssm:ListInstanceAssociations",
"ssm:PutInventory",
"ssm:PutComplianceItems",
"ssm:PutConfigurePackageResult",
"ssm:UpdateAssociationStatus",
"ssm:UpdateInstanceAssociationStatus",
"ssm:UpdateInstanceInformation"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2messages:AcknowledgeMessage",
"ec2messages:DeleteMessage",
"ec2messages:FailMessage",
"ec2messages:GetEndpoint",
"ec2messages:GetMessages",
"ec2messages:SendReply"
],
"Resource": "*"
}
]
}
AmazonSSMPatchAssociation{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ssm:DescribeEffectivePatchesForPatchBaseline",
"Resource": "arn:aws:ssm:*:*:patchbaseline/*"
},
{
"Effect": "Allow",
"Action": "ssm:GetPatchBaseline",
"Resource": "arn:aws:ssm:*:*:patchbaseline/*"
},
{
"Effect": "Allow",
"Action": "tag:GetResources",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "ssm:DescribePatchBaselines",
"Resource": "*"
}
]
}
연결할 Windows PC 측에 설치
Windows PC의 경우
* AWS CLI
* 세션 관리자 플러그인
설치하십시오. 마법사를 따르는 것만으로 설치할 수 있습니다.
IAM 사용자 만들기
모처럼이므로 Session Manager 만 가능한 SessionManagerUser
를 작성해 보았습니다. 필요한 정책은 다음과 같습니다.
SessionManagerStartSessionPolicy{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "ssm:StartSession",
"Resource": [
"arn:aws:ssm:*:*:document/AWS-StartSSHSession",
"arn:aws:ec2:*:XXXXXXXXXXXX:instance/*"
]
}
]
}
작성한 사용자의 자격 증명을 aws configure
로 등록합니다. profile 이름은 ssh-session-user
입니다.
( htps : // / cs. 아 ws. 아마존. 이 m/그럼_jp/cぃ/ぁてst/うせrぐいで/cぃーこんふぃぐれくいくcks rt. HTML )
aws configure --profile ssh-session-user
AWS Access Key ID [None]: XXXXXXX
AWS Secret Access Key [None]: XXXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]:
SSH 연결 설정
SSH 연결용 구성 파일( %USERPROFILE%\.ssh\config
)에 다음을 추가합니다.
# SSH over Session Manager
Host i-* mi-*
ProxyCommand C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters portNumber=%p --profile ssh-session-user"
이것으로 설정이 완료됩니다.
연결
인스턴스 이름(i-01af40cfdcecbfe5f)과 사용자(ec2-user), 키 쌍 이름(key-pair.pem)을 지정하면 Systems Manager를 통해 SSH 연결이 가능합니다.
ssh -i key-pair.pem ec2-user@i-01af40cfdcecbfe5f
안전하게 연결할 수 있었습니까?
물론 VSCode의 SSH 확장을 사용하여 연결할 수도 있습니다. htps : // 여기.ゔぃすあ lsつぢお。 코 m / cs / remote / sh sh 토리 l
SSH 연결용 구성 파일( %USERPROFILE%\.ssh\config
)에 다음을 추가하면 쉽게 연결할 수 있습니다.
Host i-01af40cfdcecbfe5f
User ec2-user
IdentityFile ~/.ssh/key-pair.pem
편리하네요!
Reference
이 문제에 관하여(EC2에 연결할 때 22번 포트를 열지 말고 Systems Manager를 사용합시다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/morikaz/items/4da0ed2428cb1f9f9444
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
EC2에 필요한 IAM 역할 설정
Systems Manager에 액세스하려면 권한이 필요합니다. 개별적으로 설정해도 좋지만 Systems Manager에 "고속 설정"이라는 기능이 있으므로 이것을 사용해 봅시다.
Systems Manager 콘솔 화면의 왼쪽 상단 메뉴에 있습니다.
빠른 설정을 사용하면 정기적으로 Systems Manager 에이전트 업데이트를 자동화하고 CloudWatch 에이전트를 설치할 수 있습니다. 또한 Systems Manager를 사용하는 데 필요한 IAM 역할을 EC2에 자동으로 추가합니다.
적용 대상은 리전의 모든 인스턴스이거나 특정 인스턴스를 선택할 수 있습니다.
빠른 설정을 수행하면 EC2에
AmazonSSMRoleForInstancesQuickSetup
라는 IAM 역할이 적용됩니다. 이 IAM 역할에는 AmazonSSMManagedInstanceCore
정책과 AmazonSSMPatchAssociation
정책이 포함됩니다.AmazonSSMManagedInstanceCore
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:DescribeAssociation",
"ssm:GetDeployablePatchSnapshotForInstance",
"ssm:GetDocument",
"ssm:DescribeDocument",
"ssm:GetManifest",
"ssm:GetParameter",
"ssm:GetParameters",
"ssm:ListAssociations",
"ssm:ListInstanceAssociations",
"ssm:PutInventory",
"ssm:PutComplianceItems",
"ssm:PutConfigurePackageResult",
"ssm:UpdateAssociationStatus",
"ssm:UpdateInstanceAssociationStatus",
"ssm:UpdateInstanceInformation"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2messages:AcknowledgeMessage",
"ec2messages:DeleteMessage",
"ec2messages:FailMessage",
"ec2messages:GetEndpoint",
"ec2messages:GetMessages",
"ec2messages:SendReply"
],
"Resource": "*"
}
]
}
AmazonSSMPatchAssociation
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ssm:DescribeEffectivePatchesForPatchBaseline",
"Resource": "arn:aws:ssm:*:*:patchbaseline/*"
},
{
"Effect": "Allow",
"Action": "ssm:GetPatchBaseline",
"Resource": "arn:aws:ssm:*:*:patchbaseline/*"
},
{
"Effect": "Allow",
"Action": "tag:GetResources",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "ssm:DescribePatchBaselines",
"Resource": "*"
}
]
}
연결할 Windows PC 측에 설치
Windows PC의 경우
* AWS CLI
* 세션 관리자 플러그인
설치하십시오. 마법사를 따르는 것만으로 설치할 수 있습니다.
IAM 사용자 만들기
모처럼이므로 Session Manager 만 가능한
SessionManagerUser
를 작성해 보았습니다. 필요한 정책은 다음과 같습니다.SessionManagerStartSessionPolicy
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "ssm:StartSession",
"Resource": [
"arn:aws:ssm:*:*:document/AWS-StartSSHSession",
"arn:aws:ec2:*:XXXXXXXXXXXX:instance/*"
]
}
]
}
작성한 사용자의 자격 증명을
aws configure
로 등록합니다. profile 이름은 ssh-session-user
입니다.( htps : // / cs. 아 ws. 아마존. 이 m/그럼_jp/cぃ/ぁてst/うせrぐいで/cぃーこんふぃぐれくいくcks rt. HTML )
aws configure --profile ssh-session-user
AWS Access Key ID [None]: XXXXXXX
AWS Secret Access Key [None]: XXXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]:
SSH 연결 설정
SSH 연결용 구성 파일(
%USERPROFILE%\.ssh\config
)에 다음을 추가합니다.# SSH over Session Manager
Host i-* mi-*
ProxyCommand C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters portNumber=%p --profile ssh-session-user"
이것으로 설정이 완료됩니다.
연결
인스턴스 이름(i-01af40cfdcecbfe5f)과 사용자(ec2-user), 키 쌍 이름(key-pair.pem)을 지정하면 Systems Manager를 통해 SSH 연결이 가능합니다.
ssh -i key-pair.pem ec2-user@i-01af40cfdcecbfe5f
안전하게 연결할 수 있었습니까?
물론 VSCode의 SSH 확장을 사용하여 연결할 수도 있습니다. htps : // 여기.ゔぃすあ lsつぢお。 코 m / cs / remote / sh sh 토리 l
SSH 연결용 구성 파일( %USERPROFILE%\.ssh\config
)에 다음을 추가하면 쉽게 연결할 수 있습니다.
Host i-01af40cfdcecbfe5f
User ec2-user
IdentityFile ~/.ssh/key-pair.pem
편리하네요!
Reference
이 문제에 관하여(EC2에 연결할 때 22번 포트를 열지 말고 Systems Manager를 사용합시다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/morikaz/items/4da0ed2428cb1f9f9444
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ssh -i key-pair.pem ec2-user@i-01af40cfdcecbfe5f
Host i-01af40cfdcecbfe5f
User ec2-user
IdentityFile ~/.ssh/key-pair.pem
Reference
이 문제에 관하여(EC2에 연결할 때 22번 포트를 열지 말고 Systems Manager를 사용합시다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/morikaz/items/4da0ed2428cb1f9f9444텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)