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

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

РКН: https://kurl.ru/nQejS
Download Telegram
Проверка бинарей: как убедиться, что твой ls — не троян

Когда сервер скомпрометирован, особенно root-доступом, не факт, что top, ps, ss и другие привычные утилиты — настоящие. Их могли подменить.

Вот как проверить целостность системных бинарей:

Для RPM-систем (CentOS, RHEL, Fedora):

sudo rpm -Va | grep '^..5'


Символ 5 означает: контрольная сумма не совпадает.

Для DEB-систем (Debian, Ubuntu): Установи debsums:

sudo apt install debsums


Проверка:

sudo debsums -s


-s показывает только несовпадения.

AIDE (Advanced Intrusion Detection Environment)

Установка:

sudo apt install aide


Инициализация:

sudo aideinit


Проверка:

sudo aide --check


Можно запускать через cron и мониторить системные изменения, даже если debsums и rpm -V не используются.
🔥10👍52
Microsoft выпустила WSL 2.6.0

Microsoft выпустила обновление Windows Subsystem for Linux — версию 2.6.0, первый релиз после открытия исходного кода утилит и сервисов WSL под лицензией MIT.

Ранее были открыты только ядро Linux и графический стек wslg, а инструменты оставались проприетарными.


В этой версии основной упор на исправления и повышение стабильности.

WSL запускает полноценное ядро Linux 6.6 в виртуальной машине с ext4 и виртуальным сетевым адаптером.

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

Некоторые драйверы Windows остаются закрытыми, например, Lxcore.sys и компоненты для перенаправления файловой системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍124
Обнаружение забытых cron-заданий: где искать и как логировать

Система что-то делает по расписанию, но где — непонятно. Cron-логика может быть разбросана по разным местам. Как навести порядок и отследить всё?

1️⃣Проверяем пользовательские crontab-и

Смотрим задания конкретного пользователя:

crontab -l -u user


А чтобы просканировать всех — используем:

for u in $(cut -f1 -d: /etc/passwd); do crontab -l -u "$u" 2>/dev/null; done


2️⃣ Проверяем системные каталоги: /etc/cron.*

Скрипты могут лежать в:
• /etc/cron.daily/
• /etc/cron.hourly/
• /etc/cron.weekly/
• /etc/cron.monthly/
• /etc/cron.d/

Также посмотри сам файл /etc/crontab, там может быть явная привязка скриптов к пользователям.

3️⃣ Проверяем systemd timers

В новых дистрибутивах cron заменяют systemd-timer-ы.

Показываем активные:

systemctl list-timers


Смотрим, откуда запускается таймер:

systemctl cat имя.timer


4️⃣ Проверка логов выполнения

Если cron активен, то результат выполнения должен быть в:

journalctl -u cron


Или в старых системах:

grep CRON /var/log/syslog


Если используется systemd-timer:

journalctl -u имя.service


5️⃣ Аудит на будущее: log + mail

Добавляй в задания cron явный вывод:

*/5 * * * * /opt/script.sh >> /var/log/myscript.log 2>&1


Или настраивай почту через MAILTO=user.
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍5🔥2
😁15🍌4👏2🥱1
🚀 Тренды в Kubernetes и DevOps 2025

26 июня в 19:00 приглашаем на прямой эфир в Telegram-канале «Кубернетика». Вас ждет экспертная оценка ключевых трендов Kubernetes и DevOps: определим, какие из них реально ждут нас в будущем, а какие — просто хайп.

CTO, инженеры DevOps-практик и архитекторы — приходите узнать о практиках, которые скоро станут повседневностью. 

Разберём:
• AI/ML в DevOps становится стратегическим преимуществом, а не просто инструментом?
• DevSecOps — это опция или необходимость?
• GitOps — стандарт управления инфраструктурой?
• Роль платформ разработки (IDP) в создании эффективной DevOps-культуры.
• Устойчивые (sustainable) практики DevOps.
• Будущее виртуализации в Kubernetes.

20 минут полезного контента + 10 минут ответов на вопросы.

🔹 Подписывайтесь и ставьте напоминание о трансляции, чтобы не пропустить!
2
Динамическая маршрутизация через FRRouting: OSPF за 5 минут

FRRouting (FRR) — это современная реализация протоколов динамической маршрутизации (OSPF, BGP, RIP и др.), основанная на Quagga.

Разберем базовую настройку OSPF на двух хостах.

Установка

На Debian/Ubuntu:

apt install frr frr-pythontools


Убедитесь, что ospfd включён:

nano /etc/frr/daemons
# включаем
ospfd=yes


Запускаем и включаем автозапуск:

systemctl enable --now frr


Настройка OSPF через vtysh

Открываем интерактивную оболочку:

vtysh


Настраиваем маршрутизатор:

conf t
hostname r1
router ospf
network 10.0.0.0/24 area 0
network 192.168.1.0/24 area 0
exit
interface eth0
ip ospf area 0
exit
write


Аналогично делаем на втором хосте, где IP-сети пересекаются.

Проверка состояния

Проверить, с кем установлен OSPF-соседство:

show ip ospf neighbor


Посмотреть маршруты, принятые через OSPF:

show ip route ospf


Диагностика

Если соседей не видно — проверьте MTU, firewall (UDP 89), и включен ли ospfd. Для отладки:

tail -f /var/log/frr/ospfd.log
9
💬 Вопрос на собеседовании для сисадмина

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


Вопрос: Как работает механизм Copy-on-Write (CoW) в Linux и зачем он нужен?

Ответ: Copy-on-Write (CoW) — это оптимизационный механизм, который позволяет нескольким процессам совместно использовать одну и ту же область памяти до тех пор, пока один из них не попытается ее изменить.

При fork дочерний процесс получает копию страниц памяти родительского, но фактически обе копии указывают на одни и те же физические адреса. Только если один из процессов пытается записать в память, ядро создает новую копию изменяемой страницы.
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍7
Media is too big
VIEW IN TELEGRAM
🔧 Выполняю задачи на PHP 8.2 / Laravel 12 — быстро и по делу

Работаю с реальными проектами — без воды и затягиваний. Берусь за:

💡 Задачи средней сложности
— Доработка существующего кода
— Создание новых модулей и API
— Интеграции со сторонними сервисами
— Рефакторинг, багфиксы
💰 Стоимость: от 2000 до 5000₽ за коммит (в зависимости от объёма)

🧱 Сложные задачи
— Полная переработка архитектуры
— Разработка проекта с нуля
— Развёртывание и настройка инфраструктуры в Kubernetes, CI/CD
💬 Оценивается по договорённости — в процессе обсуждения и выполнения

📈 Работаю быстро, аккуратно, с прицелом на масштабируемость и поддержку. Без лишней бюрократии — только результат.

📩 Пиши в личку — обсудим твою задачу.

@frenziedlord
4🔥1
Горячая подмена бинарников без перезапуска демона (LD_PRELOAD)

Иногда нужно “вшить” патч в работающий процесс, не пересобирая и не перезапуская его. Это может быть:

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

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

Пример: подмена getenv
Пишем свою версию функции:

// preload.c
#define _GNU_SOURCE
#include <stdio.h>
#include <string.h>

char *getenv(const char *name) {
if (strcmp(name, "SECRET") == 0) return "patched";
return NULL;
}


Компилируем:

gcc -shared -fPIC -o preload.so preload.c


Запускаем приложение с подменой:

LD_PRELOAD=./preload.so ./app


Теперь getenv("SECRET") в app вернёт "patched", даже если сам бинарник этого не знает.

Как это применимо в live-системе

Если демон уже запущен, можно:

– перезапустить его с LD_PRELOAD через systemctl edit и override-окружение,
– или, если нужен runtime-хук — использовать gdb, ptrace или написать shim с подменой через execve.
7🤔2👍1👏1
Динамическое управление swap без перезагрузки

Swap — это область на диске, которую система использует как дополнительную виртуальную память, когда оперативная память заканчивается.

Правильное управление swap помогает избежать “тормозов” и падений приложений при высокой нагрузке на память.

1️⃣Проверяем текущее состояние swap

swapon --show
free -h


Узнаём, какие swap-устройства или файлы активны.

2️⃣Добавляем swap-файл на лету

fallocate -l 2G /swapfile2
chmod 600 /swapfile2
mkswap /swapfile2
swapon /swapfile2


Swap-файл — простой способ добавить swap, не создавая раздел на диске. Такой swap доступен сразу после включения.

3️⃣Отключаем и удаляем swap

swapoff /swapfile2
rm /swapfile2


Так можно быстро освободить дисковое пространство или уменьшить swap.

4️⃣Меняем swappiness без перезагрузки

Параметр vm.swappiness регулирует, как активно ядро использует swap: от 0 (почти не использует) до 100 (активно использует).

sysctl vm.swappiness=10


Для постоянного изменения редактируем /etc/sysctl.conf.

5️⃣Автоматизация загрузки swap

Добавляем в /etc/fstab строку, чтобы swap-файл подключался при загрузке:

/swapfile2 none swap sw 0 0
Please open Telegram to view this post
VIEW IN TELEGRAM
👍75
💬 Вопрос на собеседовании для DevOps-инженера

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


Вопрос: Что такое Lazy Loading модулей ядра в Linux и зачем он нужен?

Ответ: Lazy Loading — это механизм, при котором модули ядра загружаются только тогда, когда они действительно нужны, а не заранее. Это снижает потребление памяти и ускоряет загрузку системы.

Например, модуль для работы с определённой файловой системой или сетевым протоколом может быть не загружен при старте, но автоматически подгрузится при монтировании соответствующего диска или при попытке использования нужного сетевого стека.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍132
Мониторинг и отладка проблем с задержками дисковых операций через iostat, blktrace и perf

Почему важно следить за задержками на дисках?

Высокие задержки на диске вызывают «лаг» приложений, рост времени отклика и даже сбои сервисов.

Особенно критично для баз данных и систем с интенсивным вводом-выводом.

1️⃣iostat — базовый инструмент мониторинга

iostat -x 1


- Показывает загрузку устройств, время ожидания (await), скорость операций.
- Если await слишком высокое — проблема с диском или нагрузкой.

2️⃣blktrace — глубокий анализ блокирующих операций

Позволяет отследить операции чтения/записи на уровне блока:

sudo blktrace -d /dev/sda -o - | blkparse -i -


- Выводит детальные события, задержки и очереди.
- Помогает найти, что именно тормозит — очередь, железо, драйвер.

3️⃣perf и tracepoints для дисков

С помощью perf можно собирать статистику по block-layer:

sudo perf trace -e block:block_rq_issue,block:block_rq_complete -a


• Анализирует время между отправкой запроса и завершением.
• Помогает выявить узкие места на уровне ядра.

4️⃣Анализ и оптимизация
• Если очередь в blktrace растёт — нужно проверить параметры драйвера, scheduler (cfq, noop, deadline).
• Возможно стоит переключиться на более подходящий I/O scheduler:

cat /sys/block/sda/queue/scheduler
echo noop > /sys/block/sda/queue/scheduler


• Увеличить размер очереди или оптимизировать параметры RAID.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥92👍1
Как детально проверить загрузку ЦП в Linux

Для профессионального анализа загрузки процессора в Linux можно использовать продвинутые инструменты и методы.

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

1️⃣Детальная проверка с top и iotop

top с фильтрацией

Запустите top и используйте команды:
• Нажмите P, чтобы отсортировать процессы по использованию ЦП.
• Нажмите I, чтобы скрыть неактивные процессы.
• Нажмите 1, чтобы отобразить загрузку по каждому ядру.

Добавление iotop для анализа ввода-вывода

Высокая загрузка процессора может быть связана с активными операциями ввода-вывода. Установите iotop:

sudo apt install iotop  


Запустите:

sudo iotop  


Это покажет, какие процессы активно работают с диском.

2️⃣ Использование pidstat

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

Установите инструмент:

sudo apt install sysstat  


Чтобы узнать, какой процесс занимает процессор:

pidstat -u 1  


Параметр 1 задаёт интервал обновления в 1 секунду.

Для анализа системных вызовов используйте:

pidstat -w 1  


3️⃣ Анализ c perf

perf — мощный инструмент для профилирования производительности процессора.

Установите:

sudo apt install linux-tools-$(uname -r)  


Запустите краткий отчёт:

sudo perf stat -a  


Для глубокого анализа:

sudo perf record -a  


После завершения работы команды используйте:

sudo perf report  


Это покажет статистику использования процессора и узкие места.
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍6
Как настроить Fail2Ban для защиты от атак в Linux

Fail2Ban — это инструмент для защиты серверов от брутфорс-атак, который блокирует IP-адреса после нескольких неудачных попыток входа.

В этом посте рассмотрим, как установить и настроить Fail2Ban.

1️⃣Установка Fail2Ban

Для установки используйте следующую команду:
• Debian/Ubuntu:

sudo apt install fail2ban


• CentOS/RHEL:

sudo yum install fail2ban


Запустите и включите службу:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban


2️⃣ Настройка Fail2Ban

Настройки Fail2Ban хранятся в файле /etc/fail2ban/jail.local. Создайте его, если его нет:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local


Откройте файл для редактирования:

sudo nano /etc/fail2ban/jail.local


Настройте секцию для SSH:

[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600


maxretry — количество неудачных попыток.
bantime — время блокировки в секундах.
findtime — время, за которое нужно зафиксировать ошибки.

Перезапустите Fail2Ban:

sudo systemctl restart fail2ban


3️⃣ Проверка статуса

Для проверки статуса Fail2Ban:

sudo systemctl status fail2ban


Для проверки статуса SSH:

sudo fail2ban-client status sshd


4️⃣ Разблокировка IP-адреса

Для разблокировки IP-адреса используйте:

sudo fail2ban-client set sshd unbanip <IP-адрес>
Please open Telegram to view this post
VIEW IN TELEGRAM
👍148
PPPoE и IPv6 — несовместимы?

Классическое подключение к интернету через PPPoE и так не самое простое. 


Но как только появляется требование получить IPv6, ситуация усложняется: адрес не приходит, маршруты пустые, пинг до google.com по v6 — ноль реакции. Разбираемся, в чём дело.

Что происходит при PPPoE?
1️⃣Вы поднимаете pppoe0 (например, через pppd, rp-pppoe, NetworkManager, systemd-networkd) — и получаете IPv4-адрес.
2️⃣А где IPv6? Он не приходит в самом PPP-сессии.
3️⃣Вместо этого провайдер часто делегирует префикс через DHCPv6-PD (Prefix Delegation) уже после установления PPPoE.

Как получить IPv6 в Linux?

Способ 1 — через dhclient и DHCPv6-PD:

dhclient -6 -P ppp0


• -6 — использовать IPv6
• -P — запросить префикс (PD)
• Если всё настроено правильно, вы получите /56 или /64 префикс

Но dhclient работает не везде стабильно — многие переходят на dhcpcd или systemd-networkd.

Способ 2 — systemd-networkd (современно и удобно):

[Match]
Name=ppp0

[Network]
DHCP=ipv6
IPv6AcceptRA=true

[DHCPv6]
PrefixDelegation=yes


Сделает всё сам: RA, DHCPv6, установка маршрутов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥43
💬 Вопрос на собеседовании для сисадмина

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


Вопрос: Что такое RCU (Read-Copy-Update) и зачем он используется в ядре Linux?

Ответ: RCU — это механизм синхронизации в ядре Linux, оптимизированный для сценариев, в которых часто происходят чтения и редко — изменения. Он позволяет множеству потоков безопасно читать общие данные без блокировок, обеспечивая при этом консистентность и высокую производительность.

Ключевая идея: при обновлении структуры данных не изменяется оригинал напрямую. Вместо этого создается копия, изменяется, а затем «публикуется» как новая версия. Старую версию продолжат читать те, кто начал до обновления. Когда все старые читатели завершат доступ, старая версия удаляется.
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍3