CodeGuard: CyberSec Edition
Канал по ИБ и этичному хакингу. Связь: @Arakcheev_Ruslan Ссылка: @invite_CodeGuard Биржа: https://telega.in/c/+3X56uL4A-UM3Njgy
Показати більше📈 Аналітичний огляд Telegram-каналу CodeGuard: CyberSec Edition
Канал CodeGuard: CyberSec Edition є активним учасником. На даний момент спільнота об'єднує 12 526 підписників, посідаючи 10 134 місце в категорії Технології та додатки та 52 701 місце у регіоні Росія.
📊 Показники аудиторії та динаміка
З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 12 526 підписників.
За останніми даними від 20 червня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на 517, а за останні 24 години на 50, загальне охоплення залишається високим.
- Статус верифікації: Не верифікований
- Рівень залученості (ER): Середній показник залученості аудиторії становить 12.15%. Протягом перших 24 годин після публікації контент зазвичай збирає 6.95% реакцій від загальної кількості підписників.
- Охоплення публікацій: В середньому кожен допис отримує 1 522 переглядів. Протягом першої доби публікація в середньому набирає 871 переглядів.
- Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 4.
- Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як codeguard, pysec, docker, grep, контейнер.
📝 Опис та контентна політика
Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“Канал по ИБ и этичному хакингу.
Связь: @Arakcheev_Ruslan
Ссылка: @invite_CodeGuard
Биржа: https://telega.in/c/+3X56uL4A-UM3Njgy”
Завдяки високій частоті оновлень (останні дані отримано 21 червня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.
🔵Анатомия устройств — из чего реально состоят «чёрные ящики»: платы, микроконтроллеры, порты, шины, память, как читать разводку платы и не пугаться маркировки и даташитов. 🔵Инструменты хардварного хакера — мультиметр, осциллограф, паяльник, программаторы, логические анализаторы, как правильно их использовать и не спалить первую же плату. 🔵Поиск точек входа — последовательные порты, JTAG, UART, скрытые разъёмы, диагностические контакты, как находить и использовать их для доступа к прошивке и отладочной информации. 🔵Прошивки и их взлом — снятие дампов, поиск интересных строк, паролей и ключей, разбор бинарников, модификация поведения устройства без физического «ломания» железа. 🔵Физические модификации — впаивание новых элементов, подмена сигналов, внедрение своих модулей, создание «франкенштейнов» из старой электроники и понимание, где проходит грань между экспериментом и риском.👩💻 Кликай и качай 😈 CodeGuard: CyberSec Edition | Чат
🔵Директории и файлы: Поиск по словарю стандартных и кастомных путей (/admin, /backup, .git/). 🔵GET/POST параметры: Перебор значений параметров (id=, user=) для поиска уязвимостей типа SQLi или LFI. 🔵Хедеры и куки: Фаззинг заголовков (User-Agent, Cookie) для обхода защиты. 🔵Мультипозиционный фаззинг: Одновременный перебор нескольких точек в запросе.Базовый сценарий: Поиск скрытых директорий Допустим, мы тестируем сайт example.com и хотим найти скрытые административные панели. 1️⃣ Простейший фаззинг Используем базовую команду, подставляя слова из списка в указанное место (FUZZ).
wfuzz -c -z file,wordlist/general/common.txt --hc 404 https://example.com/FUZZ-c для цветного вывода, -z задаёт источник данных (файл со словарём), --hc 404 скрывает ответы с кодом 404. 2️⃣ Фаззинг POST-запроса с данными Попробуем подобрать параметр
username в форме входа.
wfuzz -c -z file,users.txt -d "username=FUZZ&password=test" --hc 200 https://example.com/login.php
-d передаёт данные POST-запроса. Мы ищем ответы, где код НЕ 200 (успех), а что-то другое (редирект, ошибка).
3️⃣ Анализ результатов
Смотрим на коды ответов и длину контента. Необычные значения - цель для исследования.
Пример вывода:
Target: https://example.com/FUZZ Total requests: 4714 ================================================================== ID Response Lines Word Chars Payload ================================================================== 000012: C=403 7 L 12 W 168 Ch "admin" 000145: C=301 0 L 0 W 0 Ch "backup"Вывод: Найдена директория
/admin (возвращает 403 - доступ запрещён) и /backup с редиректом 301. Обе - потенциальные цели.
Как это работает изнутри:
🔵Фаззинг (Fuzzing): Автоматическая отправка искажённых или рандомных данных в программу для поиска багов. Wfuzz делает это для веба. 🔵Фильтры: Мощная система фильтрации по коду ответа (--hc, --sc), длине слов/строк (--hw, --hl), чтобы убрать мусор. 🔵Рекурсивный фаззинг: Найдя одну директорию, можно запустить фаззинг внутри неё для углублённого поиска.Профилактика: Как защитить своё приложение?
🔴Не оставляйте на продакшене скрытые тестовые или административные пути. Удаляйте или строго ограничивайте доступ. 🔴Внедряйте корректную обработку ошибок. Возвращайте одинаковые страницы с кодом 404 для всех несуществующих ресурсов. 🔴Используйте WAF (Web Application Firewall) для обнаружения и блокировки подозрительных запросов с паттернами брутфорса. 🔴Регулярно проводите аудит своего веб-приложения с помощью сканеров и инструментов вроде Wfuzz, но на себя.😈 CodeGuard: PySec Edition | Чат
▶️ Изоляция через namespaces (net, pid, user, mount) ▶️ Профили с предустановленными ограничениями для сотен программ ▶️ Ограничение сетевого доступа (можно запретить всё, кроме одного порта) ▶️ Запуск в своей приватной сетевой зоне с помощью --net=none или --net=eth0 ▶️ Блокировка записи в домашнюю директорию или доступ только к одной папке⚡️Быстрый старт с Firejail: Установка (Ubuntu/Debian):
sudo apt update
sudo apt install firejail firejail-profiles
Простой запуск браузера в песочнице:
firejail firefoxЗапуск демона/сервиса в изолированной сети:
# Запускаем simple-http-server без доступа к интернету firejail --net=none -- python3 -m http.server 8080 # Или создаем свою виртуальную сеть для изолированного сервиса firejail --net=eth0 --dns=8.8.8.8 -- /usr/sbin/nginxСоздание и использование своего профиля:
# Копируем шаблон профиля
sudo cp /etc/firejail/nginx.profile /etc/firejail/nginx-custom.profile
# Редактируем, добавляя свои ограничения (например, запрет на запись в /etc)
sudo nano /etc/firejail/nginx-custom.profile
# Запускаем с кастомным профилем
firejail --profile=/etc/firejail/nginx-custom.profile nginx
➡️ GitHub
😈 CodeGuard: PySec Edition | Чат# Классическая дебильная конфигурация:
services:
app:
image: alpine
volumes:
- /:/host # О, БОЖЕ!
# Атакующему достаточно зайти в контейнер:
docker exec -it myapp sh
cd /host
cat /host/etc/shadow
echo 'backdoor' >> /host/root/.bashrc
Фикс (никогда так не делайте):
services:
app:
image: alpine
volumes:
- ./app_data:/var/lib/app # ТОЛЬКО специфичные данные
- config:/etc/config # Используйте именованные тома
2️⃣ cap_add: ALL - суперспособности для контейнера
# Вот эта хрень даёт ядерные привилегии:
services:
pentest:
image: ubuntu
cap_add:
- ALL # SYS_ADMIN, NET_ADMIN, SYS_MODULE...
# После этого внутри можно:
# - Монтировать файловые системы
# - Менять сетевой стек
# - Загружать kernel modules
# Де-факто это root на хосте.
Фикс (минимальные права):
services:
app:
image: nginx
cap_drop:
- ALL # Сбрасываем ВСЁ
cap_add:
- NET_BIND_SERVICE # Добавляем только нужное для nginx (порт < 1024)
3️⃣ Комбинация: корень + все капы = мгновенный взлом
# Апофеоз идиотизма в одном файле:
version: '3'
services:
backdoor:
image: busybox
volumes:
- /:/rootfs
cap_add:
- ALL
command: chroot /rootfs /bin/sh -c "useradd -m -s /bin/bash hacker"
Атакующий просто запускает ваш docker-compose up и становится root на хосте.
4️⃣ privileged: true - это ещё хуже, чем кажется
services:
monitor:
image: some-monitoring
privileged: true # Отключает ВСЕ namespaces и security features
# Это эквивалент запуска процесса прямо на хосте.
# Любая уязвимость в образе = полный контроль над сервером.
Чек-лист "Docker Compose не убил мою систему":
✔️ Тома: Никогда не монтируйте /, /etc, /root. Только конкретные каталоги приложения.
✔️ Capabilities: Всегда cap_drop: ALL, добавлять только явно необходимые капы (список в man capabilities).
✔️ Пользователь: Запускайте от не-root пользователя внутри контейнера (user: "1000:1000").
✔️ Привилегии: Никогда не используйте privileged: true. Почти всегда есть безопасная альтернатива.
✔️ Сеть: Не используйте network_mode: host без крайней необходимости. Изолируйте сервисы.
✔️ Проверка: Запускайте docker scout или trivy config на ваш docker-compose.yml.
Бонус: скрипт для поиска кривых конфигов
#!/bin/bash
echo "🔍 Docker Compose Security Scan"
grep -r "volumes:" . --include="*.yml" --include="*.yaml" | grep -E "\s+-\s+[/][^:]+" && echo "Найдено монтирование корня!"
grep -r "cap_add:.*ALL" . --include="*.yml" --include="*.yaml" && echo "Найдены ALL capabilities!"
grep -r "privileged: true" . --include="*.yml" --include="*.yaml" && echo "Найден privileged mode!"
echo "Пора фиксить этот бардак."
Интересный факт:
В Shodan легко найти Docker API на 2375/tcp без аутентификации, а дальше - просто отправить кривой docker-compose файл и получить shell.
😈 CodeGuard: CyberSec Edition | Чат▶️ Реальное время: блокировка атак до нанесения ущерба. ▶️ Глубокий анализ: проверка пакетов на всех уровнях (L3-L7). ▶️ Множество протоколов: HTTP, DNS, SSH, TLS и другие. ▶️ Поддержка обновляемых правил от ET Open, Emerging Threats. ▶️ Интеграция с NFQUEUE для взаимодействия с iptables/nftables.😈 Главная хрень: Переход из режима IDS в IPS - это одна строчка в конфиге, но нужно правильно настроить правила и сетевой стек. ⚡️ Быстрая настройка IPS на Ubuntu/Debian: Установка:
sudo apt update
sudo apt install suricata jq
Настройка сетевого интерфейса и запуск в IPS-режиме:
# Разрешим использование NFQUEUE для блокировки sudo iptables -I INPUT -j NFQUEUE --queue-num 0 sudo iptables -I OUTPUT -j NFQUEUE --queue-num 0 # Редактируем конфиг Suricata sudo nano /etc/suricata/suricata.yaml # Меняем в разделе 'af-packet' режим на IPS: # - interface: eth0 # copy-mode: ips # copy-iface: eth0Загрузка актуальных правил и запуск:
# Скачиваем и активируем правила (например, от Emerging Threats)
sudo suricata-update
# Запускаем Suricata в режиме IPS
sudo suricata -c /etc/suricata/suricata.yaml --af-packet=eth0
Пример правила для блокировки сканирования портов в реальном времени:
# Правило в файле /etc/suricata/rules/local.rules alert tcp any any -> $HOME_NET any (msg:"ET SCAN Potential Port Scan"; flow:to_server; flags:S; threshold: type both, track by_src, count 10, seconds 30; classtype:attempted-recon; sid:1000001; rev:1;) # Чтобы оно БЛОКИРОВАЛО, а не только логировало, добавляем действие 'drop' или 'reject' в настройки вывода.➡️ Официальный сайт 😈 CodeGuard: PySec Edition | Чат
🔵Bcrypt: Имеет настраиваемый фактор стоимости (work factor), который искусственно замедляет вычисления, потребляя много памяти. Каждое предположение пароля требует много времени. 🔵Argon2 (победитель PHC): Еще более адаптивен. Затрачивает вычислительное время, память и может задействовать несколько потоков/ядер. Создан, чтобы быть устойчивым к специализированным ASIC.Базовый сценарий: Оптимизация атаки на bcrypt для одной карты Допустим, у вас есть хеш bcrypt и вы хотите настроить Hashcat для максимальной скорости на вашей GPU (например, NVIDIA RTX 4090). 1️⃣ Определение формата и запуск бенчмарка Сначала нужно точно узнать формат хеша и протестировать производительность.
# Определяем тип хеша (если не знаем)
hashcat --example-hashes | grep -i bcrypt
# Запускаем бенчмарк для формата bcrypt ($2b$)
hashcat -b -m 3200
Это покажет, сколько хешей в секунду (H/s) может обработать ваша система. Для bcrypt это будут десятки или сотни, а не миллионы.
2️⃣ Настройка параметров атаки для ускорения
Ключевые опции для увеличения скорости - это оптимизация работы с памятью и ядрами GPU.
# Атака по словарю с оптимизацией под GPU (увеличиваем размер рабочей группы, уменьшаем задержки) hashcat -m 3200 -w 4 -O -d 1 target_bcrypt.hash rockyou.txt # Где: # -m 3200 - это режим bcrypt # -w 4 - профиль высокой нагрузки (максимальная производительность, система может стать менее отзывчивой) # -O - включение оптимизированных ядер (критически важно для скорости) # -d 1 - использование только первого GPU (если у вас несколько карт)3️⃣ Стратегия для Argon2 С Argon2 сложнее, так как он зависит от памяти. Нужно подбирать параметры, чтобы не превысить лимиты VRAM вашей видеокарты.
# Бенчмарк для Argon2 (например, Argon2id)
hashcat -b -m 10900
# Атака с ручной настройкой лимитов памяти (если стандартные вызывают ошибки)
hashcat -m 10900 -I --kernel-accel 64 --kernel-loops 128 target_argon2.hash wordlist.txt
Результат (ожидание):
Speed.#1.........: 543 H/s (bcrypt) или 85 H/s (Argon2) - это победа над медленным KDFВывод: Даже с оптимизацией, атака на современные KDF остается крайне медленной, что доказывает их эффективность. Но правильная настройка Hashcat может ускорить процесс в разы по сравнению с дефолтными настройками. Как выжать еще больше скорости:
🔵Разгон GPU: Увеличение частоты ядра и памяти (с осторожностью!). Каждый лишний мегагерц важен для медленных хешей. 🔵Тонкая настройка --kernel-accel и --kernel-loops: Эксперименты с этими параметрами под конкретную карту и хеш могут дать прирост. 🔵Распараллеливание на несколько GPU: Используйте опцию -d 1,2,3 для загрузки всех доступных видеокарт. Важно: для Argon2 убедитесь, что суммарной видеопамяти хватает.Защита: Как сделать пароли неуязвимыми?
🔴Используйте Argon2 или bcrypt с максимально высокими, но практичными настройками стоимости (work factor, memory cost). 🔴Увеличивайте длину соли (salt) и убедитесь, что она уникальна для каждого пароля. 🔴Для веб-приложений внедряйте искусственные задержки, лимиты попыток и обязательную 2FA для критичных операций. 🔴Помните: никакая оптимизация Hashcat не спасет от truly рандомного пароля длиной в 12+ символов.😈 CodeGuard: PySec Edition | Чат
sudo apt-get install krb5-user libpam-krb5 libssh-4
Во время установки укажи realm (домен) и KDC-серверы твоего AD.
3️⃣Настройка /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
Добавь или измени строки:
GSSAPIAuthentication yes GSSAPICleanupCredentials yes PasswordAuthentication no PubkeyAuthentication no # Или оставь как fallback KerberosAuthentication yes4️⃣Создание SPN для хоста в AD Это самая важная часть. На контроллере домена или с утилитами RSAT создай Principal для сервера:
setspn -S host/your-linux-server.your.domain YOURDOMAIN\server-machine-account$
Или через оснастку AD. Без этого - ничего не kinit your_ad_username@YOURDOMAIN.LOCALПроверь:
klistДолжен быть виден билет. 6️⃣Тестирование подключения
ssh -o GSSAPIAuthentication=yes -o GSSAPIDelegateCredentials=yes your-linux-server
Если всё настроено верно, тебя пустит без пароля и ключа. Магия билета Krb5.
✅Проверка и отладка
Включи подробное логирование на сервере в sshd_config:
LogLevel DEBUG3Смотри логи /var/log/auth.log. Ищи строки с GSSAPI. 🔄Перезапуск и применение
sudo systemctl restart sshd
Не забудь про firewall. Открой порт 22 (или свой) для нужных подсетей.
🚨 Важные нюансы
- Reverse DNS должен работать правильно.
- Имя хоста в SSH-команде должно полностью совпадать с именем в SPN (host/...).
- Срок жизни билета Kerberos ограничен. Используй kinit для обновления.
💥 Результат: Единый вход (SSO) в инфраструктуру. Вошел в Windows - получил билет - подключился к любому Linux-серверу в домене. Удобная хрень.
😈 CodeGuard: PySec Edition | Чатapi_key, password, config, .env в публичных репозиториях. Фильтры по языку и дате.
🔴 Shodan (shodan.io) — поисковик для интернета вещей. Находит открытые камеры, базы данных, панели админов без пароля.
🔴 Censys (censys.io) — аналог Shodan, иногда находит то, что пропустил первый. Хорош для обнаружения самописных API.
🔴 GrayHatWarfare — поиск по публичным S3-бакетатам Amazon. Часто находят резервные копии сайтов, логи, файлы с паролями.
🔴 Wayback Machine + urlscan.io — смотрим старые версии сайта, ищем забытые поддомены и тестовые среды.
📍 Простой алгоритм для разведки на уязвимости:
1. Определяем цель (домен, компания). 2. Собираем всё: поддомены (subfinder, assetfinder), связанные домены, IP-адреса. 3. Ищем артефакты: проверяем каждый найденный адрес в Shodan/Censys на наличие открытых портов (особенно 21, 22, 23, 80, 443, 8080, 9000). 4. Смотрим в историю: прогоняем найденные URL через Wayback Machine, ищем старые версии, конфигурационные файлы (robots.txt, sitemap.xml). 5. Чекаем GitHub: ищем по названию компании, домену. Ищем коммиты с названиями fix, hotfix, security.💡 Лайфхак: Комбинируй. Нашёл поддомен
dev.company.com → прогнал через Wayback → увидел старую панель входа 2019 года → проверил её на Shodan → обнаружил, что она до сих пор висит на старом IP и открыта.
😈 CodeGuard: PySec Edition | Чатsudo apt update && sudo apt install -y fail2ban python3-pip
sudo pip3 install python-telegram-bot
sudo systemctl enable --now fail2ban
2️⃣Создаем свой жестокий фильтр для сканеров (autoscan)
Файл: /etc/fail2ban/filter.d/sshd-aggressive.conf
[Definition]
failregex = ^%(__prefix_line)s(?:error: PAM: )?Authentication failure for .* from \s*$
^%(__prefix_line)sFailed (?:password|publickey) for .* from (?: port \d+)?\s*$
^%(__prefix_line)sReceived disconnect from .*: (?:11: )?Bye Bye\s*$
^%(__prefix_line)sConnection closed by (?:authenticating user|invalid user) .*?\s*$
# Особый регекс для ботов, которые быстро сканируют разные логины
^%(__prefix_line)sInvalid user .* from \s*$
ignoreregex =
Этот фильтр ловит не только неудачные попытки, но и быстрые отключения и сканирование несуществующих пользователей.
3️⃣Создаем тюрьму-монстра в /etc/fail2ban/jail.local
[DEFAULT]
bantime = 2592000 # 30 дней, а не 10 минут
findtime = 600 # 10 минут
maxretry = 2 # Всего две ошибки, и ты в бане, сука
[sshd-aggressive]
enabled = true
port = ssh,2222 # Если сменили порт
filter = sshd-aggressive
logpath = /var/log/auth.log
maxretry = 3
bantime = 604800 # Неделя за попытку скана
action = %(action_)s
sendmail-whois[name=SSH, dest=ваш@email.com]
4️⃣Скрипт-убийца для отправки алертов в Telegram
Файл: /usr/local/bin/fail2ban-telegram.sh
#!/bin/bash
TOKEN="YOUR_BOT_TOKEN"
CHAT_ID="YOUR_CHAT_ID"
SERVER=$(hostname)
IP=$(echo $1)
ACTION=$2
if [ "$ACTION" == "ban" ]; then
MESSAGE="🚨 Fail2ban ALERT на $SERVER
🔴 IP $IP забанен.
⏰ Время: $(date)
📁 Jail: $3
Лог: $4"
elif [ "$ACTION" == "unban" ]; then
MESSAGE="🟢 Fail2ban UNBAN на $SERVER
IP $IP разбанен."
fi
curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \
-d chat_id="$CHAT_ID" \
-d text="$MESSAGE" \
-d parse_mode="HTML" \
-d disable_web_page_preview="true" > /dev/null 2>&1
sudo chmod +x /usr/local/bin/fail2ban-telegram.sh
5️⃣Интеграция скрипта в действие fail2ban
Файл: /etc/fail2ban/action.d/telegram.conf
[Definition] actionstart = /usr/local/bin/fail2ban-telegram.sh start actionstop = /usr/local/bin/fail2ban-telegram.sh stop actioncheck = actionban = /usr/local/bin/fail2ban-telegram.sh ban "" actionunban = /usr/local/bin/fail2ban-telegram.sh unban [Init] init = 1Добавляем это действие в нашу тюрьму (в jail.local):
[sshd-aggressive]
action = iptables-multiport[name=SSHAggressive, port="ssh,2222"]
telegram
6️⃣Генерация белого списка доверенных подсетей (чтобы не забанить себя)
# В /etc/fail2ban/jail.local, в секции [DEFAULT]: ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 10.0.0.0/8 Ваш.Домашний.IP7️⃣Финальная проверка и перезапуск
sudo fail2ban-client reload
sudo fail2ban-client status sshd-aggressive
# Проверяем логи
sudo tail -f /var/log/fail2ban.log | grep --color -E "(ban|unban|WARNING)"
✅Тест на живом боте
Попробуй с другой машины (не из ignoreip) ввести пароль неправильно 3 раза. В течение минуты придет сообщение в Telegram, а IP получит недельный бан.
💥Итог: Боты не просто получают временный таймаут. Они попадают в долгий бан, а ты в реальном времени видишь всю эту фигню в мессенджере. Система становится активным защитником.
😈 CodeGuard: PySec Edition | Чатssh-keygen -t ed25519 -f ~/ssh-ca -C "SSH Internal CA"
# Публичную часть (ssh-ca.pub) раскидываем на все серверы
# Закрытый ключ (ssh-ca) храним как зеницу ока
2️⃣Настраиваем серверы: доверяем нашему CA
На каждом сервере в /etc/ssh/sshd_config:
# Отключаем обычные ключи. Да, это страшно. PubkeyAuthentication no # Включаем аутентификацию по сертификатам TrustedUserCAKeys /etc/ssh/ca.pub AuthorizedPrincipalsFile /etc/ssh/auth_principals/%uКладём наш публичный CA-ключ на сервер:
sudo cp ssh-ca.pub /etc/ssh/ca.pub
sudo chmod 644 /etc/ssh/ca.pub
3️⃣Выписываем временный сертификат для пользователя
На машине с CA-ключом. Хотим дать доступ user1 к серверам на 2 часа:
ssh-keygen -s ~/ssh-ca -I "user1_access" -n user1 -V +2h ~/.ssh/id_ed25519.pub
# -n (principals) - кому выдаём. -V +2h - живёт 2 часа.
# Получим файл сертификата: ~/.ssh/id_ed25519-cert.pub
4️⃣На сервере: настраиваем принципалы
Создаём файл, который говорит, какие роли (principals) разрешены пользователю.
sudo mkdir -p /etc/ssh/auth_principals
echo "user1" | sudo tee /etc/ssh/auth_principals/user1
5️⃣Подключаемся с сертификатом
Клиент автоматически использует сертификат (~/.ssh/id_ed25519-cert.pub) вместе с приватным ключом.
ssh -i ~/.ssh/id_ed25519 user1@server
Проверить детали сертификата:
ssh-keygen -L -f ~/.ssh/id_ed25519-cert.pub
6️⃣Автоматизация и отзыв
Весь сброс - это просто перестать выписывать новые сертификаты. Старые сами протухнут. Можно выписывать сертификаты через CI/CD при деплое.
😱Важные нюансы
- Бэкап старого sshd_config! Первый запуск - с параллельной сессией.
- Сертификат - это надстройка к ключу. Приватный ключ всё ещё нужен.
- Для разных целей (деплой, админ) делайте разные принципалы.
💥Итог: authorized_keys - мёртв. Доступ выдаётся централизованно и на время. Потерял ключ? Не страшно - срок действия и так истёк. Это нихуя не сложно, но в разы безопаснее.
😈 CodeGuard: PySec Edition | Чат↘️ Что в программе: — Nmap (обход фильтров) — C2, payloads, pivoting — Повышение до рута в Linux — Взятие админа в Windows — Атаки на корпоративную инфраструктуру — Фишинг (обход 2FA) + AV-bypass — Резюме + собесы❌ Только внутренняя сеть, минимум — web. 📰 28.01 — 02.05 (3 мес). 20к ₽. 18 мест — для обучения и обратная связь от создателя! Запись: через админа @sphqx. ⚡️ Подробности. p.s админ уже записался)) Берем?
▶️ Удаленное управление смартфоном через терминал ▶️ Портфорвардинг, туннели, файловые операции ▶️ Запуск скриптов и демонов прямо на девайсе ▶️ Альтернатива тяжеловесному OpenSSH⚡️Быстрая настройка на Android (через Termux): Установка Dropbear:
pkg update
pkg install dropbear
Генерация и настройка ключей:
dropbearkey -t ed25519 -f ~/.ssh/id_dropbear
dropbearkey -y -f ~/.ssh/id_dropbear | grep "^ssh-ed25519" > ~/.ssh/authorized_keys
Запуск сервера с паролем или по ключу:
dropbear -F -E -m -s -j -k -p 8022
Автоматическая ротация ключей (скрипт для cron/anacron):
#!/data/data/com.termux/files/usr/bin/bash
cd ~/.ssh
mv id_dropbear id_dropbear.old
dropbearkey -t ed25519 -f id_dropbear
dropbearkey -y -f id_dropbear | grep "^ssh-ed25519" > authorized_keys
pkill -HUP dropbear
➡️ Официальный сайт
😈 CodeGuard: PySec Edition | Чатdocker build перед пушем утомляет. Автоматизируем с помощью хуков: коммит - и образ уже в репозитории.
1️⃣Суть проблемы и решение
Отдельные контейнеры - это хорошо. Отдельные ручные шаги для их обновления - плохо. Git hook на pre-push или post-commit запустит сборку и пуш образа автоматически. Разгрузим себе голову.
2️⃣Создаём хук в локальном репозитории
cd /ваш/проект/.git/hooks
cat > pre-push << 'EOF'
#!/bin/bash
# Хук на пуш в master/main
branch=$(git symbolic-ref --short HEAD)
if [ "$branch" = "main" ] || [ "$branch" = "master" ]; then
echo "🚀 Запуск автосборки Docker образа..."
docker build -t yourusername/app:latest .
docker push yourusername/app:latest
fi
EOF
chmod +x pre-push
3️⃣Умный Dockerfile с кэшированием и тегами
Хук - это триггер. Сам Dockerfile должен быть эффективным.
Пример оптимизированного файла:
FROM python:3.11-slim as builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt
FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY . .
ENV PATH=/root/.local/bin:$PATH
CMD ["python", "main.py"]
4️⃣Безопасность: не толкай секреты
Автоматизация - не повод заливать ключи в образ. Используй .dockerignore и secrets.
.dockerignore:
.git .env *.pyc __pycache__ README.md .gitignore5️⃣Расширяем хук: теги по версии и тестам Делаем сборку умнее. Тег вида
v1.2-<commit_hash> и прогон тестов.
#!/bin/bash
# pre-push v2
VERSION=$(cat VERSION 2>/dev/null || echo "latest")
SHORT_SHA=$(git rev-parse --short HEAD)
IMAGE_NAME="yourregistry/app:${VERSION}-${SHORT_SHA}"
docker build -t $IMAGE_NAME .
# Запустим простой тест контейнера
if docker run --rm $IMAGE_NAME python -c "import sys; sys.exit(0)"; then
echo "✅ Тест пройден. Пушим образ..."
docker push $IMAGE_NAME
else
echo "❌ Тест не пройден. Пуш отменён."
exit 1
fi
6️⃣Для команды: хуки в общий репо
Локальные хуки не копируются. Используй папку git-hooks/ в проекте и настройку core.hooksPath.
git config core.hooksPath .githooks
# Положи скрипты в .githooks/
# Каждый разработчик получит их автоматически
✅Что получили
Коммит или пуш в основную ветку → автоматическая сборка образа → тестирование → пуш в реестр. Никакой рутины.
🚨 Важный нюанс
Это работает для личных проектов и CI-like окружений. В продакшене используй полноценный CI/CD (GitHub Actions, GitLab CI). Хук - это быстрый и дебильный локальный автоматизатор.
💥 Результат: Изоляция процессов в контейнерах + изоляция себя от ручной сборки.
😈 CodeGuard: PySec Edition | Чат
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
