CodeGuard: CyberSec Edition
Канал по ИБ и этичному хакингу. Связь: @Arakcheev_Ruslan Ссылка: @invite_CodeGuard Биржа: https://telega.in/c/+3X56uL4A-UM3Njgy
Show more📈 Analytical overview of Telegram channel CodeGuard: CyberSec Edition
Channel CodeGuard: CyberSec Edition is an active participant. Currently, the community unites 12 526 subscribers, ranking 10 134 in the Technologies & Applications category and 52 701 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 12 526 subscribers.
According to the latest data from 20 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by 517 over the last 30 days and by 50 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 12.15%. Within the first 24 hours after publication, content typically collects 6.95% reactions from the total number of subscribers.
- Post reach: On average, each post receives 1 522 views. Within the first day, a publication typically gains 871 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 4.
- Thematic interests: Content is focused on key topics such as codeguard, pysec, docker, grep, контейнер.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Канал по ИБ и этичному хакингу.
Связь: @Arakcheev_Ruslan
Ссылка: @invite_CodeGuard
Биржа: https://telega.in/c/+3X56uL4A-UM3Njgy”
Thanks to the high frequency of updates (latest data received on 21 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
🔵Анатомия устройств — из чего реально состоят «чёрные ящики»: платы, микроконтроллеры, порты, шины, память, как читать разводку платы и не пугаться маркировки и даташитов. 🔵Инструменты хардварного хакера — мультиметр, осциллограф, паяльник, программаторы, логические анализаторы, как правильно их использовать и не спалить первую же плату. 🔵Поиск точек входа — последовательные порты, 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 | Чат
Available now! Telegram Research 2025 — the year's key insights 
