BashTex | Linux – Telegram
BashTex | Linux
2.57K subscribers
48 photos
9 videos
291 links
Авторский канал для тех, кто хочет глубже погрузиться в мир Linux.

Подойдет для разработчиков, системных администраторов и DevOps

Реклама: @dad_admin
Download Telegram
Создание зашифрованных контейнеров с cryptsetup и LUKS

LUKS (Linux Unified Key Setup) + cryptsetup позволяют создавать зашифрованные контейнеры, доступ к которым можно получить только после ввода пароля.

📦 Что можно хранить в зашифрованном контейнере?

🔹 Личные файлы и документы
🔹 Бэкапы с конфиденциальными данными
🔹 Временные файлы, которые нужно удалять без следов

🧑‍💻 Создание зашифрованного контейнера

1️⃣ Создаем файл-контейнер. Допустим, нам нужен контейнер размером 1 ГБ:


dd if=/dev/zero of=secure.img bs=1M count=1024


2️⃣ Настраиваем LUKS-шифрование


cryptsetup luksFormat secure.img


⚠️ Важно: Этот шаг удалит все данные в файле!

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

3️⃣ Открываем зашифрованный контейнер


cryptsetup luksOpen secure.img secure_container


Теперь в системе появился виртуальный шифрованный диск /dev/mapper/secure_container.

4️⃣ Форматируем в файловую систему


mkfs.ext4 /dev/mapper/secure_container


5️⃣ Монтируем и используем


mkdir /mnt/secure
mount /dev/mapper/secure_container /mnt/secure


Теперь файлы, скопированные в /mnt/secure, будут автоматически зашифрованы.

🚫 Отключение контейнера. Чтобы отключить зашифрованный диск:


umount /mnt/secure
cryptsetup luksClose secure_container


🏠 Автоматическое подключение по паролю. Можно хранить ключ для автоматического подключения в файле:


dd if=/dev/random of=/root/luks.key bs=1 count=256
chmod 600 /root/luks.key
cryptsetup luksAddKey secure.img /root/luks.key


Теперь можно открыть контейнер без ввода пароля:


cryptsetup luksOpen secure.img secure_container --key-file /root/luks.key


BashTex 📱 #linux #security
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍5
Скрипт автоматического создания и удаления временных файлов

Временные файлы нужны для логов, кэша и промежуточных вычислений, но если их не удалять – они засоряют систему. Сегодня про то, как автоматизировать их создание и удаление с помощью Bash и mktemp.

Создание временных файлов и директорий. Используем mktemp:


TEMP_FILE=$(mktemp)
echo "Временный файл: $TEMP_FILE"


Или создаем временную папку:


TEMP_DIR=$(mktemp -d)
echo "Временная папка: $TEMP_DIR"


📂 Автоматическое удаление. trap удалит временные файлы при завершении скрипта:


#!/bin/bash
TEMP_FILE=$(mktemp)
trap "rm -f $TEMP_FILE" EXIT

echo "Создан временный файл: $TEMP_FILE"
sleep 5 # Эмуляция работы скрипта


trap выполняет rm -f $TEMP_FILE при завершении скрипта – даже если он аварийно прерван.

👩‍🎨 Скрипт для очистки старых временных файлов. Удалим файлы старше 1 дня в /tmp:


find /tmp -type f -mtime +1 -delete


Для папок:


find /tmp -type d -empty -mtime +1 -exec rmdir {} \;


🤖 Добавим в crontab ежедневную очистку /tmp:


0 3 * * * find /tmp -type f -mtime +1 -delete


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

BashTex 📱 #bash #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Вошли и вышли, приключение на 15 минут 🪞

BashTex 📱 #юмор
Please open Telegram to view this post
VIEW IN TELEGRAM
😁17🫡1
stdbuf - отключение буферизации вывода в командах

Когда выполняешь команды в терминале, их вывод иногда задерживается из-за буферизации. Это мешает при логировании, мониторинге в реальном времени и пайпах. stdbuf решает эту проблему, управляя буферизацией стандартного ввода, вывода и ошибок.

🚪 Как отключить буферизацию? Запустим ping, но без задержек в выводе:


stdbuf -oL ping 8.8.8.8


-oL - отключает буферизацию вывода (line-buffered mode). Теперь каждая строка появляется сразу.

Для ошибок (stderr):


stdbuf -eL some_command


👀 Использование с пайпами. Некоторые команды задерживают вывод в пайпах. Например, grep в цепочке:


ping 8.8.8.8 | grep "time="


Ничего не показывает? Это из-за буферизации! Исправляем:


ping 8.8.8.8 | stdbuf -oL grep "time="


⚡️ Полезные примеры

1️⃣ Логирование в реальном времени


stdbuf -oL tail -f /var/log/syslog | grep "error"


2️⃣ Скрипт без задержек в выводе


#!/bin/bash
stdbuf -o0 my_noscript.sh


-o0 полностью отключает буферизацию.

3️⃣ Буферизация при вводе


stdbuf -i0 -o0 -e0 cat


Позволяет мгновенно обрабатывать ввод/вывод.

BashTex 📱 #bash #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
This media is not supported in your browser
VIEW IN TELEGRAM
Ты бл#, ты сказал, что ты шаришь в этой теме..

BashTex 📱 #юмор
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13😁11🎅4👨‍💻1🫡1🎄1
Вывод списка установленных пакетов по дате

Хочешь узнать, какие пакеты и когда были установлены в системе? В Ubuntu это можно сделать с помощью dpkg и awk.

Базовый способ. Чтобы получить список всех установленных пакетов с датой их установки, используй:


grep " install " /var/log/dpkg.log


Этот лог содержит записи о каждом установленном или обновлённом пакете.

🗯 Вывод с сортировкой. Если нужен полный список с датами и сортировкой:


awk '$3 == "install" {print $1, $2}' /var/log/dpkg.log | sort


$1 - дата установки
$2 - имя пакета
sort упорядочивает по дате

Пример вывода:


2025-03-01 coreutils
2025-03-02 openssh-server
2025-03-04 htop


📌 Фильтр по определённому дню. Допустим, надо узнать, что было установлено 3 февраля 2025 года:


grep "2025-02-03" /var/log/dpkg.log | grep "install"


📂 Вывод списка недавно установленных пакетов


zgrep " install " /var/log/dpkg.log* | tail -20


BashTex 📱 #bash #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥3👨‍💻3
Ну мы

BashTex 📱 #юмор
Please open Telegram to view this post
VIEW IN TELEGRAM
😁15
Динамическое ограничение ресурсов для процессов с cgroups

Когда процесс начинает пожирать всю CPU или RAM, система может начать тормозить. 🐢 Но есть способ держать всё под контролем - cgroups.

📌 cgroups (Control Groups) — механизм ядра Linux, который позволяет ограничивать, учитывать и изолировать ресурсы (CPU, RAM, сеть) для процессов.

Применение:

Ограничение потребления ресурсов процессами
Контроль за службами и контейнерами
Создание "огороженных" сред для тестирования


⚙️ Простая настройка cgroups

1️⃣ Проверяем поддержку cgroups:


mount | grep cgroup


Если вывод есть - поддержка включена

2️⃣ Создаём группу и ограничиваем процесс. Создадим новую группу и ограничим процесс по CPU и RAM:


sudo mkdir /sys/fs/cgroup/mygroup
echo $$ | sudo tee /sys/fs/cgroup/mygroup/cgroup.procs
echo 50000 | sudo tee /sys/fs/cgroup/mygroup/cpu.max
echo 100M | sudo tee /sys/fs/cgroup/mygroup/memory.max


cgroup.procs - добавляем текущий процесс
cpu.max - ограничение CPU
memory.max - ограничение RAM

🔢 Применение на практике. Допустим, у тебя есть скрипт, который загружает процессор:


while :; do :; done


Чтобы он не съел всю систему, запускаем его в cgroups:


echo $$ > /sys/fs/cgroup/mygroup/cgroup.procs


Теперь процесс работает в ограниченной среде и не забивает ресурсы.

👀 Мониторинг нагрузки. Можно проверить использование CPU и памяти группой:


cat /sys/fs/cgroup/mygroup/cpu.stat
cat /sys/fs/cgroup/mygroup/memory.current


BashTex 📱 #bash #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥2
disown и nohup - выполнение команд после выхода из терминала

А вы знали как сделать, чтобы команды не зависели от сессии и продолжали работать даже после выхода? Для этого можно использовать disown и nohup.

▪️ nohup - команда живёт даже после выхода. nohup позволяет запустить процесс, который не завершится, даже если вы выйдете из системы.

Пример: Запускаем длительный процесс и отправляем в фон


nohup long-running-noscript.sh > output.log 2>&1 &


Процесс не привязан к терминалу
Вывод пишется в output.log
Можно закрыть терминал, процесс не остановится

▪️ disown - открепление процесса от сессии. Если уже запустили команду без nohup, но хотите её сохранить:

1️⃣ Запускаем процесс в фоне


long-running-noscript.sh &


2️⃣ Просматриваем фоновые задачи


jobs -l


3️⃣ Открепляем процесс


disown -h %1


Теперь даже если вы выйдете из терминала, процесс останется работать.

📌 Разница между nohup и disown

Команда Когда использовать Что делает?

nohup - необходимо использовать при запуске процесса. В таком случае это делает процесс независимым
disown - работает для уже запущенных команд Открепляет процесс от сессии

🔥 Комбо: Можно использовать nohup + disown, чтобы запущенный процесс не зависел от терминала и не получал SIGHUP.


nohup ./noscript.sh & disown


Теперь можно спокойно выйти из SSH, процесс продолжит работать.

BashTex 📱 #linux #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍2
Автоматическая очистка старых бэкапов

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

Какую стратегию выбрать?

FIFO (First In, First Out) - удаление самых старых файлов
GFS (Grandfather-Father-Son) - оставляем дневные, недельные, месячные
По размеру диска - чистим, если занято > 80%


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

▪️ Удаляем файлы старше 7 дней в /backups/


find /backups/ -type f -name "*.tar.gz" -mtime +7 -exec rm {} \;


▪️ Удаляем, если свободного места < 20%


if [[ $(df /backups --output=pcent | tail -1 | tr -d '% ') -gt 80 ]]; then
find /backups/ -type f -name "*.tar.gz" -mtime +3 -exec rm {} \;
fi


▪️ Оставляем 3 последние копии


ls -t /backups/*.tar.gz | tail -n +4 | xargs rm -f


▪️ Добавим выполнение скрипта раз в день:


0 2 * * * /usr/local/bin/cleanup_backups.sh


Не забудьте перед этим сделать cleanup_backups.sh исполняемым:


chmod +x cleanup_backups.sh


BashTex 📱 #bash #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Отслеживание открытых файлов и портов в реальном времени

Когда нужно выяснить, какие файлы, сокеты и устройства заняты процессами в системе, lsof (list open files) приходит на помощь.

📌 Этот инструмент полезен для:

Диагностики зависших процессов
Поиска утечек файловых дескрипторов
Проверки какие порты и файлы использует приложение


▪️ Быстрые примеры использования

1️⃣ Проверить, какие файлы использует процесс по PID


lsof -p 1234


2️⃣ Найти, кто использует файл


lsof /var/log/syslog


3️⃣ Какие процессы используют порт 443?


lsof -i :443


4️⃣ Найти процессы, использующие сеть


lsof -i


5️⃣ Обновлять вывод в реальном времени (-r)


lsof -r 2 -i :22


Выведет список процессов, использующих SSH-порт, обновляя данные каждые 2 секунды.

▪️ Применение для отладки и безопасности

1️⃣ Закрытый файл все еще используется? Если файл удалён, но место на диске не освободилось, ищем процессы, которые его держат:


lsof +L1


2️⃣ Поймать подозрительные соединения


lsof -i -nP | grep ESTABLISHED


Выведет все установленные сетевые соединения, без попытки разрешать IP в DNS.

3️⃣ Какие процессы пишут в лог?


lsof /var/log/auth.log


BashTex 📱 #linux #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥3
Как отслеживать изменения в файлах в реальном времени

Если нужно отслеживать изменения в файлах или каталогах в реальном времени, inotifywait - нужный инструмент.

🟢 Где полезно?

Мониторинг логов и конфигураций
Обнаружение изменений в коде в dev-среде
Автоматический перезапуск сервисов при изменении файлов
Обнаружение нежелательных изменений (удаление файлов)


⚙️ Базовое использование

1️⃣ Следить за изменениями в файле:


inotifywait -m /var/log/syslog


Флаг -m (monitor) заставляет команду работать в фоновом режиме.

2️⃣ Отслеживать изменения в каталоге:


inotifywait -m -e modify,create,delete /home/user/documents


Флаг -e указывает события, за которыми следим:

modify – изменение файла
create – создание нового файла
delete – удаление файла

3️⃣ Вывод событий в реальном времени:


inotifywait -m -r -e modify,create,delete /var/www/html


Флаг -r включает рекурсивный мониторинг всех вложенных папок.

⚙️ Применение в автоматизации

1️⃣ Автоперезапуск сервиса при изменении конфигурации


inotifywait -m -e modify /etc/nginx/nginx.conf | while read; do
systemctl restart nginx
done


Перезапускает Nginx, если конфигурация изменена.

2️⃣ Автоматическое архивирование изменённых файлов


inotifywait -m -e modify /home/user/data | while read file; do
cp "$file" "/backup/$(basename "$file").bak"
done


3️⃣ Обнаружение подозрительных изменений в /etc


inotifywait -m -r -e modify,delete /etc | while read change; do
echo "[ALERT] Изменение в /etc: $change" | mail -s "Файлы изменены!" admin@bashtex.com
done


BashTex 📱 #linux #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2
Очистка репозитория от важных данных

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

Разберём два способа очистки истории репозитория:
1️⃣ git filter-branch – старый и медленный метод
2️⃣ BFG Repo-Cleaner – более современный и быстрый

🚮 Удаление данных с помощью git filter-branch

1️⃣ Удалить все следы файла config.yml из истории:


git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch config.yml" \
--prune-empty --tag-name-filter cat -- --all


2️⃣ Заменить текстовый секрет во всех коммитах:


git filter-branch --tree-filter \
'find . -type f -exec sed -i "s/OLD_SECRET/REDACTED/g" {} +' -- --all


Минусы:

Очень медленно на больших репозиториях
Требует много оперативной памяти
Ошибки могут сломать историю

🚮 Используем BFG Repo-Cleaner (рекомендуемый способ)

1️⃣ Установите BFG:


wget https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar


2️⃣ Удалить файл config.yml из всех коммитов:


java -jar bfg-1.14.0.jar --delete-files config.yml


3️⃣ Очистить репозиторий от всех данных с API_KEY


java -jar bfg-1.14.0.jar --replace-text banned.txt


Файл banned.txt должен содержать список слов, которые нужно удалить.

▪️ Очистить файлы больше 50MB:


java -jar bfg-1.14.0.jar --strip-blobs-bigger-than 50M


4️⃣ Финальная зачистка и переписывание истории:


git reflog expire --expire=now --all && git gc --prune=now --aggressive


⤵️ Плюсы BFG:

В разы быстрее, чем filter-branch
Упрощённый синтаксис
Безопаснее для истории

BashTex 📱 #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Да что вы знаете о сложном выборе

BashTex 📱 #юмор
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23
Сжатые инкрементные бэкапы

Если нужен эффективный, сжатый и зашифрованный способ делать резервные копии, то BorgBackup - отличный выбор. Он поддерживает инкрементные бэкапы, дедупликацию, шифрование и работает с удалёнными хранилищами.

🔧 Установка


sudo apt install borgbackup -y#Debian/Ubuntu
sudo dnf install borgbackup -y#CentOS
brew install borgbackup#MacOS


📍 Создание репозитория для бэкапов. Перед началом работы нужно создать репозиторий:


borg init --encryption=repokey ~/borg-backups


repokey - создаст зашифрованный ключ прямо в хранилище. Можно использовать none, если шифрование не требуется.

📍 Создание инкрементного бэкапа. Допустим, нужно делать бэкап /home/user:


borg create --progress --stats ~/borg-backups::backup-$(date +%F) /home/user


--progress - показывает прогресс
--stats - отображает информацию о размере и дедупликации
::backup-$(date +%F) - имя архива (с датой)

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

🔍 Просмотр списка бэкапов


borg list ~/borg-backups


Проверка содержимого бэкапа


borg list ~/borg-backups::backup-2024-02-09


📂 Восстановление файлов

Восстановить весь бэкап в /restore


borg extract ~/borg-backups::backup-2024-02-09 --target /restore


Восстановить только один файл


borg extract ~/borg-backups::backup-2024-02-09 home/user/Documents/report.txt


🗑 Удаление старых бэкапов по расписанию


borg prune -v --list --keep-daily=7 --keep-weekly=4 --keep-monthly=6 ~/borg-backups


Хранит 7 дневных, 4 недельных и 6 месячных бэкапов

BashTex 📱 #linux #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1
chattr и lsattr для защиты файлов от изменений

Иногда chmod и chown недостаточно для защиты важных файлов. В linux есть инструмент chattr, который позволяет устанавливать атрибуты, защищающие файлы от удаления, изменений или перезаписи, даже root'ом

🛠 lsattr - просмотр атрибутов файлов. Прежде чем что-то менять, посмотрим на атрибуты файла:


lsattr myfile.txt

----i--------- myfile.txt


i (immutable) - файл нельзя удалить, изменить или переименовать.

📍 Просмотр всех атрибутов в папке:


lsattr /etc


🛠 chattr - защита файлов

1️⃣ Запрет любых изменений (даже root'ом)


chattr +i important.conf


Теперь даже root не сможет удалить или изменить файл:


rm important.conf
rm: cannot remove 'important.conf': Operation not permitted


Чтобы снять защиту:


chattr -i important.conf


2️⃣ Защита от случайного удаления (флаг a). Файл можно дописывать, но нельзя удалить или изменить существующее содержимое:


chattr +a log.txt


Теперь команды вроде rm log.txt не сработают, но echo "data" >> log.txt работает.
Снять защиту можно так:


chattr -a log.txt


3️⃣ Защита каталогов (запрет удаления файлов внутри)


chattr +i /important_dir


Это запретит любые изменения в папке (нельзя добавлять/удалять файлы).

4️⃣ Автоматическая очистка файла при перезаписи (s)


chattr +s secret.txt


Файл будет перезаписан нулями перед удалением, что затруднит восстановление.

5️⃣ Файл не записывается в журналы (j)


chattr +j critical.log


Полезно для файлов, которые не должны попадать в журналируемую файловую систему (ext3/ext4).

BashTex 📱 #linux #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
Краткие и понятные мануалы вместо man

Если вам надоели километровые страницы man, где сложно найти примеры, то tldr - хорошая альтернатива! Это сборник кратких и понятных примеров для популярных команд.

🛠 Установка tldr


brew install tldr #MacOS
sudo pacman -S tldr #Arch Linux
sudo apt install tldr #Ubuntu/Debian


🔎 Как пользоваться? Просто вводите команду:


tldr tar


Вы получите краткую и понятную инструкцию:


tar -xvf archive.tar # Распаковать архив
tar -cvf archive.tar dir/ # Создать архив из папки
tar -tvf archive.tar # Просмотреть содержимое


Гораздо удобнее, чем листать man tar и быстрее, чем лезть в гугл.

💡 Если хотите использовать tldr в оффлайн-режиме, выполните:


tldr --update


BashTex 📱 #linux #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥1
Пути назад нет

BashTex 📱 #юмор
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18😁5🫡1
Выполнение команд с ограничением по времени

Иногда нужно запустить команду, но ограничить её время выполнения. Например, если программа зависла или работает слишком долго. Для этого используется команда timeout.

▪️ Простой пример. Запустим команду sleep на 5 секунд, но прервём её через 2 секунды:


timeout 2s sleep 5


Через 2 секунды процесс будет завершён.

▪️ Прерывание долгих команд. Если вы хотите ограничить время выполнения скрипта:


timeout 10s ./долгий_скрипт.sh


Если скрипт не завершится за 10 секунд, timeout его принудительно остановит.

▪️ Игнорирование SIGTERM. Некоторые команды игнорируют сигнал SIGTERM. В таком случае можно использовать -k для отправки SIGKILL:


timeout -k 5s 30s ./непослушный_процесс


Сначала timeout подождёт 30 секунд, затем отправит SIGTERM.
Если процесс не завершится через 5 секунд, отправится SIGKILL.

▪️ Использование с ping. Ограничим ping 5 секундами:


timeout 5s ping 8.8.8.8


Через 5 секунд ping остановится автоматически.

▪️ Вывод кода завершения

Если команда успела завершиться - timeout передаст её код возврата.
Если команда была принудительно остановлена - код возврата будет 124.

Проверим:


timeout 2s sleep 5
echo $? # Выведет 124


BashTex 📱 #linux #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥2
Сжатие логов в реальном времени

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

1️⃣ Перехват логов и их сжатие на лету. Если процесс пишет логи в stdout, можно сразу сжимать их:


some_command 2>&1 | tee >(gzip -c > logs.gz)


tee дублирует вывод в сжатый файл, при этом логи остаются видимыми в консоли.

Для zstd (он быстрее, чем gzip):


some_command 2>&1 | tee >(zstd > logs.zst)


2️⃣ Сжатие логов nginx в реальном времени. Добавляем gzip в конфигурацию logrotate:


/var/log/nginx/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
}


Логи будут сжиматься автоматически после ротации.

3️⃣ Прямая передача логов в сжатый файл. Если приложение пишет в файл, можно использовать именованный канал:


mkfifo /tmp/logpipe
gzip -c < /tmp/logpipe > /var/log/app.log.gz &
some_command > /tmp/logpipe 2>&1


Логи идут в gzip, при этом процесс не знает, что его вывод сжимается.

4️⃣ Использование systemd-journald для сжатия. Если система использует journald, включаем сжатие в конфиге:


[Journal]
Compress=yes
SystemMaxUse=500M


Затем перезапускаем службу:


systemctl restart systemd-journald


Логи будут автоматически сжаты, освобождая место.

BashTex 📱 #bash #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Настройка удалённого аудита логов с rsyslog

rsyslog позволяет пересылать логи с серверов на удалённый лог-агрегатор, обеспечивая удобный аудит и хранение.

1️⃣ Настройка сервера (приём логов). На сервере, который будет принимать логи, включаем поддержку удалённых сообщений:

Редактируем конфиг /etc/rsyslog.conf. Добавляем:


# Разрешаем приём логов по TCP и UDP
$ModLoad imudp
$UDPServerRun 514

$ModLoad imtcp
$InputTCPServerRun 514


UDP - быстрее, но ненадёжно.
TCP - более надёжно, но может вызывать задержки.

Перезапускаем rsyslog:


systemctl restart rsyslog


И не забываем открыть порт в firewalld или iptables:


firewall-cmd --permanent --add-port=514/udp
firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --reload


2️⃣ Настройка клиента (отправка логов). На сервере-отправителе редактируем /etc/rsyslog.conf и добавляем в конец:


*.* @192.168.1.100:514 # Отправка по UDP
# *.* @@192.168.1.100:514 # Для TCP — две @


Где 192.168.1.100 - IP сервера сбора логов.

Перезапускаем rsyslog:


systemctl restart rsyslog


Проверяем отправку тестового сообщения:


logger "Тестовая запись в удалённые логи"


3️⃣ Фильтрация и хранение логов. Можно настроить rsyslog на приём и сортировку логов по папкам:


$template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
& stop


Теперь логи будут храниться по серверам и сервисам в /var/log/remote/.

4️⃣ Шифрование логов (TLS). Открытые логи могут содержать чувствительные данные. Для безопасной передачи можно включить TLS.

Добавляем в /etc/rsyslog.conf на сервере:


$DefaultNetstreamDriverCAFile /etc/rsyslog.d/ca.pem
$DefaultNetstreamDriverCertFile /etc/rsyslog.d/server-cert.pem
$DefaultNetstreamDriverKeyFile /etc/rsyslog.d/server-key.pem

$ModLoad imtcp
$InputTCPServerStreamDriverMode 1
$InputTCPServerStreamDriverAuthMode anon
$InputTCPServerRun 6514


И на клиенте:


$DefaultNetstreamDriverCAFile /etc/rsyslog.d/ca.pem
$DefaultNetstreamDriverCertFile /etc/rsyslog.d/client-cert.pem
$DefaultNetstreamDriverKeyFile /etc/rsyslog.d/client-key.pem

*.* @@(overtls)192.168.1.100:6514



rsyslog позволяет собирать логи с разных серверов в одном месте.
Можно использовать фильтрацию и сортировку логов по сервисам.
Для безопасности передача логов может быть зашифрована через TLS.

BashTex 📱 #linux #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8