Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

Выявление и блокировка подозрительных IP на Keenetic/Netcraze с Entware

License

Notifications You must be signed in to change notification settings

dimon27254/antiscan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Antiscan - простой инструмент для выявления и блокировки IP с подозрительной активностью.

Antiscan предназначен для устройств Keenetic/Netcraze, поддерживающих Entware.

Возможности:

  1. Блокировка хостов, открывающих множество соединений с одного IP-адреса.
  2. Блокировка хостов, открывающих единичные соединения с множества IP, принадлежащих одной подсети /24.
  3. Блокировка хостов по пользовательскому черному/белому списку.
  4. Геоблокировка в режиме черного/белого списка.
  5. Блокировка хостов с помощью "ловушки" (honeypot).

Important

Antiscan является IPv4-only, работает только для протокола TCP.

Подробное описание возможностей Antiscan, а также обсуждение работы ведется на форуме Keenetic Communtity: https://forum.keenetic.ru/topic/21009-antiscan/

Требования для корректной работы скрипта:

  1. Установленный компонент "Модули ядра для подсистемы Netfilter" (начиная с версии ПО 4.3 доступен без "Протокол IPv6").

Установка:

  1. Выполнить команду opkg update && opkg install curl && curl -fsSL https://raw.githubusercontent.com/dimon27254/antiscan/refs/heads/main/install.sh | sh
  2. Указать unix-имена интерфейсов интернет-подключений в файле "/opt/etc/antiscan/ascn.conf". В ПО версии 4.3 и выше просмотр unix-имен интерфейсов доступен по команде show interface {интерфейс} system-name
  3. Настроить остальные параметры под собственные нужды, если это требуется, в файле "/opt/etc/antiscan/ascn.conf"
  4. Запустить Antiscan командой antiscan start

Для версий Antiscan 1.4 и выше доступна настройка с помощью web4static от spatiumstas.

Описание параметров в ascn.conf:

# Перечень интерфейсов, на которых работает 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. Период чтения списка кандидатов по умолчанию равен 1 минуте.

Текст задачи в ascn_crontab.conf: */1 * * * * /opt/etc/init.d/S99ascn read_candidates &

  1. Период чтения системных списков блокировки по умолчанию равен 2 минутам.

Текст задачи в ascn_crontab.conf: */2 * * * * /opt/etc/init.d/S99ascn read_ndm_ipsets &

  1. Списки адресов по умолчанию сохраняются каждые 5 дней в 00:00.

Текст задачи в ascn_crontab.conf: 0 0 */5 * * /opt/etc/init.d/S99ascn save_ipsets &

  1. Списки подсетей для геоблокировки по умолчанию обновляются каждые 15 дней в 00:05.

Текст задачи в ascn_crontab.conf: 0 5 */15 * * /opt/etc/init.d/S99ascn update_ipsets geo &

Использование Antiscan:

{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

About

Выявление и блокировка подозрительных IP на Keenetic/Netcraze с Entware

Resources

License

Stars

Watchers

Forks