Интеграция CrowdSec с ispmanager 6
CrowdSec - это современная open-source система безопасности с принципами, схожими с «коллективным фаерволом». Она анализирует логи, выявляет подозрительную активность (например, bruteforce, сканирование портов, DDoS) и автоматически применяет решения для блокировки или ограничения доступа IP-адресов злоумышленников.
Установите CrowdSec на сервер с панелью ispmanager:
curl -s https://install.crowdsec.net | sudo sh
apt install crowdsecПо умолчанию, CrowdSec использует порт 8080, поэтому необходимо изменить его в файлах конфигурации /etc/crowdsec/config.yaml и /etc/crowdsec/local_api_credentials.yaml на любой свободный, например 8070.
В /etc/crowdsec/config.yamlизмените следующую строку:
api:
server:
listen_uri: 127.0.0.1:8070В/etc/crowdsec/local_api_credentials.yamlизмените следующую строку:
url: http://127.0.0.1:8070Также в файле /etc/crowdsec/parsers/s02-enrich/whitelists.yaml можно сразу указать IP-адреса, которые являются исключениями.
Добавьте службу в автозапуск и запустите её:
systemctl enable --now crowdsec
systemctl status crowdsecПроверьте версию Iptables на сервере:
iptables -VУстановите движок блокировок Bouncer:
- Если в версии iptables был упомянут nf_tables -
apt install crowdsec-firewall-bouncer-nftables - Если в версии iptables не был упомянут nf_tables -
apt install crowdsec-firewall-bouncer-iptables
Проверьте статус службы после установки:
systemctl status crowdsec-firewall-bouncerТеперь создайте коллекцию журналов панели по пути /etc/crowdsec/acquis.d/setup.ispmanager.yaml и укажите следующее содержимое для файла:
filenames:
- /usr/local/mgr5/var/ispmgr.auth.log
- /usr/local/mgr5/var/core.auth.log
- /var/www/httpd-logs/*.log
labels:
type: syslog
service: ispmanagerПерезапустите службу CrowdSec:
systemctl status crowdsecЗарегистрируйтесь в Crowdsec, перейдите в раздел Security Engines - Engines, нажмите Enroll command, скопируйте команду для подключения сервера к SaaS CrowdSec Console и перезапустите службу:
cscli console enroll %ТОКЕН%
systemctl restart crowdsecПосле подключения сервера, в личном кабинете CrowdSec подтвердите запрос на подключение.
Затем в CrowdSec подпишитесь на три бесплатных черных списка в разделе Blocklists - Featured:
- Firehol BotScout
- Firehol greensnow.co
- OTX Georgs Honeypot
Уведомления по серверу будут доступны по адресу https://app.crowdsec.net/alerts.
Настройка уведомлений в Telegram
Для включения уведомлений в Telegram, предварительно потребуется настроить Telegram-бота.
После этого в файле /etc/crowdsec/profiles.yaml раскомментируйте строки с параметрами notifications и http_default, а содержимое файла /etc/crowdsec/notifications/http.yaml замените следующим:
type: http # Don't change
name: http_default # Must match the registered plugin in the profile
# One of "trace", "debug", "info", "warn", "error", "off"
log_level: info
# group_wait: # Time to wait collecting alerts before relaying a message to this plugin, eg "30s"
# group_threshold: # Amount of alerts that triggers a message before <group_wait> has expired, eg "10"
# max_retry: # Number of attempts to relay messages to plugins in case of error
# timeout: # Time to wait for response from the plugin before considering the attempt a failure, eg "10s"
#-------------------------
# plugin-specific options
# The following template receives a list of models.Alert objects
# The output goes in the http request body
format: |
{
"chat_id": "-%ID_ЧАТА_TELEGRAM%",
"text": "
{{range . -}}
{{$alert := . -}}
{{range .Decisions -}}
{{.Value}} will get {{.Type}} for next {{.Duration}} for triggering {{.Scenario}}.
{{end -}}
{{end -}}
",
"reply_markup": {
"inline_keyboard": [
{{ $arrLength := len . -}}
{{ range $i, $value := . -}}
{{ $V := $value.Source.Value -}}
[
{
"text": "See {{ $V }} on shodan.io",
"url": "https://www.shodan.io/host/{{ $V -}}"
},
{
"text": "See {{ $V }} on crowdsec.net",
"url": "https://app.crowdsec.net/cti/{{ $V -}}"
}
]{{if lt $i ( sub $arrLength 1) }},{{end }}
{{end -}}
]
}
url: https://api.telegram.org/bot%ID_БОТА_TELEGRAM%/sendMessage
method: POST
headers:
Content-Type: "application/json"После внесения изменений, перезапустите службу:
systemctl status crowdsecПроверить статус плагинов для уведомлений можно с помощью команды:
cscli notifications listДля проверки работы уведомлений, заблокируйте фиктивный IP-адрес, а затем удалите его из списка:
cscli decisions add --ip 4.3.2.1 --duration 1h
cscli decisions delete --ip 4.3.2.1Полезные команды
Список полезных команд для работы с CrowdSec:
- Список заблокированных IP-адресов -
cscli decisions list - Заблокировать IP-адрес на определенное время -
cscli decisions add --ip %IP-АДРЕС% --duration %ВРЕМЯ% - Удалить IP-адрес из списка заблокированных -
cscli decisions delete --ip %IP-АДРЕС% - Список журналов, обрабатываемых CrowdSec -
cscli metrics show acquisition - Подробная информация о работе CrowdSec -
cscli metrics