Skip to content

Instantly share code, notes, and snippets.

@ravloony
Last active November 21, 2024 01:55
Show Gist options
  • Save ravloony/2f5682fad481168dfb5778e911f47bee to your computer and use it in GitHub Desktop.
Save ravloony/2f5682fad481168dfb5778e911f47bee to your computer and use it in GitHub Desktop.
Falcon package
{ stdenv, dpkg, fetchurl, openssl, libnl, buildFHSUserEnv,... }:
stdenv.mkDerivation {
name = "falcon-sensor";
version = "4.18.0-6402";
arch = "amd64";
src = fetchurl {
url = "https://storage.googleapis.com/company-tools/falcon-sensor/falcon-sensor_4.18.0-6402_amd64.deb";
sha512 = "dc41cfe0232124480abdcf456df9a3bd6cab62716bc5beea089fbf99ac2e29bf1e1a44676591a71eeb35afe7f25e495b53ede007cfc15dcbf47df7ec0a016098";
};
buildInputs = [ dpkg ];
sourceRoot = ".";
unpackCmd = ''
dpkg-deb -x "$src" .
'';
installPhase = ''
cp -r ./ $out/
realpath $out
'';
meta = with stdenv.lib; {
description = "Crowdstrike Falcon Sensor";
homepage = "https://www.crowdstrike.com/";
license = licenses.unfree;
platforms = platforms.linux;
maintainers = with maintainers; [ ravloony ];
};
}
{ pkgs, ... }:
let
falcon = pkgs.callPackage ./falcon { };
falcon-env = pkgs.buildFHSUserEnv {
name = "falcon-sensor";
targetPkgs = pkgs: [ pkgs.libnl pkgs.openssl ];
runScript = "bash";
};
script = pkgs.writeScript "init-falcon" ''
#! ${pkgs.bash}/bin/sh
${falcon-env}/bin/falcon-sensor ${falcon}/opt/CrowdStrike/falconctl -g --cid
'';
in
{
systemd.services.falcon-sensor = {
enable = true;
description = "CrowdStrike Falcon Sensor";
after = [ "local-fs.target" ];
conflicts = [ "shutdown.target" ];
before = [ "shutdown.target" ];
serviceConfig = {
ExecStartPre = "${script}";
ExecStart = "${falcon-env}/bin/falcon-sensor ${falcon}/opt/CrowdStrike/falcond";
Type = "forking";
PIDFile = "/var/run/falcond.pid";
Restart = "no";
};
wantedBy = [ "multi-user.target" ];
};
}
@wpcarro
Copy link

wpcarro commented May 11, 2022

@spinus can you post a gist of your configuration?

@klDen
Copy link

klDen commented Jun 6, 2022

Would be interested to see your modifications as well @spinus !

@klDen
Copy link

klDen commented Jun 7, 2022

Here's a working setup with @spinus modifications: https://gist.github.com/klDen/c90d9798828e31fecbb603f85e27f4f1

@spinus
Copy link

spinus commented Jun 15, 2022

@klDen thanks for sharing.
https://gist.github.com/spinus/be0ca03def0c856ada86b16d1727d09d that's one I use. Very similar to yours.
@wpcarro FYI

@wpcarro
Copy link

wpcarro commented Nov 20, 2022

I found out that crowdstrike will /still/ run in reduced functionality mode (essentially doing nothing) because it asserts that the kernel you're running matches a whitelist of kernels that they support

@wpcarro
Copy link

wpcarro commented Nov 20, 2022

IOW - we're switching off of NixOS to Debian per security team's recommendations

@ivankovnatsky
Copy link

@jankaifer ripped your configs, thanks, though added a CID in init script: https://github.com/ivankovnatsky/nixos-config/blob/main/modules/falcon-sensor.nix#L25.

@thall
Copy link

thall commented Jun 28, 2023

If someone is trying to use any of the shared gist after NixOS release 23.05 you will experience problems, there is a backward incompatible change to buildFHSUserEnv, its now called buildFHSEnv (nix) and uses FlatPak’s Bubblewrap sandboxing tool.
The PID written in /run/falcond.pid will now be the PID from the namespace CrowdStrike is running in rather than the host PID.

To have the host PID written, you need to set unsharePid = false; in buildFHSEnv.

Example:

...
buildFHSEnv {
  name = "fs-bash";
  unsharePid = false;
  targetPkgs = pkgs: [ libnl openssl zlib ];

  extraInstallCommands = ''
    ln -s ${falcon-sensor}/* $out/
  '';

  runScript = "bash";
}

@ivankovnatsky
Copy link

ivankovnatsky commented Jul 21, 2023

@thall Thanks for sharing! Though for me it still does not start, not sure why:

Jul 21 16:00:26 <redacted-host-name> falcon-sensor[1219494]: Running /opt/CrowdStrike/falcon-sensor-bpf
Jul 21 16:00:26 <redacted-host-name> falcon-sensor-bpf[1219494]: No traceLevel set via falconctl defaulting to none
Jul 21 16:00:26 <redacted-host-name> falcon-sensor-bpf[1219494]: LogLevelUpdate: none = trace level 0.
Jul 21 16:00:26 <redacted-host-name> falcon-sensor-bpf[1219494]: CrowdStrike(11): Error loading config  1: c0000001
Jul 21 16:00:26 <redacted-host-name> falcon-sensor-bpf[1219494]: CrowdStrike(11): Initilize Configuration failed. c0000001
Jul 21 16:00:26 <redacted-host-name> falcond[1219493]: falcon-sensor[1219494] exited with status 1
Jul 21 16:00:26 <redacted-host-name> falcond[1219493]: exiting
Jul 21 16:00:26 <redacted-host-name> systemd[1]: falcon-sensor.service: Deactivated successfully.

References:

But, yeah, probably since they don't support NixOS, not sure if that is worth it.

@anpin
Copy link

anpin commented Nov 21, 2024

anyone got falcon-sensor running? None of the above make it work for me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment