Настройка получения 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 - выключает
Примеры
enabled = true
enabled = 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 - выключает
Примеры
enabled = true
enabled = false
***
Параметр name
Значение Имя должно быть уникальное и разрешены символы: "a-z, A-Z, -, _"
Описание Имя, которое будет использоваться в создание set в nftables.
Примеры
name = "SPAMDROP"
***
Параметр url
Значение Указать URL
Описание Адрес по которому будет программа обращаться, чтобы получить список IP-адресов для блокировки.
Примеры
url = "https://www.spamhaus.org/drop/drop_v4.json"
***
Параметр limit
Значение От 0
Описание Это максимальное количество IP-адресов из списка, которые можно использовать. Значение 0 означает использование всех IP-адресов.
Примеры
limit = 0
limit = 10000
***
Параметр interval
Значение От 60
Описание Интервал обновления для загрузки списка должен составлять минимум 60 секунд (не рекомендуется), но 86400 (в день) будет более чем достаточно.
Примеры
interval = 86400
***
Параметр zip
Значение true или false
Описание Если получаемый файл в zip формате, то надо включить zip = true.
Примеры
zip = true
zip = false
***
Параметр format
Значение Есть несколько форматов: "json", "txt", "rss"
Описание Указываем формат который отдаёт сервис.
Примеры
format = "json"
format = "txt"
***
Параметр json_field
Значение Имя ключа
Описание Это поле используется, если `format = "json"`. Здесь мы указываем имя ключа, по которому получаем IP-адрес.
Примеры
json_field = "cidr"
***
Параметр txt_type
Значение Допустимые значения: "default", "cidr", "interval"
Описание Это поле используется, если `format = "txt"`.
Примеры
txt_type = "cidr"
***
Параметр txt_field_ip
Значение Допустимые значения от 0 и выше
Описание Это поле используется, если `format = "txt"`. Это индекс поля для получения IP адреса.
Примеры
txt_field_ip = 0
***
Параметр txt_field_ip2
Значение Допустимые значения от 0 и выше
Описание Это поле используется, если `format = "txt"` и `txt_type = "interval"`. Указывает индекс поля для получения второго IP (по).
Примеры
txt_field_ip2 = 1
***
Параметр txt_separator
Значение Указываем символ для разделения
Описание Это поле используется, если `format = "txt"`. Это разделитель. Парсер использует его для разделения строки на поля.
Примеры
txt_separator = "\t"
***
Параметр txt_field_cidr
Значение Допустимые значения от 0 и выше
Описание Это поле используется, если `format = "txt"` и `txt_type = "cidr"`. Указывает индекс поля для получения cidr.
Примеры
txt_field_cidr = 2
***
Параметр rss_tag
Значение Название родительского тега
Описание Это поле используется, если `format = "rss"`. Указывает на родительский тег.
Примеры
rss_tag = "item"
***
Параметр rss_field
Значение Название тега
Описание Это поле используется, если `format = "rss"`. Указывает на тег, который находится внутри родительского тега.
Примеры
rss_field = "title"
***
Параметр rss_field_separator
Значение Символ для разделения текста
Описание Это поле используется, если `format = "rss"`. Если нужно разделить получаемый текст.
Примеры
rss_field_separator = "|"
rss_field_separator = ""
***
Параметр rss_field_ip
Значение Допустимые значения от 0 и выше
Описание Это поле используется, если `format = "rss"` и указан `rss_field_separator`. Это индекс поля для получения IP адреса.
Примеры
rss_field_ip = 0