Ranger от простого до сложного

- Опубликовано в Администрирование

Введение

Ranger – это утилита командной строки для работы с файловой системой, напоминающая текстовый файловый менеджер Midnight Commander или графический проводник Windows, но полностью основанная на терминале. Она поддерживает множество функций: просмотр, копирование, перемещение, поиск, интеграцию с редакторами и даже работу через SSH‑ключи.
В этой статье мы последовательно разберём основные возможности Ranger от базового использования до продвинутых сценариев.

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

1. Установка и первый запуск

# Ubuntu/Debian
sudo apt install ranger

# Arch Linux
sudo pacman -S ranger

# macOS (Homebrew)
brew install ranger

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

ranger

Внутри вы увидите два вертикальных окна, разделённые полем для команды. Навигация осуществляется клавишами h, j, k, l и стрелками.

Совет: Чтобы выйти из Ranger нажмите q.


2. Базовые операции

Команда Описание
Enter Открыть файл/папку
u Подняться на уровень выше
yy Копировать (копировать в буфер)
p Вставить из буфера
dd Удалить
gg Перейти к началу списка
G Перейти к концу списка
# Пример копирования и вставки:
yy   # Копируем текущий файл
cd /tmp  # Переходим в целевую директорию
p       # Вставляем

3. Поиск файлов (фильтрация)

Нажмите : для вызова командной строки, затем введите:

:filter *.py

Все файлы, не соответствующие шаблону, будут скрыты.

Указание: Можно использовать регулярные выражения с флагом -r.


4. Работа с удалёнными системами (SSH)

Ranger автоматически использует SSH‑ключи из вашего агентского менеджера:

ssh-add ~/.ssh/id_rsa

Затем откройте удаленную папку:

:open ssh://user@host:/var/www/

5. Конфигурация и расширения

Файл конфигурации находится по пути ~/.config/ranger/rc.conf. Ниже пример настройки горячих клавиш:

# Перемещение на 10 строк вниз
map j10 move_down

# Включить отображение скрытых файлов
set show_hidden true

Для установки плагинов создайте каталог plugins и скопируйте туда скрипты, например:

git clone https://github.com/ranger/ranger.git ~/.config/ranger/plugins/fzf

После этого включите их в конфиге:

# Включить fzf поиск
map <c-p> find_file_in_fzf

6. Интеграция с редакторами

Ranger позволяет открывать файлы сразу в выбранном редакторе, например vim или nano. Добавьте в rc.conf:

# Открыть файл в vim
map i edit

# Открыть файл в nano
map n edit-nano

7. Скрипты и автоматизация

Ranger поддерживает расширения на Python, которые можно писать самостоятельно. Пример простого скрипта для создания резервной копии:

#!/usr/bin/env python3
import os
import shutil
from ranger.api.commands import Command

class backup(Command):
    """
    :backup
    Создаёт архив текущей директории.
    """

    def execute(self):
        src = self.fm.thisdir.path
        dst = f"{src}.tar.gz"
        shutil.make_archive(src, 'gztar', root_dir=src)
        self.fm.notify(f"Архив создан: {dst}")

Сохраните как ~/.config/ranger/plugins/backup.py и используйте команду :backup.


Заключение

Ranger – мощный инструмент для тех, кто предпочитает терминал. Он сочетает в себе простоту использования базовых операций с гибкостью настройки и расширений. С его помощью можно быстро управлять файлами, работать через SSH, интегрировать сторонние редакторы и даже автоматизировать задачи при помощи скриптов на Python. Начните с установки и изучения базовых команд, а затем постепенно добавляйте свои собственные плагины – ваш рабочий процесс в терминале станет намного более эффективным!

Сравнение: HDD, SSD и NVMe

- Опубликовано в Железо и Linux

Введение

В мире хранения данных три технологии — HDD (жёсткий диск), SSD (твердотельный накопитель) и NVMe (интерфейс для твердотельных накопителей) — остаются основными игроками. Каждый из них имеет свои преимущества, ограничения и области применения. В этой статье мы разберём ключевые различия между ними, сравним характеристики, рассмотрим реальные сценарии использования и подведем итог: какой тип памяти подходит именно вам.

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

1 – Что такое HDD?

Жёсткие диски используют вращающиеся магнитные пластины и головку чтения/записи. Это устоявшийся формат, известный своей ёмкостью и надёжностью при низкой стоимости.

Плюсы - Высокая стоимость за гигабайт - Доступность до 16 ТБ и более
- Хорошая совместимость с большинством ОС

Минусы - Низкая скорость чтения/записи (≈ 80–150 МБ/с) - Большой шум и вибрация - Физически чувствительны к ударам

HDD: 5.4" 7200 RPM | 1 TB | ~120 MB/s

2 – Что такое SSD?

Твердотельные накопители используют флеш‑память NAND и контроллеры для доступа к данным без движущихся частей.

Плюсы - Быстрее HDD (≈ 500–550 МБ/с чтения, 400–450 МБ/с записи) - Тихий режим работы - Меньший энергопотребление

Минусы - Стоимость выше за гигабайт
- Ограниченный цикл записи (~ 10 000–100 000 циклов)

SSD (SATA III): 1 TB | 550 MB/s read | 520 MB/s write

3 – Что такое NVMe?

NVMe — это протокол, оптимизированный для SSD, работающий напрямую через PCI‑Express шину. Он устраняет «узкие места» SATA и повышает пропускную способность до десятков гигабайт в секунду.

Параметр SATA SSD NVMe SSD
Интерфейс 6 Gb/s (≈ 600 МБ/s) 32/64 Gb/s (≈ 3–4 ГБ/s)
Latency ~ 150 µs < 20 µs
IOPS (random read) 80 000 > 500 000

Плюсы - Сверхбыстрый доступ к данным
- Низкая задержка
- Поддержка многопоточной работы

Минусы - Дороже и требует совместимого слота M.2/PCI‑Express
- Не все системы поддерживают NVMe

NVMe SSD: 1 TB | 3,500 MB/s read | 3,000 MB/s write | 700 000 IOPS

4 – Когда выбирать каждый тип?

Сценарий Лучший вариант
Бюджетный ноутбук HDD (или SATA SSD)
Игровая система NVMe SSD + быстрый процессор
Сервер хранения данных Enterprise‑SSD с высокой надёжностью
Облачные сервисы NVMe для масштабируемых приложений

5 – Примеры кода и настройки

Ниже приведён простой скрипт на Bash, который измеряет скорость чтения/записи с помощью dd:

# Чтение 1 GB из файла test.img
time dd if=test.img of=/dev/null bs=1M count=1024

# Запись 1 GB в файл test.img
time dd if=/dev/zero of=test.img bs=1M count=1024 conv=fdatasync

В результате вы получите скорость чтения и записи, позволяющую сравнить ваш накопитель с эталонными значениями.

Заключение

Выбор между HDD, SSD и NVMe зависит от ваших конкретных потребностей:
- HDD остаётся экономичным решением для больших объёмов хранения.
- SSD — универсальный вариант для большинства рабочих станций и игровых машин.
- NVMe предоставляет максимальную производительность, но стоит дороже и требует совместимого оборудования.

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

Программный RAID mdadm и с чем его едят

- Опубликовано в Администрирование

Программный RAID – это способ организации массивов дисков, использующий ресурсы центрального процессора и программное обеспечение вместо специализированных аппаратных контроллеров. Это позволяет создавать отказоустойчивые системы хранения данных без необходимости приобретения дорогостоящего оборудования. Одним из самых популярных инструментов для управления программными RAID массивами в Linux является mdadm. В этой статье мы рассмотрим основы работы с mdadm и основные уровни RAID, которые можно реализовать с его помощью.

Что такое RAID?

RAID (Redundant Array of Independent Disks) – это технология объединения нескольких физических дисков в один логический массив для повышения производительности, надежности или обеих этих характеристик. Существует множество различных уровней RAID, каждый из которых имеет свои преимущества и недостатки. Рассмотрим наиболее распространенные:

  • RAID 0 (Striping): Данные распределяются по всем дискам массива. Это обеспечивает высокую скорость чтения/записи, но не предоставляет никакой защиты от потери данных. При отказе одного из дисков теряется весь массив.
  • RAID 1 (Mirroring): Данные зеркалируются на все диски в массиве. Это обеспечивает высокую надежность, так как при отказе одного из дисков данные остаются доступными на других. Однако, полезный объем массива равен объему наименьшего диска и не увеличивается с добавлением новых дисков.
  • RAID 5 (Striping with Parity): Данные распределяются по всем дискам массива, а также вычисляется контрольная сумма (паритет) для каждого блока данных. Паритет распределяется по всем дискам, что позволяет восстановить данные в случае отказа одного из дисков. Требует минимум 3 диска.
  • RAID 6 (Striping with Double Parity): Аналогичен RAID 5, но использует двойной паритет, что позволяет пережить отказ двух дисков. Требует минимум 4 диска.
  • RAID 10 (Mirroring and Striping): Комбинация RAID 1 и RAID 0. Данные одновременно зеркалируются и распределяются по дискам, обеспечивая высокую производительность и надежность. Требует четное количество дисков (минимум 4).

Установка mdadm

В большинстве дистрибутивов Linux mdadm уже установлен. Если это не так, установите его с помощью менеджера пакетов вашей системы:

sudo apt install mdadm  # Debian/Ubuntu
sudo yum install mdadm  # CentOS/RHEL
sudo pacman -S mdadm # Arch Linux

Создание RAID массива

Перед созданием массива убедитесь, что все диски имеют одинаковый размер. Это особенно важно для RAID 5 и выше. Для примера рассмотрим создание RAID 5 массива из трех дисков /dev/sda1, /dev/sdb1 и /dev/sdc1.

sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1
  • /dev/md0: Имя создаваемого RAID массива.
  • --level=5: Уровень RAID (в данном случае RAID 5).
  • --raid-devices=3: Количество дисков в массиве.
  • /dev/sda1 /dev/sdb1 /dev/sdc1: Список дисков, которые будут включены в массив.

После выполнения команды mdadm начнет создание массива. Этот процесс может занять некоторое время, в зависимости от размера дисков и производительности системы. Во время создания массива не используйте эти диски для других целей!

Добавление диска в RAID массив

Если вам необходимо добавить диск в существующий массив (например, после замены вышедшего из строя), воспользуйтесь командой --add:

sudo mdadm --add /dev/md0 /dev/sdd1
  • /dev/md0: Имя RAID массива.
  • /dev/sdd1: Диск, который будет добавлен в массив. Убедитесь, что диск имеет тот же размер, что и остальные диски в массиве.

После добавления диска mdadm начнет процесс синхронизации массива. Этот процесс также может занять некоторое время.

Удаление диска из RAID массива

Перед удалением диска из массива необходимо пометить его как неисправный или пересоздать массив с меньшим количеством устройств. Простое удаление диска может привести к потере данных!

sudo mdadm --remove /dev/md0 /dev/sda1
  • /dev/md0: Имя RAID массива.
  • /dev/sda1: Диск, который будет удален из массива.

После удаления диска mdadm начнет процесс пересоздания массива с оставшимися устройствами. Этот процесс также может занять некоторое время.

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

Для просмотра состояния массива и информации о его компонентах используйте команду --detail:

sudo mdadm --detail /dev/md0

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

Мониторинг RAID массива

Для отслеживания состояния массива можно использовать команду mdstat:

cat /proc/mdstat

Эта команда отображает текущий статус всех RAID массивов в системе, включая информацию о процессе синхронизации и наличии неисправных дисков. Также рекомендуется настроить систему мониторинга (например, Zabbix или Nagios) для автоматического оповещения об изменениях состояния массива.

Автоматическая сборка массива при загрузке системы

Для того чтобы массив автоматически собирался при загрузке системы, необходимо добавить его в файл конфигурации /etc/mdadm/mdadm.conf. Вы можете создать этот файл вручную или использовать команду mdadm --detail --config=filename /dev/md0, которая сгенерирует конфигурационный файл на основе текущего состояния массива.

После редактирования файла конфигурации обновите кэш mdadm:

sudo update-initramfs -u

Заключение

mdadm – это мощный инструмент для управления программными RAID массивами в Linux. Он позволяет создавать отказоустойчивые системы хранения данных без необходимости приобретения дорогостоящего оборудования. Однако, важно помнить о возможных рисках потери данных при неправильном использовании mdadm. Перед выполнением каких-либо операций с массивом убедитесь, что вы понимаете последствия своих действий и имеете резервную копию важных данных.

Что за зверь Ansible и с чем его едят

- Опубликовано в Администрирование

Введение

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

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

1. Что такое Ansible?

Ansible — это инструмент автоматизации (Automation Engine), написанный на Python, который использует простой язык YAML для описания задач. Ключевые особенности:

Характеристика Описание
Агент‑лесс Нет необходимости в клиенте на удалённых хостах — используется SSH/WinRM.
Declarative Вы описываете желаемое состояние, а Ansible сам решает как его достичь.
Idempotent Повторный запуск той же playbook не меняет уже корректно настроенную систему.
- hosts: webservers
  become: yes
  tasks:
    - name: Установить Nginx
      apt:
        name: nginx
        state: present

2. Как работает Ansible?

  1. Inventory – список хостов (можно статический файл, динамический скрипт или API).
  2. Playbook – набор play‑ов, каждый из которых состоит из tasks.
  3. Module – небольшие программки, выполняющие конкретную операцию (apt, yum, copy и т.д.).
  4. Callback & Logging – вывод результатов в реальном времени.

Пример динамического inventory с использованием AWS EC2:

#!/usr/bin/env python
import boto3
import json

def main():
    ec2 = boto3.client('ec2')
    instances = ec2.describe_instances(
        Filters=[{'Name': 'tag:Role', 'Values': ['web']}]
    )
    inventory = {"_meta": {"hostvars": {}}}
    for r in instances['Reservations']:
        for i in r['Instances']:
            hostname = i['PrivateIpAddress']
            inventory.setdefault('webservers', []).append(hostname)
    print(json.dumps(inventory))

if __name__ == "__main__":
    main()

3. Почему Ansible популярен?

Причина Пример
Простота YAML‑файлы легко читать и писать даже новичкам.
Быстрый старт С одной командой ansible-galaxy init создаётся шаблон проекта.
Масштабируемость Параллельный запуск до 5 000 узлов без дополнительной конфигурации.
Большое сообщество Множество готовых ролей в Ansible Galaxy.

4. Практический пример: развертывание LAMP‑стека

- hosts: dbservers
  become: yes
  roles:
    - { role: mysql, tags: ['db'] }

- hosts: webservers
  become: yes
  roles:
    - { role: apache, tags: ['web'] }

В роли apache можно задать шаблон конфигурации:

# templates/httpd.conf.j2
<VirtualHost *:80>
    ServerName {{ inventory_hostname }}
    DocumentRoot /var/www/html/{{ inventory_hostname }}
</VirtualHost>

5. Интеграция с CI/CD

Ansible часто подключают к Jenkins, GitLab CI или GitHub Actions для автоматического деплоя после успешного билда:

# .gitlab-ci.yml
deploy:
  stage: deploy
  script:
    - ansible-playbook -i inventory/production playbooks/site.yml

Заключение

Ansible — это гибкая и мощная система автоматизации, которая позволяет управлять как небольшими стендами, так и крупными облачными инфраструктурами. Его простота в использовании, отсутствие агентов и широкая экосистема делают его отличным выбором для любой команды, стремящейся к «инфраструктуре как коду». Если вы ещё не попробовали Ansible, сейчас самое время открыть для себя этот “зверь” и увидеть, насколько легче может стать жизнь системного администратора.

Разбор полетов: распространенные системы мониторинга серверов

- Опубликовано в Администрирование

Введение

Сервер — это сердце любой организации. От его стабильности и производительности зависит работоспособность сайтов, приложений, баз данных и сервисов в целом. Чтобы не оказаться «на минном поле» без возможности быстро отреагировать на проблему, необходимо постоянно наблюдать за состоянием оборудования и программного обеспечения.

В этой статье мы разберём наиболее популярные системы мониторинга серверов: их особенности, плюсы/минусы, типичные сценарии использования и примеры конфигураций. Если вы только начинаете внедрять мониторинг или хотите обновить существующую систему — эта статья для вас!


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

Что такое система мониторинга?

Система мониторинга — это программное обеспечение, которое собирает метрики (CPU, память, диски, сеть и т.д.), обрабатывает их, визуализирует и оповещает администраторов о критических событиях.

Категория Примеры
Метрики CPU, RAM, I/O, сетевой трафик
Логи syslog, application logs
Оповещения e‑mail, Slack, PagerDuty

1️⃣ Prometheus + Grafana

Prometheus — система сбора метрик с открытым исходным кодом. Grafana – визуализация и панель управления.

Плюсы

  • Быстрый старт: docker run -p 9090:9090 prom/prometheus
  • Расширяемость через экспортёры (Node Exporter, Blackbox Exporter)
  • Хранение временных рядов в собственной базе

Минусы

  • Не хранит логи (для этого нужен Loki или другой инструмент)
  • Оповещения требуют внешнего интеграционного слоя (Alertmanager)

Мини‑конфигурация Prometheus

# prometheus.yml
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']

Grafana Dashboard

  • Включает готовые дашборды (например, “Node Exporter Full”)
  • Поддержка Alerting на уровне панели

2️⃣ Zabbix

Zabbix — полностью интегрированная система мониторинга с поддержкой метрик, логов и SNMP.

Плюсы

  • Полный стек: сбор данных, хранение, оповещения, API
  • Интеграция с SNMP‑устройствами
  • Удобный интерфейс для конфигурации

Минусы

  • Требует настройки серверной части (MySQL/PostgreSQL)
  • Небольшой накладной расход на ресурсы

Основные компоненты

Компонент Описание
Zabbix server Сбор и хранение данных
Zabbix agent Сбор метрик от узла
Front‑end (PHP) Веб‑интерфейс

Мини‑конфигурация агента

# /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.100
Hostname=server-01
ListenPort=10050

3️⃣ Netdata

Netdata — «живой» мониторинг в реальном времени с простым установочным скриптом.

Плюсы

  • Быстрая установка: bash <(curl -Ss https://my-netdata.io/kickstart.sh)
  • Интерактивные графики, поддержка Docker/Kubernetes
  • Нет необходимости в отдельном сервере

Минусы

  • Меньше возможностей для долгосрочного хранения данных (можно подключить Prometheus)
  • Ограниченные возможности кастомизации алёртов

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

# /etc/netdata/netdata.conf
[global]
    allow root = yes

4️⃣ Grafana Loki + Alertmanager + Promtail

Если вы хотите собрать логирование и метрики в одном стеку, рассмотрите комбинацию:

  • Loki — хранение логов (по аналогии с Prometheus)
  • Promtail — агент для сбора логов
  • Alertmanager — оповещения

Плюсы

  • Легкая интеграция с Grafana
  • Хранит только метаданные, экономя место
  • Полностью открытый исходный код

Мини‑конфигурация Promtail

server:
  http_listen_port: 9080
positions:
  filename: /tmp/positions.yaml
clients:
  - url: http://localhost:3100/api/prom/push
scrape_configs:
  - job_name: system
    static_configs:
      - targets:
          - localhost
    pipeline_stages:
      - docker: {}

5️⃣ Datadog (облачный вариант)

Datadog – SaaS‑решение с богатым набором интеграций.

Плюсы

  • Быстрый старт, облачные данные
  • Удобная панель, алёрты, APM, log management

Минусы

  • Стоимость (платный сервис)
  • Зависимость от внешнего сервера

Заключение

Выбор системы мониторинга зависит от ваших задач и инфраструктуры:

Сценарий Рекомендованное решение
Малый сервер, быстрый старт Netdata
Большая среда с SNMP‑устройствами Zabbix
Гибкая система метрик + Grafana Prometheus + Grafana
Логи + Метрики в одном стеке Loki + Promtail + Alertmanager
Облачное решение без собственного сервера Datadog

Независимо от выбранного инструмента, ключ к успешному мониторингу – это постоянный сбор данных, грамотная визуализация и своевременное оповещение. Не забывайте про регулярные проверки конфигураций, обновления и резервное копирование метрик/логов.

Почувствуйте себя «призрачным наблюдателем»: ваш сервер будет держать вас в курсе каждого «пульса», а вы сможете быстро реагировать на любые отклонения. Удачной настройки! 🚀

Инструменты Linux‑администратора: сбор и обработка логов

- Опубликовано в Администрирование

Введение

В мире UNIX‑подобных систем логи являются главным источником информации о работе сервера, аутентификации пользователей, сетевых событий и многого другого. Без надёжной системы сбора и анализа логов администратор теряет возможность быстро реагировать на инциденты, проводить аудит и оптимизировать ресурсы.
В этой статье мы рассмотрим ключевые инструменты Linux‑администратора для сбора и обработки логов: от простых файловых систем до распределённых решений с агрегацией в реальном времени.

⚠️ Не забывайте регулярно проверять логи – это ваш первый сигнал о проблеме.

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

1. Syslog‑совместимые демоны

Самый базовый способ сбора логов — использовать системный журнал rsyslog (или альтернативы, такие как syslog-ng, journald).

# Пример конфигурации rsyslog для отправки логов на удалённый сервер
module(load="imudp")          # Включаем UDP‑порт 514
input(type="imudp" port="514")

# Перенаправляем системные сообщения в удаленный syslog
*.* @192.168.1.10:514
  • Преимущества: простота, встроена в большинство дистрибутивов.
  • Недостатки: ограниченная гибкость фильтрации и форматирования.

2. Журналы systemd – journald

Системы на базе systemd используют journalctl, который хранит бинарный журнал, поддерживает индексацию и шифрование.

# Просмотр последних 50 записей сервиса sshd
journalctl -u sshd.service -n 50

# Экспорт в файл для дальнейшего анализа
journalctl --output=export > /tmp/ssh.log

📌 Tip: journald хранит логи в памяти, если включён параметр Storage=persistent, они сохраняются на диск.

3. Агент logstash + Elasticsearch + Kibana (ELK)

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

# Пример конфигурации Logstash для чтения syslog‑файлов
input {
  file {
    path => "/var/log/*.log"
    start_position => "beginning"
  }
}
filter {
  grok { match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:host} %{DATA:program}: %{GREEDYDATA:msg}" } }
}
output {
  elasticsearch {
    hosts => ["http://es01.example.com:9200"]
    index => "system-logs-%{+YYYY.MM.dd}"
  }
}
Компонент Задача
Filebeat Лёгкий агент, отправляющий логи в Logstash/Elasticsearch
Logstash Парсинг и трансформация данных
Elasticsearch Хранение и поиск по индексированным логам
Kibana Визуализация и дашборды

4. Системы мониторинга и алёртов – Prometheus + Alertmanager

Хотя Prometheus в первую очередь собирает метрики, его можно использовать для сбора лог‑схем с помощью promtail (часть Loki). Это упрощает хранение больших объёмов текстовых сообщений без сложного индекса.

# promtail.yaml – пример конфигурации
server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://loki:3100/loki/api/v1/push

scrape_configs:
  - job_name: system_logs
    static_configs:
      - targets:
          - localhost
        labels:
          job: varlogs
          __path__: /var/log/*.log

5. Интеграция с SIEM‑решениями

Для корпоративных сред часто требуется подключить логи к системам безопасности (SIEM), таким как Splunk, QRadar или открытые решения типа Wazuh. Это позволяет автоматически распознавать угрозы и генерировать отчёты.

# Установка Wazuh manager
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | apt-key add -
echo "deb https://packages.wazuh.com/4.x/apt stable main" > /etc/apt/sources.list.d/wazuh.list
apt update && apt install wazuh-manager

Заключение

Сбор и обработка логов – фундаментальная обязанность Linux‑администратора. Начните с простых систем rsyslog и journald, а по мере роста инфраструктуры переходите к более мощным решениям: ELK‑стек, Loki/Prometheus или SIEM‑платформы. Ключевые моменты:

  1. Непрерывный сбор – настройте агентов так, чтобы логи не терялись.
  2. Фильтрация и парсинг – используйте шаблоны (grok) для структурирования данных.
  3. Хранение и поиск – индексируйте логи в Elasticsearch или Loki.
  4. Визуализация – Kibana, Grafana дают быстрый доступ к информации.
  5. Автоматические алерты – интеграция с Alertmanager или SIEM повышает реактивность.

Соблюдая эти принципы, вы сможете быстро обнаруживать аномалии, проводить аудит и поддерживать высокую надёжность ваших Linux‑систем.

Linux‑Админ 101: от терминала до мастера

- Опубликовано в Администрирование

Введение

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

В этой статье мы разберём основные шаги, которые помогут вам перейти от простого пользователя терминала к полноценному Linux‑администратору. Мы будем использовать Markdown‑форматирование: заголовки, списки, кодовые блоки и таблицы, чтобы материал был как информативным, так и удобочитаемым.


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

1. Знакомство с терминалом

Терминал – это главный инструмент администрирования Linux. Он позволяет выполнять команды, управлять файлами, просматривать логи и многое другое.

# Проверяем версию ядра
uname -r

# Список файлов в текущей директории
ls -la

Подсказка: Используйте автодополнение (Tab) для ускорения работы с командами.

2. Управление пакетами

В разных дистрибутивах используются разные менеджеры пакетов: apt (Debian/Ubuntu), yum/dnf (CentOS/RHEL/Fedora), pacman (Arch).

Дистрибутив Менеджер пакетов Пример установки
Ubuntu apt sudo apt install nginx
CentOS 7 yum sudo yum install httpd
Fedora dnf sudo dnf install apache
Arch pacman sudo pacman -S nginx
# Обновляем список пакетов и сами пакеты (Ubuntu)
sudo apt update && sudo apt upgrade

# Устанавливаем пакет (CentOS 7)
sudo yum install vim

3. Конфигурирование сетевых интерфейсов

Ниже пример настройки статического IP‑адреса в Ubuntu через файл /etc/netplan/01-netcfg.yaml.

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

После изменения файла применяем:

sudo netplan apply

4. Работа с пользователями и группами

Создание пользователя, добавление в группу и установка прав.

# Добавляем нового пользователя
sudo useradd -m -s /bin/bash alice

# Устанавливаем пароль
sudo passwd alice

# Добавляем пользователя в группу sudo
sudo usermod -aG sudo alice

Права доступа можно управлять через chmod и chown.

# Делаем файл исполняемым для всех
chmod +x script.sh

# Меняем владельца файла
chown root:root /etc/ssh/sshd_config

5. Управление службами с systemd

Система управления сервисами systemd позволяет контролировать запуск, остановку и статус услуг.

# Проверка статуса службы nginx
sudo systemctl status nginx

# Перезапуск службы
sudo systemctl restart nginx

# Включение автозапуска при загрузке
sudo systemctl enable nginx

6. Мониторинг и логирование

Основные инструменты: top, htop, journalctl, syslog.

# Просмотр системного журнала за последние 100 строк
sudo journalctl -n 100

# В реальном времени отслеживаем нагрузку на CPU
top

7. Безопасность и бэкапы

  • SSH: Настройте ключи, отключите логин по паролю.
  • Firewall: ufw (Ubuntu) или firewalld (CentOS).
  • Резервные копии: rsync, tar, облачные решения.
# Открываем порт 22 в UFW
sudo ufw allow 22/tcp

# Создаём резервную копию каталога /var/www
tar -czf www_backup_$(date +%F).tar.gz /var/www

Заключение

Путь от новичка к мастеру Linux‑администрирования требует практики, терпения и постоянного обучения. Начните с освоения терминала и управления пакетами, затем переходите к настройке сетей, пользователям и службам. Не забывайте про безопасность и резервное копирование – это основа надёжной инфраструктуры.

Помните: чем больше вы экспериментируете в тестовой среде, тем увереннее будете работать на продакшене. Удачи в ваших Linux‑приключениях!

Бэкап без паники: простые правила, которые спасут ваш 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‑серверов. 🚀

Сравнение NAS: Synology DiskStation DS224+ и QNAP TS‑262‑4G

- Опубликовано в Железо и Linux

Введение

Накопители сетевого хранения (NAS) становятся всё более популярными как в домашнем, так и в малом бизнес‑окружении. При выборе устройства важно учитывать не только цену, но и набор функций, производительность, совместимость с ОС и удобство администрирования.
В этой статье мы сравним два популярных NAS‑модели: Synology DiskStation DS224+ (двухдисковый) и QNAP TS‑262‑4G (с четырьмя слотами). Мы разберём их ключевые характеристики, возможности программного обеспечения, а также оценим, какой из них лучше подходит для конкретных задач.


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

1. Аппаратные характеристики

Характеристика Synology DS224+ QNAP TS‑262‑4G
Процессор Intel Celeron J4025 (2 × 1,8 Гц) Intel Celeron J4005 (2 × 1,8 Гц)
Оперативная память 2 ГБ DDR4 (расширяется до 6 ГБ) 4 ГБ DDR4 (расширяется до 8 ГБ)
Слоты HDD/SSD 2× SATA III 6 Gb/s 4× SATA III 6 Gb/s
Встроенные порты 2× Gigabit Ethernet, 2× USB‑3.0 2× Gigabit Ethernet (1× M.2 SSD), 2× USB‑3.0
Поддержка NVMe Нет Да (M.2 PCIe Gen3)
Размеры 140 × 136,5 × 42 мм 150 × 140 × 44,5 мм
Вес 0,9 кг 1,2 кг

Вызов для внимания: Если вам нужна гибкость в конфигурации (добавление SSD‑памяти или расширение сети), QNAP предложит более широкие возможности.

2. Операционная система и управление

Synology DSM

  • Пользовательский интерфейс – интуитивно понятный, адаптивный под мобильные устройства.
  • Приложения – тысячи пакетов (Media Server, Surveillance Station, Hyper Backup).
  • Обновления – автоматические, часто проходят в течение 10–15 минут.

QNAP QTS

  • Пользовательский интерфейс – более «профессиональный», но требует времени на изучение.
  • Приложения – широкий набор (Virtualization Station, Surveillance Pro).
  • Обновления – доступны в разделе “Системный центр”; иногда требуют ручного подтверждения.

Пример настройки автоматического резервного копирования DSM

# Создание задачи Hyper Backup через API
curl -X POST \
 https://<NAS_IP>/webapi/entry.cgi?api=SYNO.DiskStation.Backup&version=2&method=create \
 -d "task_name=Backup_to_Cloud" \
 -d "destination=cloud:Dropbox"

3. Производительность

Показатель DS224+ TS‑262‑4G
Чтение/запись (последовательный) ~260 МБ/с ~280 МБ/с
Фрагментация SSD Нет Да, NVMe ускоряет операции
Поддержка RAID 0,1,5,6,10 0,1,5,6,10,JBOD
Потоковые приложения (DLNA, Plex) Отлично Сложнее настроить

Если вы планируете использовать NAS как медиа‑сервер, Synology имеет более продуманный движок DLNA.

4. Расширяемость и интеграция

  • Synology поддерживает внешние устройства через USB и сетевые подключения (iSCSI). Возможность добавить eSATA‑диски ограничена.
  • QNAP позволяет подключать до 4 порта SATA, а также M.2 SSD в качестве кэш-памяти, что повышает скорость работы при интенсивных задачах.

5. Цена и соотношение цена/качество

Модель Стоимость (примерно) Отзывы пользователей
DS224+ 25 000 ₽ Хороший баланс цены и функционала
TS‑262‑4G 30 000 ₽ Более дорогой, но с дополнительными возможностями

Заключение

Оба NAS‑устройства предлагают надёжную работу, гибкие настройки RAID и богатый набор приложений.

  • Synology DiskStation DS224+ – идеальный выбор для домашнего пользователя или малого офиса, который ценит простоту управления и стабильность работы медиа‑сервера.
  • QNAP TS‑262‑4G – предпочтительнее, если вам нужна большая гибкость (добавление SSD‑кэша, более сложные сетевые сценарии) и вы готовы потратить чуть больше времени на настройку.

Выбирайте модель в зависимости от ваших конкретных задач: для «простой» домашней сети лучше Synology, а для расширенных рабочих процессов – QNAP.

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 сегодня, а завтра будете благодарны за спокойный сон!

Страница 1 of 3