v0.1.0-draft AI Drafted

CrowdStrike Falcon Hardening Guide

Security Last updated: 2025-12-14

EDR platform hardening for API security, update policies, and RTR access

Code Packs: Terraform

Overview

CrowdStrike Falcon is deployed across 298 Fortune 500 companies (538 of Fortune 1000), processing 1 trillion security signals daily. The July 2024 content update outage—described as the “largest IT outage in history”—demonstrated supply chain risk from security tool dependencies. A faulty channel file (C-00000291*.sys) caused global Windows system crashes, highlighting how security tools themselves become critical supply chain components. API credentials and agent configurations are high-value targets for attackers.

Intended Audience

  • Security engineers managing endpoint protection
  • IT administrators configuring CrowdStrike
  • GRC professionals assessing EDR compliance
  • SOC teams optimizing detection and response

How to Use This Guide

  • L1 (Baseline): Essential controls for all organizations
  • L2 (Hardened): Enhanced controls for security-sensitive environments
  • L3 (Maximum Security): Strictest controls for regulated industries

Scope

This guide covers CrowdStrike Falcon console security, API hardening, sensor configuration, and lessons learned from the July 2024 outage.


Table of Contents

  1. Authentication & Access Controls
  2. API Security
  3. Sensor Configuration
  4. Content Update Management
  5. Monitoring & Detection
  6. Third-Party Integration Security
  7. Compliance Quick Reference

1. Authentication & Access Controls

1.1 Enforce Multi-Factor Authentication

Profile Level: L1 (Baseline) CIS Controls: 6.3, 6.5 NIST 800-53: IA-2(1), IA-2(6)

Description

Require MFA for all Falcon console access. Console compromise provides access to all managed endpoints and security configurations.

Rationale

Why This Matters:

  • Falcon console controls security for entire fleet
  • Attackers target EDR consoles to disable protection
  • Console access enables policy modification and sensor uninstall

Attack Prevented: Credential theft, console takeover, EDR bypass

ClickOps Implementation

Step 1: Configure SSO with MFA

  1. Navigate to: Support and Resources → Resources and Tools → API Clients and Keys
  2. Actually for SSO: Falcon → Configuration → Identity Protection → SSO Settings
  3. Configure:
    • SAML Provider: Your IdP (Okta, Azure AD, etc.)
    • Entity ID: CrowdStrike provided
    • SSO URL: IdP endpoint
    • Certificate: IdP signing certificate
  4. Enable: Require MFA at IdP level

Step 2: Configure Falcon MFA (if not using SSO)

  1. Navigate to: Falcon → Host Setup and Management → Falcon Users
  2. For each user, enable: Require Two-Factor Authentication
  3. Supported methods: TOTP, SMS (not recommended)

Step 3: Enforce MFA for All Users

  1. Navigate to: Falcon → Configuration → General Settings
  2. Enable: Require 2FA for all users
  3. Set: Grace period: 0 (immediate enforcement)

Compliance Mappings

Framework Control ID Control Description
SOC 2 CC6.1 Logical access controls
NIST 800-53 IA-2(1) MFA for network access
PCI DSS 8.3.1 MFA for administrative access

1.2 Implement Role-Based Access Control

Profile Level: L1 (Baseline) NIST 800-53: AC-3, AC-6

Description

Configure granular RBAC preventing over-privileged access to Falcon console functions.

ClickOps Implementation

Step 1: Design Role Structure

See the CLI pack below for the recommended role structure.

Step 2: Create Custom Roles

  1. Navigate to: Falcon → Host Setup and Management → Roles
  2. Click Create Role
  3. Configure permissions by function area:

Detection Analyst Role:

  • Detections: Read, Investigate
  • Hosts: Read, Contain (no uninstall)
  • Policies: Read only
  • Users: No access

Step 3: Assign Users to Roles

  1. Navigate to: Falcon → Host Setup and Management → Falcon Users
  2. Edit user → Assign appropriate role
  3. Remove default Administrator role from non-admin users

1.3 Configure IP-Based Access Controls

Profile Level: L2 (Hardened) NIST 800-53: AC-3(7)

Description

Restrict Falcon console access to corporate networks and VPNs.

ClickOps Implementation

  1. Navigate to: Support and Resources → Resources and Tools → API Clients and Keys
  2. For console access, configure SSO with IdP network policies
  3. In your IdP (Okta/Azure AD):
    • Create policy requiring corporate network for CrowdStrike app
    • Block access from non-corporate IPs

2. API Security

2.1 Secure API Client Management

Profile Level: L1 (Baseline) NIST 800-53: IA-5, SC-8

Description

Implement strict API client management with minimal scopes and regular rotation.

Rationale

Why This Matters:

  • API clients provide programmatic access to Falcon
  • Over-scoped API clients enable data exfiltration
  • Long-lived credentials create persistent risk

ClickOps Implementation

Step 1: Audit Existing API Clients

  1. Navigate to: Support and Resources → Resources and Tools → API Clients and Keys
  2. Export list of all API clients
  3. Document for each:
    • Creation date
    • Last used (if available)
    • Assigned scopes
    • Purpose/integration

Step 2: Create Purpose-Specific API Clients For each integration, create dedicated client with minimal scopes:

SIEM Integration:

  • Scopes: Detections (Read), Incidents (Read), Events (Read)
  • NO: Hosts (Write), Policies (any), Users (any)

SOAR Integration:

  • Scopes: Detections (Read/Write), Hosts (Read, Contain)
  • NO: Policies (any), Uninstall capability

Vulnerability Management:

  • Scopes: Spotlight (Read)
  • NO: Detections, Host actions

Step 3: Implement Client Rotation

Client Type Rotation Frequency
SIEM/SOAR Quarterly
Development Monthly
One-time scripts Immediately after use

2.2 Configure API Rate Limiting

Profile Level: L2 (Hardened) NIST 800-53: SC-5

Description

Monitor API usage patterns and implement alerting for anomalous activity.


3. Sensor Configuration

3.1 Prevent Unauthorized Sensor Uninstall

Profile Level: L1 (Baseline) NIST 800-53: SI-3

Description

Configure sensor anti-tamper protections to prevent unauthorized removal.

Rationale

Why This Matters:

  • Attackers disable EDR before executing payloads
  • Unprotected sensors can be removed by local admin
  • Tamper protection is critical for security posture

ClickOps Implementation

Step 1: Enable Sensor Anti-Tamper

  1. Navigate to: Configuration → Sensor Update Policies
  2. Select policy → Sensor Tamper Protection
  3. Enable: Uninstall Protection
  4. Configure:
    • Token required for uninstall: Yes
    • Token rotation: Quarterly

Step 2: Configure Maintenance Token

  1. Navigate to: Configuration → Sensor Update Policies
  2. Select policy → Maintenance Token
  3. Generate token for emergency uninstalls
  4. Store token securely (PAM system)
  5. Document break-glass procedure

Step 3: Enable Reduced Functionality Mode (RFM) Protection

  1. Navigate to: Configuration → Prevention Policies
  2. Enable: Detect sensor tampering attempts
  3. Alert on: Sensor component modification attempts
Code Pack: Terraform
hth-crowdstrike-3.1-prevent-unauthorized-sensor-uninstall.tf View source on GitHub ↗
# Sensor update policy with uninstall protection enabled (Windows)
resource "crowdstrike_sensor_update_policy" "anti_tamper_windows" {
  name                 = "HTH Anti-Tamper - Windows"
  description          = "Enables uninstall protection to prevent unauthorized sensor removal on Windows hosts"
  platform_name        = "Windows"
  enabled              = true
  uninstall_protection = var.uninstall_protection_enabled ? "ENABLED" : "DISABLED"

  build = var.sensor_update_canary_build != "" ? var.sensor_update_canary_build : null

  schedule = {
    enabled = false
  }
}

# Sensor update policy with uninstall protection enabled (Linux)
resource "crowdstrike_sensor_update_policy" "anti_tamper_linux" {
  name                 = "HTH Anti-Tamper - Linux"
  description          = "Enables uninstall protection to prevent unauthorized sensor removal on Linux hosts"
  platform_name        = "Linux"
  enabled              = true
  uninstall_protection = var.uninstall_protection_enabled ? "ENABLED" : "DISABLED"

  build = var.sensor_update_canary_build != "" ? var.sensor_update_canary_build : null

  schedule = {
    enabled = false
  }
}

# Sensor update policy with uninstall protection enabled (Mac)
resource "crowdstrike_sensor_update_policy" "anti_tamper_mac" {
  name                 = "HTH Anti-Tamper - Mac"
  description          = "Enables uninstall protection to prevent unauthorized sensor removal on Mac hosts"
  platform_name        = "Mac"
  enabled              = true
  uninstall_protection = var.uninstall_protection_enabled ? "ENABLED" : "DISABLED"

  build = var.sensor_update_canary_build != "" ? var.sensor_update_canary_build : null

  schedule = {
    enabled = false
  }
}

3.2 Configure Prevention Policy Hardening

Profile Level: L1 (Baseline) NIST 800-53: SI-3, SI-4

Description

Configure aggressive prevention policies while managing false positive risk.

ClickOps Implementation

Step 1: Review Prevention Policy Settings

  1. Navigate to: Configuration → Prevention Policies
  2. For production policy, configure:
Setting L1 (Baseline) L2 (Hardened) L3 (Maximum)
Malware Moderate Aggressive Aggressive
Sensor ML Moderate Aggressive Extra Aggressive
Cloud ML Moderate Aggressive Extra Aggressive
Exploit Moderate Aggressive Aggressive
Script Moderate Aggressive Extra Aggressive

Step 2: Configure Behavioral IOAs

  1. Enable all relevant Indicator of Attack (IOA) categories
  2. Set action: Detect initially, move to Prevent after validation
  3. Monitor false positives before enabling prevention

Step 3: Configure Response Actions

  1. Navigate to: Configuration → Response Policies
  2. Enable automated containment for high-severity detections
  3. Configure: Network contain on critical severity
Code Pack: Terraform
hth-crowdstrike-3.2-configure-prevention-policy-hardening.tf View source on GitHub ↗
# Hardened Windows prevention policy
# ML levels scale with profile: L1=MODERATE, L2=AGGRESSIVE, L3=EXTRA_AGGRESSIVE
resource "crowdstrike_prevention_policy_windows" "hardened" {
  name        = var.prevention_policy_windows_name
  description = "HTH hardened prevention policy - Profile Level ${var.profile_level}"
  enabled     = true
  host_groups = []
  ioa_rule_groups = []

  # Cloud-based machine learning
  cloud_anti_malware = {
    detection  = var.profile_level >= 3 ? "EXTRA_AGGRESSIVE" : var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
    prevention = var.profile_level >= 3 ? "EXTRA_AGGRESSIVE" : var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
  }

  # Sensor-based machine learning
  sensor_anti_malware = {
    detection  = var.profile_level >= 3 ? "EXTRA_AGGRESSIVE" : var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
    prevention = var.profile_level >= 3 ? "EXTRA_AGGRESSIVE" : var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
  }

  # Adware and PUP detection
  adware_and_pup = {
    detection  = var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
    prevention = var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
  }

  # Script-based execution monitoring (PowerShell, VBA, etc.)
  script_based_execution_monitoring = true

  # Sensor tamper protection -- always enabled
  sensor_tampering_protection = true

  # Quarantine malicious files on write
  quarantine_on_write = true

  # Notify end users on detection
  notify_end_users = true

  # Volume shadow copy protection (ransomware defense)
  volume_shadow_copy_protect = true

  # Memory scanning for in-memory attacks (L2+)
  memory_scanning = var.profile_level >= 2 ? true : false

  # Driver load prevention (L2+)
  driver_load_prevention = var.profile_level >= 2 ? true : false

  # Vulnerable driver protection requires driver_load_prevention (L2+)
  vulnerable_driver_protection = var.profile_level >= 2 ? true : false

  # Extended user mode data for enhanced detection
  extended_user_mode_data = true
}

# Hardened Linux prevention policy
resource "crowdstrike_prevention_policy_linux" "hardened" {
  name        = var.prevention_policy_linux_name
  description = "HTH hardened prevention policy - Profile Level ${var.profile_level}"
  enabled     = true
  host_groups = []
  ioa_rule_groups = []

  # Cloud-based machine learning
  cloud_anti_malware = {
    detection  = var.profile_level >= 3 ? "EXTRA_AGGRESSIVE" : var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
    prevention = var.profile_level >= 3 ? "EXTRA_AGGRESSIVE" : var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
  }

  # Sensor-based machine learning
  sensor_anti_malware = {
    detection  = var.profile_level >= 3 ? "EXTRA_AGGRESSIVE" : var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
    prevention = var.profile_level >= 3 ? "EXTRA_AGGRESSIVE" : var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
  }

  # Script-based execution monitoring (shell/scripting visibility)
  script_based_execution_monitoring = true

  # Sensor tamper protection
  sensor_tampering_protection = true

  # Block suspicious processes
  prevent_suspicious_processes = true

  # Quarantine malicious files
  quarantine = true

  # Network visibility (L2+)
  network_visibility = var.profile_level >= 2 ? true : false

  # Extended command line visibility (L2+)
  extended_command_line_visibility = var.profile_level >= 2 ? true : false

  # Drift prevention for containers (L3)
  drift_prevention = var.profile_level >= 3 ? true : false
}

# Hardened Mac prevention policy
resource "crowdstrike_prevention_policy_mac" "hardened" {
  name        = var.prevention_policy_mac_name
  description = "HTH hardened prevention policy - Profile Level ${var.profile_level}"
  enabled     = true
  host_groups = []
  ioa_rule_groups = []

  # Cloud-based machine learning
  cloud_anti_malware = {
    detection  = var.profile_level >= 3 ? "EXTRA_AGGRESSIVE" : var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
    prevention = var.profile_level >= 3 ? "EXTRA_AGGRESSIVE" : var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
  }

  # Sensor-based machine learning
  sensor_anti_malware = {
    detection  = var.profile_level >= 3 ? "EXTRA_AGGRESSIVE" : var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
    prevention = var.profile_level >= 3 ? "EXTRA_AGGRESSIVE" : var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
  }

  # Cloud adware and PUP detection
  cloud_adware_and_pup = {
    detection  = var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
    prevention = var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
  }

  # Sensor adware and PUP detection
  sensor_adware_and_pup = {
    detection  = var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
    prevention = var.profile_level >= 2 ? "AGGRESSIVE" : "MODERATE"
  }

  # Script-based execution monitoring
  script_based_execution_monitoring = true

  # Sensor tamper protection
  sensor_tampering_protection = true

  # Block suspicious processes
  prevent_suspicious_processes = true

  # Quarantine malicious files
  quarantine = true

  # Quarantine on write
  quarantine_on_write = true

  # Notify end users
  notify_end_users = true
}

3.3 Implement Sensor Grouping Strategy

Profile Level: L1 (Baseline) NIST 800-53: CM-2

Description

Organize sensors into logical groups for policy management and staged deployments.

ClickOps Implementation

See the CLI pack below for the recommended sensor grouping structure.

Step 1: Create Host Groups

  1. Navigate to: Host Setup and Management → Host Groups
  2. Create groups using dynamic rules:
    • OS type
    • OU membership
    • Hostname patterns
    • Custom tags

Step 2: Assign Policies to Groups

  1. Navigate to: Configuration → Prevention Policies
  2. Assign stricter policies to critical groups
  3. Enable: Test-Canary group receives updates first
Code Pack: Terraform
hth-crowdstrike-3.3-implement-sensor-grouping-strategy.tf View source on GitHub ↗
# Canary group -- receives updates first for early issue detection (1-5% of fleet)
resource "crowdstrike_host_group" "canary" {
  name            = "HTH Content-Update-Canary"
  description     = "Canary ring for staged content and sensor updates. Non-production and IT systems for early issue detection."
  type            = "dynamic"
  assignment_rule = var.canary_group_assignment_rule
}

# Production-Critical group -- domain controllers, databases, payment systems
resource "crowdstrike_host_group" "production_critical" {
  name            = "HTH Production-Critical"
  description     = "Critical infrastructure: domain controllers, database servers, payment systems. Receives N-1 sensor version and delayed content updates."
  type            = "dynamic"
  assignment_rule = var.production_critical_assignment_rule
}

# Production-Standard group -- application and web servers
resource "crowdstrike_host_group" "production_standard" {
  name            = "HTH Production-Standard"
  description     = "Standard production hosts: application servers, web servers. Receives updates after canary validation."
  type            = "dynamic"
  assignment_rule = var.production_standard_assignment_rule
}

# Workstation group -- end-user devices
resource "crowdstrike_host_group" "workstation" {
  name            = "HTH Workstations"
  description     = "End-user workstations: executive, engineering, and general user devices."
  type            = "dynamic"
  assignment_rule = var.workstation_assignment_rule
}

# Early Adopter group (L2+) -- 10% of fleet validates after canary
resource "crowdstrike_host_group" "early_adopter" {
  count = var.profile_level >= 2 ? 1 : 0

  name            = "HTH Early-Adopter"
  description     = "Early adopter ring: ~10% of fleet. Validates updates after canary before broad production rollout."
  type            = "dynamic"
  assignment_rule = "tags:'SensorGroupingTags/early-adopter'"
}

4. Content Update Management

4.1 Implement Staged Content Deployment

Profile Level: L1 (Baseline) - CRITICAL (Post-July 2024 Lesson) NIST 800-53: CM-3

Description

Deploy content updates in stages to detect issues before full rollout. This control directly addresses the July 2024 outage.

Rationale

Why This Matters:

  • July 2024: Single faulty channel file caused global outage
  • No staging = instant propagation of bad updates
  • Staged deployment enables rollback before widespread impact

Real-World Incidents:

  • July 2024 CrowdStrike Outage: Channel File 291 (C-00000291*.sys) update caused Windows BSOD on 8.5 million devices globally. Airlines, hospitals, banks affected.

ClickOps Implementation

Step 1: Create Canary Group

  1. Navigate to: Host Setup and Management → Host Groups
  2. Create group: Content-Update-Canary
  3. Include:
    • Non-production systems
    • IT department systems
    • Representative sample of OS versions
  4. Size: 1-5% of fleet

Step 2: Configure Sensor Update Rings

  1. Navigate to: Configuration → Sensor Update Policies
  2. Create tiered policies:
Ring Population Delay Purpose
Canary 1-5% 0 hours Early detection
Early Adopter 10% 4 hours Validation
Production 85% 24-48 hours Stable deployment

Step 3: Configure N-1 Sensor Version

  1. For critical production systems:
    • Set sensor update policy to N-1 version
    • Only update after N version is proven stable

Step 4: Monitor Canary Group

  1. Create dashboard for canary group health:
    • Sensor status
    • System stability (crash events)
    • Detection rates
  2. Alert on: Abnormal sensor disconnection or system errors

Monitoring Configuration

See the SDK pack below for canary health monitoring scripts.

Code Pack: Terraform
hth-crowdstrike-4.1-implement-staged-content-deployment.tf View source on GitHub ↗
# Canary ring -- immediate content updates for early issue detection
resource "crowdstrike_content_update_policy" "canary" {
  name        = "HTH Content Update - Canary Ring"
  description = "Canary ring (1-5%% of fleet): receives content updates immediately for early issue detection. Post-July 2024 lesson: never deploy content to entire fleet simultaneously."
  enabled     = true
  host_groups = [crowdstrike_host_group.canary.id]

  # Rapid response content -- immediate for canary
  rapid_response = {
    ring_assignment = "ea"
    delay_hours     = var.canary_content_delay_hours
  }

  # Sensor operations -- early access for canary
  sensor_operations = {
    ring_assignment = "ea"
    delay_hours     = var.canary_content_delay_hours
  }

  # System critical -- GA with minimal delay
  system_critical = {
    ring_assignment = "ga"
    delay_hours     = var.canary_content_delay_hours
  }

  # Vulnerability management -- early access
  vulnerability_management = {
    ring_assignment = "ea"
    delay_hours     = var.canary_content_delay_hours
  }
}

# Early Adopter ring (L2+) -- 4-hour delay after canary validation
resource "crowdstrike_content_update_policy" "early_adopter" {
  count = var.profile_level >= 2 ? 1 : 0

  name        = "HTH Content Update - Early Adopter Ring"
  description = "Early adopter ring (~10%% of fleet): receives content updates after ${var.early_adopter_content_delay_hours}-hour delay for canary validation."
  enabled     = true
  host_groups = var.profile_level >= 2 ? [crowdstrike_host_group.early_adopter[0].id] : []

  rapid_response = {
    ring_assignment = "ga"
    delay_hours     = var.early_adopter_content_delay_hours
  }

  sensor_operations = {
    ring_assignment = "ga"
    delay_hours     = var.early_adopter_content_delay_hours
  }

  system_critical = {
    ring_assignment = "ga"
    delay_hours     = var.early_adopter_content_delay_hours
  }

  vulnerability_management = {
    ring_assignment = "ga"
    delay_hours     = var.early_adopter_content_delay_hours
  }
}

# Production ring -- 24-48 hour delay for stable deployment
resource "crowdstrike_content_update_policy" "production" {
  name        = "HTH Content Update - Production Ring"
  description = "Production ring (~85%% of fleet): receives content updates after ${var.production_content_delay_hours}-hour delay. Updates only deploy after canary and early-adopter validation."
  enabled     = true
  host_groups = [
    crowdstrike_host_group.production_standard.id,
    crowdstrike_host_group.workstation.id,
  ]

  rapid_response = {
    ring_assignment = "ga"
    delay_hours     = var.production_content_delay_hours
  }

  sensor_operations = {
    ring_assignment = "ga"
    delay_hours     = var.production_content_delay_hours
  }

  system_critical = {
    ring_assignment = "ga"
    delay_hours     = var.production_content_delay_hours
  }

  vulnerability_management = {
    ring_assignment = "ga"
    delay_hours     = var.production_content_delay_hours
  }
}

# Production-Critical ring -- maximum delay for critical infrastructure
resource "crowdstrike_content_update_policy" "production_critical" {
  name        = "HTH Content Update - Production Critical Ring"
  description = "Production-critical ring (domain controllers, databases, payment systems): ${var.critical_content_delay_hours}-hour delay. Maximum caution for critical infrastructure."
  enabled     = true
  host_groups = [crowdstrike_host_group.production_critical.id]

  rapid_response = {
    ring_assignment = "ga"
    delay_hours     = var.critical_content_delay_hours
  }

  sensor_operations = {
    ring_assignment = "ga"
    delay_hours     = var.critical_content_delay_hours
  }

  system_critical = {
    ring_assignment = "ga"
    delay_hours     = var.critical_content_delay_hours
  }

  vulnerability_management = {
    ring_assignment = "ga"
    delay_hours     = var.critical_content_delay_hours
  }
}

4.2 Configure Rollback Procedures

Profile Level: L2 (Hardened) NIST 800-53: CM-3

Description

Document and test rollback procedures for sensor updates.

Implementation

Step 1: Document Rollback Procedure

  1. Sensor version rollback via policy
  2. Channel file rollback (requires CrowdStrike support)
  3. Emergency sensor disable (break-glass)

Step 2: Test Rollback Quarterly

  1. Select test group
  2. Apply older sensor version
  3. Verify protection maintained
  4. Re-apply current version
Code Pack: Terraform
hth-crowdstrike-4.2-configure-rollback-procedures.tf View source on GitHub ↗
# Sensor update policy for canary ring -- receives latest sensor version first
resource "crowdstrike_sensor_update_policy" "canary_ring" {
  count = var.profile_level >= 2 ? 1 : 0

  name                 = "HTH Sensor Update - Canary Ring"
  description          = "Canary ring: receives latest (N) sensor version immediately. Used for early detection of sensor update issues."
  platform_name        = "Windows"
  enabled              = true
  uninstall_protection = "ENABLED"

  build = var.sensor_update_canary_build != "" ? var.sensor_update_canary_build : null

  schedule = {
    enabled  = true
    timezone = var.sensor_update_schedule_timezone
    time_blocks = [{
      days       = ["sunday"]
      start_time = "02:00"
      end_time   = "06:00"
    }]
  }
}

# Sensor update policy for production ring -- N-1 version for stability
resource "crowdstrike_sensor_update_policy" "production_ring" {
  count = var.profile_level >= 2 ? 1 : 0

  name                 = "HTH Sensor Update - Production Ring"
  description          = "Production ring: runs N-1 sensor version for proven stability. Only updates after canary ring validates the newer version."
  platform_name        = "Windows"
  enabled              = true
  uninstall_protection = "ENABLED"

  build = var.sensor_update_production_build != "" ? var.sensor_update_production_build : null

  schedule = {
    enabled  = true
    timezone = var.sensor_update_schedule_timezone
    time_blocks = [{
      days       = ["saturday"]
      start_time = "02:00"
      end_time   = "06:00"
    }]
  }
}

# Critical infrastructure sensor update policy -- most conservative (L3)
resource "crowdstrike_sensor_update_policy" "critical_ring" {
  count = var.profile_level >= 3 ? 1 : 0

  name                 = "HTH Sensor Update - Critical Infrastructure"
  description          = "Critical infrastructure ring: runs N-1 sensor version with restricted update windows. Requires manual approval for version changes."
  platform_name        = "Windows"
  enabled              = true
  uninstall_protection = "ENABLED"

  build = var.sensor_update_production_build != "" ? var.sensor_update_production_build : null

  schedule = {
    enabled  = true
    timezone = var.sensor_update_schedule_timezone
    time_blocks = [{
      days       = ["sunday"]
      start_time = "03:00"
      end_time   = "05:00"
    }]
  }
}

5. Monitoring & Detection

5.1 Configure Detection Tuning

Profile Level: L1 (Baseline) NIST 800-53: SI-4

Description

Tune detection rules to reduce noise while maintaining visibility.

ClickOps Implementation

Step 1: Review High-Volume Detections

  1. Navigate to: Activity → Detections
  2. Filter by: Last 30 days, sort by count
  3. Identify top 10 noisy detections

Step 2: Create IOA Exclusions (Carefully)

  1. Navigate to: Configuration → IOA Exclusions
  2. For legitimate business applications causing false positives:
    • Create targeted exclusion
    • Scope to specific hosts/groups
    • Document business justification
  3. Never create broad exclusions

Step 3: Configure Detection Severity

  1. Navigate to: Configuration → Custom IOA Rules
  2. Adjust severity based on environment context
  3. Map to your incident response SLA
Code Pack: Terraform
hth-crowdstrike-5.1-configure-detection-tuning.tf View source on GitHub ↗
# Hardened Real Time Response (RTR) policy for Windows
# Controls what remote response actions are available to responders
resource "crowdstrike_response_policy" "hardened_windows" {
  name          = "${var.response_policy_name} - Windows"
  description   = "HTH hardened RTR policy: enables essential response capabilities while restricting dangerous operations. Profile Level ${var.profile_level}."
  platform_name = "Windows"
  enabled       = true

  # Enable remote host connectivity for responders
  real_time_response = true

  # Allow file retrieval from endpoints (forensics)
  get_command = true

  # Allow file upload to endpoints (remediation tools)
  put_command = var.profile_level >= 2 ? true : false

  # Custom script execution -- L2+ only (requires approval workflows)
  custom_scripts = var.profile_level >= 2 ? true : false

  # Executable execution on remote hosts -- L3 only (maximum response capability)
  exec_command = var.profile_level >= 3 ? true : false
}

# Hardened RTR policy for Linux
resource "crowdstrike_response_policy" "hardened_linux" {
  name          = "${var.response_policy_name} - Linux"
  description   = "HTH hardened RTR policy for Linux hosts. Profile Level ${var.profile_level}."
  platform_name = "Linux"
  enabled       = true

  real_time_response = true
  get_command        = true
  put_command        = var.profile_level >= 2 ? true : false
  custom_scripts     = var.profile_level >= 2 ? true : false
  exec_command       = var.profile_level >= 3 ? true : false
}

# Hardened RTR policy for Mac
resource "crowdstrike_response_policy" "hardened_mac" {
  name          = "${var.response_policy_name} - Mac"
  description   = "HTH hardened RTR policy for Mac hosts. Profile Level ${var.profile_level}."
  platform_name = "Mac"
  enabled       = true

  real_time_response = true
  get_command        = true
  put_command        = var.profile_level >= 2 ? true : false
  custom_scripts     = var.profile_level >= 2 ? true : false
  exec_command       = var.profile_level >= 3 ? true : false
}

5.2 Forward Events to SIEM

Profile Level: L1 (Baseline) NIST 800-53: AU-6

Description

Stream Falcon events to SIEM for correlation and long-term retention.

ClickOps Implementation

Step 1: Configure Streaming API

  1. Navigate to: Support and Resources → Resources and Tools → API Clients
  2. Create client with: Event Streams: Read scope
  3. Configure SIEM connector:
    • Splunk: Use CrowdStrike TA
    • Sentinel: Use Data Connector
    • Generic: Use Falcon Data Replicator

Step 2: Configure Event Forwarding


6. Third-Party Integration Security

6.1 Integration Risk Assessment

Integration Risk Level Recommended Scopes Controls
Splunk Medium Detections (R), Events (R) API key rotation, IP restriction
ServiceNow Medium Incidents (R/W), Hosts (R) Limited write, audit logging
SOAR High Detections (R/W), Hosts (Contain) MFA for human approval, IP restriction
Vulnerability Scanner Low Spotlight (R) Read-only, rotate quarterly

6.2 SIEM/SOAR Integration Controls

Controls for SOAR Integration:

  • ✅ Require human approval for containment actions
  • ✅ IP restriction for SOAR platform
  • ✅ Separate API client per playbook
  • ✅ Audit all automated actions
  • ❌ Never allow automated sensor uninstall

7. Compliance Quick Reference

SOC 2 Mapping

Control ID CrowdStrike Control Guide Section
CC6.1 MFA enforcement 1.1
CC6.2 RBAC 1.2
CC7.2 Detection monitoring 5.1

NIST 800-53 Mapping

Control CrowdStrike Control Guide Section
IA-2(1) MFA 1.1
SI-3 Prevention policies 3.2
CM-3 Staged deployment 4.1
AU-6 SIEM integration 5.2

Appendix A: Edition Compatibility

Control Falcon Go Falcon Pro Falcon Enterprise Falcon Complete
MFA
RBAC Basic
Custom IOAs
API Access Limited
Spotlight Add-on

Appendix B: July 2024 Outage Lessons

Key Findings:

  1. Single channel file update affected all sensors simultaneously
  2. No staged deployment for content (vs. sensor) updates
  3. Faulty content caused kernel-level crash (BSOD)
  4. Recovery required manual intervention on each affected system

Mitigation Controls:

  1. Implement N-1 sensor version for critical systems
  2. Create canary groups for early issue detection
  3. Document and test recovery procedures
  4. Maintain boot media for emergency recovery
  5. Consider redundant EDR for critical systems

Appendix C: References

Official CrowdStrike Documentation:

API and Developer Documentation:

Compliance Frameworks:

Security Incidents — July 19, 2024 Channel File 291 Outage:


Changelog

Date Version Maturity Changes Author
2025-12-14 0.1.0 draft Initial guide with July 2024 lessons Claude Code (Opus 4.5)