Продвинутая работа с логами в Linux
journalctl - Работа со структурированными логами
Журнал событий, это компонент systemd, который захватывает сообщения Syslog, логи ядра, все события при инициализации системы (RAM, диск, boot, STDOUT/STDERR для всех сервисов), индексирует их и затем предоставляет удобной пользовательский интерфейс для поиска и фильтрации логов. Журнал (systemd journal) можно использовать вместе или вместо syslog или syslog-ng.
Утилита командной строки journalctl, если сравнивать ее с традиционным инструментами для работы с логами в UNIX (tail, grep, sed, awk) более широкие возможности.
Давайте рассмотрим основные возможности которые предоставляет журнал systemd и способы их применения.
https://habr.com/ru/articles/749714/
journalctl - Работа со структурированными логами
Журнал событий, это компонент systemd, который захватывает сообщения Syslog, логи ядра, все события при инициализации системы (RAM, диск, boot, STDOUT/STDERR для всех сервисов), индексирует их и затем предоставляет удобной пользовательский интерфейс для поиска и фильтрации логов. Журнал (systemd journal) можно использовать вместе или вместо syslog или syslog-ng.
Утилита командной строки journalctl, если сравнивать ее с традиционным инструментами для работы с логами в UNIX (tail, grep, sed, awk) более широкие возможности.
Давайте рассмотрим основные возможности которые предоставляет журнал systemd и способы их применения.
https://habr.com/ru/articles/749714/
❤2
Запуск Windows-контейнеров под Linux и MacOS
Если на компьютере под Linux нужно быстренько запустить Windows или MacOS, самый простой и быстрый способ сделать это — ввести команду для скачивания и загрузки докер-контейнера с этой ОС.
В маркетплейсе RuVDS много готовых образов с установленными операционными системами. Там разные дистрибутивы Linux, Windows Server и CentOS. Но нет контейнеров с операционными системами.
Операционная система в докер-контейнере (в QEMU) не требует ручной инсталляции ОС. Всего одна команда в консоли — и контейнер Windows скачивается и запускается.
https://habr.com/ru/companies/ruvds/articles/901004/
Если на компьютере под Linux нужно быстренько запустить Windows или MacOS, самый простой и быстрый способ сделать это — ввести команду для скачивания и загрузки докер-контейнера с этой ОС.
В маркетплейсе RuVDS много готовых образов с установленными операционными системами. Там разные дистрибутивы Linux, Windows Server и CentOS. Но нет контейнеров с операционными системами.
Операционная система в докер-контейнере (в QEMU) не требует ручной инсталляции ОС. Всего одна команда в консоли — и контейнер Windows скачивается и запускается.
https://habr.com/ru/companies/ruvds/articles/901004/
👍2
Шпаргалка по RAID
Информация о RAID
Сборка RAID
при получении ответа mdadm: Unrecognised md component device -
* где /dev/md0 — устройство RAID, которое появится после сборки; -l 1 — уровень RAID; -n 2 — количество дисков, из которых собирается массив; /dev/sd{b,c} — сборка выполняется из дисков sdb и sdc.
Создание файловой системы и монтирование массива
nano /etc/fstab, прописать
Восстановление RAID
Замена жесткого диска
При выходе из строя, команда mdadm -D /dev/md0 выдаст: State : clean, degraded
Статус должен стать Rebuild Status : 40% complete и так до полного восстановления
Пересборка массива
Если нам нужно вернуть ранее разобранный или развалившийся массив из дисков, которые уже входили в состав RAID, вводим:
Запасной диск (Hot Spare)
Если в массиве будет запасной диск для горячей замены, при выходе из строя одного из основных дисков, его место займет запасной.
Добавить диск к массиву, расширить массив
Добавление активного диска к RAID, который будет использоваться для работы, а не в качестве запасного.
* в данном примере подразумевается, что у нас RAID 1 и мы добавили к нему 3-й диск.
Установка mdadm
Если каким-то образом в дистрибутиве нет этого пакета
Удаление массива
Если нам нужно полностью разобрать RAID, сначала размонтируем и остановим его:
* где
Затем очищаем суперблоки на всех дисках, из которых он был собран:
mdadm
— утилита для работы с программными RAID-массивами различных уровней. В данной инструкции рассмотрим примеры ее использования.Информация о RAID
cat /proc/mdstat
- состояние всех RAIDmdadm -D /dev/md0
- подробная инфа о конкретном RAIDlsblk
- список дисков с разделами, местом, типомdf -hT
- свободное место, тип файловой системы, точки монтированияСборка RAID
mdadm —zero-superblock —force /dev/sd{b,c}
- обнуление суперблоков на дисках sdb sdc (для удаления инфы о других RAID)при получении ответа mdadm: Unrecognised md component device -
/dev/sdb
значит, что диск не использовался для RAID, продолжаемmdadm —create —verbose /dev/md0 -l 1 -n 2 /dev/sd{b,c}
* где /dev/md0 — устройство RAID, которое появится после сборки; -l 1 — уровень RAID; -n 2 — количество дисков, из которых собирается массив; /dev/sd{b,c} — сборка выполняется из дисков sdb и sdc.
Создание файловой системы и монтирование массива
mkfs.ext4 /dev/md0
- создание файловой системы ext4 на md0mount /dev/md0 /mnt
- разово примонтировать md0 к /mnt
nano /etc/fstab, прописать
/dev/md0 /mnt ext4 defaults 1 2
- постоянное монтирование, работает после перезагрузкиВосстановление RAID
Замена жесткого диска
При выходе из строя, команда mdadm -D /dev/md0 выдаст: State : clean, degraded
mdadm /dev/md0 —remove /dev/sdc
- удалить сбойный дискmdadm /dev/md0 —add /dev/sde
- добавить новый диск в массивСтатус должен стать Rebuild Status : 40% complete и так до полного восстановления
Пересборка массива
Если нам нужно вернуть ранее разобранный или развалившийся массив из дисков, которые уже входили в состав RAID, вводим:
mdadm —assemble —scan
- команда сама найдет необходимую конфигурацию и восстановит RAID.mdadm —assemble /dev/md0 /dev/sdb /dev/sdc
- с указанием из каких дисков пересобратьЗапасной диск (Hot Spare)
Если в массиве будет запасной диск для горячей замены, при выходе из строя одного из основных дисков, его место займет запасной.
mdadm /dev/md0 —add /dev/sdd
- Диском Hot Spare станет тот, который просто будет добавлен к массивуДобавить диск к массиву, расширить массив
Добавление активного диска к RAID, который будет использоваться для работы, а не в качестве запасного.
mdadm /dev/md0 —add /dev/sde
mdadm -G /dev/md0 —raid-devices=3
- расширяем RAID* в данном примере подразумевается, что у нас RAID 1 и мы добавили к нему 3-й диск.
Установка mdadm
Если каким-то образом в дистрибутиве нет этого пакета
apt-get install mdadm
Удаление массива
Если нам нужно полностью разобрать RAID, сначала размонтируем и остановим его:
umount /mnt
* где
/mnt
— каталог монтирования нашего RAID.mdadm -S /dev/md0
Затем очищаем суперблоки на всех дисках, из которых он был собран:
mdadm —zero-superblock /dev/sdb
mdadm —zero-superblock /dev/sdc
mdadm —zero-superblock /dev/sdd
👍4❤1
Fail2Ban: Шпаргалка по настройке
Fail2Ban — инструмент для защиты сервера от перебора паролей (brute-force) и других атак, блокируя IP-адреса через
Установка
Debian/Ubuntu:
RHEL/CentOS:
Базовая настройка
1. Создаём локальную копию конфига:
2. Открываем для редактирования:
3. Ключевые параметры:
Пример: защита SSH
Проверка и управление
- Запуск/остановка:
- Статус:
- Статус конкретного jail:
- Разбанить IP:
Полезные логи
- Fail2Ban логи:
- Проверка правил iptables:
Советы :
✅ Создавайте
✅ Добавляйте свои фильтры в
✅ Используйте
Fail2Ban — инструмент для защиты сервера от перебора паролей (brute-force) и других атак, блокируя IP-адреса через
iptables
, firewalld
, nftables
и др.Установка
Debian/Ubuntu:
sudo apt update && sudo apt install fail2ban
RHEL/CentOS:
sudo dnf install fail2ban
Базовая настройка
1. Создаём локальную копию конфига:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
2. Открываем для редактирования:
sudo nano /etc/fail2ban/jail.local
3. Ключевые параметры:
[DEFAULT]
bantime = 3600 # Время бана (в секундах)
findtime = 600 # Интервал поиска неудачных попыток
maxretry = 5 # Сколько раз можно ошибиться
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 # IP без блокировки
Пример: защита SSH
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
maxretry = 3
bantime = 1h
Проверка и управление
- Запуск/остановка:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
- Статус:
sudo fail2ban-client status
- Статус конкретного jail:
sudo fail2ban-client status sshd
- Разбанить IP:
sudo fail2ban-client set sshd unbanip 1.2.3.4
Полезные логи
- Fail2Ban логи:
/var/log/fail2ban.log
- Проверка правил iptables:
sudo iptables -L -n
Советы :
✅ Создавайте
.local
-файлы вместо правки .conf
✅ Добавляйте свои фильтры в
/etc/fail2ban/filter.d
✅ Используйте
fail2ban-regex
для теста фильтров👍4❤1
Руководство по обеспечению безопасности Linux-сервера
https://github.com/imthenachoman/How-To-Secure-A-Linux-Server
https://github.com/imthenachoman/How-To-Secure-A-Linux-Server
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Что происходит, когда вы вводите в браузер URL-адрес?
Давайте рассмотрим этот процесс пошагово.
Шаг 1. Пользователь вводит в браузер URL и нажимает Enter. Первое, что нам нужно сделать, это преобразовать URL в IP-адрес. Сопоставление обычно хранится в кэше, поэтому браузер ищет IP-адрес в нескольких уровнях кэша: кэше браузера, кэше ОС, локальном кэше и кэше провайдера. Если браузер не смог найти сопоставление в кэше, он обращается к DNS (Domain Name System) resolver для его разрешения.
Шаг 2. Если IP-адрес не удается найти ни в одном из кэшей, браузер обращается к DNS-серверам для выполнения рекурсивного DNS-поиска, пока IP-адрес не будет найден.
Шаг 3. Теперь, когда у нас есть IP-адрес сервера, браузер посылает на него HTTP-запрос. Для безопасного доступа к ресурсам сервера всегда следует использовать протокол HTTPS. Сначала браузер устанавливает TCP-соединение с сервером с помощью трехстороннего рукопожатия TCP. Затем он посылает открытый ключ клиенту. Клиент использует открытый ключ для шифрования сеансового ключа и отправляет его серверу. Сервер использует закрытый ключ для расшифровки сеансового ключа. Теперь клиент и сервер могут обмениваться зашифрованными данными с использованием сеансового ключа.
Шаг 4. Сервер обрабатывает запрос и отправляет ответ. Для успешного ответа код состояния равен 200. Ответ состоит из трех частей: HTML, CSS и Javascript. Браузер анализирует HTML и формирует дерево DOM. Он также анализирует CSS и генерирует дерево CSSOM. Затем он объединяет дерево DOM и дерево CSSOM в дерево рендеринга. Браузер отображает содержимое и показывает его пользователю.
Давайте рассмотрим этот процесс пошагово.
Шаг 1. Пользователь вводит в браузер URL и нажимает Enter. Первое, что нам нужно сделать, это преобразовать URL в IP-адрес. Сопоставление обычно хранится в кэше, поэтому браузер ищет IP-адрес в нескольких уровнях кэша: кэше браузера, кэше ОС, локальном кэше и кэше провайдера. Если браузер не смог найти сопоставление в кэше, он обращается к DNS (Domain Name System) resolver для его разрешения.
Шаг 2. Если IP-адрес не удается найти ни в одном из кэшей, браузер обращается к DNS-серверам для выполнения рекурсивного DNS-поиска, пока IP-адрес не будет найден.
Шаг 3. Теперь, когда у нас есть IP-адрес сервера, браузер посылает на него HTTP-запрос. Для безопасного доступа к ресурсам сервера всегда следует использовать протокол HTTPS. Сначала браузер устанавливает TCP-соединение с сервером с помощью трехстороннего рукопожатия TCP. Затем он посылает открытый ключ клиенту. Клиент использует открытый ключ для шифрования сеансового ключа и отправляет его серверу. Сервер использует закрытый ключ для расшифровки сеансового ключа. Теперь клиент и сервер могут обмениваться зашифрованными данными с использованием сеансового ключа.
Шаг 4. Сервер обрабатывает запрос и отправляет ответ. Для успешного ответа код состояния равен 200. Ответ состоит из трех частей: HTML, CSS и Javascript. Браузер анализирует HTML и формирует дерево DOM. Он также анализирует CSS и генерирует дерево CSSOM. Затем он объединяет дерево DOM и дерево CSSOM в дерево рендеринга. Браузер отображает содержимое и показывает его пользователю.
👍2❤1
Сборник Bash скриптов
Скрипт оповещения по email об остатке дискового пространства менее 10%
Сканирование сети на наличие хостов
Удалить временные файлы из домашнего каталога
Скрипт оповещения по email об остатке дискового пространства менее 10%
#!/bin/bash
used=`df -hl / | awk {'print $4'} | grep "%"`
used=${used/\%/}
if [ $used -gt 90 ];
then
echo "Attention! Available space less than 10%. Used space = $used"% | mail -s "DISK ALERT" <a href="mailto:[email protected]">[email protected]</a>
fi
Сканирование сети на наличие хостов
#scannet.sh
#Сканируем сеть на наличие хостов
#!/bin/sh
NET=${1}
if [ -z ${NET} ]; then
echo 'Usage:'
echo ' scan.sh first_3_octets'
echo ''
echo 'Example:'
echo ' scan.sh 192.168.0'
echo ''
else
echo "Finding hosts in net ${NET}.0/24"
echo ''
echo 'Found hosts:'
for host in `seq 1 254`; do
if (ping -c 3 ${NET}.${host} > /dev/null 2> /dev/null) then
echo ${NET}.${host}
fi
done
fi
Удалить временные файлы из домашнего каталога
#deltmp.sh
#Удаляет временные файлы из домашнего каталога
#!/bin/bash
echo "******************* start **********"
find -name .*~. -exec rm -i {} \;
echo "****************** finish **********"
❤1👍1