Настройка получения IP-адресов от разных сервисов, которые надо заблокировать (blocklists.toml)
По умолчанию настройки находятся тут:
/etc/kor-elf-shield/blocklists.toml
Путь к этим настройкам можно поменять в главных настройках и ознакомиться можно тут (параметр blocklists).
Копия полноценого файл настроек находится тут.
В этом файле есть несколько разделов:
Базовые настройки
Эти настройки должны находиться вначале файла до разделов: "Настройка сервисов".
Внимание: для полученние данных нужно открыть исходящий порт 443. Для этого нужно отредактировать файл firewall.toml:
[[ports]]
numbers = [443]
directions = ["out"]
protocols = ["tcp"]
action = "accept"
Внимание: после включения не забудьте включить необходимые сервисы, так как по умолчанию они все отключены.
| Параметр | enabled |
| Значение | true или false |
| По умолчанию | false |
| Описание | Обеспечивает поддержку получения списков заблокированных IP-адресов. true - включает false - выключает |
| Примеры |
|
Настройки сервисов
Указывать параметры для этого раздела нужно вначале указать [[sources]], а после уже указывать остальные параметры этого раздела. Пример:
[[sources]]
enabled = false
name = "SPAMDROP"
url = "https://www.spamhaus.org/drop/drop_v4.json"
format = "json"
json_field = "cidr"
limit = 0
interval = 86400
[[sources]]
enabled = false
name = "SPAMDROPV6"
url = "https://www.spamhaus.org/drop/drop_v6.json"
format = "json"
json_field = "cidr"
limit = 0
interval = 86400
Spamhaus Don't Route Or Peer Lists (DROP IPv4)
Адрес сервиса: https://www.spamhaus.org/blocklists/do-not-route-or-peer/
[[sources]]
enabled = true
name = "SPAMDROP"
url = "https://www.spamhaus.org/drop/drop_v4.json"
format = "json"
json_field = "cidr"
limit = 0
interval = 86400
Spamhaus Don't Route Or Peer Lists (DROP IPv6)
Адрес сервиса: https://www.spamhaus.org/blocklists/do-not-route-or-peer/
[[sources]]
enabled = true
name = "SPAMDROPV6"
url = "https://www.spamhaus.org/drop/drop_v6.json"
format = "json"
json_field = "cidr"
limit = 0
interval = 86400
DShield.org Recommended Block List
Адрес сервиса: https://dshield.org
[[sources]]
enabled = true
name = "DSHIELD"
url = "https://www.dshield.org/block.txt"
format = "txt"
txt_type = "cidr"
txt_field_ip = 0
txt_field_cidr = 2
txt_separator = "\t"
limit = 0
interval = 86400
Тот же список, только мы получаем данные не через CIDR, а через диапазон IP-адресов.
Внимание: не рекомендуется включать DSHIELD и DSHIELD_INTERVAL одновременно!
[[sources]]
enabled = true
name = "DSHIELD_INTERVAL"
url = "https://www.dshield.org/block.txt"
format = "txt"
txt_type = "interval"
txt_field_ip = 0
txt_field_ip2 = 1
txt_separator = "\t"
limit = 0
interval = 86400
TOR Exit Nodes List
Адрес сервиса: https://trac.torproject.org/projects/tor/wiki/doc/TorDNSExitList
[[sources]]
enabled = true
name = "TOR"
url = "https://check.torproject.org/torbulkexitlist"
format = "txt"
txt_type = "default"
txt_field_ip = 0
txt_separator = " "
limit = 0
interval = 86400
Project Honey Pot Directory of Dictionary Attacker IPs
Адрес сервиса: https://www.projecthoneypot.org/
[[sources]]
enabled = true
name = "HONEYPOT"
url = "https://www.projecthoneypot.org/list_of_ips.php?t=d&rss=1"
format = "rss"
rss_tag = "item"
rss_field = "title"
rss_field_ip = 0
rss_field_separator = "|"
limit = 0
interval = 86400
C.I. Army Malicious IP List
Адрес сервиса: https://www.ciarmy.com/
[[sources]]
enabled = true
name = "CIARMY"
url = "https://www.ciarmy.com/list/ci-badguys.txt"
format = "txt"
txt_type = "default"
txt_field_ip = 0
txt_separator = " "
limit = 0
interval = 86400
BruteForceBlocker IP List
Адрес сервиса: https://danger.rulez.sk/index.php/bruteforceblocker/
[[sources]]
enabled = true
name = "BFB"
url = "https://danger.rulez.sk/projects/bruteforceblocker/blist.php"
format = "txt"
txt_type = "default"
txt_field_ip = 0
txt_separator = "\t"
limit = 0
interval = 86400
Blocklist.de
Адрес сервиса: https://www.blocklist.de
В первом списке отображаются только IP-адреса, добавленные за последний час:
[[sources]]
enabled = true
name = "BDE"
url = "https://api.blocklist.de/getlast.php?time=3600"
format = "txt"
txt_type = "default"
txt_field_ip = 0
txt_separator = "\t"
limit = 0
interval = 3600
Второй список содержит все IP-адреса, добавленные за последние 48 часов. Обычно это очень большой список (более 10000 записей), поэтому убедитесь, что у вас есть необходимые ресурсы для его использования.
Внимане: не рекомендуется включать BDE и BDEALL одновременно.
[[sources]]
enabled = true
name = "BDEALL"
url = "https://lists.blocklist.de/lists/all.txt"
format = "txt"
txt_type = "default"
txt_field_ip = 0
txt_separator = "\t"
limit = 0
interval = 86400
Stop Forum Spam (IPv4)
Адрес сервиса: https://www.stopforumspam.com/downloads
Многие из доступных списков содержат огромное количество IP-адресов, поэтому следует проявлять осторожность при выборе этого списка.
[[sources]]
enabled = true
name = "STOPFORUMSPAM"
url = "https://www.stopforumspam.com/downloads/listed_ip_1.zip"
zip = true
format = "txt"
txt_type = "default"
txt_field_ip = 0
txt_separator = " "
limit = 0
interval = 86400
Stop Forum Spam (IPv6)
Адрес сервиса: https://www.stopforumspam.com/downloads
Многие из доступных списков содержат огромное количество IP-адресов, поэтому следует проявлять осторожность при выборе этого списка.
[[sources]]
enabled = true
name = "STOPFORUMSPAMV6"
url = "https://www.stopforumspam.com/downloads/listed_ip_1_ipv6.zip"
zip = true
format = "txt"
txt_type = "default"
txt_field_ip = 0
txt_separator = " "
limit = 0
interval = 86400
GreenSnow Hack List
Адрес сервиса: https://greensnow.co
[[sources]]
enabled = true
name = "GREENSNOW"
url = "https://blocklist.greensnow.co/greensnow.txt"
format = "txt"
txt_type = "default"
txt_field_ip = 0
txt_separator = " "
limit = 0
interval = 86400
Если вы хотите реализовать свой собственный список или хотите понять параметры, описание параметров вам может помочь:
| Параметр | enabled |
| Значение | true или false |
| Описание | Включает или выключает получения данных с этого списка. true - включает false - выключает |
| Примеры |
|
| *** | |
|---|---|
| Параметр | name |
| Значение | Имя должно быть уникальное и разрешены символы: "a-z, A-Z, -, _" |
| Описание | Имя, которое будет использоваться в создание set в nftables. |
| Примеры |
|
| *** | |
| Параметр | url |
| Значение | Указать URL |
| Описание | Адрес по которому будет программа обращаться, чтобы получить список IP-адресов для блокировки. |
| Примеры |
|
| *** | |
| Параметр | limit |
| Значение | От 0 |
| Описание | Это максимальное количество IP-адресов из списка, которые можно использовать. Значение 0 означает использование всех IP-адресов. |
| Примеры |
|
| *** | |
| Параметр | interval |
| Значение | От 60 |
| Описание | Интервал обновления для загрузки списка должен составлять минимум 60 секунд (не рекомендуется), но 86400 (в день) будет более чем достаточно. |
| Примеры |
|
| *** | |
| Параметр | zip |
| Значение | true или false |
| Описание | Если получаемый файл в zip формате, то надо включить zip = true. |
| Примеры |
|
| *** | |
| Параметр | format |
| Значение | Есть несколько форматов: "json", "txt", "rss" |
| Описание | Указываем формат который отдаёт сервис. |
| Примеры |
|
| *** | |
| Параметр | json_field |
| Значение | Имя ключа |
| Описание | Это поле используется, если `format = "json"`. Здесь мы указываем имя ключа, по которому получаем IP-адрес. |
| Примеры |
|
| *** | |
| Параметр | txt_type |
| Значение | Допустимые значения: "default", "cidr", "interval" |
| Описание | Это поле используется, если `format = "txt"`. |
| Примеры |
|
| *** | |
| Параметр | txt_field_ip |
| Значение | Допустимые значения от 0 и выше |
| Описание | Это поле используется, если `format = "txt"`. Это индекс поля для получения IP адреса. |
| Примеры |
|
| *** | |
| Параметр | txt_field_ip2 |
| Значение | Допустимые значения от 0 и выше |
| Описание | Это поле используется, если `format = "txt"` и `txt_type = "interval"`. Указывает индекс поля для получения второго IP (по). |
| Примеры |
|
| *** | |
| Параметр | txt_separator |
| Значение | Указываем символ для разделения |
| Описание | Это поле используется, если `format = "txt"`. Это разделитель. Парсер использует его для разделения строки на поля. |
| Примеры |
|
| *** | |
| Параметр | txt_field_cidr |
| Значение | Допустимые значения от 0 и выше |
| Описание | Это поле используется, если `format = "txt"` и `txt_type = "cidr"`. Указывает индекс поля для получения cidr. |
| Примеры |
|
| *** | |
| Параметр | rss_tag |
| Значение | Название родительского тега |
| Описание | Это поле используется, если `format = "rss"`. Указывает на родительский тег. |
| Примеры |
|
| *** | |
| Параметр | rss_field |
| Значение | Название тега |
| Описание | Это поле используется, если `format = "rss"`. Указывает на тег, который находится внутри родительского тега. |
| Примеры |
|
| *** | |
| Параметр | rss_field_separator |
| Значение | Символ для разделения текста |
| Описание | Это поле используется, если `format = "rss"`. Если нужно разделить получаемый текст. |
| Примеры |
|
| *** | |
| Параметр | rss_field_ip |
| Значение | Допустимые значения от 0 и выше |
| Описание | Это поле используется, если `format = "rss"` и указан `rss_field_separator`. Это индекс поля для получения IP адреса. |
| Примеры |
|