본문으로 건너뛰기
글 목록으로 돌아가기
이 글 목차
~/posts/security

인프라 보안 강화 체크리스트

AWS 인프라를 위한 종합 보안 강화 체크리스트예요. 네트워크 격리, WAF 배포, 비용 효율적인 보안 개선을 다뤄요.

빠른 영향 요약

개선 사항보안 영향비용 영향
WAF 배포매일 1000건 이상 공격 차단+$30/월
데이터베이스 격리공격 표면 100% 감소$0
NAT Gateway 제거--$90/월
순 결과95% 위험 감소-$60/월

보안과 비용 최적화를 함께 달성할 수 있어요.

네트워크 보안 체크리스트

데이터베이스 격리

이전: 0.0.0.0/0 접근 (인터넷 전체)
이후: ECS security group + 개발자 IP만
  • RDS: security group에서 0.0.0.0/0 제거
  • ElastiCache: security group에서 0.0.0.0/0 제거
  • ECS security group을 허용 소스로 추가
  • 직접 접근을 위한 개발자 IP(CIDR 블록) 추가
  • 불필요한 포트 제거(예: 데이터베이스 인스턴스의 443)
resource "aws_security_group_rule" "rds_from_ecs" {
  type                     = "ingress"
  from_port                = 5432
  to_port                  = 5432
  protocol                 = "tcp"
  source_security_group_id = aws_security_group.ecs.id
  security_group_id        = aws_security_group.rds.id
}

resource "aws_security_group_rule" "rds_from_dev" {
  type              = "ingress"
  from_port         = 5432
  to_port           = 5432
  protocol          = "tcp"
  cidr_blocks       = var.developer_ips  # ["x.x.x.x/32", "y.y.y.y/32"]
  security_group_id = aws_security_group.rds.id
}

Load Balancer 강화

  • TLS 1.2+ 최소 요구
  • HTTP/2 활성화
  • 상태 점검 간격 최적화
  • 적절한 idle timeout 설정
resource "aws_lb_listener" "https" {
  load_balancer_arn = aws_lb.main.arn
  port              = 443
  protocol          = "HTTPS"
  ssl_policy        = "ELBSecurityPolicy-TLS13-1-2-2021-06"
  certificate_arn   = var.certificate_arn
}

NAT Gateway 검토

사용하지 않는 NAT Gateway를 확인하세요:

# NAT Gateway 메트릭 확인
aws cloudwatch get-metric-statistics 
  --namespace AWS/NATGateway 
  --metric-name BytesOutToDestination 
  --dimensions Name=NatGatewayId,Value=nat-xxxxx 
  --start-time 2024-01-01T00:00:00Z 
  --end-time 2024-01-31T00:00:00Z 
  --period 86400 
  --statistics Sum

사용량이 0이면 제거를 검토하세요(~$90/월 절약).

WAF 배포 체크리스트

  • allowlist 방식으로 WAF 배포(기본 차단)
  • 모든 정상 API 경로를 allowlist에 추가
  • 상태 점검 엔드포인트 추가
  • WebSocket/Socket.IO 경로 추가
  • 차단 모드 활성화 전 모든 경로 테스트
  • 차단된 요청에 대한 CloudWatch 로깅 설정

구현 세부사항은 WAF Allowlist Patterns를 참고하세요.

데이터베이스 백업 체크리스트

  • 백업 보존 기간 늘리기(7일 이상 권장)
  • 삭제 보호 활성화
  • 자동 스냅샷 설정
  • 복원 절차 테스트
resource "aws_db_instance" "main" {
  # ...
  backup_retention_period = 7
  deletion_protection     = true
  skip_final_snapshot     = false
  final_snapshot_identifier = "${var.project}-final-snapshot"
}

개발자 접근 체크리스트

단기(IP 기반):

  • 개발자 IP 문서화
  • security group 규칙에 추가
  • IP 업데이트 프로세스 수립

장기(권장):

  • VPN 설정(AWS Client VPN 또는 서드파티)
  • SSH 터널링용 Bastion host
  • AWS Systems Manager Session Manager

모니터링 체크리스트

  • security group 변경에 대한 CloudWatch 알람
  • WAF 로깅을 CloudWatch Logs로
  • ALB 접근 로깅을 S3로
  • 보안 규정 준수를 위한 AWS Config 규칙

구현 순서

최소 중단을 위한 권장 순서:

  1. WAF 배포 - 모니터 모드로 먼저 배포
  2. 데이터베이스 격리 - security group 업데이트(다운타임 없음)
  3. 개발자 접근 - 0.0.0.0/0 제거 전에 IP 규칙 추가
  4. ALB 강화 - TLS 정책, 상태 점검(영향 최소)
  5. NAT Gateway 제거 - 사용량 없음 확인 후
  6. 백업 강화 - 중단 없음

후속 개선

초기 강화 후:

  • 모든 리소스를 private subnet으로 마이그레이션
  • 암호화된 remote state backend
  • AWS Secrets Manager로 자격 증명 관리
  • 개발자 접근을 위한 VPN 설정
  • Infrastructure as Code 보안 스캐닝

핵심 교훈

  1. 보안과 비용은 함께 갈 수 있어요 - 사용하지 않는 리소스를 제거하면 둘 다 개선돼요
  2. 점진적 변경 - 각 변경 사이에 모니터링
  3. IP 기반 접근은 임시 - VPN/Bastion 계획을 세우세요
  4. 모든 것을 문서화 - 보안 변경에는 감사 추적이 필요해요
  5. 프로덕션 전에 테스트 - dev 환경에서 먼저 검증하세요

댓글

글 목록으로 돌아가기
enko