В iptables создаётся правило, запрещающее доступ к определённому TCP-порту (порту защищаемого сервиса).
knockd согласно своему конфигурационному файлу ожидает *определённое количество попыток обращения пользователя за определённый промежуток времени* на порт защищаемого сервиса (TCP пакетов с флагом SYN). В случае выполнения этого условия IP-адрес пользователя временно заносится в список разрешённых ACL.
При запуске *creator.sh* спрашивает пользователя данные, необходимые для генерации конфигурации:
• название правила для knockd;
• номер порта защищаемой службы;
• количество повторов, которые должны произойти, чтоб пользователь попал в ACL;
• за какое время должны эти повторы произойти;
• на какое время включить IP-адрес в ACL (не более 2147483 секунд).
Можно создать несколько правил (для разных портов). После чего *creator.sh* создаст конфигурационный файл *knockd.conf* и *DACL.sh* (с правилами для iptables и ipset). При повторном запуске *creator.sh* файлы перезаписываются. Нужно будет перенести эти файлы в контейнер. knockd.conf поместить в /etc/. *DACL.sh* запустить в любом месте.
На контейнере должны быть установлены: iptables, ipset, knockd
Для работы iptables контейнер docker должен быть запущен с параметром --cap-add=NET_ADMIN (см. вопросы безопасности, связанные с использованием capability NET_ADMIN).
Количество необходимых повторов напрямую влияет на время, через которое пользователь сможет получить доступ к защищаемому сервису (пока IP-адрес пользователя не попадёт в список ACL). Для OpenSSH сервера (Ubuntu 22.04) подключение стандартным клиентом с Ubuntu 22.04 показало: 3 повтора - 3 секунды ожидания. 6 повторов - 6 сек.
Повторов должно быть не менее 2-х: 1 повтор означает его отсутствие, такой сервис будет обнаружен при сканировании. После добавления IP-адреса пользователя в список ACL задержки исчезнут (*пока не истечёт время нахождения адреса в списке*). Перед использованием проверьте, сколько запросов обычно отправляет клиент прежде, чем выдаст ошибку (некоторые клиенты делают всего 1 запрос). Могут быть несовместимости с уже существующими правилами iptables на docker контейнере.
Проверить, что порт сервиса не виден при сканировании можно через nmap:
nmap -vv -sS IP-адрес -p номер_порта
теоретически может заметить аномалию в виде нескольких SYN пакетов перед тем, как пойдёт полноценный трафик на сервис.开发语言:Shell
Star 数:13
该项目属于防护思路方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕Dynamic access control list for docker containers. Enhances the security of private microservices. Based on ipset, iptables, knockd展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | docker-dynamic-ACL - Dynamic access control list for docker containers. |
| 所属分类 | 防护思路 |
| 发布作者 | admin |
| 发布时间 | 2026-10-06 00:11:33 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 339 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |