AWS 콘솔 – IP 제한하는 방법

HYEONG HWAN, MUN/ 6월 3, 2024/ 미분류/ 0 comments

https://blog.lael.be/post/12107

AWS 는 IAM 이라는 방식으로 권한을 제한하고 있다.

모든 활동은 IAM 의 검사를 받으며, 활동은 CloudTrail 에 기록된다.

 

1. 콘솔 로그인 이벤트 측정하기

콘솔에 로그인 해 보고, CloudTrail 을 통해서 발생하는 이벤트들을 살펴본다.

 

콘솔 로그인은 signin:CheckMfa -> signin:ConsoleLogin 가 발생하는 것을 확인했다.

 

2. IAM 으로 권한제한 정책 만들기

관련 권한을 Deny 하는 정책을 만들어야 한다.

하지만, IAM 에서는 관련 이벤트를 Catch 하지 않는다.
Catch 하지 않는 이벤트는 항상 Allow 된다.

 

 

 

3. 결론

AWS 콘솔 접근 제한, 또는 콘솔 로그인 IP 제한하는 기능은 존재하지 않는다.
설정하는 방법도 없다.

전세계 많은 사람들이 수년간 요청했을텐데, 이런 기능이 없다니, 아쉬울 따름이다.

 

 

4. 하지만 활동을 제한 할 수는 있다.

IAM 이 지원하는 모든 활동을 제한하는 권한 정책을 만들어 보자.

- 주의 사항 : 당신이 지금 로그인한 현재 IAM 계정에 적용할 경우, 잘못 설정 했을때 모든 작업이 차단되므로, 반드시 여러번 테스트 후에 적용하도록 하자.

 

*) 모든 권한을 차단하는 정책을 생성

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Policy1",
            "Effect": "Deny",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "200.100.200.100/32",
                        "1.1.1.1/32"
                    ]
                },
                "Bool": {
                    "aws:ViaAWSService": "false"
                }
            }
        }
    ]
}

 

200.100.200.100/32 부분만 수정하면 된다.

aws:ViaAWSService 부분은, AWS 는 일부서비스가 특이하게 다른서비스 계정이 활동하는게 있다. (대표적으로 ELB) 이건 설명이 어려우므로, 그냥 저렇게 적용하기를 바란다.

Allow 와 Deny 가 충돌하면, Deny가 이긴다.

 

위의 정책을 적용하면 200.100.200.100/32 아이피가 아닌 경우, 모든 리소스에 대한 모든 활동을 거부(Deny) 한다.

하지만 IAM 권한에 Catch 되지 않는 활동은 영향을 받지 않는다.

즉 ALL DENY 권한을 적용하더라도, 콘솔은 로그인 된다.

 

하지만, 로그인만 될 뿐, 권한제한이 가능한 모든 활동이 제한 된다.

 

예시 :

 

콘솔 로그인은 할 수 있지만, 아무런 활동도 할 수 없다.

 

5. 긴급 복구 방법

root 계정은 IAM 의 영향을 받지 않기 때문에, root 계정으로 로그인하여, 잘못된 정책을 수정할 수 있다.

 

 

Leave a Comment

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*