Skip to content

Commit 5521bdc

Browse files
authored
Merge branch 'main' into notification-integration-doc
2 parents 946c666 + a9ccc3b commit 5521bdc

File tree

12 files changed

+248
-18
lines changed

12 files changed

+248
-18
lines changed

crowdsec-docs/docs/appsec/quickstart/traefik.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ http:
157157
crowdsec:
158158
plugin:
159159
bouncer:
160+
enabled: true
160161
crowdsecAppsecEnabled: true
161162
crowdsecAppsecHost: crowdsec:7422
162163
crowdsecAppsecFailureBlock: true
@@ -168,6 +169,7 @@ Instead if you define the configuration using labels on the containers you can a
168169
169170
```yaml
170171
labels:
172+
- "traefik.http.middlewares.crowdsec-bar.plugin.bouncer.enabled=true"
171173
- "traefik.http.middlewares.crowdsec-bar.plugin.bouncer.crowdsecAppsecEnabled=true"
172174
- "traefik.http.middlewares.crowdsec-bar.plugin.bouncer.crowdsecAppsecHost=crowdsec:7422"
173175
- "traefik.http.middlewares.crowdsec-bar.plugin.bouncer.crowdsecLapiKey=privateKey-foo"

crowdsec-docs/docusaurus.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ module.exports = {
127127
{
128128
type: "docsVersion",
129129
to: "/docs/next/appsec/intro",
130-
label: "Application Security Component",
130+
label: "Web Application Firewall (AppSec)",
131131
},
132132
{
133133
type: "doc",

crowdsec-docs/sidebarsUnversioned.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ module.exports = {
3737
id: "cti_api/integration_intro",
3838
},
3939
items: [
40+
"cti_api/integration_ipdex",
4041
"cti_api/integration_chrome",
4142
"cti_api/integration_gigasheet",
4243
"cti_api/integration_intelowl",
65.6 KB
Loading
155 KB
Loading

crowdsec-docs/unversioned/bouncers/custom.mdx

Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,16 @@ The above will ensure you get values from LAPI to the script, however, you shoul
181181

182182
## Usage
183183

184+
:::warning
185+
Remember to set execution permissions for your binary or script. If it's a script, include a shebang on the first line (e.g., `#!/bin/sh`).
186+
:::
187+
188+
### Invoke mode
189+
190+
:::warning
191+
While the default mode, it is not recommended to use it, as calling a binary for each decision can be very costly when a lot are present.
192+
:::
193+
184194
The custom binary will be called with the following arguments :
185195

186196
```text
@@ -191,21 +201,48 @@ The custom binary will be called with the following arguments :
191201
- `value` : The value will be the decision scope value (eg `192.168.1.1` for IP)
192202
- `duration`: duration of the remediation in seconds
193203
- `reason` : reason of the decision
194-
- `json_object`: the serialized decision
195-
196-
197-
:::warning
198-
Remember to set execution permissions for your binary or script. If it's a script, include a shebang on the first line (e.g., `#!/bin/sh`).
199-
:::
204+
- `json_object`: the serialized decision (see the next section for more details)
200205

201-
## Examples
206+
#### Examples
202207

203208
```text
204209
custom_binary.sh add 192.168.1.1/32 3600 "test blacklist" <json_object>
205210
custom_binary.sh del 192.168.1.1/32 3600 "test blacklist" <json_object>
206211
```
207212

208213

214+
### Stdin mode
215+
216+
In this mode, the custom binary will be executed when the bouncer starts and is expected to read data from stdin.
217+
218+
If the binary exits for any reason, it will be reinvoked up to `max_retries` times. If the maximum number of retries is exhausted, the bouncer will quit.
219+
220+
For each decision, the custom binary will be fed the serialized JSON object on stdin, one object per line.
221+
222+
The JSON object is:
223+
```json
224+
{
225+
"duration": "143h58m15s",
226+
"origin": "CAPI",
227+
"scenario": "ssh:bruteforce",
228+
"scope": "Ip",
229+
"type": "ban",
230+
"value": "160.187.109.6",
231+
"id": 83676344,
232+
"action": "add"
233+
}
234+
```
235+
236+
- `duration`: duration of the decision, in the [go time.Duration format](https://pkg.go.dev/time#Duration). Can be negative for delete decisions.
237+
- `origin`: origin the decision. Can be `crowdsec`, `cscli`, `cscli-import`, `CAPI`, `lists`.
238+
- `scenario`: scenario that triggered the decision.
239+
- `scope`: Scope of the decision. Most likely `Ip` or `Range` with the default config, but can be any value set in your scenarios.
240+
- `type`: Type of the decision. Most likely `ban` or `captcha` with the default config, but can be any value set in your profiles.
241+
- `value`: Target of the decision.
242+
- `id`: id of the decision in the crowdsec database.
243+
- `action`: Either `add` or `del`.
244+
245+
209246
## Configuration Reference
210247

211248
### `bin_path`
@@ -216,7 +253,9 @@ Absolute path to the binary that will be invoked
216253
### `bin_args`
217254
> [ ]string
218255
219-
Array of argument to give to the script that will be invoked
256+
Array of argument to give to the script that will be invoked.
257+
258+
This option is only supported if `feed_via_stdin` is set to `true`.
220259

221260
### `feed_via_stdin`
222261
> boolean

crowdsec-docs/unversioned/console/decisions/decisions_management.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ title: Decisions Management
44
sidebar_position: 1
55
---
66

7+
:::info
8+
This feature needs the *console_management* feature activated on your Security Engine.
9+
Activate it to make sure actions from the **decision management** are applied **immediately**.
10+
Check the instructions to activate it [HERE](/u/console/decisions/decisions_intro).
11+
:::
712
## Console Management
813

914
CrowdSec Local API is able to receive or delete local decisions from the Console.

crowdsec-docs/unversioned/cti_api/getting_started.mdx

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ On the next page you can create an API key by clicking the `+ New Key` button.
4848

4949
## Accessing the API
5050

51+
### cURL
52+
5153
You can test your newly created API key by running the following command in your terminal:
5254

5355
:::info
@@ -216,6 +218,69 @@ And the default output looks something like this:
216218

217219
</details>
218220

221+
### ipdex
222+
223+
You can interact with the CrowdSec CTI API with the [`ipdex`](https://github.com/crowdsecurity/ipdex) tool.
224+
225+
First, initiliaze the tool with your API key:
226+
227+
```console
228+
ipdex init
229+
```
230+
231+
And then analyze an IP or a file of IPs:
232+
233+
```console
234+
ipdex 193.105.134.155
235+
```
236+
237+
<details>
238+
239+
<summary>Command Output</summary>
240+
241+
```console
242+
IP Information
243+
244+
IP 193.105.134.155
245+
Reputation malicious
246+
Confidence high
247+
Country SE 🇸🇪
248+
Autonomous System w1n ltd
249+
Reverse DNS N/A
250+
Range 193.105.134.0/24
251+
First Seen 2023-06-23T01:15:00
252+
Last Seen 2025-05-11T11:15:00
253+
Console URL https://app.crowdsec.net/cti/193.105.134.155
254+
Last Local Refresh 2025-05-12 16:44:21
255+
256+
Threat Information
257+
258+
Behaviors
259+
HTTP Scan
260+
HTTP Bruteforce
261+
SSH Bruteforce
262+
... and 2 more
263+
264+
265+
Classifications
266+
Spoofed User Agent
267+
TOR exit node
268+
VPN or Proxy
269+
... and 1 more
270+
271+
272+
Blocklists
273+
Extended AI-Detected VPN/Proxy
274+
CrowdSec Intelligence Blocklist
275+
276+
Target countries
277+
🇺🇸 US 29%
278+
🇩🇪 DE 15%
279+
🇵🇱 PL 12%
280+
... and 2 more
281+
```
282+
</details>
283+
219284
<AcademyPromo
220285
image="crowdsec_threat_intelligence.svg"
221286
description="Watch a short series of videos on how to get the most out of CrowdSec’s Cyber Threat Intelligence database"
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
id: integration_ipdex
3+
title: IPDEX
4+
sidebar_position: 1
5+
---
6+
7+
`ipdex` is a simple CLI tool developed by CrowdSec to gather insight about a list of IPs or an IP using the CrowdSec CTI (Cyber Threat Intelligence) API.
8+
9+
[Official IPDEX Repository](https://github.com/crowdsecurity/ipdex)
10+
11+
## Installation
12+
13+
You can check the [install guide on ipdex repository](https://github.com/crowdsecurity/ipdex?tab=readme-ov-file#1-install).
14+
15+
16+
## Usage
17+
18+
You can check the [user guide on ipdex repository](https://github.com/crowdsecurity/ipdex?tab=readme-ov-file#user-guide).
19+
20+
Here are some screenshot to demonstrate ipdex user experience.
21+
22+
### Analyzing an IP address
23+
24+
![IP Analyses](/img/ipdex/ipdex_ip.png)
25+
26+
27+
### Analyzing a log file
28+
29+
30+
![Log File Analyses](/img/ipdex/ipdex_log_file.png)

crowdsec-docs/unversioned/cti_api/taxonomy/classifications.mdx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,19 @@ export const exclude = ["scanner:"]
2323

2424
<GithubIconRender url={classificationsURL}></GithubIconRender>
2525

26-
This classification page provides a taxonomy of IP addresses that exhibit potentially suspicious behaviors. These classifications are designed to help you identify and respond to various threat actors and malicious activities.
26+
Classification of Threat Intelligence follows the format `*category:name*`, where category is a broad type of classification encapsulating different elements.
27+
A summary of the main classification category is provided below, and you can use the search bar in the table to filter the classification you are looking for.
28+
29+
## Summary
30+
31+
* `hosts_malware:*`: IP identified as hosting live payloads associated with known malware families.
32+
* `botnet:*`: IP associated with known botnets, based on the exploited CVE(s) and the payload they spread (e.g. Mirai).
33+
* `profile:*`: Describe the services publicly exposed by the machine (e.g. `profile:insecure_services`).
34+
* `ai-crawler:*`: AI company using to index the data used to train Large Language Models. Such companies (OpenAPI, ByteDance, Anthropic ... ) are heavy consumers of the internet bandwidth and result in a large amount of traffic. They can be directly consumed inside a specialized blocklist available [here](https://app.crowdsec.net/blocklists/67b3524151bbde7a12b60be0).
35+
* `ai-search:*`: AI search engine that is used by users to search the internet. They are coming from an AI agent, and are not used directly to train the AI models compared to the AI crawlers category. But the results is the same in terms of traffic load, as they can be part of an automation workflow. IPs can be directly consumed inside a specialized blocklist available [here](https://app.crowdsec.net/blocklists/67b3524151bbde7a12b60be0).
36+
* `device:*`: The IP is associated with a device having known security weaknesses.
37+
* `proxy:*`: Hosts identified as proxies based on the services they expose and/or their behaviour. IPs be directly consumed inside a specialized blocklist available [here](https://app.crowdsec.net/blocklists/65a56839ec04bcd4f51670be).
38+
* `group:*`: Cohort of machines seen attacking in a coordinated fashion. IPs belonging to the same cohort or cluster have been seen to exhibit a new behaviour in a synchronised manner, such as starting to exploit a known vulnerability at the same time (experimental feature).
2739

2840
<TableRender
2941
columns={columns}

0 commit comments

Comments
 (0)