Сисадмин В Kernel Panic
12 subscribers
108 photos
6 videos
39 links
Небольшой канал, злого сисадмина. Личные заметки и решения, мемы, интересные утилиты.
Download Telegram
Команды Linux для упаковки и сжатия файлов
Подборка базовых команд для архивации, распаковки и сжатия в Linux.

GZIP
gzip -9 file1

Архивирует file1 с максимальным уровнем сжатия.
gzip file1

Сжимает файл file1.
gunzip file1.gz

Распаковывает файл file1.gz.


BZIP2
bzip2 file1

Сжимает file1.
bunzip2 file1.bz2

Разжимает file1.bz2.


TAR
tar -cvf archive.tar file1 file2 dir1

Создает tar-архив archive.tar с указанными файлами и папками.
tar -tf archive.tar

Показывает содержимое архива.
tar -xvf archive.tar

Извлекает архив в текущую директорию.
tar -xvf archive.tar -C /tmp

Распаковывает в /tmp.
tar -cvfz archive.tar.gz dir1

Создает tar.gz архив (tar + gzip).
tar -xvfz archive.tar.gz

Распаковывает tar.gz архив.
tar -cvfj archive.tar.bz2 dir1

Создает tar.bz2 архив (tar + bzip2).
tar -xvfj archive.tar.bz2

Распаковывает tar.bz2 архив.


RAR
rar a file1.rar file1 file2 dir1

Создает архив file1.rar, упаковывая файлы и директорию.
rar a file1.rar test_file

Архивирует один файл.
rar x file.rar

Извлекает содержимое архива.
unrar x file1.rar

Распаковывает rar-архив.


ZIP
zip file1.zip file1

Создает zip-архив с одним файлом.
zip -r file1.zip file1 file2 dir1

Запаковывает несколько файлов и директорий.
unzip file1.zip

Распаковывает zip-архив.

#learn
1
Подпись модулей ядра в Linux готовится перейти на постквантовые алгоритмы 🎹

В кодовой базе ядра Linux замечена подготовка к постквантовой эре. В ветке linux-fs.git появились коммиты, добавляющие поддержку алгоритма цифровой подписи ML-DSA/Dilithium (FIPS 204). Первым применением новой криптографии станет проверка подписей модулей ядра.

Инженер из Red Hat портировал в ядро код для проверки подписи из криптобиблиотеки Leancrypto. Причем, чтобы не раздувать ядро, код для генерации ключей и создания подписи был вырезан, а оставлена только функция верификации. Что логично, ведь ядру на целевой машине нужно только убедиться, что модуль подписан доверенным ключом, а не генерировать новые подписи.

Ядро Linux готовится отражать атаки из будущего. А ты до сих пор не настроил fail2ban 😬

Немного ликбеза:
постквантовый алгоритм цифровой подписи на основе решетчатой криптографии. Его криптостойкость делает его устойчивым к атакам как классических, так и квантовых компьютеров. Стандартизирован в США как FIPS 204, что делает его одним из основных кандидатов на замену RSA и ECDSA в ближайшем будущем.


На данный момент код находится в тестовой ветке keys-pqc и, предположительно, будет предложен для включения в релиз ядра Linux 6.19. Так что переход на постквантовую криптографию уже где-то не за горами.

Типичный 🥸 Сисадмин
Please open Telegram to view this post
VIEW IN TELEGRAM
Удаляем старые временные объекты в Linux

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

Найти все временные файлы старше трёх суток:
find /tmp -type f -mtime +3

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

Удалить найденные объекты:
find /tmp -type f -mtime +3 -delete

Сразу очищает всё лишнее.

Применить exec для контроля:
find /tmp -type f -mtime +3 -exec rm {} \;

Можно подставить другую команду вместо rm для проверки перед удалением.

Настроить cron для автоматизации:
0 3 * * * find /tmp -type f -mtime +3 -delete

Очистка выполняется ежедневно в 3 часа ночи без участия пользователя.

Для каталогов используется аналогичный подход:
find /tmp -type d -mtime +3 -exec rm -r {} \;

Полная очистка: удаляются не только файлы, но и папки, старше указанного срока.

#learn
Запуск любой команды в одноразовой файловой системе

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

Что важно знать:

tmpfs изолирует только файловую систему в этом каталоге - это не полноценный контейнер. Процессы внутри могут по-прежнему взаимодействовать с ядром, сетью и доступными устройствами, если явно не ограничить права.
Всё, что попадёт в tmpfs, хранится в оперативной памяти и исчезнет после отмонтирования или перезагрузки.
Размер можно ограничить параметром size при монтировании.
Для монтирования и отмонтирования нужен root, поэтому в примере используются sudo-команды.


mkdir -p /tmp/safezone
mount -t tmpfs -o size=100M tmpfs /tmp/safezone


cd /tmp/safezone
bash suspicious_script.sh


cd /
sudo umount /tmp/safezone


Коротко: удобно для быстрой проверки и предотвращения случайного изменения важных файлов - но не полагайся на это как на безопасность в духе "sandbox" полного уровня.

#learn
Тут из глубин ядра Linux пришла новость, от которой у многих сведет олдскулы. Помните файловую систему NILFS2? Это та самая лог-структурированная ФС с непрерывными снапшотами, которая появилась в ядре еще во времена 2.6. Так вот, после многих лет затишья у проекта появился второй мейнтейнер, Вячеслав Дубейко.

Для тех, кто не в теме за NILFS2... В отличие от Btrfs или ZFS, которые делают снапшоты по команде, NILFS2 делает это постоянно. Любое изменение данных создает новую версию файловой системы, а старые версии остаются доступными для чтения.

В последние годы проект был в анабиозе. Все внимание было приковано к Btrfs, F2FS и новомодному Bcachefs. И вот, внезапно, основной мейнтейнер NILFS2, Рюсуке Кониси, добавляет в проект нового человека и меняет статус с Orphaned (осиротевший 👨‍🦳) на Maintained (поддерживается). Новые патчи в ядро будут через Вячеслава.

Ждём бенчмарки чтобы посмотреть сможет ли NILFS2 потягаться с Btrfs и ZFS...

Типичный 🥸 Сисадмин
Please open Telegram to view this post
VIEW IN TELEGRAM
IFTOP - лёгкая утилита для отслеживания сетевых соединений на сервере в реальном времени.

Что показывает iftop:

Основные элементы интерфейса

Левая колонка - локальный IP интерфейса, на котором запущен iftop.
Правая колонка - удалённый IP, с которым идёт обмен. Это могут быть клиенты, внешние сервисы, интернет‑сервера. Правая колонка почти всегда «чужие» IP, а не ваши внутренние.


Стрелки:
=> - исходящий трафик (от сервера к удалённому IP)
<= - входящий трафик (от удалённого IP к серверу)

Скорости передачи: три колонки справа показывают среднюю скорость за последние 2, 10 и 40 секунд.
Нижняя строка: суммарная статистика
cum - всего передано
peak - пиковая скорость
rates - текущие скорости

Практические команды

iftop -ni eth0

Запуск на интерфейсе eth0:

iftop -P -i eth0

Показывать порты:

iftop -n -i eth0

Не резолвить имена хостов (показывать IP):

iftop -t -i eth0

Текстовый режим (для логирования или редиректа):

iftop -o destination
iftop -o source

Сортировка по источнику или назначению (destination / source):

iftop -F 192.168.0.0/24 -i eth0

Фильтрация по подсети:

Советы для работы
Следи за строками с наибольшим трафиком, чтобы выявить «тяжёлые» соединения.
Стрелки и скорости помогут понять, кто отдаёт, кто получает.
Правая колонка обычно показывает внешние IP, так что можно быстро увидеть, с кем сервер общается в интернете.
Клавиша t в интерфейсе позволяет сортировать соединения по объёму трафика.


IFTOP - наглядный инструмент для контроля сети, выявления «жадных» соединений и оптимизации пропускной способности сервера.

#learn #utlity
1
Что такое nsntrace и зачем он нужен

Системный администратор или DevOps-инженер часто сталкивается с диагностикой сетевого трафика. Но что делать, если нужно отследить именно трафик одного приложения, а не весь системный? Здесь на помощь приходит nsntrace - утилита, которая позволяет захватывать сетевой трафик процесса, запущенного в отдельном сетевом namespace.

Как работает nsntrace

Сетевые неймспейсы (network namespaces)

nsntrace использует сетевые неймспейсы Linux: приложение запускается в собственном namespace, то есть с отдельным сетевым стеком (своими интерфейсами, маршрутами, iptables).

Изоляция трафика
Благодаря этой изоляции можно наверняка захватить только тот трафик, который относится к целевому приложению - без “шума” от других процессов.

Мостовой интерфейс и iptables
Для того, чтобы трафик приложения возвращался “наверх” (в родной namespace), nsntrace создает виртуальный интерфейс и настраивает правила iptables.

Сохранение - pcap-файл
Трафик записывается в pcap-файл, который можно потом анализировать в Wireshark, tcpdump или других инструментах.

Запуск от root
Поскольку используется iptables и “сырые” (raw) сокеты, для работы nsntrace требуются права root.

Установка
Обычно имеется во всех репозиториях.
apt install nsntrace


Теперь запускаем перехват трафика для обычного вызова wget, который делает запрос к сайту. По умолчанию результат сохраняется в файл с именем nsntrace.pcap:

# nsntrace --use-public-dns wget -q -O /dev/null https://example.com/
Starting network trace of 'wget' on interface enp1s0.
Your IP address in this trace is 172.19.28.255.
Use ctrl-c to end at any time.
Finished capturing 131 packets.


То же самое можно выполнить и для PHP-скрипта:
# nsntrace php -f index.php
Starting network trace of 'php' on interface enp1s0.
Your IP address in this trace is 172.19.213.255.
Use ctrl-c to end at any time.
Finished capturing 52 packets.


Далее изучаем содержимое pcap-файла с помощью привычного инструмента, в данном случае tcpick:

# tcpick -r nsntrace.pcap 
Starting tcpick 0.2.1 at 2025-11-15 14:22 MSK
Timeout for connections is 600
tcpick: reading from nsntrace.pcap
1 SYN-SENT 172.19.28.255:40638 > 104.244.78.134:https
1 SYN-RECEIVED 172.19.28.255:40638 > 104.244.78.134:https
1 ESTABLISHED 172.19.28.255:40638 > 104.244.78.134:https
1 FIN-WAIT-1 172.19.28.255:40638 > 104.244.78.134:https
1 FIN-WAIT-2 172.19.28.255:40638 > 104.244.78.134:https
1 RESET 172.19.28.255:40638 > 104.244.78.134:https
tcpick: done reading from nsntrace.pcap

131 packets captured
1 tcp sessions detected


GitHub проекта

#utility
1👍1
🪄 Редкий легендарный артефакт, найденный в закромах Алика. Позволяет разделить одну душу на четверых, но с ужасающими последствиями.

(1/4) Набор «Колхозника»

+4 к разъемам питания SATA
+70% вероятность наложения эффекта "Потеря данных" (урон от огня). Эффект суммируется 🔥

Типичный 🥸 Сисадмин
Please open Telegram to view this post
VIEW IN TELEGRAM
Хацкеры теперь не просто шифруют данные, а подставляют сисадминов 😔

Свежий отчет от Check Point показывает, что рынок шифровальщиков окончательно стал бизнесом. LockBit выкатил версию 5.0, заточенную под максимальный ущерб, теперь упор на ESXi, чтобы положить сразу всю виртуализацию, и динамические расширения файлов, чтобы ваш EDR даже не понял, что произошло. А новая фишка их нового продукта в психологическои давлении на IT-отдел.

Теперь они прямым текстом в записке делают крайним сисадмина... А грамотно они это придумали с точки зрения социальной инженерии... столкнуть руководство с собственными админами. Мол, это не мы такие, это ваш Вася-админ не так всё настроил. А за ошибки надо платить. Мало того, что шифруют данные, так еще и вносят раздор 😱

Взламывая компанию, они оставляют записку, где находят козла отпущения:

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


Всё, приехали. Раньше нас обвиняли в сбоях пользователи, потом начальство, теперь к ним присоединились и хацкеры. Это какой-то новый уровень корпоративного газлайтинга, только со стороны атакующих. Что вообще происходит-то? 😕

Типичный 🥸 Сисадмин
Please open Telegram to view this post
VIEW IN TELEGRAM
Полезный Linux-прием: когда требуется быстро выявить, какие объекты файловой системы недавно изменялись, используйте find с временными фильтрами.
Это упрощает диагностику, помогает обнаруживать сомнительную активность и отслеживать недавние корректировки в проектах.

файлы, обновленные за последние 10 минут
find . -type f -mmin -10


объекты, измененные в течение последнего часа
find /var/log -type f -mmin -60


файлы, модифицированные за прошедшие 24 часа
find . -type f -mtime -1


только каталоги, измененные за последние 30 минут
find . -type d -mmin -30


вывод времени изменения вместе с результатами
find . -type f -mmin -15 -exec ls -lh {} ;


#learn
1
Пример Bash-скрипта, который выполняет такие операции:
1) Проверяет, доступен ли целевой веб-сервер.
2) Анализирует текущий уровень заполненности диска.
3) Создает архивную копию выбранных директорий.
4) Формирует и отправляет администратору отчет о выполненных действиях.
#!/bin/bash

# Основные параметры
WEB_SERVER="https://example.com"
BACKUP_DIR="/backup"
TARGET_DIRS="/var/www /etc"
DISK_USAGE_THRESHOLD=90
ADMIN_EMAIL="admin@example.com"
DATE=$(date +"%Y-%m-%d")
BACKUP_FILE="$BACKUP_DIR/backup-$DATE.tar.gz"

# Проверка, отвечает ли веб-сервер
echo "Проверка состояния веб-сервера..."
if curl -s --head $WEB_SERVER | grep "200 OK" > /dev/null; then
echo "Веб-сервер отвечает корректно."
else
echo "Проблема: веб-сервер не отвечает." | mail -s "Сбой веб-сервера" $ADMIN_EMAIL
fi

# Контроль использования диска
echo "Анализ доступного места на диске..."
DISK_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
if [ $DISK_USAGE -gt $DISK_USAGE_THRESHOLD ]; then
echo "Проблема: достигнут лимит использования диска ($DISK_USAGE_THRESHOLD%)." | mail -s "Недостаточно места на диске" $ADMIN_EMAIL
else
echo "Свободного места достаточно."
fi

# Формирование резервной копии
echo "Запуск создания резервной копии..."
tar -czf $BACKUP_FILE $TARGET_DIRS

if [ $? -eq 0 ]; then
echo "Резервная копия создана: $BACKUP_FILE"
else
echo "Не удалось создать резервную копию." | mail -s "Сбой резервного копирования" $ADMIN_EMAIL
fi

# Отправка итогового отчета
echo "Отправка итогового отчета на $ADMIN_EMAIL..."
REPORT="Отчет за $DATE\n\n"
REPORT+="Ответ веб-сервера: $(curl -s --head $WEB_SERVER | head -n 1)\n"
REPORT+="Уровень использования диска: $DISK_USAGE%\n"
REPORT+="Файл резервной копии: $BACKUP_FILE\n"

echo -e $REPORT | mail -s "Системный дневной отчет" $ADMIN_EMAIL

echo "Завершено."


1) Контроль работы веб-сервера: curl выполняет запрос к сайту и по ответу определяется его доступность.
2) Оценка заполненности диска: с помощью df и awk вычисляется текущий процент использования. При превышении заданного лимита отправляется предупреждение.
3) Формирование резервной копии: tar создает сжатый архив всех путей, перечисленных в переменной TARGET_DIRS.
4) Формирование и отправка отчета: итоговая информация о выполненных шагах отправляется администратору через mail.

Как использовать:
1) Укажите необходимые значения - адрес проверяемого веб-сервера, перечень директорий для резервного копирования, допустимый порог загрузки диска и email администратора.
2) Назначьте скрипту право на выполнение:
chmod +x /path/to/your/сheck+backup.sh

3) Настройте выполнение скрипта по расписанию через cron, чтобы он запускался автоматически. Например каждый день в полночь.
0 0 * * * /path/to/your/сheck+backup.sh

#learn
👍2
Официальный бэкдор в каждом Keenetic 🤡

Владельцы Кинетиков внезапно обнаружили, что вендор массово и принудительно накатил обновление KeeneticOS (версии ветки 4.x) на устройства. Пикантность ситуации в том, что апдейт прилетел даже тем пользователям, у кого в настройках было прописано auto-update disable. Галочка в GUI оказалась просто декорацией 🤣

Формальным поводом для такого беспредела стала безопасность. В интернетах началась эпидемия взломов ролтонов кинетика... ботнеты сканировали сеть, находили роутеры с открытым наружу веб-интерфейсом и слабыми паролями, после чего создавали там скрытого пользователя adminr и поднимали VPN-сервер для своих темных дел. Компания решила не ждать, пока все клиенты станут частью ботнета, и бэкдорнула каждого, принудительно обновив прошивки и запретив открывать доступ извне без установки сложного пароля 😂

На форумах Keenetic и Netcraze начали бомбить. Что если вендор имеет техническую возможность игнорировать запрет на обновления и заливать в устройство всё что угодно через собственные бэкдоры (подозревают протоколы типа CWMP/TR-069), то о каком доверии может идти речь? Сегодня они залили патч безопасности, чтобы спасти вас от хакеров, а завтра зальют обновление, которое оптимизирует работу, удалит неугодные пакеты или сольет данные нужным людям?

Напомню, что в РФ Keenetic теперь официально мимикрировал в бренд Netcraze (Сетевое Безумие?). Облачная инфраструктура переехала из буржуйского Hetzner в родной Selectel, а в логах роутеров теперь мелькают запросы к узлам вроде ndss.netcraze.ru.

Представители Keenetic пока отмалчиваются или ссылаются на критичность уязвимости. Но осадочек остался капитальный. Получается, покупая роутер за оверпрайс, вы по факту берете в аренду терминал, которым управляет некто из техподдержки. И ваше мнение о том, какая версия прошивки должна стоять на вашем железе, никого не интересует. Добровольные бэкдоры, велком 🎩

Типичный 🥸 Сисадмин
Please open Telegram to view this post
VIEW IN TELEGRAM
Ищем сомнительные сетевые активности в Linux через Bash.

В системе иногда остаются непонятные подключения - от зависших программ до потенциально вредных процессов.
Bash и стандартные инструменты позволяют быстро выявить и разобрать такие случаи.

Просмотр всех текущих сетевых подключений:
ss -tulpn

Выводит PID, порты, адреса и статусы. Подходит для обнаружения неожиданно слушающих сервисов.

Поиск соединений с конкретными адресами:
ss -ntp | grep "192.168."

Отбирает строки по нужной сети или IP.

Показ только установленных соединений:
ss -ntp state established

Отсекает слушающие порты, показывая активные сессии.

Проверка PID по имени процесса:
ps -fp <PID>

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

Мониторинг в реальном времени:
watch -n 2 ss -tulpn


#learn
Полезный приём: как быстро извлечь все уникальные доменные имена из любых текстов или логов в Linux без использования сложных парсеров.

Из файла:
grep -oE '\b([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}\b' /var/log/syslog | sort -u

Просматриваем лог и получаем список уникальных доменов.

Из потока (например, HTTP-трафик):
tcpdump -A -s 0 port 80 | grep -oE '\b([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}\b' | sort -u

Выводим домены прямо на лету, формируя уникальный список.

#learn
Трюки с SSH: это куда больше, чем обычный удалённый вход

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

Туннелирование к внутренним системам:
ssh -L 8080:internal-server:80 user@gateway

Локальный адрес localhost:8080 перенаправляет трафик на порт 80 узла internal-server через gateway.

Быстрое подключение с помощью псевдонимов:
В ~/.ssh/config
Host myserver
HostName 192.168.1.100
User admin
Port 2222
IdentityFile ~/.ssh/my_key

Теперь можно выполнять ssh myserver вместо ввода параметров вручную.

Авторизация без пароля за считанные секунды:
ssh-copy-id user@server

После переноса ключа вход происходит автоматически.

Мгновенные повторные подключения:
В ~/.ssh/config
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h:%p
ControlPersist 600

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

Передача директорий без использования scp:
tar cz folder/ | ssh server "tar xz -C /destination"

Архивация выполняется потоком и сразу извлекается на удалённой стороне.

Удалённый просмотр логов с локальной обработкой:
ssh server "tail -f /var/log/app.log" | grep -i error

Можно комбинировать с любыми командами на своей машине через пайпы.

Эти практики значительно упрощают сопровождение большого числа серверов.

#learn
👍3
Glances - это утилита мониторинга системы в реальном времени. Написана на Python, работает в терминале, по сети и через веб-интерфейс. Показывает загрузку CPU, памяти, дисков, сетевых интерфейсов, процессы, температуру, состояние файловых систем, контейнеров и других подсистем. Подходит как для локального контроля, так и для удалённого мониторинга через клиент-сервер или браузер. Может экспортировать метрики в InfluxDB, ElasticSearch, CSV и другие источники. Код открытый, расширяется плагинами.

glances

Старт в обычном терминальном режиме.

glances -w

Запуск встроенного веб-сервера (порт 61208 по умолчанию).

glances -s

Запуск в режиме сервера для удалённого мониторинга.

glances -c IP

Подключение к Glances-серверу по указанному IP.

glances --browser

Поиск всех Glances-серверов в сети и просмотр через TUI.

#utility
Мониторинг активных портов: Nmap + Опорный снимок + Сравнение

Бывает необходимо не просто "проверять порты", а определить момент изменения: служба внезапно открыла порт, а firewall перекрыл прежний.
В таких ситуациях отлично работает простой метод:
Опорный снимок → Проверка → Сравнение

1. Опорный снимок
Создаём первоначальный перечень портов и сохраняем его:
nmap -p- -oX baseline.xml 192.168.100.100

Это наш "образец", с которым далее будем соотносить результаты.

2. Актуальная проверка
Через
установленный промежуток времени фиксируем новое состояние:
nmap -p- -oX current.xml 192.168.100.100


3. Сравнение через ndiff
ndiff baseline.xml current.xml


Пример вывода:
-Nmap 7.80 scan initiated Sat Nov 22 13:32:40 2025 as: nmap -p- -oX baseline.xml 192.168.100.100
+Nmap 7.80 scan initiated Sat Nov 22 13:34:55 2025 as: nmap -p- -oX current.xml 192.168.100.100

192.168.100.100:
-Not shown: 59995 filtered ports, 5538 closed ports
+Not shown: 59994 filtered ports, 5538 closed ports
PORT STATE SERVICE VERSION
+80/tcp open http

#learn