1

I'm trying to run falco and falcosikick container in a docker compose.

version: "3.9"
services:
  falco:
    image: falcosecurity/falco:latest
    privileged: true
    volumes:
      - /var/run/docker.sock:/host/var/run/docker.sock
      - /dev:/host/dev
      - /proc:/host/proc:ro
      - /boot:/host/boot:ro
      - /lib/modules:/host/lib/modules:ro
      - /usr:/host/usr:ro
      - /etc:/host/etc:ro
      - /var/log/falco_events.log:/var/log/falco_events.log
      - /home/ubuntu/falco.yaml:/etc/falco/falco.yaml
      - /home/ubuntu/falco_rules.yaml:/etc/falco/falco_rules.yaml
      - /home/ubuntu/falco_rules.local.yaml:/etc/falco/rules.d/custom-rules.yaml
  falcosidekick:
    image: falcosecurity/falcosidekick
    ports:
      - 2801:2801

I configured falco.yaml to send http_output to falcosidekick container:

http_output:
  enabled: true
  url: "http://falcosidekick:2801"

Then I added slack configuration to falco.yaml


debug: false 
customfields: # custom fields are added to falco events
  Akey: "AValue"
  Bkey: "BValue"
  Ckey: "CValue"
mutualtlsfilespath: "/etc/certs" # folder which will used to store client.crt, client.key and ca.crt files for mutual tls (default: "/etc/certs")

slack:
  webhookurl: "https://hooks.slack.com/services/XXX/XXXX/XXXXX"
  #footer: "" # Slack footer
  #icon: "" # Slack icon (avatar)
  #username: "" # Slack username (default: Falcosidekick)
  outputformat: "all" # all (default), text, fields
  minimumpriority: "" # minimum priority of event for using this output, order is emergency|alert|critical|error|warning|notice|informational|debug or "" (default)
  messageformat: 'Alert : rule *{{ .Rule }}* triggered by user *{{ index .OutputFields "user.name" }}*' # a Go template to format Slack Text above Attachment, displayed in addition to the output from `SLACK_OUTPUTFORMAT`, see [Slack Message Formatting](#slack-message-formatting) in the README for details. If empty, no Text is displayed before Attachment.

With this configuration I never had an alert on my slack channel. What's wrong?

Thank you

Daniele
  • 538
  • 1
  • 5
  • 17

1 Answers1

0

Configurations for falco and falcosidekick must be in 2 different files, it means you also need to mount a volume in falcosidekick container. You can also use environment variables if you prefer (but it implies your slack webhook url will be in clear text in your docker-compose file).

version: "3.9"
services:
  falco:
    image: falcosecurity/falco:latest
    privileged: true
    volumes:
      - /var/run/docker.sock:/host/var/run/docker.sock
      - /dev:/host/dev
      - /proc:/host/proc:ro
      - /boot:/host/boot:ro
      - /lib/modules:/host/lib/modules:ro
      - /usr:/host/usr:ro
      - /etc:/host/etc:ro
      - /var/log/falco_events.log:/var/log/falco_events.log
      - /home/ubuntu/falco.yaml:/etc/falco/falco.yaml
      - /home/ubuntu/falco_rules.yaml:/etc/falco/falco_rules.yaml
      - /home/ubuntu/falco_rules.local.yaml:/etc/falco/rules.d/custom-rules.yaml
  falcosidekick:
    image: falcosecurity/falcosidekick
    ports:
      - 2801:2801
    volumes:
      - /home/ubuntu/falcosidekick.yaml:/etc/falco/falcosidekick.yaml
    command: "-c /etc/falco/falcosidekick.yaml"
  • Thank you! I've done it in a different way. Instead of using command in docker-compose, I've changed the entrypoint -> entrypoint: /app/falcosidekick --config-file=/app/config.yaml . Are there any problem with this solution? – Daniele Nov 18 '21 at 10:10
  • The both solutions works – Thomas Labarussias Nov 25 '21 at 22:40