Skip to content

yoricya/y_nfctrl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Y_NFCTRL TCP-SYN Filtering Firewall

Суть:

Перехватывается входящий TCP-SYN пакет → дропается, этим создается вид закрытого порта. Telegram-бот отправляет уведомление о попытке подключения и запрос: запретить или разрешить этот IP. Если разрешаем → IP временно(на 2 часа) добавляется в белый список, и дальнейшие SYN пакеты проходят дальше. Все SYN пакеты по умолчанию идут в черный список если явно не были разрешены, поэтому спам бесполезен.

Сборка:

Серверная часть (NfCtrl):

go build ./cmd/nfctrl

UDP Knocker:

go build ./cmd/knocker

Настройка и запуск:

Прежде чем запускать и настраивать сервер, выберите номер очереди NFQUEUE который не используется другим ПО. Все правила использующие NFQUEUE можно посмотреть так:

sudo iptables-save | grep -i "NFQUEUE"

Создание правила iptables:

sudo iptables -A INPUT -p tcp --dport 1:65535 --syn \
    -m iprange ! --src-range 127.0.0.0-127.255.255.255 \
    -m iprange ! --src-range 192.168.0.0-192.168.255.255 \
    -m iprange ! --src-range 10.0.0.0-10.255.255.255 \
    -m iprange ! --src-range 172.16.0.0-172.31.255.255 \
    -j NFQUEUE --queue-num <Номер очереди NFQUEUE>

Запуск сервера:

sudo ./nfctrl \
    -tg_owned_id <ID Вашего аккаунта в телеграме> \ 
    -tg_bot_token "<Токен телеграм бота>" \
    -nf_queue_id <Номер очереди NFQUEUE>

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

На сервере укажите адрес и задайте Knocker ключ аргументами:

-knocker_bind_addr 0.0.0.0:1234 \
-knocker_key 123456789`

Запустите ./knocker. При первом запуске он предложит ввести адрес сервера и ключ.

Доступные команды (OpCodes):

12 — Разрешить ваш текущий IP (по умолчанию).
0 — Запретить ваш IP.
9 — Перезапуск серверной части NfCtrl.
-1 — Сброс настроек клиента (удаление конфига).

Важно! OpCode = 9 завершает работу серверной части, чтобы он работал как перезапуск настройте systemd service (Или его аналог) для перезапуска при завершении программы, например:

[Service]
ExecStart=/путь/к/nfctrl...
Restart=always
RestartSec=3

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages