Aller au contenu principal

AWS GuardDuty

Amazon GuardDuty est un service de surveillance de sécurité. Amazon GuardDuty peut aider à identifier les activités inattendues et potentiellement non autorisées ou malveillantes dans votre environnement AWS.

Pour en savoir plus sur le service voir la documentation AWS GuardDuty.

Prérequis

Permissions

  • Rôle administrateur dans AWS permettant de configurer les comptes et services GuardDuty
  • Rôle « Admin d'organisation » dans MD.ECO

Préfixes proposés par défaut

AWSLogs/{{OrgID}}/GuardDuty/{{Region}}/

Variables Préalables

  • {{SecurityOrgID}}: ID unique de l'organisation « Securité »
  • {{AuditOrgID}} : ID unique de l'organisation « Audit »
  • {{S3GuardDutyAuditBucketName}} : Nom du bucket qui sera utilisé pour le transfert de logs avec MD.ECO, à créer au préalable avec la procédure Ingestion par Bucket S3

Étapes de configuration

Activer GuardDuty (Organisation « Securité »)

  1. Activer GuardDuty dans la bonne région (ex : ca-central-1)
  2. Dans Settings, prendre en note le Detection ID (ARN) nécessaire dans les étapes suivantes sous le nom {{GuardDutyDetectorIDARN}}

Configuration du Bucket S3 (Organisation « Audit »)

Optionnel: Création d'une clé KMS (Organisation « Audit »)

  1. Nom : guardduty_logging

  2. Key Administration : N/A

  3. Key usage permission : Dans la section du bas, inscrire l'ID du compte {{SecurityOrgID}}

  4. Éditer la clé qui a été créé et ajouter les sécurités (« key policy ») suivante


    Remplacer les valeurs:

  • {{KMSDataEncryptionKeyARN}} : l'ARN de la clé qui vient d'être créé

  • {{SecurityOrgID}} : l'ID de l'organisation qui contient le service GuardDuty

  • {{GuardDutyDetectorIDARN}} : l'ARN du detector ID


    {
    "Sid": "AllowGuardDutyKey",
    "Effect": "Allow",
    "Principal": {
    "Service": "guardduty.amazonaws.com"
    },
    "Action": "kms:GenerateDataKey",
    "Resource": "{{KMSDataEncryptionKeyARN}}",
    "Condition": {
    "StringEquals": {
    "aws:SourceAccount": "{{SecurityOrgID}}",
    "aws:SourceArn": "{{GuardDutyDetectorIDARN}}"
    }
    }
    }

Configuration de la sécurité du bucket S3 (Organisation "Audit")

Ajouter aux sécurité existante la partie de sécurité suivante en remplaçant les valeurs ci-dessous

  • {{S3GuardDutyAuditBucketName}}: Le nom du bucket S3 pour l'enregistrement des journaux de GuardDuty
  • {{KMSDataEncryptionKeyARN}}: l'ARN de la clé qui vient d'être créé
  • {{SecurityOrgID}}: l'ID de l'organisation qui contient le service GuardDuty
  • {{GuardDutyDetectorIDARN}}: l'ARN du detector ID présent dans le Organisation "Securité"
{
"Sid": "AllowGuardDutygetBucketLocation",
"Effect": "Allow",
"Principal": {
"Service": "guardduty.amazonaws.com"
},
"Action": "s3:GetBucketLocation",
"Resource": "arn:aws:s3:::{{S3GuardDutyAuditBucketName}}",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "{{SecurityOrgID}}",
"aws:SourceArn": "{{GuardDutyDetectorIDARN}}"

}
}
},
{
"Sid": "AllowGuardDutyPutObject",
"Effect": "Allow",
"Principal": {
"Service": "guardduty.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::{{S3GuardDutyAuditBucketName}}/*",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "{{SecurityOrgID}}",
"aws:SourceArn": "{{GuardDutyDetectorIDARN}}"

}
}
},
{
"Sid": "DenyUnencryptedUploads",
"Effect": "Deny",
"Principal": {
"Service": "guardduty.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::{{S3GuardDutyAuditBucketName}}/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "aws:kms"
}
}
},
{
"Sid": "DenyIncorrectHeader",
"Effect": "Deny",
"Principal": {
"Service": "guardduty.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::{{S3GuardDutyAuditBucketName}}/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption-aws-kms-key-id": "{{KMSDataEncryptionKeyARN}}"
}
}
},
{
"Sid": "DenyNon-HTTPS",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::{{S3GuardDutyAuditBucketName}}/*",
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
}

Configuration de l'enregistrement des journaux de GuardDuty dans le bucket S3

Référence: Gestion des comptes GuardDuty avec AWS Organizations

Configuration du dépôt des journaux dans GuardDuty (Organisation "Securité")

Dans les configurations :

  • Modifier la fréquence
    • « Update CWE and S3 every 15 minutes »
    • Cliquer sur « Save »
  • Configuration du dépôt S3
    • Cliquer sur « Configure New »
    • Sélectionner « Existing bucket »
    • Champ Bucket ARN: arn:aws:s3:::{{S3GuardDutyAuditBucketName}}
    • Champ Key ARN: {{KMSDataEncryptionKeyARN}}
    • Cliquer sur « Save »

Activation de GuardDuty dans les autres comptes (Organisation "Securité")

Dans les comptes :

  • Cocher l'ensemble des accounts disponible
  • Cliquer sur « Actions »
    • Cliquer « Add member » (activation en 1-2 minutes)
    • Répondre aux questions
  • Après l'activation, activer les sécurités supplémentaires
    • Cliquer sur « Actions »
    • Cliquer sur « Enable S3 Protection »
    • Optionnel : Cliquer sur « Enable Kubernetes Audit Logs Monitoring »

Activation de la délégation d'administrateur (Master organisation)

aws guardduty enable-organization-admin-account --admin-account-id {{SecurityOrgID}}

Notifier Mondata avec les informations sur l'instance

Inclure les informations suivantes :

  • {{S3WAFAuditBucketName}}