Admin Guides | Сисадмин
11.4K subscribers
1.23K photos
19 videos
34 files
558 links
Обучающий канал по ОС Linux & Windows для начинающих и действующих администраторов.

Админ, реклама: @Ak_Mihail
Биржа: https://telega.in/c/admguides

РКН: https://kurl.ru/nQejS
Download Telegram
💬 Вопрос на собеседовании для DevOps-инженера

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Что такое sidecar-контейнер в архитектуре Kubernetes и зачем он нужен?

Ответ: Sidecar — это дополнительный контейнер, который запускается вместе с основным контейнером в одном Pod’е и дополняет его функциональность. Sidecar используется для расширения возможностей приложения без изменения его кода.

Например, sidecar может обеспечивать логирование, проксирование трафика, обновление конфигурации, сбор метрик или управление сертификатами. Такой подход помогает реализовать принципы микросервисной архитектуры и повышает модульность и масштабируемость систем.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93🔥3
Генерация конфигов с помощью Jinja2 и Python

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

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


Что такое Jinja2?

Jinja2 — это мощный шаблонизатор на Python, который позволяет создавать текстовые файлы (конфиги, скрипты, HTML) с переменными, условиями, циклами и фильтрами.

Ты пишешь шаблон с «плейсхолдерами», а Python-скрипт подставляет нужные значения.

Как это помогает?
Пишешь один шаблон конфигурации с параметрами вместо множества почти идентичных файлов.
Легко генерируешь конфиги с учётом особенностей каждого сервера или сервиса.
Можно интегрировать с системами управления (Ansible, Salt) или запускать автономно.

Шаблон nginx.conf.j2:

server {
listen {{ port }};
server_name {{ server_name }};

location / {
proxy_pass https://{{ backend }};
}
}


Python-скрипт для генерации:

from jinja2 import Environment, FileSystemLoader

env = Environment(loader=FileSystemLoader('./templates'))
template = env.get_template('nginx.conf.j2')

data = {
'port': 80,
'server_name': 'example.com',
'backend': '127.0.0.1:8080'
}

output = template.render(data)

with open('nginx.conf', 'w') as f:
f.write(output)
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍3👎1
Вышел Tails 6.18

В июле 2025 года вышла новая версия дистрибутива Tails 6.18 — системы для анонимного выхода в интернет на базе Debian 12 с рабочим столом GNOME 43.

Tails загружается с LiveCD/USB, все соединения идут через Tor, а неанонимный трафик блокируется.


В обновлении добавили поддержку сетевых мостов через WebTunnel — транспорта, имитирующего обычный веб-трафик для обхода блокировок, где obfs4 не работает. Также обновлены Tor Browser и Thunderbird.

Ранее проект успешно прошёл аудит безопасности — критических уязвимостей не обнаружено.
8👍3
Использование USB Rubber Ducky для автоматизации рутинных задач (и безопасности!)

USB Rubber Ducky — устройство, которое выглядит как обычная флешка, но при подключении имитирует клавиатуру и быстро вводит заранее запрограммированные команды.

Часто его ассоциируют с атаками, но он может стать мощным инструментом для легальной автоматизации.


Как использовать легально и с пользой?
Автоматизация стандартных задач: установка софта, настройка окружения, сбор логов.
Быстрая смена конфигураций на нескольких машинах без ручного ввода.
Помощь при восстановлении доступа, если нужно быстро выполнить сложную последовательность команд.
Демонстрация угроз безопасности и обучение сотрудников защите от подобных атак.

Пример простого скрипта для Rubber Ducky (DuckyScript):

DELAY 1000
GUI r
DELAY 500
STRING powershell -NoProfile -Command "Get-EventLog -LogName System -Newest 20"
ENTER


Этот скрипт откроет окно «Выполнить» в Windows и быстро выведет последние системные логи
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥63👍3👎1
Как можно отследить, какой процесс занимает порт TCP 8080?
Anonymous Quiz
8%
tcpdump port 8080
20%
ps aux | grep 8080
63%
netstat -tnp | grep 8080
8%
lsof /dev/tcp/8080
🗿10👍4😁32🔥1
💬 Вопрос на собеседовании для сисадмина

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Что такое HugeTLB и чем он отличается от Transparent Huge Pages (THP) в Linux?

Ответ: HugeTLB — это механизм в Linux, позволяющий вручную выделять большие страницы памяти (например, по 2 MB или 1 GB), чтобы снизить затраты на управление памятью и уменьшить TLB misses. В отличие от THP, HugeTLB требует явной настройки и не работает автоматически.

THP удобнее, так как система сама объединяет страницы, но может вызывать задержки при компактизации памяти. HugeTLB же обеспечивает более предсказуемую производительность, но требует от администратора заранее резервировать память и настраивать приложения под её использование.
Please open Telegram to view this post
VIEW IN TELEGRAM
8💊3
Подмена DNS через DHCP-опции: контролим резолвинг имен в сети без перенастройки клиентов

Иногда нужно заставить все устройства в сети использовать конкретный DNS-сервер — без ручной правки настроек на каждом клиенте. 


Один из способов — настроить DHCP-сервер так, чтобы он «подменял» DNS через опции DHCP.

Как это работает?

DHCP-клиенты получают от сервера IP-адрес, шлюз и другие параметры, включая список DNS-серверов (опция 6).

Если настроить DHCP так, чтобы он выдавал нужный IP DNS-сервера, клиенты начнут использовать его автоматически.

Пример настройки DHCP-сервера ISC DHCPd для подмены DNS:

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.53;
}


Здесь клиентам будет раздаваться DNS с IP 192.168.1.53 (например, локальный DNS-сервер или фильтр).

Ограничения и нюансы:
Некоторые устройства или ОС игнорируют DHCP-опцию 6 и используют жестко прописанные DNS.
На Wi-Fi часто есть свои DHCP или DNS-релеи, учитывайте это.
В некоторых случаях можно комбинировать с DHCP-опцией 252 (WPAD) для автоматической настройки прокси.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍76
Microsoft выявила кибератаку с ВПО под видом антивируса Касперского

Microsoft сообщила об атаке группы Turla на иностранные посольства в Москве.

Злоумышленники устанавливали вредонос ApolloShadow, маскируя его под антивирусы «Лаборатории Касперского». Цель — дипломаты в Москве.


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

Microsoft считает это первой известной такой операцией на уровне провайдеров.
🦄7👍6🔥2😁21
Мониторинг серверов без Prometheus: Netdata за 10 минут

Если нужно быстро понять, чем живёт сервер, без сложных развёртываний Prometheus и Grafana, выручает Netdata.

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

Установка на Ubuntu или Debian сводится к одной команде:

bash <(curl -Ss https://my-netdata.io/kickstart.sh)


Через минуту можно открыть в браузере страницу https://<IP>:19999 и увидеть графики загрузки CPU по ядрам, использование памяти и swap, активность дисков и сетевых интерфейсов, а также список самых прожорливых процессов.

Netdata сам определяет и начинает мониторить популярные сервисы — веб‑сервера вроде Nginx и Apache, базы данных MySQL и PostgreSQL, контейнеры Docker или Kubernetes, а также systemd‑юниты.

Конфигурация хранится в /etc/netdata/, а изменения применяются мгновенно без остановки сервиса.

Система умеет присылать уведомления о проблемах на почту или в мессенджеры — Telegram, Slack, Discord и другие. 


Для настройки достаточно поправить конфиг health_alarm_notify.conf и перезапустить Netdata.

Так за десять минут можно получить понятный и детализированный real‑time мониторинг, не нагружая инфраструктуру лишними сервисами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥63
Ставь 🔥, если за вайб-кодинг
😁24🤣9🔥43
Слежение за дисками через smartd и e-mail нотификации

Как не проспать умирающий HDD или SSD

Многие сбои в серверах происходят из‑за внезапной смерти дисков.

Но на самом деле «внезапных» отказов почти не бывает — SMART заранее показывает, что диск скоро выйдет из строя. Главное — вовремя отследить.

Для этого есть smartmontools и сервис smartd, который может проверять диски и присылать уведомления.

Установка:

sudo apt install smartmontools


Пример конфига /etc/smartd.conf:

/dev/sda -H -m [email protected] -M exec /usr/share/smartmontools/smartd-runner


• -H проверяет общее состояние диска
• -m — куда слать уведомления
• -M exec запускает скрипт для алерта

Проверить вручную можно так:

sudo smartctl -a /dev/sda


Актуальные параметры: количество переназначенных секторов, ошибки чтения/записи, температура.

Настрой smartd на все диски сервера и сделай пересылку уведомлений на рабочую почту.

Так ты узнаешь о проблемах до того, как система уйдёт в read-only или RAID развалится.
7👍5
💬 Вопрос на собеседовании для DevOps-инженера

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Что такое Kernel Same-page Merging (KSM) и как он влияет на производительность и использование памяти в Linux?

Ответ: Kernel Same-page Merging (KSM) — это механизм deduplication памяти в ядре Linux, который позволяет выявлять одинаковые страницы в разных процессах и объединять их в одну копию, помечая её как копируемую при записи (Copy-On-Write). Это снижает общее потребление оперативной памяти, особенно в средах с большим количеством схожих виртуальных машин или контейнеров.

KSM активно сканирует страницы в памяти, сравнивает их содержимое и объединяет идентичные. При изменении страницы одним из процессов создаётся её копия, что гарантирует целостность данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3
SSH Jump Host: один вход - доступ ко всей сети

Когда в инфраструктуре десятки серверов, но наружу хочется показать только один, на помощь приходит Jump Host (он же bastion).

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


Такой подход решает сразу несколько задач:

1️⃣Сокращает поверхность атаки — из интернета доступен только один хост.
2️⃣Упрощает доступ — не нужно помнить десятки IP-адресов и логинов.
3️⃣Позволяет централизовать контроль — на бастионе можно вести логи всех подключений.

Подключение настраивается через ~/.ssh/config с помощью ProxyJump:

Host bastion
HostName 203.0.113.10
User admin

Host internal-*
ProxyJump bastion
User root


Теперь ssh internal-01 автоматически пойдёт через bastion без лишних команд.

Для повышения безопасности часто добавляют двухфакторную аутентификацию на самом bastion, настраивают fail2ban для защиты от переборов паролей, а также используют auditd или session-logging, чтобы видеть действия пользователей и вести аудит.

В итоге имеем одну точку входа, строгий контроль и удобство администрирования без лишних дыр в сети.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍133🤨2
Разработчик запустил код на сервере, меняя только комментарии в Python-скрипте

На CTF UIUCTF 2025 участник сумел выполнить свой код на сервере, имея возможность изменять лишь содержимое комментариев в Python-скрипте.

Скрипт создавался с учётом запрета на символы новой строки, а цель — получить содержимое файла с флагом. 


Старые версии CPython допускали уязвимость с нулевым байтом (\0) в комментариях, но на соревновании использовали уже исправленную версию.

Решение — воспользоваться тем, что Python может запускать ZIP-архивы с файлом main.py, даже если файл имеет расширение .py.

Участник встроил такой архив внутрь комментария, обойдя ограничения.
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥3
isc-dhcp-server с динамическим обновлением DNS

Обычно DHCP раздаёт IP, а DNS приходится прописывать вручную.

Но можно сделать так, чтобы при выдаче адреса клиенту он автоматически регистрировался в зоне Bind.


Для этого нужен isc-dhcp-server с поддержкой DDNS (Dynamic DNS) и настроенный Bind. В связке они обновляют записи A и PTR без участия админа.

Пример из dhcpd.conf:

ddns-update-style interim;
ddns-domainname "lab.local";
ddns-rev-domainname "in-addr.arpa.";

zone lab.local. {
primary 127.0.0.1;
key dhcpupdate;
}

zone 0.168.192.in-addr.arpa. {
primary 127.0.0.1;
key dhcpupdate;
}

include "/etc/bind/keys.conf";


А в keys.conf хранится TSIG-ключ, которым DHCP будет подписывать запросы к Bind.

После этого любой клиент, получая IP, тут же появляется в DNS.

Удобно для тестовых сетей, лабораторий и даже в проде, если нужно быстро находить машины по имени.
7👍7
Какой параметр команды tcpdump нужен, чтобы показать полный пакет без усечения?
Anonymous Quiz
26%
-s 0
40%
-v
20%
-X
14%
-w
🤨94
Проверка скорости дисков без fio и dd

Многие тестируют диски через fio или dd, но в продакшне эти утилиты не всегда доступны (или их просто нельзя ставить).

Хорошая новость — скорость и поведение диска можно оценить встроенными инструментами Linux.

iostat (часть пакета sysstat) показывает нагрузку на диски в реальном времени:

iostat -dx 1


Здесь видно количество операций чтения/записи, среднюю задержку (await) и процент занятости диска (%util).

dstat даёт обзор: CPU, память, диски, сеть — всё в одной таблице:

dstat -cdmn --disk-util


perf позволяет копнуть глубже и оценить, как работают системные вызовы I/O:

perf stat -e block:block_rq_issue,block:block_rq_complete dd if=/dev/zero of=testfile bs=1M count=100


Так можно понять, сколько реально времени уходит на обработку операций, не нагружая систему тестами “в лоб”.
8🔥2
🔥177🎄3🤔1
Ловим утечки памяти в системных демонах без остановки сервиса

Иногда перезапуск сервиса — роскошь, особенно на продакшене.

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

1️⃣Быстрый снимок памяти процесса

pmap -x <PID> | grep total


Покажет, сколько всего памяти занято, и как распределены сегменты. Запусти несколько раз с интервалом — смотри на рост.

2️⃣Детализация по типам памяти

smem -p -P <PID>


Удобно видеть RSS/PSS/USS и их изменения, чтобы понять, реальная ли это утечка, а не кеш ОС.

3️⃣Глубокий анализ на лету

sudo stap -e 'probe process("имя_процесса").function("*alloc*") { println(probefunc()) }'


С помощью SystemTap можно отследить, какие функции выделяют память, и сопоставить с ростом потребления.

Так что фиксируй метрики в лог и смотри тренд. Если рост стабилен, а GC/освобождение не происходит — это утечка.
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4🔥3
Вышел Debian 13 «Trixie»

9 августа 2025 вышла новая версия Debian 13 на базе ядра Linux 6.12 LTS с обновлёнными рабочими столами GNOME 48, KDE Plasma 6.3 и Python 3.13.

Дистрибутив поддерживает множество архитектур, включая AMD64, ARM64 и RISC-V. Обновления будут выходить до 2030 года.

Основные изменения:
Добавлен официальный порт для 64-битного RISC-V.
Удалены устаревшие архитектуры mipsel и mips64el.
Решена проблема 2038 года с временем.
/tmp теперь по умолчанию на tmpfs для снижения износа накопителей.
Обновлён инсталлятор с поддержкой удалённой загрузки HTTP Boot.
Включены современные методы защиты ядра (Intel CET, ARM PAC).
Обновлён пакетный менеджер APT с улучшенным интерфейсом и поддержкой снапшотов.
Обновлены ключевые приложения: LibreOffice, GIMP, PostgreSQL, nginx, Docker.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥173
Минимальный набор метрик, которые надо снимать с любого сервера

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

Вот минимальный список метрик, которые должны быть всегда под контролем:

1️⃣CPU Load — нагрузка на процессор показывает, насколько сервер загружен и не «тормозит» ли из-за перегрузки.
2️⃣I/O Wait — время ожидания ввода-вывода сигнализирует о проблемах с дисками или сетью.
3️⃣Swap Usage — использование swap говорит о нехватке оперативной памяти, что сильно снижает производительность.
4️⃣Network Errors — ошибки на сетевых интерфейсах (потеря пакетов, сбои) влияют на доступность и скорость.

Как быстро настроить сбор этих метрик через node_exporter

node_exporter — это простой агент от Prometheus, который собирает данные о системе и отдаёт их по HTTP.

Устанавливаем node_exporter:

sudo apt update  
sudo apt install prometheus-node-exporter


Запускаем и включаем сервис:

sudo systemctl enable --now prometheus-node-exporter  


По умолчанию метрики доступны на порту 9100 (https://<server_ip>:9100/metrics).
В Prometheus добавьте этот хост в targets для сбора метрик.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍116