NetworkAdmin.ru – Telegram
NetworkAdmin.ru
4.77K subscribers
222 photos
26 videos
2 files
502 links
Авторский блог про сетевое и системное администрирование.

Сайт: networkadmin.ru
Реклама: @dad_admin
Биржа: https://telega.in/c/networkadminru
Download Telegram
🔠 Монтирование файловых систем через systemd

Хотя многие админы по привычке используют /etc/fstab, у systemd есть собственный механизм монтирования, который во многом удобнее и современнее.

📍 Почему systemd лучше, чем fstab?

1️⃣Автомонтирование при обращении - устройство подключается только тогда, когда к нему обращаются, и может автоматически отключаться по заданному таймауту.
2️⃣Автосоздание точек монтирования - systemd сам создает нужные директории, администратору не нужно следить за их наличием.
3️⃣Гибкая работа с таймаутами - если устройство недоступно, загрузка системы не повиснет, как это иногда бывает с fstab.
4️⃣Зависимости от сервисов - можно задать, что монтирование произойдёт только после старта VPN или другого сервиса, который необходим для доступа к диску.


▪️ Пример: локальный диск в /mnt/backup

1️⃣ Создаем юнит /etc/systemd/system/mnt-backup.mount:


[Unit]
Denoscription=Disk for backups

[Mount]
What=/dev/disk/by-uuid/f774fad3-2ba0-47d1-a20b-0b1c2ae1b7d6
Where=/mnt/backup
Type=ext4
Options=defaults

[Install]
WantedBy=multi-user.target


2️⃣ Подготовка диска:


cfdisk /dev/sdb #создаем раздел
mkfs -t ext4 /dev/sdb1 #форматируем
blkid #смотрим UUID


3️⃣ Запуск и включение автозагрузки:


systemctl daemon-reload
systemctl start mnt-backup.mount
systemctl enable mnt-backup.mount


▪️ Пример: автомонтирование NFS через VPN. Для сетевых дисков будет удобнее использовать .automount. Он подключает ресурс по требованию и может отмонтировать при простое.

/etc/systemd/system/mnt-backup.mount:


[Unit]
Denoscription=NFS share

[Mount]
What=srv.example.com:/backup/nfs_share
Where=/mnt/backup
Type=nfs4
Options=rw
TimeoutSec=15


/etc/systemd/system/mnt-backup.automount:


[Unit]
Denoscription=NFS share
Requires=network-online.target
BindsTo=openvpn@client.service
After=openvpn@client.service

[Automount]
Where=/mnt/backup
TimeoutIdleSec=60

[Install]
WantedBy=graphical.target


Включаем:


systemctl daemon-reload
systemctl enable --now mnt-backup.automount


Теперь:

при старте системы диск не монтируется сразу;
при первом обращении к /mnt/backup - идет подключение NFS через VPN;
при остановке openvpn@client.service диск автоматически отмонтируется.

#systemd #fstab

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
⌨️ Инструмент для управления RDP-серверами Windows

Для администраторов windows есть небольшой, очень быстрый и почти олдовейший по духу инструмент - Terminal Services Manager от LizardSystems. Размер всего ~4 МБ, работает мгновенно, интерфейс простой и предельно функциональный. Изначально утилиту делали для терминальных серверов, но по факту она отлично подходит для любой Windows-машины: от серверов до обычных рабочих станций.

Программа платная, но условно. Для персонального использования доступна полностью бесплатная версия без ограничений.

▪️ Что умеет Terminal Services Manager

▪️ Управление терминальными сессиями

- Просмотр всех подключённых пользователей
- Видно, кто активен, кто в состоянии Disconnected
- Подключение к пользовательской сессии
- Принудительный logout или завершение всех сессий

▪️ Взаимодействие с пользователями

- Отправка сообщений прямо в их RDP-сессии

▪️ Мониторинг состояния системы

- Быстрый просмотр нагрузки CPU, RAM, диска

▪️ Управление процессами

- Просмотр процессов на удалённой машине
- Завершение зависших приложений
- Видно процессы по пользователям

▪️ Администрирование хоста

- Перезагрузка и выключение удалённых серверов
- Очистка профилей пользователей
- Быстрое включение/отключение RDP-доступа

Если вы часто управляете RDP-серверами, разгребаете зависшие сессии, мониторите пользователей, то эта утилита сильно экономит время.

#windows #RDP

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
SMB-сервер на Python

impacket - идеален для одноразовых задач: поднимаешь за пару команд, кидаешь файлы и завершаешь процесс.

▪️ Установка на Debian/Ubuntu:


apt install python3-impacket


▪️ Пример запуска (встроенный примерный скрипт):


cd /usr/share/doc/python3-impacket/examples/
python3 smbserver.py share /mnt/share -smb2support


Пояснения:

share - имя шары;
/mnt/share - директория, которую расшариваем (не забудьте права, для анонимного доступа удобно chmod 777 /mnt/share);
-smb2support - включить SMB2 (без этого Windows 10/11 иногда не подключаются).


Если нужна простая авторизация, можно указать логин/пароль:


python3 smbserver.py share /mnt/share -smb2support -username demo -password pass


⚠️ Важно: windows иногда пытается автоматически подключиться под текущей учеткой и не показывает диалог ввода пароля, в таких случаях полезно явно указать в проводнике «Connect using different credentials» или подключаться по IP с параметром учётных данных. С linux таких проблем нет, smbclient прекрасно работает:


smbclient -L 192.168.55.15 --user demo%pass
smbclient //192.168.55.15/share --user demo%pass


Плюсы:

супер быстрый старт (одна команда);
нет необходимости править конфиги и заводить службу;
удобен для тестов и одноразовой передачи файлов.

Минусы:

пакет impacket - большой и ориентирован в основном на сетевые инструменты (pentest/ssc), так что для постоянной работы лучше все же samba или ksmbd;
не для продакшена: минимальная безопасность, упрощенные механизмы аутентификации.

Для быстрых переносов файлов или тестов - это будет шикарный инструмент.

#SMB

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
🧐 Анализ трафика

tcpdump - легкий и быстрый способ посмотреть сетевой трафик прямо в терминале, когда GUI-инструменты недоступны.

▪️ Основные приемы

Быстрые параметры:

-i eth0 - интерфейс
-nn - без DNS/порт-резолва
-s 0 - захватывать пакет полностью
-w file.pcap - сохранить трафик
-r file.pcap - прочитать файл

Фильтры:


tcpdump -i eth0 -nn host 10.0.0.5
tcpdump -i eth0 -nn tcp port 443
tcpdump -i eth0 -nn 'tcp and dst port 22'


▪️ Практические сценарии

HTTP-запросы в ASCII:


tcpdump -i any -nn -s 0 -A 'tcp port 80'


DNS-трафик:


tcpdump -i any -nn -s 0 -A 'udp port 53'


Сохранение дампа:


tcpdump -i eth0 -nn -s 0 -w capture.pcap


Новые TCP-подключения (SYN):


tcpdump -i eth0 -nn 'tcp[tcpflags] & tcp-syn != 0'


MAC-адреса:


tcpdump -i eth0 -nn -e


▪️ Быстрый анализ

Посчитать активность:


timeout 10 tcpdump -i eth0 -nn icmp | wc -l


Просмотреть SNI в HTTPS (если не шифруется):


tcpdump -i any -nn -s 0 -A 'tcp port 443' | grep -i 'server name'


#tcpdump #network

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥21
Заземление заказывали?

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁17😱8😢21🌚1
🔑 Простой инструмент для выпуска сертификатов Lets Encrypt

acme.sh - это полностью bash-скрипт для работы с Lets Encrypt и другими ACME-совместимыми центрами сертификации. Он не требует python, библиотек или дополнительных пакетов, достаточно стандартного окружения linux. Именно легкость, автономность и гибкость сделали его популярной альтернативой certbot.

▪️ Установка. Устанавливается одной командой:


curl https://get.acme.sh | sh -s email=you@networkadmin.ru


Инсталлятор делает все автоматически:

Размещает скрипт в ~/.acme.sh/
Добавляет алиас acme.sh в .bashrc
Создает cron задачу для автообновления сертификатов

После перезапуска среды можно сразу работать.

▪️ Выпуск сертификата (HTTP-01). Самый простой вариант:


acme.sh --issue --server letsencrypt -d networkadmin.ru -w /var/www/html


Для каждого домена создается отдельная директория ~/.acme.sh/networkadmin.ru/, где хранятся:

приватный ключ
сертификат
конфигурация домена

▪️ Установка сертификатов и автоматический reload. Вместо ручного копирования файлов можно доверить все acme.sh:


acme.sh --install-cert -d networkadmin.ru \
--key-file /etc/nginx/certs/key.pem \
--fullchain-file /etc/nginx/certs/cert.pem \
--reloadcmd "systemctl reload nginx"


Теперь при автообновлении сертификатов acme.sh сам скопирует файлы и перезагрузит веб-сервер.

▪️ Почему стоит посмотреть на acme.sh? Главные преимущества:

▪️ Чистый bash без зависимостей. Работает на минимальных системах, легких контейнерах.
▪️ Поддержка десятков DNS-провайдеров. Можно выпускать wildcard-сертификаты одной командой без ручной настройки TXT-записей.
▪️ Поддержка нескольких ACME-CA. Не только Lets Encrypt: ZeroSSL, Buypass и другие.
▪️ Гибкость. Любые действия после выпуска/обновления: копирование, синхронизация, рестарт сервисов, уведомления.
▪️ Работает изолированно. Все файлы хранятся в ~/.acme.sh, не трогают системные каталоги.

#letsencrypt #ssl

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥1
🖥 Навигация по файловой системе в виде дерева

Многие знают про tree, но мало кто знает про broot. Это консольный инструмент для навигации по файловой системе, который сочетает просмотр дерева, поиск, переходы и фильтры в одном интерфейсе.

▪️ Установка. На большинстве дистрибутивов достаточно:


curl -fsSL https://dystroy.org/broot/install.sh | bash


После установки появится командный алиас br, запускающий интерактивный браузер.

▪️ Что делает broot таким удобным?

1️⃣ Дерево каталогов без лишнего мусора. Показывает только важные директории и файлы, сворачивает вложенности и динамически подгружает структуру по мере просмотра.

2️⃣ Интерактивный поиск прямо в дереве. Начинаете печатать, а broot фильтрует дерево. Например, поиск всех файлов, связанных с nginx:


nginx


3️⃣ Быстрые переходы. Нужно перейти в каталог? Просто выделите его и нажмите enter. Никаких cd ../../../../../.

4️⃣ Быстрые действия. На выбранных файлах можно выполнять операции:

открыть в редакторе (e)
удалить (:rm)
показать подробности (:p)
копировать путь (:pp)

5️⃣ Работа с правами, git и скрытыми файлами. Broot умеет показывать статусы git, размеры, даты и многое другое.

▪️ Полезные ключи

- Показать размеры каталогов: br -s
- Открывать сразу в режиме изменения (как F2 в файловых менеджерах): br -c :focus
- Фильтровать только директории: type:d

#linux #tools

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3
😏

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁24
⚙️ Восстановление GRUB и загрузки после сбоя

Если после обновления, кривой установки windows или повреждения разделов linux перестал загружаться, то почти всегда можно вернуть систему к жизни, просто восстановив GRUB.

1️⃣ Загружаемся с LiveCD. Любой дистрибутив подходит (Ubuntu, Debian, Fedora). Открываем терминал.

2️⃣ Находим Linux-раздел


lsblk


Ищем раздел, где стоит linux, например /dev/sda2.
Если отдельный /boot существует, то запомните и его.

3️⃣Монтируем систему


sudo mount /dev/sda2 /mnt


Если есть отдельный /boot:


sudo mount /dev/sda1 /mnt/boot


И обязательно системные каталоги:


for i in /dev /proc /sys /run; do sudo mount --bind $i /mnt$i; done


4️⃣ chroot внутрь системы


sudo chroot /mnt


Теперь вы внутри установленной системы, как будто загрузились в нее.

5️⃣ Восстанавливаем GRUB

BIOS/Legacy


grub-install /dev/sda
update-grub


UEFI


grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
update-grub


Если каталог /boot/efi не смонтирован, то смонтируйте нужный EFI-раздел (lsblk -f покажет FAT32):


mount /dev/sda1 /boot/efi


6️⃣ Выходим и перезагружаемся


exit
sudo reboot


Если все сделано правильно система загрузится снова.

⚠️ Полезные советы

Если после восстановления GRUB старая windows не отображается, выполните:


os-prober && update-grub


Если GRUB ставится, но меню не появляется, включите отображение:


GRUB_TIMEOUT_STYLE=menu


При поврежденном ядре можно вручную выбрать старое в меню Advanced options.

#linux #grub

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍122🔥1
👒 Легкий TCP/UDP туннель поверх HTTP

Хочу поделиться полезным инструментом, который часто упоминают в контексте пентестов, но который одинаково удобен и администраторам: Chisel. Это один бинарник (на Go) и для сервера, и для клиента доступный для linux, windows, macOS. Работает поверх HTTP, поэтому его очень просто поднять там, где открыт веб-порт.

▪️ Коротко, зачем нужно:

▪️быстро организовать SOCKS5-прокси через открытую HTTP/HTTPS точку;
▪️поднять обратный туннель (reverse) с защищённого хоста, который не доступен извне;
▪️пробросить локальный порт на удалённый хост по HTTP, когда прямой доступ заблокирован.

▪️ Примеры (общая схема)

1️⃣ Быстрый SOCKS5-прокси. На сервере (с публичным IP, порт 80/443 доступен):


./chisel server --port 80 --socks5


На клиенте (локальная машина, откуда хотите выходить в интернет через сервер):


./chisel client http://server.example.com:80 socks


После этого в браузере можно указать SOCKS5 proxy 127.0.0.1:1080, трафик пойдет через сервер.

2️⃣ Обратный SSH-туннель (клиент инициирует соединение, сервер принимает). Если целевая (закрытая) машина не доступна извне, но может инициировать исходящее HTTP-соединение:
На публичном сервере:


./chisel server --port 80 --reverse


На внутреннем хосте (тот, к которому хотим подключиться):


./chisel client http://server.example.com:80 R:2222:localhost:22


Теперь на публичном сервере можно подключиться к внутреннему хосту:


ssh -p 2222 root@127.0.0.1


3️⃣ Проброс локального сервиса (например, MySQL на сервере) на клиент. На публичном сервере запускаем с --reverse. На внутреннем клиенте даем правило:


./chisel client http://server.example.com:80 33306:127.0.0.1:3306


После этого на клиенте MySQL будет доступен локально на порту 33306.

▪️ Дополнительно

Аутентификация: есть опция --auth user:pass и на сервере, и на клиенте, используйте для защиты туннеля.

Маскировка: --backend позволяет прятать chisel-сервер за обычным веб-сервером (перенаправлять чужие HTTP-запросы), что облегчает развертывание в средах с ограничениями.

Один бинарник, удобно распространять и для разных ОС.

#network #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍122
👀 Шпаргалка: куда делось свободное место

Полезное напоминание в преддверии новогодних праздников - проверить бэкапы и свободное место 🤔 Я лишь поделюсь небольшой шпаргалкой, по которой можно определить куда делось свободное место, если в какой-то момент оно вдруг исчезло.

▪️ Проверяем общий объём занятых данных


df -h


▪️ Выясняем, какие директории занимают больше всего. Самый простой вариант:


du -h -d 1 / | sort -hr
du -hs /* | sort -hr


Ограничиваем вывод:


du -h -d 1 / | sort -hr | head -10


Топ 20 самых объемных директорий:


du -hcx --max-depth=6 / | sort -rh | head -n 20


Топ 20 самых больших файлов:


find / -mount -ignore_readdir_race -type f -exec du -h "{}" + 2>&1 \
| sort -rh | head -n 20


▪️ Проверяем inodes (иногда забиваются они)


df -ih


▪️ Ищем удаленные, но все еще открытые файлы. Если du показывает меньше, чем df, виноваты могут быть процессы, держащие удалённые файлы:


lsof | grep '(deleted)'
lsof +L1


Если видите большие файлы - перезапустите сервис или убейте зависший процесс:


kill -9 <pid>


▪️ Проверяем точки монтирования

Классическая ловушка: данные пишутся в /mnt/backup, но диск в момент копирования не смонтирован. Файлы падают на корневую ФС, а после монтирования становятся невидимыми, но место продолжают занимать.

Если суммарный размер файлов меньше занятого места, а удаленных файлов нет, то почти наверняка проблема в такой ложной точке монтирования.

#linux #storage

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥3
🏠 Windows Firewall: как включить логирование и понять, что именно он блокирует

Встроенный брандмауэр windows по умолчанию не пишет логи о входящих и исходящих соединениях, которые он блокирует. Из-за этого сложно понять, кто виноват: само приложение, сеть или firewall. Многие в такой ситуации просто отключают защиту целиком, но это плохая практика.

Куда правильнее включить логирование DROP-пакетов, посмотреть, что именно блокируется (порт, IP, протокол), и уже после этого создать точечное правило.

▪️ Логирование в текстовый файл. Самый простой способ - это включить запись в стандартный лог:


Set-NetFireWallProfile -Profile Public `
-LogBlocked True `
-LogMaxSize 20480 `
-LogFileName "%systemroot%\system32\LogFiles\Firewall\pfirewall.log" `
-Verbose


После включения логи будут появляться в файле pfirewall.log. В них видно источник, порт, направление и действие (DROP/ALLOW).

▪️Логирование в Event Viewer. Иногда удобнее смотреть блокировки прямо в журнале событий Windows: фильтрация, сортировка и быстрый поиск куда приятнее, чем анализ текста. Активируем аудит:


Auditpol /set /category:"System" /SubCategory:"Filtering Platform Packet Drop" /failure:enable


После этого записи о блокировках появятся в: Event Viewer → Windows Logs → Security

#windows #firewall

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍182
This media is not supported in your browser
VIEW IN TELEGRAM
Дедлайн Новый год стучится в дверь! 😊

Я думаю, что все устали и всем пора отдыхать, набираться сил. Все дедлайны позади, а о будущих думать пока не стоит! 😊

Я пожелаю Вам хороших каникул, счастья, здоровья, поменьше выгорания и успехов в новом году! 😊

С наступающим, 2026! 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
😁10🍾9💩32
🖥 Small HTTP Server

Small HTTP Server - программа родом из эпохи Windows 95 и NT, но до сих пор развивается. Написана на C++, невероятно компактная - установщик весит всего около 1 МБ.

▪️ Что умеет Small HTTP Server?

▪️ HTTP-сервер: поддерживает CGI/FastCGI, ISAPI, запуск внешних интерпретаторов (PHP, Perl и т.д.), виртуальные хосты и директории. Можно использовать как полноценный небольшой веб-сервер.

▪️ Почтовый сервер POP3/SMTP: фильтры антиспама, чёрные/белые/серые списки, переотправка писем, запуск скриптов для обработки входящей почты, интеграция с внешними антивирусами.

▪️ FTP-сервер: с виртуальными каталогами и базовым управлением пользователями.

▪️ HTTP-proxy: работает с HTTP/HTTPS/FTP, умеет докачивать файлы, кешировать контент, запрашивать сжатые данные и распаковывать их на лету (через zlib).

▪️ DNS-сервер: поддерживает рекурсивные запросы, кеширование, DNSBL, DoH (RFC8484), а также интересную функцию: если удалённый сервис не отвечает, сервер может автоматически подменять IP-адрес на резервный.

▪️ DHCP-сервер: простой, но рабочий.

▪️ HTTP-TLS VPN: есть свой мини-VPN, использующий OpenVPN TAP-драйвер. И сервер, и клиент.

▪️ Интерфейс и работа

Программа доступна под Windows, Linux и ARM, отличный вариант для маломощных одноплатников.

Все службы настраиваются через удобный веб-интерфейс со статистикой. Конфигурация хранится в обычном текстовом файле. На Windows сервер запускается просто запуском EXE, по умолчанию работает как файловый листинг каталога. Можно установить как службу.

#utils

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍152🔥2
🧑‍💻 Docker шпаргалка для ежедневной работы

▪️ Установка Docker


curl -o - https://get.docker.com | bash -


▪️ Работа с контейнерами

Запустить контейнер как службу (автостарт, проброс порта)


docker run -d -p 80:80 --restart always --name nginx-proxy nginx


Список контейнеров


docker ps # только запущенные
docker ps -a # все


Удаление контейнера


docker rm nginx-proxy # остановленного
docker rm -f nginx-proxy # принудительно


Остановить и удалить все контейнеры


docker stop $(docker ps -aq)
docker rm $(docker ps -aq)


▪️ Работа с образами

Просмотр и удаление


docker images
docker rmi nginx # удалить один
docker rmi $(docker images -aq) # удалить все


▪️ Внутри контейнера

Вход в bash


docker exec -it nginx-proxy bash


Логи


docker logs nginx-proxy
docker logs -n 100 nginx-proxy
docker logs -f nginx-proxy


Запущенные процессы


docker top nginx-proxy


▪️ Диагностика и мониторинг

Статистика ресурсов


docker stats nginx-proxy
docker stats prometheus exporter
docker stats prometheus --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"


Информация о контейнере


docker inspect nginx-proxy
docker inspect -f '{{ .NetworkSettings.Networks.bridge.IPAddress }}' nginx-proxy
docker inspect --format '{{json .Mounts}}' grafana | jq .


Проверить занимаемое место


docker system df


Очистить мусор


docker system prune


▪️ Работа с файлами

Копирование файлов


docker cp nginx-proxy:/etc/nginx/nginx.conf ~/nginx
docker cp ~/nginx/nginx.conf nginx-proxy:/etc/nginx


Экспорт файловой системы контейнера


docker export nginx-proxy -o ~/nginx-proxy.tar.gz


#docker

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
✍️ Быстрый способ выпустить свой HTTPS-сертификат через собственный CA

Сегодня почти любой сервис требует HTTPS. Даже если ресурс локальный или временный, браузеры без сертификата засыпают предупреждениями. Если нет внешнего доступа для Lets Encrypt, приходится копировать сертификаты вручную или постоянно продлевать их.

Гораздо удобнее выпустить свой корневой CA, добавить его в доверенные и генерировать сертификаты под любые домены/IP с любым сроком (хоть на 9999 дней). Покажу, как сделать это для Nginx.

В примере выпускаем сертификат для домена zabbix.internal и IP 192.168.77.55.

1️⃣ Создаем свой CA


mkdir ~/tls && cd ~/tls
openssl ecparam -out myCA.key -name prime256v1 -genkey
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 9999 -out myCA.crt


На вопросы можно отвечать что угодно, это локальный CA.

2️⃣ Генерируем ключ и CSR для сервера


openssl genrsa -out zabbix.internal.key 2048
openssl req -new -key zabbix.internal.key -out zabbix.internal.csr


3️⃣ Создаем файл расширений


mcedit zabbix.internal.ext


Добавляем:


authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
IP.1 = 192.168.77.55
DNS.1 = zabbix.internal


4️⃣ Выпускаем сертификат


openssl x509 -req -in zabbix.internal.csr -CA myCA.crt -CAkey myCA.key \
-CAcreateserial -out zabbix.internal.crt -days 9999 -sha256 -extfile zabbix.internal.ext


5️⃣ Копируем сертификаты в nginx


mkdir /etc/nginx/certs
cp zabbix.internal.crt /etc/nginx/certs/
cp zabbix.internal.key /etc/nginx/certs/


Создаем DH-параметры:


openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048


6️⃣ Настраиваем виртуальный хост nginx


listen 443 http2 ssl;
server_name zabbix.internal 192.168.77.55;
ssl_certificate /etc/nginx/certs/zabbix.internal.crt;
ssl_certificate_key /etc/nginx/certs/zabbix.internal.key;
ssl_dhparam /etc/ssl/certs/dhparam.pem;


Перезапуск:


nginx -t
nginx -s reload


7️⃣ Делаем CA доверенным

Передайте файл myCA.crt на свой ПК и добавьте в хранилище доверенных сертификатов.

Если нужно доверить CA прямо на Debian:


cp myCA.crt /usr/local/share/ca-certificates/
update-ca-certificates


Теперь можно заходить на сайт по доменному имени или IP, браузер будет полностью доверять сертификату.

#webserver

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍1
🔓 Ansible Vault: хранение секретов и паролей

Если вы работаете с Ansible, рано или поздно возникает вопрос: куда девать пароли, ключи, токены и прочее? Хранить их в открытом виде в репозитории - явно плохая идея. Для этого существует Ansible Vault - встроенный механизм шифрования файлов и переменных.

Vault позволяет безопасно хранить секреты прямо в плейбуках или отдельных файлах, а ansible будет расшифровывать их при выполнении. Все просто, удобно и без лишних зависимостей.

▪️ Шифруем файл. Создадим защищенный файл с переменными:


ansible-vault create secrets.yml


Откроется редактор, куда можно вписать переменные, например:


db_user: admin
db_pass: S3cretP@ss


Файл автоматически сохранится в зашифрованном виде.

▪️ Редактируем зашифрованный файл


ansible-vault edit secrets.yml


▪️ Расшифровка при необходимости. Если нужно временно получить обычный текст:


ansible-vault decrypt secrets.yml


И обратно:


ansible-vault encrypt secrets.yml


▪️ Использование в плейбуках. Зашифрованный файл подключается как обычно:


vars_files:
- secrets.yml


А запуск плейбука выглядит так:


ansible-playbook site.yml --ask-vault-pass


▪️ Частичное шифрование (опционально). Можно зашифровать только нужные переменные:


ansible-vault encrypt_string 'P@ssw0rd!' --name 'db_pass'


#ansible

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8