โ† Real-time Security Inspection

ISMS-P 2.11.1 ์‚ฌ๊ณ  ์˜ˆ๋ฐฉ ๋ฐ ๋Œ€์‘์ฒด๊ณ„ ๊ตฌ์ถ• High Risk

์‚ฌ๊ณ  ์˜ˆ๋ฐฉ ๋ฐ ๋Œ€์‘์ฒด๊ณ„๊ฐ€ ๊ตฌ์ถ•๋˜์–ด ์žˆ๋Š”๊ฐ€?

ISMS-P 2.11.1์€ ์นจํ•ด์‚ฌ๊ณ  ์˜ˆ๋ฐฉ ๋ฐ ๋Œ€์‘ ์ฒด๊ณ„ ๊ตฌ์ถ•์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” ํƒ์ง€ โ†’ ์•Œ๋ฆผ โ†’ ๋ถ„์„ โ†’ ๋Œ€์‘ โ†’ ๋ณต๊ตฌ ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•ด ์นจํ•ด์‚ฌ๊ณ ์— ์‹ ์†ํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“‹

ISMS-P ์ธ์ฆ ๊ธฐ์ค€

ISMS-P 2.11.1 ์‚ฌ๊ณ  ์˜ˆ๋ฐฉ ๋ฐ ๋Œ€์‘์ฒด๊ณ„ ๊ตฌ์ถ• ์š”๊ตฌ์‚ฌํ•ญ

2.11.1

์‚ฌ๊ณ  ์˜ˆ๋ฐฉ ๋ฐ ๋Œ€์‘์ฒด๊ณ„ ๊ตฌ์ถ•

์ธ์ฆ ๊ธฐ์ค€ ์ •์˜

"์นจํ•ด์‚ฌ๊ณ  ๋ฐ ๊ฐœ์ธ์ •๋ณด ์œ ์ถœ์‚ฌ๊ณ ๋ฅผ ์˜ˆ๋ฐฉํ•˜๊ณ  ์‚ฌ๊ณ  ๋ฐœ์ƒ ์‹œ ์‹ ์†ํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋Œ€์‘์ฒด๊ณ„๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ๊ด€๋ จ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ดยท์™ธ๋ถ€ ์ •๋ณด๊ณต์œ ์ฒด๊ณ„๋ฅผ ๋งˆ๋ จํ•˜์—ฌ์•ผ ํ•œ๋‹ค."

๐Ÿ“Œ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ ์ ์šฉ ํฌ์ธํŠธ

  • GuardDuty + Security Hub ์œ„ํ˜‘ ํƒ์ง€ ์ฒด๊ณ„
  • EventBridge + SNS ๋‹ค์ฑ„๋„ ์•Œ๋ฆผ ์ฒด๊ณ„
  • Lambda + Step Functions ์ž๋™ ๋Œ€์‘ ์ฒด๊ณ„
  • Detective ์›์ธ ๋ถ„์„ ์—ฐ๋™
  • AWS Backup ๋ณต๊ตฌ ์ฒด๊ณ„ ๊ตฌ์ถ•

โš ๏ธ ๋ฏธ์ค€์ˆ˜ ์‹œ ์‹ฌ์‚ฌ ์˜ํ–ฅ

  • ๊ฒฐํ•จ: ํƒ์ง€ ์ฒด๊ณ„ ๋ฏธ๊ตฌ์ถ• (GuardDuty ๋น„ํ™œ์„ฑํ™”)
  • ๊ฒฐํ•จ: ์•Œ๋ฆผ ์ฒด๊ณ„ ๋ถ€์žฌ (SNS/EventBridge ๋ฏธ์„ค์ •)
  • ๊ฒฐํ•จ: ๋Œ€์‘ ์ ˆ์ฐจ ๋ฏธ์ˆ˜๋ฆฝ
  • ๊ถŒ๊ณ : ์—์Šค์ปฌ๋ ˆ์ด์…˜ ์ฒด๊ณ„ ๋ฏธํก
๐Ÿ“„ KISA ISMS-P ์ธ์ฆ๊ธฐ์ค€ ์•ˆ๋‚ด์„œ โ†— ๐Ÿ” Amazon Detective โ†—
๐Ÿ“ฐ

์‹ค์ œ ๋ณด์•ˆ ์‚ฌ๊ณ  ์‚ฌ๋ก€

๋Œ€์‘ ์ฒด๊ณ„ ๋ถ€์žฌ๋กœ ๋ฐœ์ƒํ•œ ์‹ค์ œ ์‚ฌ๊ณ 

2013.11

Target 4,000๋งŒ ๊ฑด ์นด๋“œ์ •๋ณด ์œ ์ถœ

POS ์‹œ์Šคํ…œ ์•…์„ฑ์ฝ”๋“œ ๊ฐ์—ผ. ๋ณด์•ˆ ์‹œ์Šคํ…œ์ด ์•Œ๋ฆผ์„ ๋ฐœ์ƒ์‹œ์ผฐ์œผ๋‚˜ ๋Œ€์‘ ์ฒด๊ณ„ ๋ถ€์žฌ๋กœ ๋ฌด์‹œ๋จ. ์—์Šค์ปฌ๋ ˆ์ด์…˜ ์ฒด๊ณ„ ์—†์ด ์•Œ๋ฆผ๋งŒ ์Œ“์ž„. 2.9์–ต ๋‹ฌ๋Ÿฌ ํ”ผํ•ด ๋ฐœ์ƒ.

๐Ÿ’ก ๊ตํ›ˆ: ์•Œ๋ฆผ ๋ฐœ์ƒ ์‹œ ์ž๋™ ์—์Šค์ปฌ๋ ˆ์ด์…˜ ์ฒด๊ณ„ ํ•„์ˆ˜

์ถœ์ฒ˜: Bank Info Security โ†—
2017.06

Maersk NotPetya ๋žœ์„ฌ์›จ์–ด ๊ณต๊ฒฉ

NotPetya ๋žœ์„ฌ์›จ์–ด๋กœ ์ „ ์„ธ๊ณ„ ์‹œ์Šคํ…œ ๋งˆ๋น„. ์‚ฌ๊ณ  ๋Œ€์‘ ์ ˆ์ฐจ ๋ฏธ์ˆ˜๋ฆฝ, ์ž๋™ ๊ฒฉ๋ฆฌ ๋ฏธ๊ตฌ์ถ•์œผ๋กœ ๋ณต๊ตฌ์— 10์ผ ์†Œ์š”. 3์–ต ๋‹ฌ๋Ÿฌ ํ”ผํ•ด ๋ฐœ์ƒ.

๐Ÿ’ก ๊ตํ›ˆ: ์ž๋™ ๊ฒฉ๋ฆฌ + ์ฆ‰์‹œ ๋ณต๊ตฌ ์ฒด๊ณ„ ๊ตฌ์ถ• ํ•„์ˆ˜

์ถœ์ฒ˜: Wired โ†—
โšก

ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์˜ ์œ„ํ—˜

๋Œ€์‘ ์ฒด๊ณ„ ๋ฏธ๊ตฌ์ถ•์œผ๋กœ ์ธํ•œ ์œ„ํ—˜ ์ƒํ™ฉ

๋ฏธ๊ตฌ์ถ• (์œ„ํ—˜)

ํƒ์ง€

โœ“

โ†’

์•Œ๋ฆผ

โœ—

โ†’

๋Œ€์‘

โœ—

โ†‘ GuardDuty๋งŒ ํ™œ์„ฑํ™”, ์ดํ›„ ์—ฐ๋™ ์—†์Œ

ํƒ์ง€๋งŒ ํ•˜๊ณ  ์•Œ๋ฆผ/๋Œ€์‘ ์ฒด๊ณ„ ๋ถ€์žฌ โ†’ ISMS-P 2.11.1 ๋ฏธ์ถฉ์กฑ

์ฒด๊ณ„ ๊ตฌ์ถ• (๊ถŒ์žฅ)

ํƒ์ง€

โœ“

โ†’

์•Œ๋ฆผ

โœ“

โ†’

๋Œ€์‘

โœ“

โ†‘ ํƒ์ง€ โ†’ ์•Œ๋ฆผ โ†’ ๋Œ€์‘ ์ „ ํŒŒ์ดํ”„๋ผ์ธ ์—ฐ๋™

ํƒ์ง€-์•Œ๋ฆผ-๋Œ€์‘ ์ „์ฒด ์ž๋™ํ™” โ†’ ์ธ์ฆ ๊ธฐ์ค€ ์ถฉ์กฑ

๐Ÿšจ

๋ฐœ๊ฒฌ ์‚ฌ๋ก€: GuardDuty๋งŒ ํ™œ์„ฑํ™”, EventBridge/SNS/Lambda ๋ฏธ์—ฐ๋™

GuardDuty๋Š” ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€๋งŒ EventBridge ๊ทœ์น™ ์—†์Œ, SNS Topic ์—†์Œ, ๋Œ€์‘ Lambda ์—†์Œ์œผ๋กœ Critical Finding ๋ฐœ์ƒํ•ด๋„ ์•„๋ฌด๋„ ๋ชจ๋ฆ„.

ํ˜„์žฌ ์ƒํƒœ - ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์„ค์ •
# GuardDuty๋งŒ ํ™œ์„ฑํ™”, ์•Œ๋ฆผ/๋Œ€์‘ ์—†์Œ
resource "aws_guardduty_detector" "main" {
  enable = true
  # ์ดํ›„ ์—ฐ๋™ ์—†์Œ
}

# ๋ฌธ์ œ์ :
# - EventBridge ๊ทœ์น™ ์—†์Œ โ†’ ์•Œ๋ฆผ ๋ฏธ๋ฐœ์†ก
# - Lambda ํ•จ์ˆ˜ ์—†์Œ โ†’ ์ž๋™ ๋Œ€์‘ ๋ถˆ๊ฐ€
# - SNS Topic ์—†์Œ โ†’ ํ†ต๋ณด ์ฒด๊ณ„ ๋ถ€์žฌ
# - Detective ์—†์Œ โ†’ ๋ถ„์„ ์ฒด๊ณ„ ๋ถ€์žฌ

ISMS-P 2.11.1 ์œ„๋ฐ˜ ์‚ฌํ•ญ

โ—

์•Œ๋ฆผ ์ฒด๊ณ„ ๋ฏธ๊ตฌ์ถ•

โ—

์ž๋™ ๋Œ€์‘ ์ฒด๊ณ„ ๋ถ€์žฌ

โ—

์—์Šค์ปฌ๋ ˆ์ด์…˜ ์ ˆ์ฐจ ๋ถ€์žฌ

โ—

์›์ธ ๋ถ„์„ ์ฒด๊ณ„ ๋ฏธํก

๐Ÿ”

์‚ฌ์ „ ํƒ์ง€ ๋ฐฉ์•ˆ

IaC ์ฝ”๋“œ ๋ถ„์„ ๊ธฐ๋ฐ˜ ๋ฐฐํฌ ์ „ ์ ๊ฒ€

๋Œ€์‘ ์ฒด๊ณ„ ๊ตฌ์ถ• ํƒ์ง€ ๋กœ์ง

ํŒ๋‹จ ์กฐ๊ฑด ์กฐ๊ฑด ๊ฐ’ ๊ฒฐ๊ณผ
๐Ÿ›ก๏ธ GuardDuty ํƒ์ง€
๋ฆฌ์†Œ์Šค ๋ฏธ์กด์žฌ ๋˜๋Š” enable = false Critical - ์ฐจ๋‹จ
enable = true + ๋ฐ์ดํ„ฐ์†Œ์Šค ํ™œ์„ฑํ™” โ†’ ์•Œ๋ฆผ ์ฒด๊ณ„ ๊ฒ€์‚ฌ
๐Ÿ“ก EventBridge ์•Œ๋ฆผ
GuardDuty finding ๊ทœ์น™ ๋ฏธ์กด์žฌ Critical - ์ฐจ๋‹จ
severity >= 7 ๊ทœ์น™ ์กด์žฌ โ†’ ๋Œ€์‘ ์ฒด๊ณ„ ๊ฒ€์‚ฌ
โšก Lambda ์ž๋™ ๋Œ€์‘
incident-response ํ•จ์ˆ˜ ๋ฏธ์กด์žฌ High - ๊ฒฝ๊ณ 
๊ฒฉ๋ฆฌ SG ์—ฐ๋™ Lambda ์กด์žฌ โœ“ ํ†ต๊ณผ
๐Ÿ””

์‚ฌํ›„ ๋Œ€์‘ ๋ฐฉ์•ˆ

๋Ÿฐํƒ€์ž„ ์ด๋ฒคํŠธ ๋Œ€์‘ ๋ฐ ์—์Šค์ปฌ๋ ˆ์ด์…˜

GuardDuty Finding ๋Ÿฐํƒ€์ž„ ๋Œ€์‘ ๋กœ์ง

ํŒ๋‹จ ์กฐ๊ฑด ์กฐ๊ฑด ๊ฐ’ ๊ฒฐ๊ณผ
๐ŸŽฏ Finding ์‹ฌ๊ฐ๋„
severity >= 8 (Critical) Critical - ์ฆ‰์‹œ ๊ฒฉ๋ฆฌ + PagerDuty
severity >= 7 (High) High - Slack + Detective ์—ฐ๋™
severity >= 4 (Medium) Medium - ๋กœ๊น… + ํ‹ฐ์ผ“ ์ƒ์„ฑ
โฐ ๋ฏธ๋Œ€์‘ ์‹œ๊ฐ„

(์—์Šค์ปฌ๋ ˆ์ด์…˜)

30๋ถ„ ๊ฒฝ๊ณผ Critical/High ๋ฏธ๋Œ€์‘ Critical - ์ƒ์œ„ ๋‹ด๋‹น์ž ์—์Šค์ปฌ๋ ˆ์ด์…˜
1์‹œ๊ฐ„ ๊ฒฝ๊ณผ ์—ฌ์ „ํžˆ ๋ฏธ๋Œ€์‘ Critical - CISO ์ง์ ‘ ํ†ต๋ณด

๋ชจ๋“  ์•Œ๋ฆผ์— ํฌํ•จ๋˜๋Š” ์ •๋ณด

Finding ์œ ํ˜• ์˜ํ–ฅ๋ฐ›๋Š” ๋ฆฌ์†Œ์Šค ๊ณต๊ฒฉ์ž IP Detective ๋ถ„์„ ๋งํฌ
โœ“

์กฐ์น˜ ๊ฐ€์ด๋“œ

์ฆ‰์‹œ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๊ถŒ์žฅ ์„ค์ •

โŒ ์‚ญ์ œ

GuardDuty๋งŒ ๋‹จ๋… ์šด์˜ํ•˜๋Š” ์„ค์ • (์•Œ๋ฆผ/๋Œ€์‘ ๋ฏธ์—ฐ๋™)

โœ“ ์ ์šฉ

GuardDuty + EventBridge + SNS + Lambda

๊ถŒ์žฅ ์„ค์ • (๋ณต์‚ฌํ•˜์—ฌ ์ ์šฉ)
incident-response.tf
# 1. GuardDuty ํ™œ์„ฑํ™”
resource "aws_guardduty_detector" "main" {
  enable                       = true
  finding_publishing_frequency = "FIFTEEN_MINUTES"

  datasources {
    s3_logs    { enable = true }
    kubernetes { audit_logs { enable = true } }
  }
  tags = { ISMS-P = "2.11.1" }
}

# 2. EventBridge - Critical/High Finding ํƒ์ง€
resource "aws_cloudwatch_event_rule" "security_finding" {
  name = "security-finding-critical"
  event_pattern = jsonencode({
    source      = ["aws.guardduty"]
    detail-type = ["GuardDuty Finding"]
    detail      = { severity = [{ numeric = [">=", 7] }] }
  })
}

# 3. SNS ๋‹ค์ฑ„๋„ ์•Œ๋ฆผ
resource "aws_sns_topic" "security_alerts" {
  name = "security-incident-alerts"
}

resource "aws_cloudwatch_event_target" "sns" {
  rule      = aws_cloudwatch_event_rule.security_finding.name
  target_id = "send-to-sns"
  arn       = aws_sns_topic.security_alerts.arn
}

# 4. ๊ฒฉ๋ฆฌ์šฉ Security Group
resource "aws_security_group" "quarantine" {
  name        = "quarantine-sg"
  description = "No inbound/outbound - incident isolation"
  vpc_id      = var.vpc_id
  # ์ธ๋ฐ”์šด๋“œ/์•„์›ƒ๋ฐ”์šด๋“œ ๊ทœ์น™ ์—†์Œ = ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ ์ฐจ๋‹จ
}

# 5. Lambda ์ž๋™ ๋Œ€์‘ ํ•จ์ˆ˜
resource "aws_lambda_function" "incident_response" {
  function_name = "security-incident-response"
  handler       = "index.handler"
  runtime       = "python3.11"
  role          = aws_iam_role.incident_response.arn

  environment {
    variables = {
      QUARANTINE_SG_ID = aws_security_group.quarantine.id
      SNS_TOPIC_ARN    = aws_sns_topic.security_alerts.arn
    }
  }
}

๐Ÿ’ก ํ•ต์‹ฌ: ๋Œ€์‘ ์ฒด๊ณ„๋Š” ํƒ์ง€ โ†’ ์•Œ๋ฆผ โ†’ ๋ถ„์„ โ†’ ๋Œ€์‘ โ†’ ๋ณต๊ตฌ ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ์ด ์ž๋™ํ™”๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. GuardDuty๊ฐ€ ํƒ์ง€ํ•˜๋ฉด EventBridge๊ฐ€ ์ฆ‰์‹œ ์ฒ˜๋ฆฌํ•˜๊ณ , SNS๋กœ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ณ , Lambda๊ฐ€ ์ž๋™ ๊ฒฉ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“š ์ฐธ๊ณ  ์ž๋ฃŒ

๐Ÿ›ก๏ธ GuardDuty EventBridge ํ†ตํ•ฉ โ†— ๐Ÿ” Amazon Detective โ†— ๐Ÿšจ AWS Security Incident Response โ†—
๐Ÿ“Š

๋ฆฌํฌํŠธ ๋ฐฉ์•ˆ

ISMS-P ์‹ฌ์‚ฌ ์ฆ์  ๋ฐ ์ •๊ธฐ ๋ณด๊ณ 

๐Ÿ“‹ ์ง„๋‹จ ํ•ญ๋ชฉ

  • GuardDuty detector ํ™œ์„ฑํ™” ์ƒํƒœ
  • EventBridge ๊ทœ์น™ ์กด์žฌ ์—ฌ๋ถ€
  • SNS ์•Œ๋ฆผ ๊ตฌ๋…์ž ๋ชฉ๋ก
  • Lambda ๋Œ€์‘ ํ•จ์ˆ˜ ์„ค์ •
  • Detective ์—ฐ๋™ ์ƒํƒœ

๐Ÿ“… ๋ฆฌํฌํŠธ ์ฃผ๊ธฐ

์‹ค์‹œ๊ฐ„

Critical/High Finding ์ฆ‰์‹œ ์•Œ๋ฆผ

์ฃผ๊ฐ„

Finding ํ˜„ํ™ฉ + ๋Œ€์‘ ์™„๋ฃŒ์œจ

์›”๊ฐ„

ISMS-P ์ฆ์  (๋Œ€์‘ ์ด๋ ฅ ํฌํ•จ)

๐Ÿ“ค ๋ฐœ์†ก ๋ฐ ์ €์žฅ

๋ฐœ์†ก ์ฑ„๋„

Email Slack PagerDuty

์ €์žฅ์†Œ

S3 (5๋…„ ๋ณด๊ด€)
โšก

BSG ์ฐจ๋ณ„์ 

๊ธฐ์กด ๋„๊ตฌ๊ฐ€ ๋†“์น˜๋Š” ์ ๊ฒ€ ์˜์—ญ

๊ธฐ์กด ๋„๊ตฌ ๋ฐฉ์‹

GuardDuty ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋งŒ ๊ฒ€์‚ฌ

  • enable = true ์—ฌ๋ถ€๋งŒ ํ™•์ธ
  • ์•Œ๋ฆผ ์ฒด๊ณ„ ๊ตฌ์ถ• ์—ฌ๋ถ€ ๋ฏธํ™•์ธ
  • ์ž๋™ ๋Œ€์‘ ์„ค์ • ๋ฏธ๊ฒ€์‚ฌ

ํ•œ๊ณ„: ํƒ์ง€๋งŒ ํ•˜๊ณ  ์•Œ๋ฆผ/๋Œ€์‘ ์—†์œผ๋ฉด ๋ฌด์šฉ์ง€๋ฌผ์ธ๋ฐ ํƒ์ง€ ๋ชปํ•จ

BSG ์ ‘๊ทผ ๋ฐฉ์‹

์ „์ฒด ๋Œ€์‘ ํŒŒ์ดํ”„๋ผ์ธ ๊ฒ€์ฆ

  • ํƒ์ง€: GuardDuty + Security Hub ํ†ตํ•ฉ ๊ฒ€์ฆ
  • ์•Œ๋ฆผ: EventBridge + SNS ๋‹ค์ฑ„๋„ ํ™•์ธ
  • ๋Œ€์‘: Lambda + ๊ฒฉ๋ฆฌ SG ์ž๋™ํ™” ๊ฒ€์ฆ

์ฐจ๋ณ„์ : ํƒ์ง€ โ†’ ์•Œ๋ฆผ โ†’ ๋Œ€์‘ โ†’ ๋ณต๊ตฌ ์ „์ฒด ์ฒด๊ณ„ ์ž๋™ ์ ๊ฒ€

โ† Real-time Security Inspection๋กœ ๋Œ์•„๊ฐ€๊ธฐ