Security
25 страницисправление утечек памяти в python-сервисах: диагностика и сбор дампов
Python-сервисы под нагрузкой могут silently расходовывать память до hitting cgroup limit и OOM-kill. Без систематического сбора дампов и интроспекции root-cause hunt превращается в перебор гипотез. Ниже — проверенный набор команд и скриптов для …
Python-сервисы под нагрузкой могут silently расходовывать память до hitting cgroup limit и OOM-kill. Без систематического сбора дампов и интроспекции root-cause hunt превращается в перебор гипотез. Ниже — проверенный набор команд и скриптов для …
Лучшие практики SSH-ключей
SSH-ключи являются де-факто стандартом аутентификации в инфраструктуре, но их неправильное управление превращает каждый деплой в потенциальную уязвимость. В этой заметке собраны проверенные практики: от генерации ключей до их отзыва и ротации без …
SSH-ключи являются де-факто стандартом аутентификации в инфраструктуре, но их неправильное управление превращает каждый деплой в потенциальную уязвимость. В этой заметке собраны проверенные практики: от генерации ключей до их отзыва и ротации без …
Создание пользователя, роли в Kubernetes и их связка через RBAC
В Kubernetes нет отдельных «пользователей» в классическом смысле — есть ServiceAccount’ы и сертификаты, привязанные к ролям через RBAC. Без правильной настройки любой, у кого есть kubeconfig, получает доступ ко всему кластеру. Ниже — полный цикл: …
В Kubernetes нет отдельных «пользователей» в классическом смысле — есть ServiceAccount’ы и сертификаты, привязанные к ролям через RBAC. Без правильной настройки любой, у кого есть kubeconfig, получает доступ ко всему кластеру. Ниже — полный цикл: …
Sudoers: NOPASSWD без дыр
Почему NOPASSWD + ALL — это не решение, а дыра %admin ALL=(ALL) NOPASSWD: ALL — самая частая ошибка в sudoers. Пользователь получает неограниченный root-доступ без пароля. Любой скрипт, любая утилита, любая уязвимость в окружении пользователя …
Почему NOPASSWD + ALL — это не решение, а дыра %admin ALL=(ALL) NOPASSWD: ALL — самая частая ошибка в sudoers. Пользователь получает неограниченный root-доступ без пароля. Любой скрипт, любая утилита, любая уязвимость в окружении пользователя …
scp — передача файлов по SSH
scp — утилита для копирования файлов по SSH поверх протокола SSH. Работает из терминала, не требует настройки сервера сверху — достаточно работающего sshd и авторизации. В эпоху rsync и bat SCP живёт как простой инструмент для разовых передач, когда …
scp — утилита для копирования файлов по SSH поверх протокола SSH. Работает из терминала, не требует настройки сервера сверху — достаточно работающего sshd и авторизации. В эпоху rsync и bat SCP живёт как простой инструмент для разовых передач, когда …
curl --resolve и SNI: проверка виртуального хоста без /etc/hosts
Когда нужно проверить виртуальный хост на конкретном IP, но править /etc/hosts нет желания — ни из-за прав, ни из-за конфликтов с другими сервисами — curl --resolve решает обе задачи: подменяет DNS-запись и корректно отправляет SNI в TLS-хендшейке. …
Когда нужно проверить виртуальный хост на конкретном IP, но править /etc/hosts нет желания — ни из-за прав, ни из-за конфликтов с другими сервисами — curl --resolve решает обе задачи: подменяет DNS-запись и корректно отправляет SNI в TLS-хендшейке. …
nftables: базовый набор правил
Примечание Все команды проверены на Debian/Ubuntu с пакетом nftables и на RHEL/CentOS 8+. На старых системах может потребоваться apt install nftables или yum install nftables. nftables пришёл на смену iptables, но документация по базовому набору …
Примечание Все команды проверены на Debian/Ubuntu с пакетом nftables и на RHEL/CentOS 8+. На старых системах может потребоваться apt install nftables или yum install nftables. nftables пришёл на смену iptables, но документация по базовому набору …
fail2ban: jail для sshd
Защита SSH от брутфорса — один из первых шагов при укреплении сервера. fail2ban сканирует логи, находит повторные неудачные попытки входа и блокирует источник через iptables или nftables. В заметке разберём jail для sshd: от установки до тонкой …
Защита SSH от брутфорса — один из первых шагов при укреплении сервера. fail2ban сканирует логи, находит повторные неудачные попытки входа и блокирует источник через iptables или nftables. В заметке разберём jail для sshd: от установки до тонкой …
pipx: изолированные Python-утилиты без боли
pipx решает простую, но хроническую проблему: когда нужно запустить Python-утилиту однажды или разово, а pip install засоряет глобальное окружение или требует виртуальное окружение, которое потом забываешь удалить. pipx создаёт изолированное venv для …
pipx решает простую, но хроническую проблему: когда нужно запустить Python-утилиту однажды или разово, а pip install засоряет глобальное окружение или требует виртуальное окружение, которое потом забываешь удалить. pipx создаёт изолированное venv для …
Создание своего SSH-бастион-сервера
Зачем нужен бастион и где он живёт Бастион — единственная точка входа в приватный сегмент сети. Вместо того чтобы открывать SSH на каждом сервере из интернета, вы пускаете трафик через один хост, на котором настроена жёсткая политика доступа. …
Зачем нужен бастион и где он живёт Бастион — единственная точка входа в приватный сегмент сети. Вместо того чтобы открывать SSH на каждом сервере из интернета, вы пускаете трафик через один хост, на котором настроена жёсткая политика доступа. …
Rsync: бэкап каталога по SSH
Rsync: бэкап каталога по SSH Классический способ переложить каталог на удалённую машину — rsync поверх SSH. Не нужно открывать дополнительных портов, трафик шифруется, а сам инструмент умеет докачивать изменения и сохранять метаданные. Одна команда — …
Rsync: бэкап каталога по SSH Классический способ переложить каталог на удалённую машину — rsync поверх SSH. Не нужно открывать дополнительных портов, трафик шифруется, а сам инструмент умеет докачивать изменения и сохранять метаданные. Одна команда — …
ProxyJump и bastion-хосты через ~/.ssh/config
Иногда сервер живет в приватной сети, без публичного IP. Единственная точка входа — bastion host с белым адресом. Руками набирать ssh -J user@bastion user@private каждый раз — лишняя боль. Разберу, как настроить всё через ~/.ssh/config, чтобы ходить …
Иногда сервер живет в приватной сети, без публичного IP. Единственная точка входа — bastion host с белым адресом. Руками набирать ssh -J user@bastion user@private каждый раз — лишняя боль. Разберу, как настроить всё через ~/.ssh/config, чтобы ходить …
OpenSSL: проверка и разбор TLS-сертификатов в CLI
Уже забыли, когда последний раз сертификат на проде протухал неожиданно? Знакомо. OpenSSL умеет отвечать на вопросы о TLS-сертификатах быстрее, чем любой чекер из маркетплейса. Разбираем ключевые сценарии без воды. Базовый разбор сертификата Первая …
Уже забыли, когда последний раз сертификат на проде протухал неожиданно? Знакомо. OpenSSL умеет отвечать на вопросы о TLS-сертификатах быстрее, чем любой чекер из маркетплейса. Разбираем ключевые сценарии без воды. Базовый разбор сертификата Первая …
systemd-run: запуск сервиса без unit-файла
Иногда нужно быстро поднять процесс под systemd, но писать unit-файл и класть его в /etc/systemd/system лень или нельзя — контейнер без systemd, чужая машина, временный запуск. На этот случай есть systemd-run. Зачем systemd-run Инструмент создает …
Иногда нужно быстро поднять процесс под systemd, но писать unit-файл и класть его в /etc/systemd/system лень или нельзя — контейнер без systemd, чужая машина, временный запуск. На этот случай есть systemd-run. Зачем systemd-run Инструмент создает …
sshd_config: минимум для стенда
SSH-доступ к стенду обычно открывают по-быстрому, а потом удивляются брутфорсу в логах. Базовый sshd_config, который отсекает типовые проблемы, укладывается в пять параметров и двадцать минут. Зачем менять умолчания Дистрибутивные sshd идут с …
SSH-доступ к стенду обычно открывают по-быстрому, а потом удивляются брутфорсу в логах. Базовый sshd_config, который отсекает типовые проблемы, укладывается в пять параметров и двадцать минут. Зачем менять умолчания Дистрибутивные sshd идут с …
logrotate: автоматическая ротация и архивация логов
Логи приложений забивают диск за неделю, а rm *.log вручную — путь к проблемам. logrotate решает это сам: ротирует, сжимает и удаляет старые файлы по расписанию. Разберёмся, как это работает и как настроить за пять минут. Как это устроено logrotate …
Логи приложений забивают диск за неделю, а rm *.log вручную — путь к проблемам. logrotate решает это сам: ротирует, сжимает и удаляет старые файлы по расписанию. Разберёмся, как это работает и как настроить за пять минут. Как это устроено logrotate …
auditd: логирование доступа к файлам и вызовам
Linux не пишет в syslog факт каждого обращения к /etc/shadow или вызова unlink. Для расследования инцидентов и compliance это критично. auditd решает эту задачу: подсистема ядра Linux Audit, которая фиксирует системные вызовы, доступ к файлам и не …
Linux не пишет в syslog факт каждого обращения к /etc/shadow или вызова unlink. Для расследования инцидентов и compliance это критично. auditd решает эту задачу: подсистема ядра Linux Audit, которая фиксирует системные вызовы, доступ к файлам и не …
nftables: современный firewall для Linux-сервера
Предупреждение Перед работой с nftables убедитесь, что есть физический или console-доступ к серверу. Ошибочная цепочка input может заблокировать SSH и отсечь от машины. nftables пришёл на смену iptables в ядре Linux начиная с версии 3.13. Если вы …
Предупреждение Перед работой с nftables убедитесь, что есть физический или console-доступ к серверу. Ошибочная цепочка input может заблокировать SSH и отсечь от машины. nftables пришёл на смену iptables в ядре Linux начиная с версии 3.13. Если вы …
SSH Config: wildcards и подстановка переменных
SSH-клиент читает ~/.ssh/config строчку за строчкой, но без переменных файл быстро превращается в копипасту. Разбираю, как Host *, Match exec и подстановки %h, %r, %l сокращают конфиг в разы и закрывают реальные сценарии — от динамической …
SSH-клиент читает ~/.ssh/config строчку за строчкой, но без переменных файл быстро превращается в копипасту. Разбираю, как Host *, Match exec и подстановки %h, %r, %l сокращают конфиг в разы и закрывают реальные сценарии — от динамической …
kubectl whoami и проверка прав сервис-аккаунта
При деплое приложения в Kubernetes самая частая ошибка — сервис-аккаунт не может сделать то, что должен. Permission denied при создании секрета, запрет на list pods, отказ на update. kubectl whoami и kubectl auth can-i позволяют быстро понять, кто …
При деплое приложения в Kubernetes самая частая ошибка — сервис-аккаунт не может сделать то, что должен. Permission denied при создании секрета, запрет на list pods, отказ на update. kubectl whoami и kubectl auth can-i позволяют быстро понять, кто …
cockpit-ufw-module: Uncomplicated Firewall в Cockpit
UFW на домашнем или небольшом сервере обычно настраивают по SSH: ufw status numbered, затем ufw allow 443/tcp. cockpit-ufw-module закрывает тот же цикл в браузере: пакет, статус, политики, правила. Это одна из панелей группы cockpit-modules — пункт …
UFW на домашнем или небольшом сервере обычно настраивают по SSH: ufw status numbered, затем ufw allow 443/tcp. cockpit-ufw-module закрывает тот же цикл в браузере: пакет, статус, политики, правила. Это одна из панелей группы cockpit-modules — пункт …
SSH-сертификаты вместо authorized_keys
authorized_keys — это классика, но когда серверов больше десятка, начинается хаос. Добавление нового разработчика превращается в ручное скачивание ключей и раскладку по десяткам машин. SSH-сертификаты решают проблему: один CA-ключ подписывает все …
authorized_keys — это классика, но когда серверов больше десятка, начинается хаос. Добавление нового разработчика превращается в ручное скачивание ключей и раскладку по десяткам машин. SSH-сертификаты решают проблему: один CA-ключ подписывает все …
cockpit-modules: веб-панели для повседневной эксплуатации
Cockpit закрывает базовое администрирование Linux из браузера: сервисы, логи, сеть, аккаунты. Для файервола, fail2ban, cron и Let’s Encrypt штатного набора уже не хватает — либо нет панели, либо она слишком общая. Группа cockpit-modules — набор …
Cockpit закрывает базовое администрирование Linux из браузера: сервисы, логи, сеть, аккаунты. Для файервола, fail2ban, cron и Let’s Encrypt штатного набора уже не хватает — либо нет панели, либо она слишком общая. Группа cockpit-modules — набор …
Свой корневой сертификат: куда его класть, чтобы ему доверяли
TLS-ошибка «сертификат не доверен» почти никогда не значит, что сертификат «сломан». Обычно сломана точка доверия: клиент смотрит не в то хранилище, куда вы положили CA. curl, openssl, Git, Python и браузер — разные клиенты. У части из них своя база …
TLS-ошибка «сертификат не доверен» почти никогда не значит, что сертификат «сломан». Обычно сломана точка доверия: клиент смотрит не в то хранилище, куда вы положили CA. curl, openssl, Git, Python и браузер — разные клиенты. У части из них своя база …
Too many authentication failures: SSH исчерпал попытки
Received disconnect from 10.0.0.5 port 22:2: Too many authentication failures и следом Permission denied (publickey) — это не «сервер сломан» и не обязательно неверный пароль. Клиент потратил лимит попыток, пока перебирал ключи из агента, и до …
Received disconnect from 10.0.0.5 port 22:2: Too many authentication failures и следом Permission denied (publickey) — это не «сервер сломан» и не обязательно неверный пароль. Клиент потратил лимит попыток, пока перебирал ключи из агента, и до …