티스토리 뷰

aws를 feedly를 통해서 다양한 소식들을 보곤하는데 엄청난걸 봐버렸다.

https://aws.amazon.com/ko/blogs/security/how-to-enable-secure-seamless-single-sign-on-to-amazon-ec2-windows-instances-with-aws-sso/

 

How to enable secure seamless single sign-on to Amazon EC2 Windows instances with AWS SSO | Amazon Web Services

Today, we’re launching new functionality that simplifies the experience to securely access your AWS compute instances running Microsoft Windows. We took on this update to respond to customer feedback around creating a more streamlined experience for admi

aws.amazon.com

이럴수가.. aws sso를 통해서 windows 로그인을 하도록 하는 기능이라니

보통 비싼 솔루션을 돈주고 구매하게되는데 이게 참 불편한게 한두개가 아니다.

보통 중간에서 중계를 해주는 기능만 있지. 원격에서 파일 시스템에 대한 관제를 하거나 레지스트리를 보거나 이벤트 로그를 보거나 사용자 현황을 보거나 이런 것들은 거의 지원하지 않는다. 하지만 aws sso와 fleet manager와 함께라면?

windows에 비정상적인 세션이 생기거나, 로그인을 감시하기 위해 클라이언트에 별도로 설치해서 이벤트 로그나 보안 로그 등을 수집할 필요가 없다. 왜냐면?

access key를 못가렸네

{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "test:test",
        "arn": "arn:aws:sts::test:assumed-role/AWSReservedSSO_AWSAdministratorAccess_test/test",
        "accountId": "test",
        "accessKeyId": "test",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "test",
                "arn": "arn:aws:iam::11111:role/aws-reserved/sso.amazonaws.com/ap-northeast-2/AWSReservedSSO_AWSAdministratorAccess_test",
                "accountId": "11111",
                "userName": "AWSReservedSSO_AWSAdministratorAccess_test"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2021-11-28T08:19:34Z",
                "mfaAuthenticated": "false"
            }
        }
    },
    "eventTime": "2021-11-28T09:11:45Z",
    "eventSource": "ssm-guiconnect.amazonaws.com",
    "eventName": "StartConnection",
    "awsRegion": "ap-northeast-2",
    "sourceIPAddress": "1.1.1.1",
    "userAgent": "aws-internal/3 aws-sdk-java/1.12.105 Linux/5.4.156-94.273.amzn2int.x86_64 OpenJDK_64-Bit_Server_VM/25.312-b07 java/1.8.0_312 vendor/Oracle_Corporation cfg/retry-mode/standard",
    "requestParameters": {
        "AuthType": "SSO",
        "Protocol": "RDP",
        "ConnectionType": "SessionManager",
        "InstanceId": "i-05648778ebd7fb65a"
    },
    "responseElements": {
        "ConnectionArn": "arn:aws:ssm-guiconnect:ap-northeast-2:test:connection/37d02d48-1288-49ef-9225-38846aeaa418",
        "ConnectionKey": "208f0add-3bc9-46a9-b217-ccb7555658c1",
        "ClientToken": "c3fe7a7f-ccec-4a02-a166-a8bb00ed4acb",
        "requestId": "74b458b2-f991-4e6d-9dbe-ce418fbe1dcc"
    },
    "requestID": "74b458b2-f991-4e6d-9dbe-ce418fbe1dcc",
    "eventID": "be1edeb5-9b13-41b0-910e-e866610412b4",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "test",
    "eventCategory": "Management"
}

{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "test:test",
        "arn": "arn:aws:sts::test:assumed-role/AWSReservedSSO_AWSAdministratorAccess_test/test",
        "accountId": "test",
        "accessKeyId": "test",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "test",
                "arn": "arn:aws:iam::test:role/aws-reserved/sso.amazonaws.com/ap-northeast-2/AWSReservedSSO_AWSAdministratorAccess_test",
                "accountId": "test",
                "userName": "AWSReservedSSO_AWSAdministratorAccess_test"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2021-11-28T08:19:34Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "ssm-guiconnect.amazonaws.com"
    },
    "eventTime": "2021-11-28T09:11:53Z",
    "eventSource": "ssm.amazonaws.com",
    "eventName": "StartSession",
    "awsRegion": "ap-northeast-2",
    "sourceIPAddress": "ssm-guiconnect.amazonaws.com",
    "userAgent": "ssm-guiconnect.amazonaws.com",
    "requestParameters": {
        "target": "i-05648778ebd7fb65a",
        "documentName": "AWS-StartPortForwardingSession",
        "parameters": {
            "localPortNumber": [
                "9000"
            ],
            "portNumber": [
                "3389"
            ]
        }
    },
    "responseElements": {
        "sessionId": "test",
        "tokenValue": "Value hidden due to security reasons.",
        "streamUrl": "wss://ssmmessages.ap-northeast-2.amazonaws.com/v1/data-channel/test?role=publish_subscribe"
    },
    "requestID": "93f1c371-d8a8-41bc-8ad9-a47d3bb859c6",
    "eventID": "6be528c4-93a5-4b2e-af2e-213320d32025",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "test",
    "vpcEndpointId": "vpce-1234",
    "eventCategory": "Management"
}

 

와우, StartConnection -> StartSession 두 가지 api를 통해 연결되고 이를 제외한 나머지 계정 커넥션은 모두 침입이다.

테스트 시에는 AD 구축 없이 진행했는데 아마 AWS SSO 설정시에 IDP를 Windows AD DC 랑 연동하면 AD 계정으로도 가능할 듯 싶다.

지금 회사는 윈도우를 쓰지 않아서 쓸 일은 없겠지만 언젠가 사용가능할 듯 싶다.

물론 여기서만 끝난다면 조금 아쉽다.

운영체제별로 이런 것도 볼 수 있다. 물론 이런 것들 또한 api를 찔러서 가져올 수 있다.

확실히 AWS 자체만 파도 너무 끝이 없다고 느껴진다. 당장 system manager만 해도 잘쓰려면 얼마나 연습하고 공부해봐야 될까 휴

그래도 기능들 추가되는거보면 재밌기도 하고 다양한 아이디어들이 샘솟는다. 참고할 사람은 참고해서 비용 절감과 솔루션 도입 없는 보안 강화에 도움이 됐으면 한다.

!! 참고로 ssm으로 붙을 수 있도록 설정해야되고, 기본적으로 공인IP가 존재해야된다. 하지만 ssm vpc endpoint를 이용하면 사설IP를 통해서도 붙을 수 있다 !!

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함