MONITORING & LOGGING

Security Monitoring

Logging a monitoring pro bezpečnost - jak sledovat aktivity ve vašich systémech, detekovat hrozby a reagovat na bezpečnostní incidenty.

Proč potřebujeme Security Monitoring?

I s nejsilnějším zabezpečením musíme být připraveni na situaci, kdy dojde k pokusu o útok nebo k samotnému útoku. Logging je jako kamery ve vaší budově - zaznamenávají co se děje. Monitoring je alarm systém - upozorní vás když se něco podezřelého stane. Bez těchto nástrojů nebudete vědět, že vám někdo ukradl credentials, dokud nebude příliš pozdě.

Analogie s fyzickou bezpečností

Představte si luxusní vilu s cennými předměty. Máte vysokou zeď, zamčené dveře, trezor pro nejcennější věci. Ale co když se někdo přece jen dostane dovnitř?

  • Kamery (Logging): Zaznamenávají všechno co se děje - kdo přišel, co dělal, kam šel
  • Alarm (Monitoring): Okamžitě upozorní když někdo vstoupí do zabezpečené oblasti
  • Bezpečnostní služba (Incident Response): Tým který reaguje na alarmy

Bezpečnost je vrstvená

Chráníme systém na každé úrovni útoku - před, během i po útoku. Monitoring a logging jsou klíčové pro detekci a reakci během a po útoku.

AWS Monitoring & Logging služby

Audit & Compliance

AWS CloudTrail

Kontinuální monitoring a audit všech API volání v AWS účtu.

  • Zaznamenává každé API volání
  • Kdo, co, kdy, odkud
  • Management a Data events
  • Multi-region trails
  • Log file integrity validation
Monitoring & Alerting

AWS CloudWatch

Monitoring a management služba pro metriky, logy a alarmy.

  • Metriky z AWS služeb
  • Custom metriky
  • Log groups a log streams
  • Alarmy a notifikace
  • Dashboardy
Threat Detection

AWS GuardDuty

Inteligentní detekce hrozeb pomocí machine learning.

  • Anomaly detection
  • Threat intelligence feeds
  • Automatické findings
  • Integrace se Security Hub
Centralizovaný přehled

AWS Security Hub

Centrální dashboard pro security findings z více služeb.

  • Agregace findings
  • Compliance checks
  • Priority scoring
  • Automated remediation

CloudTrail - Základní konfigurace

CloudTrail zaznamenává všechny API aktivity ve vašem AWS účtu. Každý login, každé vytvoření instance, každá změna security group.

# Terraform - Multi-region CloudTrail s CloudWatch integrací resource "aws_cloudtrail" "security_trail" { name = "security-audit-trail" s3_bucket_name = aws_s3_bucket.cloudtrail_logs.id include_global_service_events = true is_multi_region_trail = true enable_log_file_validation = true # Posílá logy do CloudWatch cloud_watch_logs_group_arn = "${aws_cloudwatch_log_group.cloudtrail.arn}:*" cloud_watch_logs_role_arn = aws_iam_role.cloudtrail_cloudwatch.arn # Management events (API calls) event_selector { read_write_type = "All" include_management_events = true } # Data events pro S3 (volitelně) event_selector { read_write_type = "All" include_management_events = false data_resource { type = "AWS::S3::Object" values = ["arn:aws:s3:::sensitive-bucket/"] } } tags = { Name = "security-audit-trail" Environment = "production" } } # S3 bucket pro CloudTrail logy resource "aws_s3_bucket" "cloudtrail_logs" { bucket = "company-cloudtrail-logs-${data.aws_caller_identity.current.account_id}" tags = { Name = "cloudtrail-logs" } } # Encryption pro CloudTrail logy resource "aws_s3_bucket_server_side_encryption_configuration" "cloudtrail_logs" { bucket = aws_s3_bucket.cloudtrail_logs.id rule { apply_server_side_encryption_by_default { sse_algorithm = "aws:kms" } } } # CloudWatch Log Group resource "aws_cloudwatch_log_group" "cloudtrail" { name = "/aws/cloudtrail/security-audit" retention_in_days = 365 tags = { Name = "cloudtrail-logs" } }

CloudWatch Alarmy pro bezpečnostní události

Příklad: Alarm na neúspěšné přihlášení

# Metric filter pro failed console logins resource "aws_cloudwatch_log_metric_filter" "failed_console_login" { name = "FailedConsoleLogin" pattern = "{ ($.eventName = ConsoleLogin) && ($.errorMessage = \"Failed authentication\") }" log_group_name = aws_cloudwatch_log_group.cloudtrail.name metric_transformation { name = "FailedConsoleLoginCount" namespace = "SecurityMetrics" value = "1" } } # Alarm když je více než 3 failed loginy za 5 minut resource "aws_cloudwatch_metric_alarm" "failed_login_alarm" { alarm_name = "FailedConsoleLoginAlarm" comparison_operator = "GreaterThanThreshold" evaluation_periods = 1 metric_name = "FailedConsoleLoginCount" namespace = "SecurityMetrics" period = 300 # 5 minut statistic = "Sum" threshold = 3 alarm_description = "Více než 3 neúspěšné pokusy o přihlášení za 5 minut" alarm_actions = [aws_sns_topic.security_alerts.arn] tags = { Name = "failed-login-alarm" } } # SNS topic pro security alerty resource "aws_sns_topic" "security_alerts" { name = "security-alerts" } # Email subscription resource "aws_sns_topic_subscription" "security_email" { topic_arn = aws_sns_topic.security_alerts.arn protocol = "email" endpoint = "security-team@company.cz" }

Další důležité alarmy

# Alarm na root user activity resource "aws_cloudwatch_log_metric_filter" "root_activity" { name = "RootAccountUsage" pattern = "{ $.userIdentity.type = \"Root\" && $.userIdentity.invokedBy NOT EXISTS && $.eventType != \"AwsServiceEvent\" }" log_group_name = aws_cloudwatch_log_group.cloudtrail.name metric_transformation { name = "RootAccountUsageCount" namespace = "SecurityMetrics" value = "1" } } resource "aws_cloudwatch_metric_alarm" "root_usage_alarm" { alarm_name = "RootAccountUsageAlarm" comparison_operator = "GreaterThanThreshold" evaluation_periods = 1 metric_name = "RootAccountUsageCount" namespace = "SecurityMetrics" period = 60 statistic = "Sum" threshold = 0 alarm_description = "Root account byl použit!" alarm_actions = [aws_sns_topic.security_alerts.arn] } # Alarm na změny Security Groups resource "aws_cloudwatch_log_metric_filter" "security_group_changes" { name = "SecurityGroupChanges" pattern = "{ ($.eventName = AuthorizeSecurityGroupIngress) || ($.eventName = AuthorizeSecurityGroupEgress) || ($.eventName = RevokeSecurityGroupIngress) || ($.eventName = RevokeSecurityGroupEgress) || ($.eventName = CreateSecurityGroup) || ($.eventName = DeleteSecurityGroup) }" log_group_name = aws_cloudwatch_log_group.cloudtrail.name metric_transformation { name = "SecurityGroupChangeCount" namespace = "SecurityMetrics" value = "1" } } # Alarm na IAM policy změny resource "aws_cloudwatch_log_metric_filter" "iam_policy_changes" { name = "IAMPolicyChanges" pattern = "{ ($.eventName = DeleteGroupPolicy) || ($.eventName = DeleteRolePolicy) || ($.eventName = DeleteUserPolicy) || ($.eventName = PutGroupPolicy) || ($.eventName = PutRolePolicy) || ($.eventName = PutUserPolicy) || ($.eventName = CreatePolicy) || ($.eventName = DeletePolicy) || ($.eventName = AttachRolePolicy) || ($.eventName = DetachRolePolicy) || ($.eventName = AttachUserPolicy) || ($.eventName = DetachUserPolicy) }" log_group_name = aws_cloudwatch_log_group.cloudtrail.name metric_transformation { name = "IAMPolicyChangeCount" namespace = "SecurityMetrics" value = "1" } }

Co monitorovat?

Klíčové bezpečnostní události

Authentication & Authorization

  • Failed login attempts (brute force detection)
  • Root account usage
  • MFA disabled
  • New IAM users/roles created
  • Permission changes

Network & Infrastructure

  • Security group changes
  • VPC changes
  • Route table modifications
  • Network ACL changes
  • New EC2 instances

Data Access

  • S3 bucket policy changes
  • S3 public access
  • KMS key deletion/disable
  • RDS snapshot sharing
  • Secrets Manager access

Billing & Account

  • CloudTrail disabled
  • Config rules changes
  • Unusual billing spikes (cryptomining)
  • Account settings changes

Security Monitoring Best Practices

Logging

  • Zapnout CloudTrail ve všech regionech
  • Uchovávat logy minimálně 1 rok
  • Šifrovat logy at rest (KMS)
  • Zapnout log file integrity validation
  • VPC Flow Logs pro network traffic
  • Centralizovat logy do jednoho účtu (Security Account)

Monitoring & Alerting

  • Alarmy na kritické bezpečnostní události
  • Real-time notifikace (SNS, Slack, PagerDuty)
  • Dashboardy pro security team
  • GuardDuty pro threat detection
  • Security Hub pro centralizovaný přehled
  • Pravidelné review findings

Incident Response

  • Definované playbooks pro různé typy incidentů
  • Automatizovaná remediace kde je to možné
  • Pravidelné incident response cvičení
  • Post-incident reviews
  • Dokumentace všech incidentů

Co NEDĚLAT

  • Vypnout CloudTrail (i dočasně)
  • Ignorovat alarmy (alert fatigue)
  • Mazat logy před koncem retention period
  • Mít logy přístupné všem (least privilege)
  • Zapomenout monitorovat production
  • Nemít incident response plan