This guide will walk you through the steps to manually deploy the Falcon Integration Gateway on an AWS EC2 instance as a Python application.
This will be used to grant the EC2 instance access to the Security Hub and EC2 API’s.
:exclamation: If you already have an instance profile that you would like to use, just ensure the role has the appropriate permissions and skip to step 2.
Paste the following policy into the editor:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeRegions",
"securityhub:GetFindings"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "securityhub:BatchImportFindings",
"Resource": "arn:aws:securityhub:*:*:product/crowdstrike/crowdstrike-falcon"
}
]
}
FIG-SecurityHub-Access-Policy
) and click the Create policy buttonFIG-SecurityHub-Access-Policy
) and select itFIG-SecurityHub-Access-Role
) and click the Create role buttonThis step is completely up to you. You can use the AWS console, CLI, or any other method you prefer to create an EC2 instance. Just make sure you select the instance profile you created in the previous step and that you have access to the instance via SSH.
For the purposes of this guide, we will be using the latest Amazon Linux 2023 AMI.
If you have an existing instance that you would like to use, just ensure the instance has instance profile you created in the previous step and skip to step 3.
Connect to your EC2 instance via SSH and follow the steps below to install the FIG.
sudo dnf install python3 python3-pip python3-devel git
Use the package manager for your distro to ensure these packages are installed.
Clone the repository
git clone https://github.com/CrowdStrike/falcon-integration-gateway.git
Change to the FIG directory
cd falcon-integration-gateway
Install the python dependencies.
pip install -r requirements.txt
There are two different ways that you can configure the FIG to use the AWS backend.
You can either use the config/config.ini
file or you can use environment variables.
Refer to the configuration options available to the application and backend.
config/config.ini
file[!NOTE] Instance existence confirmation can be disabled using the
confirm_instance
config.ini in the[aws]
section or by setting theAWS_CONFIRM_INSTANCE
environment variable. This option is available for scenarios where the account that is running the service application does not have access to the AWS account where the instance with the detection resides.
Modify the config/config.ini
file and set the following minimum values:
[main]
backends = AWS
[events]
severity_threshold = 3
[falcon]
cloud_region = <Falcon Cloud Region>
client_id = <Falcon Client ID>
client_secret = <Falcon Client Secret>
application_id = <EXAMPLE-SECHUB-APPID>
[aws]
region = <AWS Region>
Set the following minimum environment variables:
export FIG_BACKENDS=AWS
export EVENTS_SEVERITY_THRESHOLD=3
export FALCON_CLOUD_REGION=<Falcon Cloud Region>
export FALCON_CLIENT_ID=<Falcon Client ID>
export FALCON_CLIENT_SECRET=<Falcon Client Secret>
export FALCON_APPLICATION_ID=<EXAMPLE-SECHUB-APPID>
export AWS_REGION=<AWS Region>
Run the application
python3 -m fig
Verify output
2023-10-18 16:45:43 fig MainThread INFO Starting Falcon Integration Gateway 3.2.1
2023-10-18 16:45:43 fig MainThread INFO AWS Backend is enabled.
2023-10-18 16:45:43 fig MainThread INFO Enabled backends will only process events with types: {'DetectionSummaryEvent'}
2023-10-18 16:45:44 fig cs_stream INFO Opening Streaming Connection
2023-10-18 16:45:44 fig cs_stream INFO Established Streaming Connection: 200 OK
...
...
As events are processed by the FIG, they will be sent to Security Hub. You can verify this by following the steps below.
To get additional logging verbosity, you can set the logging level to DEBUG
by modifying either the config.ini
or setting an environment variable.
Modify the config.ini
:
[logging]
level = DEBUG
Alternatively, set the environment variable:
export LOG_LEVEL=DEBUG