<1> 보안 그룹
<2> 네트워크 ACL
<3> VPC Flow log
<4> WAF
<1> 보안 그룹
1
EC2 인스턴스, ALB 대상으로 접속 제어를 한다.
2
상태 저장 방식이다.
State full
디폴트로 모두 Deny이다.
허용해주는 것만 허용한다.
웹서버로 접속한 경우 유입 80이 허용되면 접속이 허용된다.
나가는 설정에 상관없이 유입은 된다.
외부에서 유입된 건 그냥 나간다.
Inbound 허용이 필요하면, 유입 한쪽 방향만 설정해주면 된다.
Outbound 제어가 필요하면 , 나가는 방향 쪽만 열어 주면 된다.
3
보안 그룹에서 나가는 것 제어는?
아래는 80으로 나가는 것만 허용해주는 설정이다.
내부에서 외부로 HTTP만 허용하면 된다.
목적지 포트나 IP로 허용하면 된다.
[ec2-user@Server-EC2 ~]$ curl ifconfig.me
3.14.145.82
나가는 것 모두 지우면 외부로 나갈 수 없다.
4
소스를 보안 그룹으로 지정할 수 있다.
소스를 접두사 목록 ID로도 설정할 수 있다.(S3 지정가능)
5
보안 그룹 Rule 수 제한은 60개이다.
60개 정도면 사용하는 데는 이상 없다.
6
보안 그룹 Outbound 제어 설정
7
8
https://brunch.co.kr/@topasvga/1363
<2> 네트워크 ACL
1
서브넷 네트워크에 대한 접속 제어를 한다.
NCAL는 설정 시 유입 유출 2가지 모두 열어줘야 서비스가 된다.
2
상태 저장하지 않는다.
Stateless
기본으로 유입과 유출이 모두 허용되어 있다.
허용과 차단 설정을 같이 할수 있다.
외부 유입 허용된 경우라도 외부로 나가는 포트가 열려 있어야 서비스된다.
나가는 것도 열어줘야 한다.
예를 들어 80으로 들어가는 것을 열어주려면 , 나가는 1024~65535 포트를 열어줘야 한다.
반대로, 내부에서 80으로 나가려면 , 들어오는 1024~65535 포트를 열어줘야 한다.
그래서, 네트워크 ACL로 서비스 관리하는것은 아주 힘들다.
들어온건 나가게 설정을 해야 한다.
서브넷 단위로 적용된다.
특정 IP에서 DDOS 공격받을 때 서브넷 단위로 한 번에 막을 수 있는 장점이 있다.
3
NACL 기본은 유입과 유출이 모두 허용되어 있다.
4
net-acl2라고 새 NACL을 만들어 관리하자.
새로 만들면 기본으로 모두 Deny이다.
5
NAcl 설정 예제
서버로 SSH 접속하려면 2가지 Open설정을 해야 한다.
유입되는 SSH 22번 포트 허용
유출되는 1024-65535 허용입니다.
NACL은 2가지 열어줘야 한다.
Inbound Rule
Outbound Rules
6
내부 -> 외부로 80 접속하려면
ADD 해서 작업하라
NACL 은 무조건 3가지 작업을 해야 한다.
Outbound 80 허용
Inbound 1024-65535 허용해야 한다.
Subnet associations에 사 대상 서브넷을 선택해 지정해야 한다.
포트 허용
Outbound Rules
inbound Rules
Subnet associations에서 대상 서브넷을 선택해 지정해야 한다.
8
특정 IP에서 공격 올 때 막기?
새 NACL
10 TCP 해당 IP 소스 deny
11 UDP 해당 IP 소스 deny
Subnet 적용
Inbound Rules
Outbound Rules
9
NACL 제약?
20개 Rule설정 가능
최대 40개까지 가능하나 성능상의 이슈가 발생될 수 있으니 40개는 사용하지 않도록 한다.
10
네트워크 ACL?
<3> VPC Flow log
1
VPC를 통해 들어오거나 나가는 것에 대한 흐름을 로그로 남긴다.
보안그룹에서 Outbound 설정을 삭제 한다.
기본 차단 이다.
2
서버 접속해 접속 상태 확인
netstat -ntp
3
접속상태 2초마다 확인
# while true ; do netstat -ntp && echo "-----------------------------" ; sleep 2; done
4
테스트
[ec2-user@Server-EC2 ~]$ curl ifconfig.me
^C
[ec2-user@Server-EC2 ~]$ ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
^C
5
거부 로그 확인
// 클라우드 포메이션에서 로그 포맷을 별도로 지정한 상태이다.
80 TCP (2 6) 로 조회
CloudWatch > 로그 > 로그그룹 > "80 2 6" 으로 필터링해서 확인하자!
2 6 의 의미 ?
TCP flags : SYN 2 , SYN-ACK 18 , FIN 1 , RST 4 , ACK 16 , PSH 8
https://www.manitonetworks.com/flow-management/2016/10/16/decoding-tcp-flags
IP 프로토콜 : ICMP 1 , TCP 6 , UDP 17
6
SYN-ACK 18 Deny 로그가 차단 되는경우 찾아보자 ~~
7
트러스트 어드바이저에서도 VPC Flow log를 모니터링한다.
Security Hub에서도 VPC Flow log를 모니터링한다.
8
실습하기
https://brunch.co.kr/@topasvga/1752
8 기본 개념
VPC Flow Logs - Amazon Virtual Private Cloud
<4> WAF
1
웹 방화벽이다.
CloudFront , ALB , API Gateway에 배포 가능하다.
Cloudwatch에서 모니터링 가능하다.
AWS Firewall Manager로 통합해 사용 가능하다.
// Cloudformation으로 EC2를 DVWA로 자동 구성된다.
// DVWA = 취약한 웹서버
2
취약 부분 확인
3
WAF 적용 ?
4가지 단계를 거친다
1단계 WAF생성
2단계 ALB등에 적용
3단계 공격 테스트
4단계 차단되었는지 뷰로 확인
4
1단계 WAF생성 ?
WAF > 지역부터 지정한다. > ALB로 지정한다. > 생성 완료
5
2단계 ALB등에 적용 ?
WAF에 적용할 리소스 지정한다.
ALB로 지정한다.
WAF > Web ACLs > Associated AWS resources > My-ALB 선택 > 완료
6
생성된 부분 확인
WAF > Web ACLs >
7
적용될 룰 확인
8
3단계 공격 테스트 ?
공격 테스트툴로 테스트한다.
9
4단계 차단되었는지 뷰로 확인 ?
10
테스트 완료후 리소스 삭제
11
참고 서비스
AWS WAF Security Automations
https://aws.amazon.com/ko/solutions/implementations/aws-waf-security-automations/
다음은 9주차 VPC 미러링
https://brunch.co.kr/@topasvga/1344
감사합니다.