add: Защита хоста с помощью CrowdSec .........
This commit is contained in:
parent
b594271e03
commit
f94b1bd679
@ -431,8 +431,12 @@ sudo cscli allowlist inspect home_whitelist
|
|||||||
----
|
----
|
||||||
#### Настройка Firewall Bouncer (блокировщик IP-адресов)
|
#### Настройка Firewall Bouncer (блокировщик IP-адресов)
|
||||||
|
|
||||||
|
----
|
||||||
|
##### Сценарии блокировок
|
||||||
|
|
||||||
Когда мы проверяли установку CrowdSec, и проверим список сценариев `shell sudo cscli scenarios list`, то нам был
|
Когда мы проверяли установку CrowdSec, и проверим список сценариев `shell sudo cscli scenarios list`, то нам был
|
||||||
показан список yaml-манифестов c конфигурациями сценариев блокировок. В частности касающихся SSH:
|
показан список yaml-манифестов c конфигурациями сценариев блокировок. Эти **сценарии занимаются распознаванием атак**,
|
||||||
|
в частности касающихся SSH:
|
||||||
* `/etc/crowdsec/scenarios/ssh-bf.yaml` -- брутфорс SSH
|
* `/etc/crowdsec/scenarios/ssh-bf.yaml` -- брутфорс SSH
|
||||||
* `/etc/crowdsec/scenarios/ssh-slow-bf.yaml` -- медленный брутфорс SSH
|
* `/etc/crowdsec/scenarios/ssh-slow-bf.yaml` -- медленный брутфорс SSH
|
||||||
* `/etc/crowdsec/scenarios/ssh-cve-2024-6387.yaml` -- regreSSHion-атака (атаки уязвимости SSH-серверов старых версий)
|
* `/etc/crowdsec/scenarios/ssh-cve-2024-6387.yaml` -- regreSSHion-атака (атаки уязвимости SSH-серверов старых версий)
|
||||||
@ -533,12 +537,19 @@ sudo systemctl restart crowdsec-firewall-bouncer
|
|||||||
|
|
||||||
Другие сценарии можно настроить по аналогии. "Злость" управляется параметрами `leakspeed`, `capacity` и `blackhole`.
|
Другие сценарии можно настроить по аналогии. "Злость" управляется параметрами `leakspeed`, `capacity` и `blackhole`.
|
||||||
Но имейте в виду: не стоит менять много параметров одновременно. Настройки разных сценариев могут конфликтовать
|
Но имейте в виду: не стоит менять много параметров одновременно. Настройки разных сценариев могут конфликтовать
|
||||||
друг другом, и тогда CrowdSec не запустится. И еще, экспериментально я обнаружил, что настройки дней, например `2d`
|
друг другом, и тогда CrowdSec не запустится.
|
||||||
тоже недопустимы. Надо указывать `48h` (48 часов), и в целом очень длительные `leakspeed` и `blackhole` не нравятся
|
|
||||||
CrowdSec.
|
|
||||||
|
|
||||||
После перезапуска CrowdSec, можно проверить, что он начал банить на основании настроенных правил (особо ждать не
|
После перезапуска CrowdSec:
|
||||||
придется, зловреды попадутся уже через пру минут):
|
```shell
|
||||||
|
sudo systemctl restart crowdsec
|
||||||
|
```
|
||||||
|
|
||||||
|
И еще, экспериментально я обнаружил, что настройки дней, например `2d` недопустимы. Надо указывать `48h` (48 часов),
|
||||||
|
и в целом не нужно сразу месть настройки сразу во всех сценариях. Они могут конфликтовать друг с другом, и CrowdSec
|
||||||
|
не перезапуститься.
|
||||||
|
|
||||||
|
Проверим, что CrowdSec начал банить на основании настроенных правил (особо ждать не придется, зловреды попадутся уже через
|
||||||
|
пару минут):
|
||||||
```shell
|
```shell
|
||||||
sudo cscli decisions list
|
sudo cscli decisions list
|
||||||
```
|
```
|
||||||
@ -554,13 +565,106 @@ sudo cscli decisions list
|
|||||||
╰───────┴──────────┴───────────────────┴────────────────────────────────┴─────┴────┴────────────────────────┴────────┴────────────┴──────────╯
|
╰───────┴──────────┴───────────────────┴────────────────────────────────┴─────┴────┴────────────────────────┴────────┴────────────┴──────────╯
|
||||||
```
|
```
|
||||||
|
|
||||||
Время блокировок (`expiration`) могут оказаться даже сильнее чем наши настройки. Это из-за того, что "зловред"
|
----
|
||||||
может попасть под несколько блокировок одновременно или успеть сделать несколько атак (_а если честно, я сам не
|
##### Время блокировок
|
||||||
понимаю, как это работает... 40часовые блокировки по-умолчанию, но даже настройки блокировки на 12 часов будут
|
|
||||||
отображаться как 4-часовые_).
|
|
||||||
|
|
||||||
Плюсом является то, что бгадоря обмену информацией о блокировках, а личного кабинета на сайте CrowdSec можно
|
Сценарии занимаются распознаванием угроз, но самими блокировками они не занимаются. Блокировки настроены по умолчанию
|
||||||
посмотреть ваши локальные блокировки в веб-интерфейсе:
|
на четыре часа, и это указано в профилях `/etc/crowdsec/profiles.yaml`. Чтобы изменить время, на которое "зловред"
|
||||||
|
отправляется в бан, нужно отредактировать этот файл. По умолчанию он вот такой:
|
||||||
|
```yaml
|
||||||
|
name: default_ip_remediation
|
||||||
|
#debug: true
|
||||||
|
filters:
|
||||||
|
- Alert.Remediation == true && Alert.GetScope() == "Ip"
|
||||||
|
decisions:
|
||||||
|
- type: ban
|
||||||
|
duration: 4h
|
||||||
|
#duration_expr: Sprintf('%dh', (GetDecisionsCount(Alert.GetValue()) + 1) * 4)
|
||||||
|
# notifications:
|
||||||
|
# - slack_default # Set the webhook in /etc/crowdsec/notifications/slack.yaml before enabling this.
|
||||||
|
# - splunk_default # Set the splunk url and token in /etc/crowdsec/notifications/splunk.yaml before enabling this.
|
||||||
|
# - http_default # Set the required http parameters in /etc/crowdsec/notifications/http.yaml before enabling this.
|
||||||
|
# - email_default # Set the required email parameters in /etc/crowdsec/notifications/email.yaml before enabling this.
|
||||||
|
on_success: break
|
||||||
|
---
|
||||||
|
name: default_range_remediation
|
||||||
|
#debug: true
|
||||||
|
filters:
|
||||||
|
- Alert.Remediation == true && Alert.GetScope() == "Range"
|
||||||
|
decisions:
|
||||||
|
- type: ban
|
||||||
|
duration: 4h
|
||||||
|
#duration_expr: Sprintf('%dh', (GetDecisionsCount(Alert.GetValue()) + 1) * 4)
|
||||||
|
# notifications:
|
||||||
|
# - slack_default # Set the webhook in /etc/crowdsec/notifications/slack.yaml before enabling this.
|
||||||
|
# - splunk_default # Set the splunk url and token in /etc/crowdsec/notifications/splunk.yaml before enabling this.
|
||||||
|
# - http_default # Set the required http parameters in /etc/crowdsec/notifications/http.yaml before enabling this.
|
||||||
|
# - email_default # Set the required email parameters in /etc/crowdsec/notifications/email.yaml before enabling this.
|
||||||
|
on_success: break
|
||||||
|
```
|
||||||
|
|
||||||
|
Как видим, по умолчанию блокировка на 4 часа. Чтобы изменить время блокировок, нужно отредактировать `duration: 4h` на
|
||||||
|
нужное. Но в конфигурации есть "заготовка" для динамического времени блокировок:
|
||||||
|
`duration_expr: Sprintf('%dh', (GetDecisionsCount(Alert.GetValue()) + 1) * 4)` -- каждый раз, когда зловред
|
||||||
|
попадает в бан, время блокировки увеличивается на 4 часа. То есть, если зловред попался в бан 5 раз, то его блокировка
|
||||||
|
будет 20 часов. И так далее (формулу, при желании, можно изменить). Это то, что нам нужно. Имейте в виду, что
|
||||||
|
подключение `duration_expr` исключает возможность указать `duration` (время блокировки) в секции `decisions`. Таким
|
||||||
|
образом получаем вот такой конфиг:
|
||||||
|
```yaml
|
||||||
|
name: default_ip_remediation
|
||||||
|
#debug: true
|
||||||
|
filters:
|
||||||
|
- Alert.Remediation == true && Alert.GetScope() == "Ip"
|
||||||
|
decisions:
|
||||||
|
- type: ban
|
||||||
|
# duration: 4h
|
||||||
|
duration_expr: Sprintf('%dh', (GetDecisionsCount(Alert.GetValue()) + 1) * 4)
|
||||||
|
on_success: break
|
||||||
|
---
|
||||||
|
name: default_range_remediation
|
||||||
|
#debug: true
|
||||||
|
filters:
|
||||||
|
- Alert.Remediation == true && Alert.GetScope() == "Range"
|
||||||
|
decisions:
|
||||||
|
- type: ban
|
||||||
|
duration: 5h
|
||||||
|
on_success: break
|
||||||
|
```
|
||||||
|
|
||||||
|
Можно добавлять и свои правила. Например, для более длительных блокировок медленных брутфорсов, добавим в конце:
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
name: ssh_slow_bf_remediation
|
||||||
|
filters:
|
||||||
|
- Alert.Remediation == true && Alert.Scenario == "crowdsecurity/ssh-slow-bf"
|
||||||
|
decisions:
|
||||||
|
- type: ban
|
||||||
|
duration: 10h
|
||||||
|
on_success: break
|
||||||
|
```
|
||||||
|
|
||||||
|
После сохранения конфига, перезапустим CrowdSec:
|
||||||
|
```shell
|
||||||
|
sudo systemctl restart crowdsec
|
||||||
|
```
|
||||||
|
|
||||||
|
И убедимся, что время блокировки увеличилось:
|
||||||
|
```shell
|
||||||
|
sudo cscli decisions list
|
||||||
|
```
|
||||||
|
```text
|
||||||
|
╭────────┬──────────┬───────────────────┬──────────────────────┬────────┬─────────┬──────────────────────┬────────┬────────────┬──────────╮
|
||||||
|
│ ID │ Source │ Scope:Value │ Reason │ Action │ Country │ AS │ Events │ expiration │ Alert ID │
|
||||||
|
├────────┼──────────┼───────────────────┼──────────────────────┼────────┼─────────┼──────────────────────┼────────┼────────────┼──────────┤
|
||||||
|
│ 165247 │ crowdsec │ Ip:165.246.104.64 │ crowdsecurity/ssh-bf │ ban │ KR │ 9317 INHA UNIVERSITY │ 3 │ 91h25m24s │ 258 │
|
||||||
|
╰────────┴──────────┴───────────────────┴──────────────────────┴────────┴─────────┴──────────────────────┴────────┴────────────┴──────────╯
|
||||||
|
```
|
||||||
|
|
||||||
|
----
|
||||||
|
###### Web-панель
|
||||||
|
|
||||||
|
Плюсом CrowdSec является то, что благодаря обмену информацией о блокировках, в личном кабинете на сайте CrowdSec можно
|
||||||
|
посмотреть ваши локальные блокировки через веб-интерфейсе:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user