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

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

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

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

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

Категории

Все категории
Loading categories
CPLHF — Модульный Bash-инструментарий, который укрепляет системы Debian/Ubuntu для соревнований CyberPatriot, автоматизируя защиту учётных записей, межсетевого экрана, SSH, PAM и служб с ведением журналов и резервным копированием. | Kitploit
Инструменты/GitHubGitHub/whereisxuezugi/cplhf
Оборонительные ИнструментыАнализ уязвимостейСкриптинг и автоматизацияАудит конфигурацииФорензикаCTFТестирование на ПроникновениеОбучение и ОбразованиеРеагирование на Инциденты
GitHubwhereisxuezugi/cplhf

CPLHF

Модульный Bash-инструментарий, который укрепляет системы Debian/Ubuntu для соревнований CyberPatriot, автоматизируя защиту учётных записей, межсетевого экрана, SSH, PAM и служб с ведением журналов и резервным копированием.

33 дней назадЕщё не проверено

Популярное

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

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

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

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

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

CyberPatriot Linux Hardening Toolkit

Модульный Bash-инструментарий для укрепления систем семейства Debian/Ubuntu в условиях соревновательного цейтнота. Создан и отточен за несколько сезонов CyberPatriot National Youth Cyber Defense Competition, последнее достижение — Platinum tier в дивизионе Linux на полуфинале 2025 года.

Это не универсальный фреймворк соответствия требованиям. Это автоматизатор чек-листа для шестичасового упражнения на время: он выполняет скриптуемую большую часть прохода по укреплению Linux правильно, быстро и идемпотентно, логирует всё, к чему прикасался, и оставляет решения, требующие суждения, человеку, который его запускает.

Содержание

  • Зачем это существует
  • Архитектура
  • Быстрый старт
  • Что это на самом деле делает
  • Заметки о безопасности на соревнованиях
  • Конфигурация
  • Структура репозитория
  • Тестирование
  • Средства контроля безопасности и ссылки
  • Что этот проект намеренно не делает
  • Лицензия

Зачем это существует

Раунды Linux в CyberPatriot оценивают живой образ по рубрике, которая вознаграждает довольно предсказуемый набор шагов по укреплению — гигиена учётных записей, политика паролей, настройка межсетевого экрана, экспозиция служб, права доступа к файлам, уровень патчей — в условиях жёсткого лимита времени, обычно без предварительного уведомления о том, какие именно уязвимости были заложены. Выполнение этого чек-листа вручную, правильно, под обратный отсчёт — это то место, где команды теряют лёгкие баллы из-за опечаток и забытых шагов, а не из-за незнакомого материала.

Этот инструментарий начинался как единый монолитный скрипт, написанный именно под таким давлением. Этот репозиторий — переписывание того скрипта: то же покрытие чек-листа, переструктурированное в небольшие модули с единственным назначением, которые легче читать, тестировать и осмысливать независимо, при этом каждое неочевидное решение привязано к конкретному разделу CIS Benchmark или контролю NIST SP 800-53 (см. Средства контроля безопасности и ссылки).

Архитектура

root@kitploit:~
flowchart TD
    A[bin/harden.sh] --> B[lib/common.sh<br/>logging, backups, run wrapper]
    A --> C[Service-role prompts<br/>or --config file]
    A --> D[lib/packages.sh<br/>updates, attack-tool removal]
    A --> E[lib/firewall.sh<br/>default-deny + ufw]
    A --> F[lib/ssh.sh]
    A --> G[lib/services.sh<br/>samba/ftp/mail/http/mysql/dns]
    A --> H[lib/users.sh<br/>account review, hidden UID 0]
    A --> I[lib/kernel.sh<br/>sysctl hardening]
    A --> J[lib/pam.sh<br/>password policy, lockout]
    A --> K[lib/filesystem.sh<br/>permissions, cron, banners]
    A --> L[lib/monitoring.sh<br/>fail2ban, auditd, rkhunter]
    A --> M[lib/forensics.sh<br/>baseline snapshot]
    D & E & F & G & H & I & J & K & L & M --> N[(~/hardening-run/<br/>log + backups + baseline)]

Каждый модуль подключается через bin/harden.sh, который отвечает за разбор аргументов, опрос о роли служб и порядок выполнения. Модули не вызывают друг друга напрямую, и каждая команда, изменяющая состояние, в каждом модуле проходит через обёртку run() в lib/common.sh, что даёт всему проекту единое место для реализации поддержки dry-run, согласованного логирования и обработки некритичных ошибок.

Быстрый старт

root@kitploit:~
git clone <this-repo>
cd cyberpatriot-linux-hardening
sudo ./bin/harden.sh

Вам будет задана короткая серия вопросов да/нет о роли машины (нужны ли ей Samba, FTP, SSH, веб-сервер и так далее), после чего он отработает без вмешательства по перечисленным выше модулям. Лог, полный набор резервных копий конфигураций с отметками времени и снимок базового состояния системы записываются в ~/hardening-run/.

В реальном раунде пропустите запросы подтверждения для каждого пакета и отвечайте на вопросы о роли из подготовленного файла ответов вместо ввода вживую:

root@kitploit:~
cp examples/config.env.example my-machine.env
# edit my-machine.env for this box's actual role
sudo ./bin/harden.sh --config my-machine.env --auto-approve

Хотите увидеть точно, что он сделает, прежде чем он к чему-либо прикоснётся?

root@kitploit:~
sudo ./bin/harden.sh --dry-run --config my-machine.env

Что это на самом деле делает

МодульДелает
lib/packages.shПолное обновление системы; автоматически удаляет взломщики паролей и инструменты эксплуатации; проверяет инструменты двойного назначения (nmap, Wireshark, netcat) и устаревшие службы (VNC, NFS, telnet) перед их удалением
lib/firewall.shЗапрет входящих по умолчанию / разрешение исходящих по умолчанию через ufw, плюс явная блокировка известного распространённого порта бэкдора
lib/ssh.shСовременные шифры/KEX/MAC, запрет входа root, ограничения соединений и сессий — или полное удаление SSH, если роль в нём не нуждается
lib/services.shSamba, FTP, почта, печать, MySQL, HTTP, DNS: каждая устанавливается и минимально укрепляется, если нужна роли, или удаляется и отсекается межсетевым экраном, если нет
lib/users.shИнтерактивный обзор существующих учётных записей (права администратора, удаление, сброс пароля), обнаружение скрытых учётных записей с UID 0 и пустых паролей
lib/kernel.shНастройки sysctl для сетевого стека и самозащиты ядра (маршрутизация от источника, ICMP-редиректы, ASLR, область ptrace, ограничение dmesg/kptr)
lib/pam.shСложность и история паролей через pam_pwquality/pam_pwhistory, блокировка учётной записи через pam_faillock, срок действия пароля в login.defs
lib/filesystem.shПрава доступа к ключевым файлам, ограничение cron/at, минимальный rc.local, юридические баннеры входа, сканирование только для чтения по SUID/доступным на запись всем/бесхозным файлам
lib/monitoring.shfail2ban и auditd по умолчанию; ClamAV и полное сканирование rkhunter/chkrootkit — по желанию (см. Заметки о безопасности на соревнованиях)
lib/forensics.shСнимок только для чтения пользователей, процессов, слушающих портов и установленных пакетов для последующего сравнения

tools/find-port-owner.sh и tools/list-nonstandard-users.sh — небольшие автономные утилиты для такой же работы по сортировке, используемые независимо от основного скрипта — см. их заголовки для использования.

Заметки о безопасности на соревнованиях

Скрипт укрепления, который ломает машину, которую должен защищать, хуже бесполезен в раунде на время. Несколько значений по умолчанию отражают это, и их стоит понять, прежде чем запускать это без присмотра:

  • Аутентификация SSH по паролю по умолчанию включена. Более строгая рекомендация CIS только с ключами находится на расстоянии одного значения конфигурации (SSH_PASSWORD_AUTH=no), но значение по умолчанию здесь отдаёт предпочтение тому, чтобы не запереть команду вне её собственной машины, когда никто ещё не подготовил ключи.
  • Инструменты двойного назначения проверяются, а не удаляются автоматически. nmap, Wireshark, tcpdump и варианты netcat — распространённые инструменты атакующих, но они также распространённые инструменты администратора, и некоторые соревновательные образы специально требуют один из них для заявленной роли машины. Они удаляются после подтверждения, а не молча.
  • ClamAV и сканирование rkhunter/chkrootkit — по желанию (INSTALL_CLAMAV, RUN_BASELINE_SCAN), потому что это две самые медленные вещи, которые может делать этот скрипт, и ни одна из них сама по себе не изменяет состояние системы. Включите их, если ваш чек-лист этого требует или у вас есть время в запасе.
  • Ничто здесь не проверяет связность вашего движка оценки. Модуль межсетевого экрана по умолчанию разрешает все исходящие и закрывает входящие порты только для служб, которые не нужны роли, но если ваш конкретный образ отчитывается перед сервером оценки или локальным агентом через нестандартный порт, это вам нужно проверить — см. ~/hardening-run/baseline/listening_ports.txt из предыдущего запуска, если вы не уверены, что на самом деле слушается, прежде чем впервые укреплять машину.
  • Пароли GRUB не автоматизированы по той же причине: плохой пароль GRUB может превратить проход по укреплению в незагружаемую машину без быстрого пути восстановления посреди раунда. См. docs/security-controls.md для ручной процедуры.
  • Каждый модуль идемпотентен. Повторный запуск скрипта на уже укреплённой машине (например, после того как частичный запуск был прерван) не создаст дублирующихся блоков конфигурации и не завершится ошибкой.

Конфигурация

bin/harden.sh интерактивно спросит о роли служб машины, если вы не ответите заранее. Чтобы пропустить запросы, скопируйте examples/config.env.example, заполните фактическую роль и передайте его с --config. Любая переменная, которую вы опустите в файле, откатывается к интерактивному запросу, так что частично заполненный файл конфигурации подойдёт.

root@kitploit:~
sudo ./bin/harden.sh --config my-machine.env

Флаги:

ФлагЭффект
--config FILEЗагрузить ответы о роли/политике из env-файла
--dry-runЛогировать каждое действие, которое было бы предпринято; ничего не менять
--auto-approveПропустить запросы подтверждения удаления для каждого пакета

Структура репозитория

root@kitploit:~
.
├── bin/harden.sh                    orchestrator: parses args, asks role questions, runs modules in order
├── lib/
│   ├── common.sh                    logging, backups, idempotent file edits, the run() wrapper
│   ├── packages.sh                  updates, attack-tool removal
│   ├── ssh.sh                       SSH install/removal and hardening
│   ├── services.sh                  samba/ftp/telnet/mail/printing/mysql/http/dns
│   ├── firewall.sh                  ufw default-deny posture
│   ├── users.sh                     account review, hidden UID 0 / empty password detection
│   ├── kernel.sh                    sysctl hardening
│   ├── pam.sh                       password policy, account lockout
│   ├── filesystem.sh                permissions, cron, rc.local, banners, anomaly scan
│   ├── monitoring.sh                fail2ban, auditd, rkhunter, chkrootkit, ClamAV
│   └── forensics.sh                 read-only system baseline snapshot
├── tools/
│   ├── find-port-owner.sh           resolve a listening TCP port to a process path
│   └── list-nonstandard-users.sh    flag UID >= 1000 accounts not on an expected list
├── docs/
│   ├── security-controls.md         every hardening decision, mapped to its source standard
│   └── editor-cheatsheet.md         small editor commands worth remembering under pressure
├── examples/config.env.example      annotated template for non-interactive runs
└── .github/workflows/shellcheck.yml lint on every push/PR

Тестирование

Каждый скрипт проверяется линтером ShellCheck при push через GitHub Actions (.github/workflows/shellcheck.yml). Чтобы проверить локально перед открытием PR:

root@kitploit:~
shellcheck lib/*.sh bin/*.sh tools/*.sh

bin/harden.sh --dry-run также сам по себе является тестом: он прогоняет поток управления и логирование каждого модуля, не касаясь файловой системы и ничего не устанавливая, и это самый быстрый способ проверить изменение на одноразовой виртуальной машине, прежде чем запускать его по-настоящему. См. CONTRIBUTING.md для полных ожиданий по новым модулям (идемпотентность, направление деструктивных действий через run() и указание источника для любого нового шага укрепления).

Средства контроля безопасности и ссылки

Заголовочный комментарий каждого модуля и docs/security-controls.md цитируют конкретный раздел стандарта, лежащий в основе каждого решения. Основные источники, используемые повсюду:

СтандартИсточник
CIS Ubuntu Linux Benchmarkhttps://www.cisecurity.org/benchmark/ubuntu_linux
NIST SP 800-53 Rev. 5https://csrc.nist.gov/pubs/sp/800/53/r5/upd1/final
DISA STIG for Ubuntuhttps://public.cyber.mil/stigs/downloads/
Mozilla OpenSSH modern configuration guidelineshttps://infosec.mozilla.org/guidelines/openssh
CyberPatriot National Youth Cyber Defense Competitionhttps://www.uscyberpatriot.org/

Упомянутые инструменты обнаружения (не встроены, устанавливаются через apt): fail2ban, Linux Audit / auditd, rkhunter, chkrootkit. Lynis и OpenSCAP рекомендуются как последующий, независимый аудит и не запускаются автоматически этим проектом.

Что этот проект намеренно не делает

  • Автоматизировать пароли загрузчика GRUB (риск незагружаемой машины; см. выше)
  • Автоматически устранять что-либо, найденное сканированиями SUID/доступных на запись всем/руткитов — находки логируются для человеческого обзора, никогда не обрабатываются автоматически
  • Скачивать или запускать наступательный инструментарий перечисления любого рода
  • Трогать пакеты, которые он явно не распознаёт — незнакомый пакет (который вполне может быть агентом оценки) остаётся нетронутым, а не угадывается
  • Покрывать настройки только для GUI (тайм-аут блокировки экрана, настройки менеджера обновлений, конфигурация браузера) — их всё ещё нужно проверять вручную

См. docs/security-controls.md для полного обоснования каждого из этих пунктов.

Лицензия

MIT. См. LICENSE.

Скачать инструмент