- Блокировка хостов, открывающих множество соединений с одного IP-адреса.
- Блокировка хостов, открывающих единичные соединения с множества IP, принадлежащих одной подсети /24.
- Блокировка хостов по пользовательскому черному/белому списку.
- Геоблокировка в режиме черного/белого списка.
- Блокировка хостов с помощью "ловушки" (honeypot).
Important
Antiscan является IPv4-only, работает только для протокола TCP.
Подробное описание возможностей Antiscan, а также обсуждение работы ведется на форуме Keenetic Communtity: https://forum.keenetic.ru/topic/21009-antiscan/
- Установленный компонент "Модули ядра для подсистемы Netfilter" (начиная с версии ПО 4.3 доступен без "Протокол IPv6").
- Выполнить команду
opkg update && opkg install curl && curl -fsSL https://raw.githubusercontent.com/dimon27254/antiscan/refs/heads/main/install.sh | sh - Указать unix-имена интерфейсов интернет-подключений в файле
"/opt/etc/antiscan/ascn.conf". В ПО версии 4.3 и выше просмотр unix-имен интерфейсов доступен по командеshow interface {интерфейс} system-name - Настроить остальные параметры под собственные нужды, если это требуется, в файле
"/opt/etc/antiscan/ascn.conf" - Запустить Antiscan командой
antiscan start
Для версий Antiscan 1.4 и выше доступна настройка с помощью web4static от spatiumstas.
# Перечень интерфейсов, на которых работает Antiscan. Множество интерфейсов указывается через пробел, пример: "eth3 eth2.2 ppp0":
ISP_INTERFACES="eth3"
# Перечень портов служб устройства, на которых работает Antiscan. Множество портов указывается через запятую, пример: "22,80,443":
PORTS="22,80,443"
# Перечень портов хостов в локальной сети, на которые идет перенаправление трафика. Пример ввода множества портов: "22,80,443".
# ОБРАТИТЕ ВНИМАНИЕ! Указываются порты из поля "направлять на порт" в правилах переадресации, а не "открыть порт".
PORTS_FORWARDED="22,80,443"
# Использовать блокировку хостов с помощью "ловушки". 0 - выключена, 1 - включена
ENABLE_HONEYPOT=0
# Перечень портов ловушки, на которых идет отслеживание входящих подключений. Пример ввода множества портов: "22,80,443".
HONEYPOT_PORTS=""
# Длительность блокировки IP ловушкой в секундах:
HONEYPOT_BANTIME=864000
# Использовать блокировку хостов по накопленным IP/подсетям. 0 - выключена, 1 - включена
ENABLE_IPS_BAN=1
# Настройки ограничения множественных соединений:
# ДЛЯ ОПЫТНЫХ ПОЛЬЗОВАТЕЛЕЙ! Маска правил iptables для отслеживания соединений:
RULES_MASK="255.255.255.255"
# Время наблюдения за новыми соединениями с IP в секундах:
RECENT_CONNECTIONS_TIME=30
# Пороговое значение новых соединений за период RECENT_CONNECTIONS_TIME, после которого IP будет заблокирован:
RECENT_CONNECTIONS_HITCOUNT=15
# Общий лимит множественных соединений с одного адреса, после которого он будет заблокирован:
RECENT_CONNECTIONS_LIMIT=20
# Длительность блокировки IP в секундах:
RECENT_CONNECTIONS_BANTIME=864000
# Настройки ограничения соединений с разных IP:
# Срок хранения IP-адресов-кандидатов на блокировку:
DIFFERENT_IP_CANDIDATES_STORAGETIME=864000
# Пороговое значение IP-кандидатов, начиная с которого будет создана подсеть для блокировки:
DIFFERENT_IP_THRESHOLD=5
# Длительность блокировки подсети в секундах:
SUBNETS_BANTIME=864000
# Путь к каталогу, внутри которого будут находиться все списки адресов. Пример: "/tmp/mnt/MYDISK/antiscan"
IPSETS_DIRECTORY=""
# Сохранять списки накопленных заблокированных IP и подсетей в файлы. 0 - выключено, 1 - включено
SAVE_IPSETS=0
# Сохранять списки накопленных заблокированных IP и подсетей при вызове antiscan stop. 0 - выключено, 1 - включено
SAVE_ON_EXIT=0
# Использовать пользовательский список адресов-исключений. 0 - выключено, 1 - включено
USE_CUSTOM_EXCLUDE_LIST=0
# Режим блокировки по пользовательским спискам. 0 - отключена, blacklist - черный список, whitelist - белый список
CUSTOM_LISTS_BLOCK_MODE=0
# Режим геоблокировки. 0 - отключена, blacklist - черный список, whitelist - белый список
GEOBLOCK_MODE=0
# Перечень стран для геоблокировки. Пример: одна страна - "US", множество стран - "RU DE"
GEOBLOCK_COUNTRIES=""
# Перечень стран-исключений. Пример: одна страна - "RU", множество стран - "RU DE"
GEO_EXCLUDE_COUNTRIES=""
# Чтение системных списков блокировки по ip lockout-policy. 0 - выключено, 1 - включено
READ_NDM_LOCKOUT_IPSETS=0
# Срок хранения записей, считанных из системных списков:
LOCKOUT_IPSET_BANTIME=864000
Tip
- Период чтения списка кандидатов по умолчанию равен 1 минуте.
Текст задачи в ascn_crontab.conf: */1 * * * * /opt/etc/init.d/S99ascn read_candidates &
- Период чтения системных списков блокировки по умолчанию равен 2 минутам.
Текст задачи в ascn_crontab.conf: */2 * * * * /opt/etc/init.d/S99ascn read_ndm_ipsets &
- Списки адресов по умолчанию сохраняются каждые 5 дней в 00:00.
Текст задачи в ascn_crontab.conf: 0 0 */5 * * /opt/etc/init.d/S99ascn save_ipsets &
- Списки подсетей для геоблокировки по умолчанию обновляются каждые 15 дней в 00:05.
Текст задачи в ascn_crontab.conf: 0 5 */15 * * /opt/etc/init.d/S99ascn update_ipsets geo &
{start|stop|restart|status|list|reload|flush|version|edit|update_rules|read_candidates|read_ndm_ipsets|save_ipsets|update_ipsets|update_crontab}
start начать работу скрипта (создать правила, ipset'ы, начать сбор IP)
stop остановить работу скрипта (удалить правила, очистить ipset'ы, отменить блокировку)
restart остановить и заново начать работу скрипта
status отобразить статус работы Antiscan
list {ips|subnets|ndm_lockout|honeypot}
отобразить список и количество заблокированных IP/подсетей
reload обновить конфигурацию Antiscan (перечитать файл ascn.conf)
flush [candidates|ips|subnets|custom_whitelist|custom_blacklist|custom_exclude|geo|ndm_lockout|honeypot]
очистить списки адресов и удалить их файлы
version отобразить версию установленного Antiscan
edit {config|crontab|custom_exclude|custom_blacklist|custom_whitelist}
редактировать конфигурационные файлы Antiscan или пользовательские списки
update_rules проверить наличие правил iptables, и добавить их при отсутствии (для hook-скрипта netfilter.d)
read_candidates обработать список адресов кандидатов для блокировки по подсетям (запускается вручную или по расписанию)
read_ndm_ipsets считать системные списки блокировки по ip lockout-policy (запускается вручную или по расписанию)
save_ipsets сохранить списки накопленных адресов в файлы (запускается вручную или по расписанию)
update_ipsets {custom|geo} обновить пользовательские списки адресов или подсети для геоблокировки (запускается вручную или по расписанию)
update_crontab обновить задачи Antiscan в файле crontab