Гайды и мануалы

Linux-гайды для всех — от новичков до сисадминов. Разжёвано и без воды.


Суть категории: ✔ Пошаговые инструкции с детальными объяснениями ✔ Примеры реальных кейсов и рабочих конфигураций ✔ Разбор часто используемых команд и их параметров ✔ Авторские методики решения типовых задач

Фишка: «Гайды, после которых у вас не останется вопросов "а как это работает?" — только понимание и готовые решения.»

**«Гарантия: 0% воды, 100% /usr/bin/»*.

Бэкап без паники: простые правила, которые спасут ваш Linux

- Опубликовано в Гайды и мануалы

Введение

В мире Unix‑подобных систем надежность и предсказуемость — это не просто слова. Хакеры, сбои оборудования и человеческие ошибки делают резервное копирование одной из самых важных задач администрирования. Однако многие считают её сложной, дорогой или даже бессмысленной. В этой статье мы разберём простой набор правил, которые позволят вам создавать надёжные бэкапы без лишней паники.

⚠️ Важно: резервное копирование — это не «плюс‑или‑минус» в настройках, а обязательная часть стратегии выживания вашего сервера. Если вы читаете эту статью до того, как потеряете данные, значит, вам всё ещё удаётся держать ситуацию под контролем.


Основная часть

1️⃣ Выберите правильный инструмент

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

Утилита Плюсы Минусы Лучшее применение
rsync Быстрый, delta‑копирование Нет встроенного шифрования Локальные резервные копии / синхронизация каталогов
tar Универсальный формат, легко переносить Не поддерживает инкремент в нативном виде Создание архивов для офлайн-репозитория
duplicity Инкремент + шифрование Требует Python, может быть медленным Полноценные резервные копии с удалённым хранением
# Пример простого rsync‑бэкапа
rsync -avz --delete /var/www/ backup@example.com:/mnt/backups/

🔧 Tip: Используйте --backup-dir для создания “снимков” старых файлов, чтобы быстро откатиться в случае ошибки.


2️⃣ Делайте инкрементные бэкапы

Инкрементный режим экономит место и время. Как это работает?

  1. Полный (Full) – резервирует всё.
  2. Дифференциальный – копирует только изменения с последнего полного бэкапа.
  3. Инкрементальный – копирует только изменения с последнего любого бэкапа.

📌 Совет: храните минимум два полных бэкапа и несколько инкрементов между ними.

# Пример команды для duplicity (инкремент)
duplicity /home/user sftp://backup@example.com/home_user_backup/

3️⃣ Автоматизируйте с помощью cron

Планировщик задач – ваш лучший друг. Создаём простую задачу, которая будет запускать скрипт каждый день в 02:00.

# crontab -e
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

backup.sh может содержать несколько команд из предыдущих пунктов, а также проверку завершения работы:

#!/bin/bash
set -e

# Полный бэкап раз в неделю
if [ $(date +%u) -eq 1 ]; then
    rsync -avz --delete /var/www/ backup@example.com:/mnt/backups/
fi

# Инкрементальный каждый день
duplicity /home/user sftp://backup@example.com/home_user_backup/

4️⃣ Храните резервные копии в разных местах

Ни один сервер не может быть полностью защищён, если всё хранится в одном месте. Правило «3-2-1»:

Количество копий Формат хранения Где
≥ 3 Полный/инкремент Локальный диск
≥ 2 Инкремент Сетевой NAS / SAN
1 Крипт. резерв Облачное хранилище (S3, Google Cloud)
# Пример копирования в облако с помощью rclone
rclone copy backup:/mnt/backups/ remote:linux-backup/

🚨 Важно: убедитесь, что ключи шифрования не находятся на том же сервере, где хранятся бэкапы.


5️⃣ Проверяйте целостность резервных копий

Создавайте регулярные тесты восстановления. Это можно автоматизировать с помощью testbackup.sh.

#!/bin/bash
set -e

# Восстановление из последнего инкремента
duplicity --restore /home/user /tmp/test_restore/

# Сравнение контрольных сумм
tar -cf - /var/www | sha256sum > /tmp/sha_original
cat /tmp/test_restore/www.tar.gz | tar -xf - -O | sha256sum > /tmp/sha_restored

diff /tmp/sha_original /tmp/sha_restored && echo "✅ Проверка пройдена" || echo "❌ Не совпадают!"

Запускайте этот скрипт еженедельно в отдельном cron‑задании.


6️⃣ Документируйте и храните план восстановления

Код без документации – это просто код. Создайте README.md рядом с вашими скриптами:

# План восстановления Linux

## Требования
- SSH доступ к серверу: backup@example.com
- rclone настроен для remote:linux-backup

## Полный бэкап
`rsync -avz --delete /var/www/ backup@example.com:/mnt/backups/`

## Инкрементальный
`duplicity /home/user sftp://backup@example.com/home_user_backup/`

## Восстановление
1. Подключитесь к серверу.
2. Выполните `./restore.sh`.
3. Проверьте логи в `/var/log/backup.log`.


Заключение

Резервное копирование — это не просто копирование файлов, а системный подход к защите данных. Если вы:

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

то паника при потере данных останется только в теории.

💡 Последний совет: держите ваш резервный скрипт в системе контроля версий (Git) и периодически обновляйте его, чтобы он оставался актуальным даже после обновлений ОС.

Соблюдая простые правила, вы превратите бэкап‑процесс из источника стресса в надёжный «защитник» вашего Linux‑серверов. 🚀

Fail2Ban-мания: как превратить плохие IP‑и в несуществующие

- Опубликовано в Гайды и мануалы

Введение

В мире кибербезопасности каждый сервер – это целая арена битвы с ботами, скриптами‑сканерами и взломщиками. Самый простой способ дать им «сделать вид, что они не существуют» — это настроить Fail2Ban. Это инструмент, который автоматически блокирует IP‑адреса после серии неудачных попыток входа в систему. В этой статье мы разберём, как превратить «плохие» IP‑и в простые «неexistent» с помощью Fail2Ban: от базовой установки до продвинутой конфигурации и мониторинга.


Основная часть

1️⃣ Установка и первичная настройка

Fail2Ban поставляется в большинстве репозиториев Linux. На Debian/Ubuntu:

sudo apt update
sudo apt install fail2ban

На CentOS/RHEL:

sudo yum install epel-release
sudo yum install fail2ban

После установки проверьте статус сервиса:

sudo systemctl status fail2ban

Если всё в порядке, включите автозапуск:

sudo systemctl enable fail2ban

2️⃣ Понимание «Jail» и «Filter»

Fail2Ban состоит из двух ключевых компонентов: - Filter – регулярные выражения, которые ищут подозрительные строки в логах. - Jail – правила, связывающие фильтры с сервисами и определяющие пороги блокировки.

Файлы находятся в /etc/fail2ban/. Основной конфиг fail2ban.conf, но большинство настроек меняется в файле jail.local.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Пример простого фильтра (ssh)

Файл /etc/fail2ban/filter.d/sshd.conf уже существует, но вы можете добавить собственные правила. Например:

[Definition]
failregex = ^%(__prefix_line)sFailed password for .* from <HOST> port \d+ ssh2$
ignoreregex =

3️⃣ Настройка стандартного «ssh» jail

В jail.local добавьте или отредактируйте раздел:

[sshd]
enabled = true
port    = ssh
filter  = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600      # 1 час
findtime = 600     # 10 минут

Что означает каждый параметр?

Параметр Значение Описание
maxretry 5 Количество неудачных попыток, после которых IP блокируется.
bantime 3600 Время блокировки в секундах.
findtime 600 Период времени, в течение которого учитываются попытки.

4️⃣ Добавление кастомных Jail для Nginx

Если вы хотите защитить веб‑сервер, создайте новый файл /etc/fail2ban/jail.d/nginx.local:

[nginx-http-auth]
enabled  = true
port     = http,https
filter   = nginx-http-auth
logpath  = /var/log/nginx/access.log
maxretry = 3
bantime  = 7200      # 2 часа

Файл фильтра /etc/fail2ban/filter.d/nginx-http-auth.conf:

[Definition]
failregex = ^<HOST> -.*"(GET|POST).*HTTP/1.[01]" (401|403)
ignoreregex =

5️⃣ Тестирование и мониторинг

После изменений перезапустите сервис:

sudo systemctl restart fail2ban

Проверка статуса конкретного jail:

sudo fail2ban-client status sshd

Вывод покажет количество заблокированных IP‑ов и их список.

Мониторинг в реальном времени

Для непрерывного наблюдения можно использовать fail2ban-client с опцией log:

sudo fail2ban-client log

6️⃣ Расширенные возможности: интеграция с iptables / nftables

Fail2Ban автоматически добавляет правила в iptables. Если вы используете nftables, включите поддержку:

[DEFAULT]
banaction = nftables-multiport

Создайте файл nftables-multiport в /etc/fail2ban/action.d/, если его нет.

7️⃣ Удаление IP‑ов вручную

Если вы случайно заблокировали доверенный IP, разблокируйте его:

sudo fail2ban-client set sshd unbanip <IP-адрес>

Заключение

Fail2Ban — это простое и мощное решение для защиты серверов от массовых атак. Правильно настроенные «jail» и фильтры позволяют автоматически превращать агрессивные IP‑адреса в несуществующие: они просто остаются заблокированными, пока злоумышленник не сдастся.

С учётом гибкости конфигурации, интеграции с различными системами фильтрации (iptables, nftables) и возможности расширения через собственные правила, Fail2Ban становится незаменимым инструментом в арсенале любого администратора.

Готовы к защите? Настройте Fail2Ban сегодня, а завтра будете благодарны за спокойный сон!

Создание, изменение и удаление LVM

- Опубликовано в Гайды и мануалы

Введение

Logical Volume Manager (LVM) — это гибкая система управления логическими томами в Linux. Она позволяет динамически изменять размер разделов, объединять несколько физических устройств в один пул, а также быстро создавать резервные копии и мигрировать данные без простоя. Эта статья охватывает основные операции с LVM: создание группы физического хранения (Physical Volume → PV), логической группы (Volume Group → VG) и логических томов (Logical Volume → LV); изменение размеров томов; удаление компонентов. Мы будем использовать команды из пакета lvm2 (pvcreate, vgcreate, lvcreate, lvextend, lvreduce, lvremove, vgreduce, vgremove и т.д.) и покажем примеры в виде скриптов.

⚠️ Внимание!
Любые операции с LVM влияют на данные. Перед началом убедитесь, что у вас есть актуальные резервные копии и вы работаете над тестовой системой или виртуальной машиной.

Основная часть

1️⃣ Создание физических томов (Physical Volumes)

Физический том — это обертка над реальным диском или разделом. Для создания PV используем pvcreate.

# Создадим PV на /dev/sdb
sudo pvcreate /dev/sdb

Проверяем статус:

sudo pvs
PV VG Fmt Attr LSize PSize PFree
sdb1 lvm2 a--o- 100.00g 100.00g 100.00g

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

Группа томов объединяет один или несколько PV в единый пул ресурсов.

# Создадим VG под названием vg_data, используя ранее созданный PV
sudo vgcreate vg_data /dev/sdb1

Проверяем:

sudo vgs
VG #PV #LV Attr VSize VFree
vg_data 1 0 -wi-ao---- 100.00g 100.00g

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

Логический том — это виртуальный раздел, который можно монтировать как обычный файловый систем.

# Создадим LV размером 20G и назовем его lv_home
sudo lvcreate -L 20G -n lv_home vg_data

# Форматируем в ext4
sudo mkfs.ext4 /dev/vg_data/lv_home

# Монтируем
sudo mkdir /mnt/home
sudo mount /dev/vg_data/lv_home /mnt/home

Проверяем:

sudo lvs
LV VG Attr LSize Origin Data% Meta%
lv_home vg_data -wi-ao--- 20.00g

4️⃣ Расширение логического тома (lvextend)

Если нужно увеличить размер LV, используем lvextend. Важно не превышать свободное пространство в VG.

# Увеличим lv_home до 30G
sudo lvextend -L +10G /dev/vg_data/lv_home

# После расширения необходимо растянуть файловую систему
sudo resize2fs /dev/vg_data/lv_home

Проверяем:

df -h | grep lv_home

5️⃣ Уменьшение логического тома (lvreduce)

Уменьшить LV можно только если в нем нет данных, иначе потребуется удалить или переместить файлы.

# Сначала смонтируем точку монтирования в read-only режим и уберём все данные
sudo umount /mnt/home
sudo e2fsck -f /dev/vg_data/lv_home   # Проверка файловой системы

# Уменьшаем до 15G (не более чем на 5G меньше текущего)
sudo lvreduce -L 15G /dev/vg_data/lv_home

# После уменьшения снова растягиваем файловую систему
sudo resize2fs /dev/vg_data/lv_home

6️⃣ Удаление логического тома (lvremove)

sudo lvremove /dev/vg_data/lv_home

7️⃣ Удаление группы томов (vgremove) и физического тома (pvremove)

Перед удалением убедитесь, что в VG нет активных LV.

# Удаляем группу vg_data
sudo vgremove vg_data

# Теперь удаляем PV
sudo pvremove /dev/sdb1

Заключение

LVM — мощный инструмент для динамического управления хранилищем. Создание, изменение и удаление томов можно выполнять без перезагрузки системы, что делает LVM идеальным решением для серверных сред и облачных инфраструктур. Главное — всегда держать актуальные резервные копии и внимательно следить за свободным пространством в Volume Group. С практикой вы быстро освоите все нюансы работы с LVM и сможете гибко масштабировать свои дисковые ресурсы.

Hyperland: Текстовый Wayland-композитор для продвинутых пользователей

- Опубликовано в Гайды и мануалы

Введение

Вы устали от традиционных графических сред Linux? Хотите максимального контроля над своей системой и невероятной скорости работы? Тогда вам стоит обратить внимание на Hyperland – уникальный композитор, основанный на Wayland и управляемый исключительно с помощью клавиатуры. Это не просто операционная система, это философия! Hyperland требует от вас понимания принципов работы оконных менеджеров и готовности к настройке, но взамен предлагает потрясающую гибкость и производительность.

В этой статье мы погрузимся в мир Hyperland, рассмотрим его основные особенности, процесс установки и базовые концепции конфигурации. Предупреждаем: это не для новичков! Но если вы готовы к приключениям – добро пожаловать!

Основная часть

Что такое Wayland и почему он важен?

Прежде чем говорить о Hyperland, важно понять, что такое Wayland. Это протокол отображения, который является современной альтернативой X11 (традиционной системы для Linux). Wayland предлагает улучшенную безопасность, производительность и поддержку современных технологий.

Hyperland использует Wayland в качестве основы, что позволяет ему быть быстрым, плавным и отзывчивым. В отличие от многих других графических сред, Hyperland не имеет GUI – все управление осуществляется через текстовые файлы конфигурации и клавиатурные сочетания.

Основные концепции Hyperland: config, rules и scripts

Hyperland управляется тремя основными типами файлов:

  • config: Основной файл конфигурации, где вы определяете раскладку окон, сочетания клавиш, темы и другие глобальные настройки.
  • rules: Файлы правил, которые определяют поведение определенных приложений – например, как они должны отображаться на экране или какие параметры им присваивать.
  • scripts: Скрипты (обычно написанные на Bash или Python), которые позволяют автоматизировать различные задачи и расширять функциональность Hyperland.

Все эти файлы хранятся в директории ~/.config/hyperland.

Установка Hyperland

Процесс установки может немного отличаться в зависимости от вашего дистрибутива Linux, но общая схема выглядит следующим образом:

  1. Установите необходимые пакеты: Wayland-композитор (например, wlroots), шрифты и другие зависимости.
  2. Клонируйте репозиторий Hyperland с GitHub: git clone https://github.com/hyperland/hyperland
  3. Скопируйте пример конфигурации в вашу домашнюю директорию: cp hyperland/config ~/.config/hyperland/config
  4. Перезагрузите систему или запустите Hyperland вручную.

Пример запуска (после установки зависимостей):

exec hyprctl dispatch workspace 1,monitor:DP-1 # Запуск на первом мониторе

Настройка Hyperland: Первый взгляд на config

Файл config – это сердце Hyperland. В нем вы определяете все аспекты поведения вашей системы. Вот пример небольшого фрагмента конфигурации:

# Раскладка окон по умолчанию
layout = tiled

# Сочетания клавиш для переключения между рабочими пространствами
bind = $mainMod + 1, workspace 1
bind = $mainMod + 2, workspace 2
bind = $mainMod + 3, workspace 3

# Темы
theme = Dracula

В этом примере мы определяем раскладку окон по умолчанию как "tiled" (плиточная), сочетания клавиш для переключения между рабочими пространствами и тему оформления. Вы можете настроить все эти параметры под свои нужды.

Использование rules для управления приложениями

Файлы rules позволяют вам определять поведение определенных приложений. Например, вы можете указать, чтобы Firefox всегда запускался на втором мониторе или чтобы терминал Emacs был полноэкранным.

Пример файла правила (~/.config/hyperland/rules/firefox.conf):

windowrule = workspace 2, firefox

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

Скрипты для автоматизации задач

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

Заключение

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

Не бойтесь экспериментировать, читать документацию и задавать вопросы сообществу! Hyperland – это не просто операционная система, это образ жизни 😉. Помните, что путь к идеальной конфигурации может быть долгим, но результат того стоит!

Nftables: Фаервол, который не нужно гуглить каждый раз

- Опубликовано в Гайды и мануалы

Введение

Помните тот момент, когда вам нужно было настроить простейшее правило в iptables, и вы снова и снова гуглили один и тот же синтаксис, боясь ошибиться в порядке аргументов? Если да, то встречайте nftables — современный сетевой фильтр для Linux, который призван избавить системных администраторов и энтузиастов от этих мучений.

Nftables заменил собой классическую связку iptables/ip6tables/arptables/ebtables, предложив единый, логичный и запоминающийся синтаксис. В этой статье мы разберемся, почему nftables — это тот самый фаервол, который не придется постоянно искать в поисковиках.

Справка: Nftables был представлен в ядре Linux версии 3.13 и с тех пор активно развивается, предлагая улучшенную производительность и удобство.

Основная часть

Единый синтаксис вместо зоопарка утилит

Главная боль iptables — это необходимость помнить разные утилиты для разных протоколов: iptables для IPv4, ip6tables для IPv6, arptables для ARP, ebtables для Ethernet-фреймов. Nftables объединяет всё это в одной утилите с единым синтаксисом.

Было в iptables:

# Разрешить HTTP для IPv4
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# То же самое для IPv6
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT

Стало в nftables:

# Разрешить HTTP для всех адресов (и IPv4, и IPv6)
nft add rule inet filter input tcp dport 80 accept

Обратите внимание на использование inet вместо ip или ip6 — это семейство адресов, которое работает одновременно с IPv4 и IPv6.

Человекочитаемые и логичные правила

Синтаксис nftables организован более логично и напоминает обычные предложения: "добавить правило в цепочку input семейства inet для протокола tcp с портом назначения 80 с действием accept".

Сравнение сложных правил:

Действие iptables nftables
Блокировка IP iptables -A INPUT -s 192.168.1.100 -j DROP nft add rule ip filter input ip saddr 192.168.1.100 drop
Логирование iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH attempt: " nft add rule ip filter input tcp dport 22 log prefix "SSH attempt: "

Важно: Обратите внимание, как в nftables действия (accept, drop, log) указываются в конце правила, что делает синтаксис более интуитивным.

Управление множествами и динамическими списками

Одна из мощнейших возможностей nftables — работа с множествами (sets), которые позволяют создавать динамические списки IP-адресов, портов или других элементов.

Создание и использование множества:

# Создаем множество для черного списка
nft add set inet filter blacklist { type ipv4_addr; }

# Добавляем адреса в множество
nft add element inet filter blacklist { 192.168.1.5, 192.168.1.23 }

# Используем множество в правиле
nft add rule inet filter input ip saddr @blacklist drop

Это избавляет от необходимости создавать отдельное правило для каждого блокируемого IP-адреса, как это было в iptables.

Простота управления и отладки

Nftables предлагает удобные инструменты для просмотра и управления правилами:

# Просмотреть все правила, политики и счетчики
nft list ruleset

# Просмотреть правила конкретной таблицы
nft list table inet filter

# Мониторинг в реальном времени
nft monitor

Последняя команда особенно полезна для отладки — она показывает в реальном времени все события, связанные с обработкой правил.

Совместимость с iptables

Для тех, кто не готов сразу переходить: Nftables предоставляет совместимость со старыми командами iptables через утилиты iptables-translate и ip6tables-translate, которые конвертируют правила iptables в синтаксис nftables.

Пример перевода правила: ```bash iptables-translate -A INPUT -p tcp --dport 22 -j ACCEPT

Вывод: nft add rule ip filter INPUT tcp dport 22 counter accept

Настройка сети в Netplan: простое руководство

- Опубликовано в Гайды и мануалы

Netplan — это утилита для настройки сети в современных дистрибутивах Linux (Ubuntu 18.04+, Debian и др.), которая использует YAML-конфигурации для управления сетевыми интерфейсами.

Основные понятия

Файлы конфигурации Netplan находятся в /etc/netplan/ и имеют расширение .yaml. После изменения конфигурации нужно применить изменения командой:

sudo netplan apply
Примечание: Для тестирования конфигурации без применения можно использовать команду sudo netplan try, которая откатит изменения через 120 секунд, если соединение не подтверждено.

Примеры конфигураций

1. Динамический IP (DHCP)

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: true
      dhcp6: true

2. Статический IP-адрес

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

3. Настройка Wi-Fi

network:
  version: 2
  renderer: NetworkManager
  wifis:
    wlp2s0:
      access-points:
        "SSID_вашей_сети":
          password: "ваш_пароль"
      dhcp4: true
Важно: Для Wi-Fi нужно указать renderer: NetworkManager, так как networkd не поддерживает беспроводные соединения.

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

  • ip a — список сетевых интерфейсов
  • sudo netplan generate — проверить синтаксис конфигурации
  • sudo netplan --debug apply — применить с отладочным выводом

Заключение

Netplan предоставляет простой и понятный способ настройки сети в современных Linux-системах. YAML-синтаксис делает конфигурации читаемыми и легко редактируемыми.

Для более сложных сценариев (VLAN, мосты, bonding) обратитесь к официальной документации Netplan.