Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
fwknop — Одиночная авторизация пакета > Port Knocking | Kitploit
Инструменты/GitHubGitHub/mrash/fwknop
Аутентификация и авторизацияОборонительные ИнструментыИнструменты шифрования/дешифрованияСетевая безопасностьКриптографияАутентификация
GitHubmrash/fwknop

fwknop

Одиночная авторизация пакета > Port Knocking

Репозиторий
1.4k2532 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

fwknop - Авторизация одиночным пакетом (SPA)

Введение

fwknop реализует схему авторизации, известную как Single Packet Authorization (SPA) (авторизация одиночным пакетом), для надежного сокрытия сервисов. SPA требует только один пакет, который шифруется, невоспроизводим и аутентифицируется с помощью HMAC, чтобы сообщить о желаемом доступе к сервису, который скрыт за межсетевым экраном в режиме фильтрации с запретом по умолчанию. Основное применение SPA — использовать межсетевой экран для отклонения всех попыток подключения к сервисам, таким как SSH, чтобы затруднить эксплуатацию уязвимостей (как zero-day, так и неисправленных). Поскольку открытых портов нет, любой сервис, скрытый с помощью SPA, естественно, не может быть просканирован с помощью Nmap. Проект fwknop поддерживает четыре различных межсетевых экрана: iptables, firewalld, PF и ipfw на Linux, OpenBSD, FreeBSD и Mac OS X. Также есть поддержка пользовательских скриптов, чтобы fwknop можно было адаптировать для поддержки другой инфраструктуры, такой как ipset или nftables.

SPA, по сути, является следующим поколением Port Knocking (PK) (стука портов), но устраняет многие ограничения, присущие PK, сохраняя его основные преимущества. Ограничения PK включают общую сложность защиты от атак повторного воспроизведения, невозможность надежной поддержки асимметричных шифров и схем HMAC, а также тривиальную возможность проведения DoS-атаки на сервер PK путем подделки дополнительного пакета в последовательность PK при его передаче по сети (тем самым убеждая сервер PK, что клиент не знает правильной последовательности). Все эти недостатки решаются с помощью SPA. В то же время SPA скрывает сервисы за политикой межсетевого экрана с запретом по умолчанию, пассивно получает данные SPA (обычно через libpcap или другими средствами) и реализует стандартные криптографические операции для аутентификации и шифрования/дешифрования пакетов SPA.

Пакеты SPA, генерируемые fwknop, используют HMAC для аутентифицированного шифрования в модели «сначала шифрование, затем аутентификация». Хотя использование HMAC в настоящее время является необязательным (включается с помощью параметра командной строки --use-hmac), настоятельно рекомендуется по трем причинам:

  1. Без HMAC криптографически сильная аутентификация невозможна с помощью fwknop, если только не используется GnuPG, но даже в этом случае HMAC все равно следует применять.
  2. HMAC, применяемый после шифрования, защищает от криптоаналитических атак на режим CBC с оракулом заполнения, таких как атака Водене (Vaudenay) и связанные с ней уловки (например, более поздняя атака «Lucky 13» на SSL).
  3. Код, необходимый демону fwknopd для проверки HMAC, гораздо проще, чем код, необходимый для расшифровки пакета SPA, поэтому пакет SPA без правильного HMAC даже не передается процедурам расшифровки.

Последняя причина выше объясняет, почему HMAC все равно следует использовать, даже когда пакеты SPA шифруются с помощью GnuPG, из-за того, что данные SPA не передаются через функции libgpgme, если только HMAC не будет сначала проверен. GnuPG и libgpgme являются относительно сложными программными кодами, и поэтому ограничение возможности потенциального злоумышленника взаимодействовать с этим кодом через операцию HMAC помогает поддерживать более высокий уровень безопасности. Генерация HMAC для связи SPA требует выделенного ключа в дополнение к обычному ключу шифрования, и оба могут быть сгенерированы с помощью опции --key-gen.

fwknop шифрует пакеты SPA либо с помощью блочного шифра Rijndael, либо с помощью GnuPG и связанного с ним асимметричного шифра. Если выбран метод симметричного шифрования, то, как обычно, ключ шифрования является общим для клиента и сервера (подробности см. в файле /etc/fwknop/access.conf). Фактический ключ шифрования, используемый для шифрования Rijndael, генерируется с помощью стандартного алгоритма вывода ключа PBKDF1, и устанавливается режим CBC. Если выбран метод GnuPG, то ключи шифрования извлекаются из связок ключей GnuPG.

Варианты использования

Люди, использующие Single Packet Authorization (SPA) или его менее безопасного родственника Port Knocking (PK), обычно обращаются к SSHD, работающему на той же системе, где развернуто программное обеспечение SPA/PK. То есть межсетевой экран, работающий на хосте, имеет политику запрета по умолчанию для всех входящих SSH-соединений, чтобы SSHD нельзя было просканировать, но демон SPA перенастраивает межсетевой экран для временного предоставления доступа пассивно аутентифицированному клиенту SPA:

SPA-basic-access-SSHD "Базовое использование SPA для доступа к SSHD"

fwknop поддерживает вышесказанное, но идет гораздо дальше и активно использует NAT (для межсетевых экранов iptables/firewalld). В конце концов, важные межсетевые экраны обычно являются шлюзами между сетями, а не просто развертываются на отдельных хостах. NAT обычно используется на таких межсетевых экранах (по крайней мере, для связи по IPv4) для предоставления доступа в Интернет внутренним сетям, находящимся в адресном пространстве RFC 1918, а также для разрешения внешним хостам доступа к сервисам, размещенным на внутренних системах.

Поскольку fwknop интегрируется с NAT, SPA может использоваться для доступа к внутренним сервисам через межсетевой экран пользователями из внешнего Интернета. Хотя это имеет множество применений в современных традиционных сетях, это также позволяет fwknop поддерживать облачные среды, такие как Amazon AWS:

SPA-Amazon-AWS-cloud "Использование SPA в облачных средах Amazon AWS"

Пользовательский интерфейс

Официальный кроссплатформенный пользовательский интерфейс клиента fwknop fwknop-gui (скачать, github) разработан Джонатаном Беннеттом. Поддерживаются большинство основных клиентских режимов SPA, включая запросы NAT, ключи HMAC и Rijndael (GnuPG пока не поддерживается), сохранение секций fwknoprc и многое другое. В настоящее время fwknop-gui работает на Linux, Mac OS X и Windows — вот скриншот из OS X: fwknop-gui-OS-X-screenshot "fwknop-gui на Mac OS X" Аналогично обновленный клиент для Android также доступен.

Учебное пособие

Подробное руководство по fwknop можно найти здесь:

http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html

Функции

Ниже приведен полный список функций, поддерживаемых проектом fwknop:

  • Реализует Single Packet Authorization (SPA) для межсетевых экранов iptables и firewalld на Linux, ipfw на *BSD и Mac OS X, а также PF на OpenBSD.
  • Клиент fwknop работает на Linux, Mac OS X, *BSD и Windows под Cygwin. Кроме того, существует приложение для Android для генерации пакетов SPA.
  • Поддерживает как методы Rijndael, так и GnuPG для шифрования/дешифрования пакетов SPA.
  • Поддерживает аутентифицированное шифрование HMAC как для Rijndael, так и для GnuPG. Порядок операций: сначала шифрование, затем аутентификация, чтобы избежать различных криптоаналитических проблем.
  • Атаки повторного воспроизведения обнаруживаются и предотвращаются путем сравнения дайджеста SHA-256 действительных входящих пакетов SPA. Другие алгоритмы дайджестов также поддерживаются, но по умолчанию используется SHA-256.
  • Пакеты SPA пассивно перехватываются из сети через libpcap. Сервер fwknopd также может получать данные пакетов из файла, записываемого отдельным сниффером Ethernet (например, tcpdump -w <файл>), из средства записи pcap ULOG в iptables или напрямую через UDP-сокет в режиме --udp-server.
  • Для межсетевых экранов iptables правила ACCEPT, добавленные fwknop, добавляются и удаляются (после настраиваемого тайм-аута) из пользовательских цепочек iptables, чтобы fwknop не мешал существующей политике iptables, которая может быть уже загружена в систему.
  • Поддерживает входящие NAT-соединения для аутентифицированной связи SPA (пока только для межсетевых экранов iptables). Это означает, что fwknop можно настроить на создание правил DNAT, чтобы вы могли получить доступ к сервису (например, SSH), работающему на внутренней системе с IP-адресом RFC 1918, из открытого Интернета. Также поддерживаются правила SNAT, которые, по сути, превращают fwknopd в шлюз с аутентификацией SPA для доступа в Интернет из внутренней сети.
  • Сервер fwknop поддерживает нескольких пользователей, и каждому пользователю может быть назначен свой собственный симметричный или асимметричный ключ шифрования через файл /etc/fwknop/access.conf.
  • Автоматическое определение внешнего IP-адреса через https://www.cipherdyne.org/cgi-bin/myip (это полезно, когда клиент fwknop запускается из-за NAT-устройства). Поскольку в этом режиме внешний IP-адрес шифруется внутри каждого пакета SPA, предотвращаются атаки типа «человек посередине» (MITM), при которых встроенное устройство перехватывает пакет SPA и пересылает его только с другого IP-адреса, пытаясь получить доступ.

Лицензия

Проект fwknop выпускается как программное обеспечение с открытым исходным кодом на условиях GNU General Public License (GPL v2) или (по вашему выбору) любой более поздней версии. Последний выпуск можно найти на http://www.cipherdyne.org/fwknop/

Текущее состояние

Этот файл README описывает текущее состояние проекта fwknop по состоянию на выпуск версии 2.5 в июле 2013 года. В настоящее время у нас есть реализация библиотеки Firewall Knock Operator; libfko, а также клиентские и серверные приложения fwknop. Библиотека предоставляет API и внутреннюю функциональность для управления данными Single Packet Authorization (SPA), которые используются другими компонентами fwknop. Она также может использоваться другими программами, которым требуется функциональность SPA (см. каталог perl для примера модуля FKO для perl, а также в каталоге python есть привязки для python).

Обновление

Если вы обновляетесь с более старой версии fwknop (включая исходную реализацию на perl), вам следует прочитать следующую ссылку, чтобы обеспечить плавный переход на fwknop-2.5 или более позднюю версию:

http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html#backwards-compatibility

Разное

  • Вопросы или комментарии о fwknop принимаются в списке рассылки fwknop.
  • Для статического анализа fwknop использует статический анализатор CLANG, а также мощный инструмент Coverity Scan:

Сборка fwknop

Этот дистрибутив использует GNU autoconf для настройки сборки. Пожалуйста, обратитесь к файлу INSTALL для получения основных сведений об использовании autoconf.

Существуют некоторые параметры «configure», специфичные для fwknop. Они приведены ниже (взято из ./configure --help):

root@kitploit:~
  --disable-client        Не собирать клиентский компонент fwknop. По умолчанию клиент собирается.
  --disable-server        Не собирать серверный компонент fwknop. По умолчанию сервер собирается.
  --with-gpgme            поддержка шифрования gpg с использованием libgpgme [по умолчанию=check]
  --with-gpgme-prefix=PFX префикс, где установлен GPGME (необязательно)
  --with-gpg=/путь/к/gpg Укажите путь к исполняемому файлу gpg, который будет использовать gpgme [по умолчанию=check path]
  --with-firewalld=/путь/к/firewalld Укажите путь к исполняемому файлу firewalld [по умолчанию=check path]
  --with-iptables=/путь/к/iptables Укажите путь к исполняемому файлу iptables [по умолчанию=check path]
  --with-ipfw=/путь/к/ipfw Укажите путь к исполняемому файлу ipfw [по умолчанию=check path]
  --with-pf=/путь/к/pfctl Укажите путь к исполняемому файлу pf [по умолчанию=check path]
  --with-ipf=/путь/к/ipf Укажите путь к исполняемому файлу ipf [по умолчанию=check path]

Examples:

./configure --disable-client --with-firewalld=/bin/firewall-cmd
./configure --disable-client --with-iptables=/sbin/iptables --with-firewalld=no

Примечания

Миграция с Perl-версии fwknop

Для тех, кто в настоящее время использует Perl-версию и планирует перейти на эту версию, следует учитывать некоторые моменты:

  • Не все функции и возможности fwknop на основе Perl были перенесены в эту реализацию. Мы решили, что важно сохранить версию на C как можно более компактной и легковесной. Большинство пропущенных функций (например, оповещения по электронной почте) могут быть реализованы другими способами (т.е. с помощью внешнего скрипта для мониторинга файлов журнала и оповещения на основе соответствующих сообщений журнала).

  • Существуют некоторые различия в директивах и значениях файлов конфигурации и доступа fwknop. Некоторые из них довольно тонкие. Следует внимательно изучить документацию и комментарии в этих файлах.

Для разработчиков fwknop

Если вы получаете этот дистрибутив из git, вам следует запустить скрипт autogen.sh для генерации файлов autoconf. Если вы получаете ошибки об отсутствующих каталогах или файлах, попробуйте запустить autogen.sh снова. После этого вы можете запустить autoreconf -i, когда захотите перегенерировать конфигурацию. Если по какой-то причине autoreconf не работает, скрипта autogen.sh должно быть достаточно.

Исходные файлы nroff для man-страниц fwknop и fwknopd включены в соответствующие каталоги (client и server). Эти файлы nroff получены из исходных файлов AsciiDoc в каталоге 'docs'. Подробности см. в README в каталоге docs.

Скачать инструмент
  • Рандомизация портов поддерживается как для порта назначения пакетов SPA, так и для порта, через который устанавливается последующее соединение с помощью возможностей NAT iptables. Последнее применяется к перенаправленным соединениям с внутренними сервисами и к доступу, предоставленному локальным сокетам в системе, где работает fwknopd.
  • Интеграция с Tor (как описано в этой презентации DefCon 14). Обратите внимание, что поскольку Tor использует TCP для транспортировки, отправка пакетов SPA через сеть Tor требует, чтобы каждый пакет SPA отправлялся через установленное TCP-соединение, что технически нарушает аспект «одиночного пакета» в «авторизации одиночным пакетом». Однако Tor обеспечивает преимущества анонимности, которые могут перевесить это соображение в некоторых развертываниях.
  • Реализует версионированный протокол для связи SPA, поэтому легко расширять протокол для предоставления новых типов сообщений SPA и одновременно поддерживать обратную совместимость со старыми клиентами fwknop.
  • Поддерживает выполнение команд оболочки от имени действительных пакетов SPA.
  • Сервер fwknop можно настроить на наложение множества ограничений на входящие пакеты SPA помимо тех, которые обеспечиваются ключами шифрования и обнаружением атак повторного воспроизведения. А именно: возраст пакета, IP-адрес источника, удаленный пользователь, доступ к запрошенным портам и т.д.
  • В состав fwknop входит комплексный набор тестов, выполняющий серию тестов, предназначенных для проверки правильной работы как клиентской, так и серверной частей fwknop. Эти тесты включают перехват пакетов SPA через интерфейс локальной петли, создание временных правил межсетевого экрана, которые проверяются на соответствующий доступ на основе конфигурации тестирования, и анализ вывода как клиента fwknop, так и сервера fwknopd на предмет ожидаемых маркеров для каждого теста. Вывод набора тестов можно легко анонимизировать для передачи третьим лицам для анализа.
  • fwknop была первой программой, интегрировавшей port knocking с пассивным определением ОС. Однако Single Packet Authorization предлагает множество преимуществ в области безопасности по сравнению с port knocking, поэтому режим работы port knocking, как правило, считается устаревшим.