Один из самых неприятных сценариев в проде — обновление приложения на месте. Файл уже заменился, часть кода новая, часть старая, процесс перезапустился в середине деплоя и получаем непредсказуемое состояние.
В этом посте:
• Создаём структуру релизов без Docker и сложных систем;
• Разворачиваем новую версию отдельно от текущей;
• Переключаем production на новый release одной командой;
• Делаем быстрый rollback при проблемах.
Такой подход позволяет обновлять приложения без промежуточного состояния и быстро возвращаться к предыдущей версии при необходимости.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥9❤7
Например,
Brute Force перебирает возможные комбинации пароля, а Credential Stuffing проверяет уже утёкшие учётные данные на других сервисах.На схеме — 6 распространённых техник, шпаргалка для системных администраторов и DevOps-инженеров: помогает понимать основные векторы компрометации учётных записей и учитывать их при настройке SSH, IAM, MFA и политик доступа.
Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤6👍2🤝1
Восстанавливаем удалённый файл через
Предположим, работающий сервис пишет в лог, который случайно удалили:
Найти открытые файлы с нулевым количеством жёстких ссылок можно через
Для удалённого лога вывод может выглядеть так:
Здесь
Соответствующий FD доступен через
Символическая ссылка будет указывать на уже удалённый pathname:
Хотя имени файла в каталоге уже нет, открытый файловый дескриптор всё ещё связан с файловым объектом. Пока последний такой FD не закрыт, содержимое можно скопировать через
Проверяем восстановленную копию:
При необходимости сравниваем размеры:
Это не классический
🔥 Поэтому после случайного
🚪 Linux Ready | #практика
/proc, пока процесс держит его открытым!rm удаляет имя файла из каталога, но если какой-либо процесс продолжает держать файл открытым через файловый дескриптор, данные остаются доступны до закрытия последнего такого дескриптора.Предположим, работающий сервис пишет в лог, который случайно удалили:
rm /var/log/app.log
Найти открытые файлы с нулевым количеством жёстких ссылок можно через
lsof. Опция +L1 выбирает открытые файлы, у которых link count меньше 1:sudo lsof +L1
Для удалённого лога вывод может выглядеть так:
app 4217 root 5w REG ... /var/log/app.log (deleted)
Здесь
4217 — PID процесса, 5 — номер файлового дескриптора, а w означает, что он открыт на запись.Соответствующий FD доступен через
procfs:sudo ls -l /proc/4217/fd/5
Символическая ссылка будет указывать на уже удалённый pathname:
/proc/4217/fd/5 -> /var/log/app.log (deleted)
Хотя имени файла в каталоге уже нет, открытый файловый дескриптор всё ещё связан с файловым объектом. Пока последний такой FD не закрыт, содержимое можно скопировать через
/proc:sudo cp /proc/4217/fd/5 /tmp/app.log.recovered
Проверяем восстановленную копию:
ls -lh /tmp/app.log.recovered
При необходимости сравниваем размеры:
sudo stat /proc/4217/fd/5
stat /tmp/app.log.recovered
Это не классический
undelete — cp создаёт новый файл с новым inode и копирует доступное содержимое. Если процесс продолжает запись, копия не гарантирует консистентный snapshot. Доступ через /proc/<PID>/fd/<FD> также может быть ограничен правами и настройками системы. Восстановить данные нужно до закрытия последнего FD: после этого при нулевом link count ядро сможет освободить inode и блоки файла.rm активного файла не спешите перезапускать процесс — сначала проверьте: sudo lsof +L1. Пока FD открыт, данные ещё могут быть доступны через /proc/<PID>/fd/<FD>.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤9👍7🤝2
Если файлы находятся на другом сервере, необязательно постоянно переносить их через
scp или rsync. SSHFS позволяет смонтировать удалённый каталог через SSH и работать с ним привычными Linux-командами как с локальной файловой системой.В этом посте:
• Монтируем каталог удалённого сервера через SSH;
• Работаем с удалёнными файлами через grep, find и tail;
• Настраиваем переподключение при разрыве соединения;
• Ограничиваем доступ режимом только для чтения.
SSHFS особенно удобен, когда нужно быстро подключить удалённое дерево файлов к локальным инструментам без настройки отдельного файлового сервера.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤5🔥5🤝3
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥1🤝1
Проверяем состояние соединений через conntrack!
Linux firewall работает не только с отдельными пакетами. Подсистема Netfilter connection tracking ведёт таблицу отслеживаемых соединений, в которой хранится состояние TCP, UDP и других потоков. Это полезно при диагностике NAT, firewall и асимметричной маршрутизации.
Установим утилиту для работы с таблицей conntrack:
Текущие соединения можно вывести через
(адреса в примерах документационные — при повторении замените их на свои)
Для TCP-запись содержит состояние соединения, а также параметры исходного и обратного направлений. На узле, выполняющем NAT, по различиям между ними можно определить преобразование адресов и портов:
При диагностике удобнее наблюдать события в реальном времени.
Фильтр можно ограничить адресом и портом назначения:
Состояние таблицы важно контролировать на загруженных шлюзах:
Если
Время хранения записи для установленного TCP-соединения можно проверить отдельно:
Удалять записи вручную следует только при понимании последствий. Для удаления конкретного TCP-потока укажем параметры его исходного направления:
🔥
🚪 Linux Ready | #практика
Linux firewall работает не только с отдельными пакетами. Подсистема Netfilter connection tracking ведёт таблицу отслеживаемых соединений, в которой хранится состояние TCP, UDP и других потоков. Это полезно при диагностике NAT, firewall и асимметричной маршрутизации.
Установим утилиту для работы с таблицей conntrack:
sudo apt update && sudo apt install conntrack -y
Текущие соединения можно вывести через
-L и сразу отфильтровать по протоколу и адресу назначения:sudo conntrack -L -p tcp --dst 203.0.113.10
(адреса в примерах документационные — при повторении замените их на свои)
Для TCP-запись содержит состояние соединения, а также параметры исходного и обратного направлений. На узле, выполняющем NAT, по различиям между ними можно определить преобразование адресов и портов:
tcp 6 431999 ESTABLISHED
src=10.0.0.20 dst=203.0.113.10 sport=52144 dport=443
src=203.0.113.10 dst=198.51.100.5 sport=443 dport=52144
При диагностике удобнее наблюдать события в реальном времени.
conntrack может выводить создание, обновление и удаление записей по мере прохождения трафика:sudo conntrack -E -p tcp
Фильтр можно ограничить адресом и портом назначения:
sudo conntrack -E -p tcp \
--dst 203.0.113.10 \
--dport 443
Состояние таблицы важно контролировать на загруженных шлюзах:
sysctl net.netfilter.nf_conntrack_count
sysctl net.netfilter.nf_conntrack_max
Если
nf_conntrack_count приближается к nf_conntrack_max, таблица близка к заполнению. При переполнении новые соединения могут перестать нормально отслеживаться, а в журнале ядра обычно появляются сообщения conntrack:journalctl -k -g 'nf_conntrack'
Время хранения записи для установленного TCP-соединения можно проверить отдельно:
sysctl net.netfilter.nf_conntrack_tcp_timeout_established
Удалять записи вручную следует только при понимании последствий. Для удаления конкретного TCP-потока укажем параметры его исходного направления:
sudo conntrack -D -p tcp \
--src 10.0.0.20 \
--dst 203.0.113.10 \
--sport 52144 \
--dport 443
conntrack позволяет увидеть состояние соединения с точки зрения Netfilter, включая оба направления потока и результат NAT. Это полезный уровень диагностики между tcpdump и анализом правил nftables.Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥7👍5
В этом посте собраны основные команды SSH для безопасной работы с удалёнными серверами. Рассмотрены подключение к серверу, генерация и установка SSH-ключей, выбор приватного ключа, подключение через нестандартный порт, создание локальных SSH-туннелей и работа через Jump Host. Полезно для администрирования серверов, безопасного доступа и работы с закрытой инфраструктурой.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍8🤝5❤1
🎓 Как гарантированно войти в сферу кибербезопасности с официальным дипломом?
Самостоятельное обучение в ИБ - это месяцы хаоса и разрозненных роликов с YouTube. Покупка курсов по отдельности на популярных платформах легко переваливает за 300 000 ₽.
🔥CyberYozh Academy собрали цельный карьерный трек в один пак: 5 фундаментальных программ + официальный Диплом системного администратора за 50 000 ₽ (вместо ~250 000 ₽)
Что входит в программу:
▪️ Linux CyberPunk - системное администрирование с выдачей диплома, открывающего двери в корпоративный сектор.
▪️ SQL для хакера - глубокое понимание архитектуры баз данных и векторов атак.
▪️ HackerPoint - продвинутый уровень пентеста и анализа уязвимостей.
▪️ HackerPoint (Blue vs Red Team) - база сетевой безопасности, защиты и атак.
▪️ AI-помощники на Python - автоматизация рутины безопасника при помощи нейросетей.
Вы получаете законченную квалификацию: от администрирования защищенных облачных решений до проведения тестов на проникновение.
⚠️ Обратите внимание: Из-за персональной проверки заданий и официального оформления дипломов на каждый поток действует жесткий лимит - не более 15 мест.
🦔 Отправь промокод
👉@cyacademy_support
Самостоятельное обучение в ИБ - это месяцы хаоса и разрозненных роликов с YouTube. Покупка курсов по отдельности на популярных платформах легко переваливает за 300 000 ₽.
🔥CyberYozh Academy собрали цельный карьерный трек в один пак: 5 фундаментальных программ + официальный Диплом системного администратора за 50 000 ₽
Что входит в программу:
▪️ Linux CyberPunk - системное администрирование с выдачей диплома, открывающего двери в корпоративный сектор.
▪️ SQL для хакера - глубокое понимание архитектуры баз данных и векторов атак.
▪️ HackerPoint - продвинутый уровень пентеста и анализа уязвимостей.
▪️ HackerPoint (Blue vs Red Team) - база сетевой безопасности, защиты и атак.
▪️ AI-помощники на Python - автоматизация рутины безопасника при помощи нейросетей.
Вы получаете законченную квалификацию: от администрирования защищенных облачных решений до проведения тестов на проникновение.
⚠️ Обратите внимание: Из-за персональной проверки заданий и официального оформления дипломов на каждый поток действует жесткий лимит - не более 15 мест.
LinuxReady в чат с менеджером, чтобы закрепить за собой скидку и узнать подробности: 👉@cyacademy_support
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
В Linux можно копировать собранные файлы так, чтобы не менять файл назначения, если новая версия фактически такая же!
Для этого у
Перед установкой
Это принципиально отличается от обычного копирования поверх файла:
Даже если результат сборки идентичен предыдущему, лишняя перезапись может изменить метаданные файла и запустить всё, что следит за его изменением.
С
Причём
🔥
🚪 Linux Ready | #совет
Для этого у
GNU install есть опция -C (--compare):install -C -m 0755 ./build/myapp ./bin/myapp
Перед установкой
install сравнит исходный и существующий файлы. Если содержимое и заданные атрибуты совпадают, файл назначения вообще не будет изменён.Это принципиально отличается от обычного копирования поверх файла:
cp ./build/myapp ./bin/myapp
Даже если результат сборки идентичен предыдущему, лишняя перезапись может изменить метаданные файла и запустить всё, что следит за его изменением.
С
install -C это удобно убрать прямо из Makefile или скрипта локального развёртывания:install -C -m 0755 build/myapp /usr/local/bin/myapp
Причём
install одновременно умеет выставлять права, поэтому отдельный chmod после копирования не требуется:install -C -m 0644 config.ini /etc/myapp/config.ini
install -C полезен там, где одна и та же сборка устанавливается много раз: неизменившийся файл остаётся нетронутым, а копирование и выставление прав сводятся к одной команде.Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤7🤝4🔥2