AWS 네트워크 ACL

  • VPC를 위한 선택적 보안 계층
  • 시큐리티 그룹과 다르게 차단, deny 룰을 사용할 수 있다
  • ruleNumber가 낮은 숫자일수록 우선적용된다
  • 20개까지 규칙을 지정할 수 있다고 한다
  • 실제로 가용가능한 개수는 18개다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
CidrBlock: '0.0.0.0/0',
Egress: false,
Protocol: '-1',
RuleAction: 'allow',
RuleNumber: 100
},
{
CidrBlock: '0.0.0.0/0',
Egress: false,
Protocol: '-1',
RuleAction: 'deny',
RuleNumber: 32767
}
  • 인바운드의 경우 이 2개가 기본적으로 세팅되어있다

aws-sdk 로 ACL 룰 추가, 교체하기

acl.ts
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
var in_params: EC2.CreateNetworkAclEntryRequest = {
CidrBlock: ipv4 + '/24',
Egress: false, //If true, OUTbound rule. fasle is INbound
NetworkAclId: aclId,
Protocol: `6`, // -1 : all protocl // 6 : 사용자 지정 tcp
PortRange: { From: 80, To: 443 }, // http - https
RuleAction: 'deny',
RuleNumber: acl_cnt, // 우선순위 ruleNumber
};

// 기존 존재하는 acl 규칙 개수에 따라서 mode를 달리한다
// mode값에 따라 메서드를 달리함
// 20개가 안되는 경우 createNetworkAclEntry 를 사용함
// 20개 모두 찬경우 replaceNetworkAclEntry를 통해 교체하는 방법
const method =
mode === 'create' ? 'createNetworkAclEntry' : 'replaceNetworkAclEntry';

return new Promise((resolve, reject) => {
ec2[method](in_params, function (err, data) {
if (err) {
console.log(err.message, acl_cnt);

return reject(err.message);
} else {
console.log('Create AclEntry Successful : \n', in_params); // successful response
resolve(in_params);
}
});
});
  • 이상한 요청을 차단하기 위해 알아보았다

참고