Preface |
|
xi | |
|
|
|
|
3 | (12) |
|
|
3 | (4) |
|
|
4 | (1) |
|
|
4 | (1) |
|
|
5 | (1) |
|
|
6 | (1) |
|
|
6 | (1) |
|
|
7 | (1) |
|
Falco's Design Principles |
|
|
7 | (3) |
|
|
7 | (1) |
|
|
7 | (1) |
|
Intent-Free Instrumentation |
|
|
8 | (1) |
|
Optimized to Run at the Edge |
|
|
8 | (1) |
|
Avoids Moving and Storing a Ton of Data |
|
|
8 | (1) |
|
|
8 | (1) |
|
|
9 | (1) |
|
Robust Defaults, Richly Extensible |
|
|
9 | (1) |
|
|
9 | (1) |
|
What You Can Do with Falco |
|
|
10 | (1) |
|
What You Cannot Do with Falco |
|
|
10 | (1) |
|
|
10 | (5) |
|
Network Packets: BPF, libpcap, tcpdump, and Wireshark |
|
|
11 | (1) |
|
Snort and Packet-Based Runtime Security |
|
|
11 | (1) |
|
The Network Packets Crisis |
|
|
12 | (1) |
|
System Calls as a Data Source: sysdig |
|
|
12 | (1) |
|
|
13 | (2) |
|
2 Getting Started with Falco on Your Local Machine |
|
|
15 | (14) |
|
Running Falco on Your Local Machine |
|
|
15 | (3) |
|
Downloading and Installing the Binary Package |
|
|
16 | (1) |
|
|
16 | (1) |
|
|
17 | (1) |
|
|
18 | (3) |
|
Interpreting Falco's Output |
|
|
21 | (2) |
|
Customizing Your Falco Instance |
|
|
23 | (2) |
|
|
23 | (1) |
|
|
23 | (2) |
|
|
25 | (4) |
|
Part II The Architecture of Falco |
|
|
|
3 Understanding Falco's Architecture |
|
|
29 | (12) |
|
Falco and the Falco Libraries: A Data-Flow View |
|
|
31 | (1) |
|
|
32 | (1) |
|
|
33 | (1) |
|
|
34 | (3) |
|
|
34 | (1) |
|
|
34 | (2) |
|
|
36 | (1) |
|
|
37 | (2) |
|
|
37 | (1) |
|
|
38 | (1) |
|
|
38 | (1) |
|
|
39 | (1) |
|
One More Thing About libsinsp |
|
|
39 | (1) |
|
|
39 | (1) |
|
|
40 | (1) |
|
|
41 | (22) |
|
|
41 | (6) |
|
|
43 | (1) |
|
|
43 | (4) |
|
|
47 | (6) |
|
|
49 | (1) |
|
|
49 | (1) |
|
|
49 | (1) |
|
So What About Stability and Security? |
|
|
50 | (1) |
|
Kernel-Level Instrumentation Approaches |
|
|
50 | (3) |
|
|
53 | (3) |
|
Which Driver Should You Use? |
|
|
55 | (1) |
|
Capturing System Calls Within Containers |
|
|
55 | (1) |
|
Running the Falco Drivers |
|
|
56 | (2) |
|
|
56 | (1) |
|
|
57 | (1) |
|
Using Falco in Environments Where Kernel Access Is Not Available: pdig |
|
|
57 | (1) |
|
|
58 | (1) |
|
|
58 | (3) |
|
Plugin Architecture Concepts |
|
|
59 | (1) |
|
|
60 | (1) |
|
|
61 | (2) |
|
|
63 | (12) |
|
Understanding Data Enrichment for Syscalls |
|
|
63 | (10) |
|
Operating System Metadata |
|
|
65 | (2) |
|
|
67 | (2) |
|
|
69 | (4) |
|
Data Enrichment with Plugins |
|
|
73 | (1) |
|
|
73 | (2) |
|
|
75 | (16) |
|
|
75 | (1) |
|
Filtering Syntax Reference |
|
|
76 | (2) |
|
|
77 | (1) |
|
|
78 | (1) |
|
|
78 | (1) |
|
|
78 | (4) |
|
Argument Fields Versus Enrichment Fields |
|
|
78 | (2) |
|
Mandatory Fields Versus Optional Fields |
|
|
80 | (1) |
|
|
80 | (2) |
|
|
82 | (2) |
|
Fields and Filters in Falco |
|
|
82 | (1) |
|
Fields and Filters in sysdig |
|
|
83 | (1) |
|
Falco's Most Useful Fields |
|
|
84 | (6) |
|
|
85 | (1) |
|
|
85 | (1) |
|
|
86 | (1) |
|
|
87 | (1) |
|
|
87 | (1) |
|
|
88 | (1) |
|
|
88 | (1) |
|
|
89 | (1) |
|
|
90 | (1) |
|
|
91 | (12) |
|
Introducing Falco Rules Files |
|
|
91 | (2) |
|
Anatomy of a Falco Rules File |
|
|
93 | (5) |
|
|
93 | (2) |
|
|
95 | (1) |
|
|
96 | (1) |
|
|
96 | (2) |
|
Declaring the Expected Engine Version |
|
|
98 | (1) |
|
Replacing, Appending to, and Disabling Rules |
|
|
98 | (3) |
|
Replacing Macros, Lists, and Rules |
|
|
99 | (1) |
|
Appending to Macros, Lists, and Rules |
|
|
100 | (1) |
|
|
100 | (1) |
|
|
101 | (2) |
|
|
103 | (14) |
|
Falco's Output Architecture |
|
|
103 | (2) |
|
|
105 | (1) |
|
|
106 | (7) |
|
|
108 | (1) |
|
|
108 | (1) |
|
|
108 | (1) |
|
|
109 | (1) |
|
|
109 | (1) |
|
|
110 | (2) |
|
|
112 | (1) |
|
|
113 | (4) |
|
Part III Running Falco in Production |
|
|
|
|
117 | (14) |
|
|
117 | (1) |
|
Installing Directly on the Host |
|
|
118 | (5) |
|
|
119 | (3) |
|
Without Using a Package Manager |
|
|
122 | (1) |
|
|
122 | (1) |
|
Running Falco in a Container |
|
|
123 | (4) |
|
Syscall Instrumentation Scenario |
|
|
124 | (3) |
|
|
127 | (1) |
|
Deploying to a Kubernetes Cluster |
|
|
127 | (3) |
|
|
128 | (1) |
|
|
129 | (1) |
|
|
130 | (1) |
|
10 Configuring and Running Falco |
|
|
131 | (14) |
|
|
131 | (1) |
|
Differences Among Installation Methods |
|
|
132 | (1) |
|
|
132 | (1) |
|
|
132 | (1) |
|
|
133 | (1) |
|
Command-Line Options and Environment Variables |
|
|
133 | (6) |
|
|
134 | (1) |
|
Instrumentation Settings (Syscalls Only) |
|
|
134 | (2) |
|
Data Enrichment Settings (Syscalls Only) |
|
|
136 | (1) |
|
|
137 | (1) |
|
|
137 | (1) |
|
Other Settings for Debugging and Troubleshooting |
|
|
138 | (1) |
|
|
139 | (1) |
|
|
140 | (2) |
|
|
140 | (1) |
|
|
141 | (1) |
|
|
142 | (1) |
|
Changing the Configuration |
|
|
143 | (1) |
|
|
144 | (1) |
|
11 Using Falco for Cloud Security |
|
|
145 | (10) |
|
Why Falco for AWS Security? |
|
|
145 | (1) |
|
Falco's Architecture and AWS Security |
|
|
146 | (2) |
|
|
147 | (1) |
|
Configuring and Running Falco for CloudTrail Security |
|
|
148 | (5) |
|
Receiving Log Files Through an SQS Queue |
|
|
148 | (4) |
|
Reading Events from an S3 Bucket or the Local Filesystem |
|
|
152 | (1) |
|
Extending Falco's AWS Ruleset |
|
|
153 | (1) |
|
|
154 | (1) |
|
|
154 | (1) |
|
12 Consuming Falco Events |
|
|
155 | (12) |
|
Working with Falco Outputs |
|
|
155 | (5) |
|
|
156 | (1) |
|
|
157 | (3) |
|
Observability and Analysis |
|
|
160 | (1) |
|
|
161 | (1) |
|
|
161 | (2) |
|
|
163 | (4) |
|
|
|
|
167 | (12) |
|
Customizing the Default Falco Rules |
|
|
167 | (1) |
|
|
168 | (6) |
|
Our Rule Development Method |
|
|
168 | (6) |
|
Things to Keep in Mind When Writing Rules |
|
|
174 | (4) |
|
|
174 | (1) |
|
|
175 | (1) |
|
|
176 | (2) |
|
|
178 | (1) |
|
|
178 | (1) |
|
|
179 | (14) |
|
Working with the Codebase |
|
|
180 | (2) |
|
The falcosecurity/falco Repository |
|
|
180 | (1) |
|
The falcosecurity/libs Repository |
|
|
181 | (1) |
|
Building Falco from Source |
|
|
181 | (1) |
|
Extending Falco Using the gRPC API |
|
|
182 | (2) |
|
Extending Falco with Plugins |
|
|
184 | (8) |
|
|
185 | (1) |
|
Plugin State and Initialization |
|
|
185 | (2) |
|
Adding Event Sourcing Capability |
|
|
187 | (2) |
|
Adding Field Extraction Capability |
|
|
189 | (1) |
|
|
190 | (1) |
|
Building a Plugin Written in Go |
|
|
191 | (1) |
|
Using Plugins While Developing |
|
|
191 | (1) |
|
|
192 | (1) |
|
|
193 | (4) |
|
What Does It Mean to Contribute to Falco? |
|
|
193 | (1) |
|
|
194 | (1) |
|
Contributing to Falcosecurity Projects |
|
|
194 | (3) |
|
|
194 | (1) |
|
|
195 | (2) |
Conclusion |
|
197 | (2) |
Index |
|
199 | |