eventually prepare the list of app-types
we need to talk to the kernel hence full-blown guest for once
as root
apt install build-essential gcc-12 /sbin/vboxconfig lsmod | grep vboxdrv
as user
#minikube delete --all grep ^proc /proc/cpuinfo minikube start --cpus=12 --driver=virtualbox # --driver=qemu git clone https://github.com/falcosecurity/charts.git cd charts/charts/falco/ mv -i values.yaml values.yaml.dist grep -vE '^$|^[[:space:]]*#' values.yaml.dist > values.yaml.clean grep -vE '^$|^[[:space:]]*#' values.yaml.dist > values.yaml
here’s an example of tuning a specific rule to skip a false-positive
– let’s say we don’t want to see the A shell was spawned in a container notice when ever it is DASH that is called (instead of BASH).
vi values-custom.yaml
tty: true
driver:
enabled: true
kind: modern-bpf
falco:
json_output: true
customRules:
false-positives.yaml: |-
- rule: Terminal shell in container
append: true
condition: >
and not proc.name = dash
now deploy the node set
helm dependency build
kubectx
kubens -c
helm uninstall falco-test
helm install --dry-run falco-test . --values=values-custom.yaml | less
helm install falco-test . --values=values-custom.yaml
helm upgrade falco-test . --values=values-custom.yaml
kubectl get nodes
kubectl get ds
kubectl get pods | grep ^falco-test
pods=`kubectl get pods | grep ^falco-test | awk '{print $1}'`
for pod in $pods; do kubectl logs $pod 2>&1 | grep -v ^Defaulted; done; unset pod
# --tail=5
==> you should see /etc/falco/rules.d/false-positives.yaml mentioned
#kubectl logs -l app.kubernetes.io/name=falco -f
kubectl logs -l app.kubernetes.io/instance=falco-test -f
# --all-containers
pod=`kubectl get pods | grep ^falco-test | awk '{print $1}' | head -1`
pod=`kubectl get pods | grep ^falco-test | awk '{print $1}' | tail -1`
kubectl exec -ti $pod -- bash
==> produces a shell spawn alert
kubectl exec -ti $pod -- dash
==> that one was excluded for testing and does not produce that alert
Unable to load the driver
==> probably no pre-compiled module for target kernel, use ebpf instead
https://falco.org/blog/falco-plugin-github/
https://falco.org/docs/install-operate/third-party/learning/
https://github.com/falcosecurity/plugins
https://github.com/falcosecurity/rules
https://falcosecurity.github.io/charts/
https://github.com/falcosecurity/charts/tree/master/charts/falco#loading-custom-rules
https://falco.org/docs/rules/appending/
https://falco.org/docs/rules/basic-elements/
https://falco.org/docs/rules/conditions/
https://falco.org/docs/rules/controlling-rules/
https://falco.org/docs/rules/custom-ruleset/
https://falco.org/docs/rules/default-custom/
https://falco.org/docs/rules/style-guide/
https://falco.org/docs/reference/rules/examples/
FW https://sysdig.com/blog/guidelines-reduce-noise-falco-rules/
FW https://sysdig.com/blog/day-2-falco-container-security-tuning-the-rules/
FW https://sysdig.com/blog/guidelines-reduce-noise-falco-rules/
https://falco.org/docs/rules/exceptions/
https://falco.org/blog/falco-rules-now-support-exceptions/
https://github.com/falcosecurity/falco/issues/2483 ==> load ebpf instead
https://stackoverflow.com/questions/63415220/bpf-ring-buffer-invalid-argument-22 ==> load kernel module instead
https://github.com/falcosecurity/charts/tree/master/falcosidekick
https://github.com/falcosecurity/charts/blob/master/falcosidekick/values.yaml
https://github.com/falcosecurity/falco/issues/1537
https://github.com/falcosecurity/falco/pull/1775