https://github.com/crowdstrike/falcon-installer

A lightweight, multi-platform CrowdStrike Falcon sensor installer written in Golang

https://github.com/crowdstrike/falcon-installer

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.9%) to scientific vocabulary

Keywords from Contributors

archival projection profiles interactive sequences generic observability autograding hacking shellcodes
Last synced: 10 months ago · JSON representation

Repository

A lightweight, multi-platform CrowdStrike Falcon sensor installer written in Golang

Basic Info
  • Host: GitHub
  • Owner: CrowdStrike
  • License: mit
  • Language: Go
  • Default Branch: main
  • Homepage:
  • Size: 291 KB
Statistics
  • Stars: 10
  • Watchers: 4
  • Forks: 3
  • Open Issues: 0
  • Releases: 18
Created about 2 years ago · Last pushed 10 months ago
Metadata Files
Readme License Support

README.md

falcon-installer

A lightweight, multi-platform CrowdStrike Falcon sensor installer written in Golang

Falcon API Permissions

API clients are granted one or more API scopes. Scopes allow access to specific CrowdStrike APIs and describe the actions that an API client can perform.

Ensure the following API scopes are enabled:

[!IMPORTANT] - Sensor Download [read] - (optional) Installation Tokens [read]

This scope allows the installer to retrieve a provisioning token from the API, but only if installation tokens are required in your environment. - (optional) Sensor update policies [read] Use this scope when using the --sensor-update-policy flag or configuring the FALCON_SENSOR_UPDATE_POLICY environment variable. - (Optional) Sensor update policies [write] Required if you want to automatically retrieve a maintenance token from the API. Not needed when using the --maintenance-token flag or configuring the FALCON_MAINTENANCE_TOKEN environment variable. Maintenance tokens are required to uninstall sensors that have uninstall protection enabled.

Usage

```shell Usage: falcon-installer [flags]

Flags: --config string A falcon-installer configuration file --enable-file-logging Output logs to file -h, --help Print usage information --quiet Suppress all log output --tmpdir string Temporary directory for downloading files (default "/tmp/falcon") --verbose Enable verbose output -v, --version Print version information

Falcon API Flags: --access-token string Access token for accessing CrowdStrike Falcon Platform --client-id string Client ID for accessing CrowdStrike Falcon Platform --client-secret string Client Secret for accessing CrowdStrike Falcon Platform --cloud string Falcon cloud abbreviation (e.g. us-1, us-2, eu-1, us-gov-1) (default "autodiscover") --member-cid string Member CID for MSSP (for cases when OAuth2 authenticates multiple CIDs) --sensor-update-policy string The sensor update policy name to use for sensor installation (default "platform_default") --sensor-version string The sensor version to update or install (overrides sensor-update-policy) --user-agent string User agent string to append to use for API requests

Falcon Sensor Flags: --cid string Falcon Customer ID. Optional when OAuth2 credentials are provided --disable-proxy Disable the sensor proxy settings --maintenance-token string Maintenance token for uninstalling the sensor or configuring sensor settings --provisioning-token string The provisioning token to use for installing the sensor. If not provided, the API will attempt to retrieve a token --proxy-host string The proxy host for the sensor to use when communicating with CrowdStrike --proxy-port string The proxy port for the sensor to use when communicating with CrowdStrike --tags string A comma separated list of tags for sensor grouping

Falcon Uninstall Flags: --uninstall Uninstall the Falcon sensor

Falcon Update Flags: --update Update the Falcon sensor for when sensor update policies are not in use

Vault Flags: --aws-secret-name string AWS Secrets Manager Secret Name --aws-secret-region string AWS Secrets Manager Region --azure-vault-name string Azure Key Vault Name --gcp-project-id string GCP Project ID for Secret Manager --oci-compartment-id string OCI Compartment ID --oci-vault-name string OCI Vault Name ```

Linux Specific Arguments

shell Linux Installation Flags: --configure-image Use when installing the sensor in an image --gpg-key string Falcon GPG key to import

MacOS Specific Arguments

shell MacOS Installation Flags: --configure-image Use when installing the sensor in an image

Windows Specific Arguments

shell Windows Installation Flags: --disable-provisioning-wait Disabling allows the Windows installer more provisioning time --disable-start Prevent the sensor from starting after installation until a reboot occurs --pac-url string Configure a proxy connection using the URL of a PAC file when communicating with CrowdStrike --provisioning-wait-time uint The number of milliseconds to wait for the sensor to provision (default 1200000) --restart Allow the system to restart after sensor installation if necessary --vdi Enable virtual desktop infrastructure mode

Installation

  • Download a binary release for your targeted operating system of the Falcon Installer from the official releases page.
  • Extract the archive tar -xvzf <linux-archive>.tar.gz for Linux and tar -xf <windows-archive>.zip for Windows.
  • Run the installer setting the CLI flags or environment variables as necessary.

Building

You can build the binary for either Linux or Windows operating systems from source from within the root of the project directory.

Linux and MacOS

bash go build -o falcon-installer cmd/main.go

Windows

bash go build -o falcon-installer.exe cmd/main.go

Once the binary has been built, you can then manually copy to a location in the local $PATH if desired.

Usage

The Falcon Installer provides several command-line options to customize the installation process. Below are some common usage examples:

Basic Installation

shell falcon-installer --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET

Installation with Specific Options

shell falcon-installer --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET --cloud us-1 --sensor-update-policy enterprise --tags "tag1,tag2,tag3"

Installation with Parent/Child CIDs

shell falcon-installer --client-id PARENT_CLIENT_ID --client-secret PARENT_CLIENT_SECRET --member-cid MEMBER_CID

Uninstallation

shell falcon-installer --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET --uninstall

Update

shell falcon-installer --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET --update --sensor-version 1.42.1234

Using a Configuration File

You can also use a configuration file to specify installation options. The installer supports YAML, JSON, INI, TOML, and HCL formats. See the examples directory for sample configuration files.

shell falcon-installer --config-file /path/to/config/file

Using Cloud Vaults

The Falcon Installer supports retrieving credentials and configuration from cloud vaults, eliminating the need to store sensitive API credentials in configuration files or environment variables.

AWS Secrets Manager

AWS Secrets Manager integration uses the AWS SDK's default credential chain, which supports multiple authentication methods including IAM roles, environment variables, and AWS CLI credentials.

Prerequisites: - AWS Secrets Manager secret containing key-value pairs - Authentication configured (IAM role, environment variables, or AWS CLI) - Secret contains Falcon configuration as JSON (e.g. {"FALCON_CLIENT_ID": "...", "falcon-client-secret": "..."})

Usage: ```shell

Using AWS Secrets Manager

falcon-installer --aws-secret-name "falcon-credentials" --aws-secret-region "us-east-1" ```

Azure Key Vault

Azure Key Vault integration uses Azure's DefaultAzureCredential authentication, which supports multiple authentication methods including managed identity, Azure CLI, and service principal authentication.

Prerequisites: - Azure Key Vault with appropriate access permissions - Authentication configured (managed identity, Azure CLI, or service principal) - Secrets stored with the falcon- or FALCON- prefix (e.g. FALCON-CLIENT-ID, falcon-client-secret, etc.)

Usage: ```shell

Using Azure Key Vault

falcon-installer --azure-vault-name "my-keyvault" ```

Google Cloud Secret Manager

GCP Secret Manager integration uses Google's Application Default Credentials (ADC), which supports multiple authentication methods including service accounts, workload identity, and gcloud CLI credentials.

Prerequisites: - GCP project with Secret Manager API enabled - Authentication configured (service account, workload identity, or gcloud CLI) - Secrets stored with the falcon_ or FALCON_ prefix (e.g. falcon_client_id, FALCON_CLIENT_SECRET, etc.)

Usage: ```shell

Using GCP Secret Manager

falcon-installer --gcp-project-id "my-project-id" ```

Oracle Cloud Infrastructure (OCI) Vault

OCI Vault integration uses Instance Principal authentication, designed for use within OCI compute instances.

Prerequisites: - OCI Vault in a specified compartment - Instance Principal authentication configured - Compute instance with appropriate IAM policies - Secrets stored with the falcon_ or FALCON_ prefix (e.g. FALCON_CLIENT_ID, falcon_client_secret, etc.)

Usage: ```shell

Using OCI Vault

falcon-installer --oci-vault-name "my-vault" --oci-compartment-id "ocid1.compartment.oc1..example" ```

Contributing

We welcome contributions that improve the installation and distribution processes of the Falcon Sensor. Please ensure that your contributions align with our coding standards and pass all CI/CD checks.

Support

Falcon Installer is a community-driven, open source project designed to streamline the deployment and use of the CrowdStrike Falcon sensor. While not a formal CrowdStrike product, Falcon Installer is maintained by CrowdStrike and supported in partnership with the open source developer community.

For additional support, please see the SUPPORT.md file.

License

See LICENSE

Owner

  • Name: CrowdStrike
  • Login: CrowdStrike
  • Kind: organization
  • Email: github@crowdstrike.com
  • Location: United States of America

GitHub Events

Total
  • Create event: 17
  • Issues event: 8
  • Release event: 10
  • Watch event: 7
  • Delete event: 8
  • Issue comment event: 7
  • Push event: 59
  • Pull request review event: 1
  • Pull request event: 118
  • Fork event: 2
Last Year
  • Create event: 17
  • Issues event: 8
  • Release event: 10
  • Watch event: 7
  • Delete event: 8
  • Issue comment event: 7
  • Push event: 59
  • Pull request review event: 1
  • Pull request event: 118
  • Fork event: 2

Committers

Last synced: 11 months ago

All Time
  • Total Commits: 96
  • Total Committers: 2
  • Avg Commits per committer: 48.0
  • Development Distribution Score (DDS): 0.083
Past Year
  • Commits: 94
  • Committers: 2
  • Avg Commits per committer: 47.0
  • Development Distribution Score (DDS): 0.085
Top Committers
Name Email Commits
Gabe Alford r****s@g****m 88
dependabot[bot] 4****] 8

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 6
  • Total pull requests: 135
  • Average time to close issues: 1 day
  • Average time to close pull requests: about 5 hours
  • Total issue authors: 4
  • Total pull request authors: 2
  • Average comments per issue: 0.33
  • Average comments per pull request: 0.06
  • Merged pull requests: 122
  • Bot issues: 0
  • Bot pull requests: 16
Past Year
  • Issues: 6
  • Pull requests: 123
  • Average time to close issues: 1 day
  • Average time to close pull requests: about 6 hours
  • Issue authors: 4
  • Pull request authors: 2
  • Average comments per issue: 0.33
  • Average comments per pull request: 0.07
  • Merged pull requests: 110
  • Bot issues: 0
  • Bot pull requests: 16
Top Authors
Issue Authors
  • redhatrises (3)
  • jturgeon79 (1)
  • hhughes0 (1)
  • jcv- (1)
Pull Request Authors
  • redhatrises (119)
  • dependabot[bot] (16)
Top Labels
Issue Labels
bug (1)
Pull Request Labels
dependencies (16) github_actions (14) go (2)

Packages

  • Total packages: 2
  • Total downloads: unknown
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 36
proxy.golang.org: github.com/CrowdStrike/falcon-installer
  • Versions: 18
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.5%
Dependent repos count: 5.7%
Last synced: 10 months ago
proxy.golang.org: github.com/crowdstrike/falcon-installer
  • Versions: 18
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 6.2%
Average: 6.4%
Dependent repos count: 6.6%
Last synced: 10 months ago

Dependencies

.github/workflows/ci.yml actions
  • actions/checkout b4ffde65f46336ab88eb53be808477a3936bae11 composite
  • actions/setup-go 0c52d547c9bc32b1aa3301fd7a9cb496313a4491 composite
  • golangci/golangci-lint-action 3cfe3a4abbb849e10058ce4af15d205b6da42804 composite
.github/workflows/release.yml actions
  • actions/checkout b4ffde65f46336ab88eb53be808477a3936bae11 composite
  • actions/setup-go 0c52d547c9bc32b1aa3301fd7a9cb496313a4491 composite
  • goreleaser/goreleaser-action 7ec5c2b0c6cdda6e8bbb49444bc797dd33d74dd8 composite
go.mod go
  • github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2
  • github.com/blang/semver/v4 v4.0.0
  • github.com/crowdstrike/gofalcon v0.6.1-0.20240605161449-be5c9bef3e6a
  • github.com/go-logr/logr v1.3.0
  • github.com/go-logr/stdr v1.2.2
  • github.com/go-openapi/analysis v0.22.2
  • github.com/go-openapi/errors v0.22.0
  • github.com/go-openapi/jsonpointer v0.20.2
  • github.com/go-openapi/jsonreference v0.20.4
  • github.com/go-openapi/loads v0.21.5
  • github.com/go-openapi/runtime v0.27.1
  • github.com/go-openapi/spec v0.20.14
  • github.com/go-openapi/strfmt v0.22.2
  • github.com/go-openapi/swag v0.22.9
  • github.com/go-openapi/validate v0.23.1
  • github.com/google/uuid v1.6.0
  • github.com/josharian/intern v1.0.0
  • github.com/mailru/easyjson v0.7.7
  • github.com/mitchellh/mapstructure v1.5.0
  • github.com/oklog/ulid v1.3.1
  • github.com/opentracing/opentracing-go v1.2.0
  • github.com/sirupsen/logrus v1.9.3
  • go.mongodb.org/mongo-driver v1.14.0
  • go.opentelemetry.io/otel v1.21.0
  • go.opentelemetry.io/otel/metric v1.21.0
  • go.opentelemetry.io/otel/trace v1.21.0
  • golang.org/x/oauth2 v0.20.0
  • golang.org/x/sync v0.5.0
  • golang.org/x/sys v0.15.0
  • gopkg.in/yaml.v3 v3.0.1
go.sum go
  • github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2
  • github.com/blang/semver/v4 v4.0.0
  • github.com/crowdstrike/gofalcon v0.6.1-0.20240605161449-be5c9bef3e6a
  • github.com/davecgh/go-spew v1.1.0
  • github.com/davecgh/go-spew v1.1.1
  • github.com/go-logr/logr v1.2.2
  • github.com/go-logr/logr v1.3.0
  • github.com/go-logr/stdr v1.2.2
  • github.com/go-openapi/analysis v0.22.2
  • github.com/go-openapi/errors v0.22.0
  • github.com/go-openapi/jsonpointer v0.20.2
  • github.com/go-openapi/jsonreference v0.20.4
  • github.com/go-openapi/loads v0.21.5
  • github.com/go-openapi/runtime v0.27.1
  • github.com/go-openapi/spec v0.20.14
  • github.com/go-openapi/strfmt v0.22.2
  • github.com/go-openapi/swag v0.22.9
  • github.com/go-openapi/validate v0.23.1
  • github.com/google/go-cmp v0.6.0
  • github.com/google/uuid v1.6.0
  • github.com/josharian/intern v1.0.0
  • github.com/kr/pretty v0.3.1
  • github.com/kr/text v0.2.0
  • github.com/mailru/easyjson v0.7.7
  • github.com/mitchellh/mapstructure v1.5.0
  • github.com/oklog/ulid v1.3.1
  • github.com/opentracing/opentracing-go v1.2.0
  • github.com/pmezard/go-difflib v1.0.0
  • github.com/rogpeppe/go-internal v1.11.0
  • github.com/sirupsen/logrus v1.9.3
  • github.com/stretchr/objx v0.1.0
  • github.com/stretchr/testify v1.3.0
  • github.com/stretchr/testify v1.7.0
  • github.com/stretchr/testify v1.9.0
  • go.mongodb.org/mongo-driver v1.14.0
  • go.opentelemetry.io/otel v1.21.0
  • go.opentelemetry.io/otel/metric v1.21.0
  • go.opentelemetry.io/otel/sdk v1.17.0
  • go.opentelemetry.io/otel/trace v1.21.0
  • golang.org/x/oauth2 v0.20.0
  • golang.org/x/sync v0.5.0
  • golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8
  • golang.org/x/sys v0.15.0
  • gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
  • gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c
  • gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c
  • gopkg.in/yaml.v3 v3.0.1