Типичный Сисадмин
1.33K subscribers
414 photos
46 videos
222 links
⚙️Информация для системного администратора

По всем вопросам : @Sofiia_artamonova
Download Telegram
📌 Шпаргалка по Vim
2
Caddy и 100к доменов: автоматический SSL при одностраничном конфиге

Я начал использовать Nginx более 20 лет назад, и как-то привык к тому что это решение по умолчанию при выборе веб сервера. В своем пути в IT я начинал с linux администрирования, потом был мелкий онлайн бизнес, работал бизнес аналитиком, продактом, временами что-то программировал для себя. Обстоятельства опять поменялись и год назад я устроился работать девопсом в маркетплейс доменов, по сути такой возврат к истокам. Первая задача которую мне выдали - перевести паркинг с 100к доменами с nginx на caddy. На тот момент я не слышал про Caddy, но был очень хорошего мнения о nginx.

https://habr.com/ru/articles/923150/
👍21
UEFI & GRUB

1. ESP (EFI System Partition)

🔺 Формат: FAT32, размер ~100–500 МБ.
🔺 Монтируется как /boot/efi.
🔺 Содержит файлы загрузчиков:

🔺 /EFI/BOOT/BOOTX64.EFI (резерв)
🔺 /EFI/дистрибутив/… (например, /EFI/ubuntu/grubx64.efi).

2. Разметка GPT и создание ESP


parted /dev/sda mklabel gpt
parted /dev/sda mkpart ESP fat32 1MiB 551MiB
parted /dev/sda set 1 boot on
mkfs.fat -F32 /dev/sda1


🔺 Монтирование:


mkdir -p /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi


3. Установка GRUB (UEFI)

1. Смонтировать корень и ESP, войти в chroot:


mount /dev/sdaX /mnt # X — раздел /
mount /dev/sda1 /mnt/boot/efi # ESP
for d in dev proc sys; do mount --bind /$d /mnt/$d; done
chroot /mnt /bin/bash


2. Установить пакет GRUB:

🔺 Debian/Ubuntu: apt install --reinstall grub-efi-amd64
🔺 Arch: pacman -Sy grub efibootmgr
🔺 RHEL/CentOS: yum install grub2-efi shim

3. Запустить:


grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB --recheck
grub-mkconfig -o /boot/grub/grub.cfg


🔺 В RHEL/CentOS:


grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub2 --recheck
grub2-mkconfig -o /boot/efi/EFI/grub2/grub.cfg


4. Файл /etc/default/grub (минимум)


GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_CMDLINE_LINUX="quiet splash"


🔺 После изменений: update-grub (Debian/Ubuntu) или grub2-mkconfig -o … в RHEL.

5. Управление записями UEFI (efibootmgr)

* Просмотр: efibootmgr -v
* Добавить запись:


efibootmgr --create --disk /dev/sda --part 1 \
--label "Linux" --loader "\\EFI\\GRUB\\grubx64.efi"

🔺 Изменить порядок: efibootmgr --bootorder 0002,0001,0003
🔺 Удалить: efibootmgr --bootnum 0004 --delete-bootnum

6. Восстановление GRUB

🔺 Загрузиться с Live-USB, смонтировать / и ESP, chroot как в пункте 3.
🔺 Переустановить GRUB (см. команды выше).
🔺 Убедиться, что в прошивке UEFI выбрана запись “GRUB” как первичная.

7. Советы

🔺 Проверить монтирование ESP: findmnt /boot/efi
🔺 Проверить содержимое ESP: ls /boot/efi/EFI
🔺 Secure Boot:

🔺 Установить shim-signed и grub-efi-amd64-signed (Ubuntu).
🔺 Проверить статус: mokutil --sb-state

8. Сборка простого grub.cfg


set default=0
set timeout=5

menuentry "Linux" {
insmod ext2
set root='hd0,gpt2'
linux /vmlinuz-linux root=/dev/sda2 rw quiet
initrd /initramfs-linux.img
}


🔺 hd0,gpt2 — диск 0, второй GPT-раздел (там /).
🔺 Пути /vmlinuz-linux и /initramfs-linux.img — в /boot.
3
📌 Как работают протоколы электронной почты?
3👍1🥰1
Vault-secrets-operator

Создавайте секреты Kubernetes из Vault для безопасного рабочего процесса на основе GitOps.

https://github.com/ricoberger/vault-secrets-operator
2👍1
Шпаргалка Mikrotik Config

Я документирую процесс подключения и настройки общих сценариев здесь для всех, кто интересуется Mikrotik

https://codingpackets.com/blog/mikrotik-config-cheatsheet/
2
📌 Архитектура Kubernetes
2👍2
Выводим список установленных пакетов в Linux по дате

Порой необходимо узнать когда тот или иной пакет был установлен в операционной системе (например, в целях аудита). В данной статье рассмотрим как вывести список установленных пакетов в Linux, отсортированный по дате установки - давайте разберемся!

https://telegra.ph/Vyvodim-spisok-ustanovlennyh-paketov-v-Linux-po-date-09-10
👍31
Kopia — кроссплатформенный инструмент резервного копирования для Windows, macOS и Linux с быстрым инкрементным резервным копированием, сквозным шифрованием на стороне клиента, сжатием и дедупликацией данных. Включены CLI и GUI.

Источник
3👍2
Как Grafanalib помогает управлять дашбордами в масштабе

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

https://www.contino.io/insights/grafanalib
1
Работа с дисковыми квотами в Debian


Проверка квот на файловой системе /var
quotacheck -vgumf /var

v — режим с подробным выводом результатов работы;
g — проверка только групповых квот, перечисленных в файле /etc/mtab или в указанных файловых системах;
u — проверка только пользовательских квот, перечисленных в файле /etc/mtab или в указанных файловых системах, опцию можно не указывать, т.к. она активна по умолчанию;
m — не пытаться перемонтировать файловую систему только для чтения;
f — форсировать проверку, то есть проверить и записать новые файлы квот на ФС с включенными квотами;

Проверка квот на всех файловых системах где они включены:
quotacheck -vagumf

Редактирование квоты для пользователя web1 (откроется редактор по-умолчанию):
edquota -u web1

Редактирование квоты для группы client1 (откроется редактор по-умолчанию):
edquota -g client1

Показать суммарный отчет по квотам на файловой системе /var
repquota /var

Показать суммарный отчет по квотам на файловой системе /var только для пользователей (-u) в удобном формате (-s)
repquota -g -s /var

Вывод команды:
# repquota -u -s /var -c
*** Report for user quotas on device /dev/mapper/sirius-var
Block grace time: 7days; Inode grace time: 7days
Space limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
web2 -- 23809M 31744M 31745M 76599 0 0
web53 -- 609M 3072M 3073M 8804 0 0

Хотя суммарный отчёт и выглядит довольно просто, но некоторые моменты следует разъяснить.
Символы — — во втором столбце позволяют быстро определить, какой предел был превышен (блоков или inode). Если мягкий предел (soft) превышен, вместо — появляется соответствующий + при этом первый символ — представляет предел блоков, а второй — предел inode.

Столбцы grace обычно пустые, но если мягкий предел (soft) превышен, в этом столбце показывается время, оставшееся до завершения периода отсрочки. Если период отсрочки истёк, в этом столбце отображается none (нет).
👌21
This media is not supported in your browser
VIEW IN TELEGRAM
Сетевые протоколы

1. HTTP (Hypertext Transfer Protocol):
Веб-коммуникация: Обеспечивает взаимодействие браузера и сервера, подходит для незащищенной передачи данных.

2. HTTPS (Hypertext Transfer Protocol Secure):
Безопасная веб-связь: Обеспечивает конфиденциальность благодаря шифрованию SSL/TLS.

3. FTP (File Transfer Protocol):
Передача файлов: Облегчает обмен файлами между компьютерами, используя отдельные каналы.

4. TCP
(Transmission Control Protocol):
Надежная доставка данных: Обеспечивает упорядоченную и надежную передачу данных с проверкой на ошибки.

5. IP (Internet Protocol):
Управление пакетами данных: Занимается маршрутизацией и адресацией пакетов данных, присваивая уникальные IP-адреса.

6. UDP (User Datagram Protocol):
Быстрая передача данных: Обеспечивает бесконтактную и более быструю передачу данных без функций обеспечения надежности.

7. SMTP (Simple Mail Transfer Protocol):
Отправка электронной почты: Управляет отправкой электронной почты между серверами с помощью архитектуры клиент-сервер.

8. SSH (Secure Shell):
Безопасный удаленный доступ: Обеспечивает безопасный доступ к удаленным устройствам, шифруя связь между клиентом и сервером.

9. IMAP (Internet Message Access Protocol):
Доступ к электронной почте: Позволяет получать доступ и извлекать электронную почту с сервера, сохраняя ее на сервере.
3
Безопасность и шифрование. Element/Matrix — достойная альтернатива Slack и Mattermost

Сегодня многие ищут более удобный, дешёвый и безопасный вариант для корпоративных коммуникаций. К сожалению, Slack, Microsoft Teams и другие проприетарные решения не удовлетворяют требованиям по безопасности, а за коммерческие лицензии нужно платить. В качестве альтернативы часто смотрят в сторону бесплатного опенсорсного Mattermost. Но есть вариант получше.

https://habr.com/ru/company/ruvds/blog/702494/
1
Проверяем доступность портов с использованием nmap/netcat/telnet/nc

Доступность tcp-порта
netcat
netcat [options] host port
сканер портов:
netcat -z -v domain.com 1-1000

запустить netcat на хосте и слушать на tcp порте 4444:
netcat -l 4444

а на другой машине проверить подключение к netcat, запущенному на другом хосте:
netcat domain.com 4444

nc
nc -vt <ip> <port>

telnet
telnet <ip> <port>

nmap
порт 25 tcp: nmap -p25 11.11.11.11

Доступность udp-порта
netcat
netcat -u host port

nc
nc -vu <ip> <port>

nmap
доступность порта udp 53: nmap -sU -p U:53 11.1.11.12
3🔥1
Создаем логические тома LVM на Linux

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

Это краткое руководство по внедрению LVM на вашем linux-сервере или рабочей станции.

https://telegra.ph/Sozdaem-logicheskie-toma-LVM-na-Linux-10-09
1
📌 Calico Whisker - безопасные сетевые политики в Kubernetes без простоев

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

Теперь есть решение: Calico Whisker — механизм этапных сетевых политик. Суть простая:

👉🏻 Вы пишете политику, но не применяете её сразу.
👉🏻 Система "наблюдает", какой трафик она бы заблокировала или пропустила.
👉🏻 Вы смотрите логи, анализируете поведение.
👉🏻 И только потом, когда уверены, активируете её без изменений.

Это как staging-режим, только для сетевой безопасности. Без риска. Без простоя.

https://www.tigera.io/blog/calico-whisker-staged-network-policies-secure-kubernetes-workloads-without-downtime/
👍2
Механизм запуска процесса в Linux

В этой статье я расскажу о том, что происходит внутри ядра Linux, когда процесс вызывает execve(), как ядро подготавливает стек и как затем передаёт управление пользовательскому процессу для выполнения.

Изучил я этот механизм, когда разрабатывал Zapper — инструмент Linux, удаляющий все параметры командной строки из любого процесса без прав root.

https://habr.com/ru/companies/ruvds/articles/946236/
1
Собираем docker и деплоим из GitHub Actions

Я приведу краткую инструкцию, как быстро собирать проект и деплоить docker. Времена докера никуда не ушли, все мелкие проекты мы до сих пор делаем на обычных докерах, а также там, где всё on-premise и не дают облака с Kubernetes. Сопровождать Kubernetes самим - то еще удовольствие, особенно, когда заказчики не выделяют бюджеты на "золотых" (Ваня, привет!) devops-еров.

Флоу будет очень простым: одним job мы собираем образ (с указанием тэга или ветки) и кладем в приватный репозиторий образов GitHub, а другим job деплоим оттуда. Это удобно, когда есть несколько сред и мы один раз собираем и контейнер запускаем из него с разными переменными среды. И важное условие: мы не устанавливаем docker-compose или github runner на сервер с docker.

https://habr.com/ru/articles/824526/
1
Ставим пароль на GRUB

1. Генерация хэш-пароля
За данное действие отвечает утилита:
grub-mkpasswd-pbkdf2 

А затем два раза ввести будущий пароль для GRUB. Полученный хэш – это длинная строка, которая начинается с grub.pbkdf2. Ее нужно скопировать и куда-нибудь сохранить.

2. Изменить настройки 
Теперь нужно назначить супер-пользователя для GRUB. Это удобно делать через файл /etc/grub.d/00_header, отредактировав его содержимое. Удобнее сначала открыть текстовый документ, куда все было сохранено, и вставить команду следующего вида:
cat << EOF
set superusers="user_name"
password_pbkdf2 user_name хэш-пароль
EOF
Вместо user_name во второй и третьей строке укажите предпочтительное имя супер-пользователя GRUB, а также замените хэш пароль на свой.

Теперь выполните:
sudo nano /etc/grub.d/00_header

Пролистайте его содержимое до самого конца и на новой строке вставьте ранее подготовленную команду из 4 строк, которая сохранена в текстовом документе. Сохраните изменения.

3. Обновить конфигурацию
sudo update-grub

4. Проверить работу
reboot
🔥21
Подборка Linux утилит для системного администратора

Nezha - Легкий и элегантный аналог Zabbix
Plow - Этот инструмент был разработан для проведения нагрузочного тестирования HTTP
Hunt - Утилита для поиска файлов на локальном компьютере
AutoRegex - Регулярные выражения — это мощный инструмент для преобразования текстовых данных.
ContainerSSH - Утилита, которая позволяет вам незаметно направлять SSH-клиентов в изолированные контейнеры
Krunvm - Это инструмент, который позволяет создавать простые виртуальные машины на основе образов OCI.
Zellij - Это интересный мультиплексор, который может быть использован в качестве альтернативы tmux

https://bookflow.ru/podborka-linux-utilit-dlya-sistemnogo-administratora/
👍21