Настройка Debian. Защита SSH, ротация логов и автообновления

автор: rss9020 1 мин. чтения

Первоначальной эту настройку не назовешь, на сервере уже должен быть sudo и настроен вход по ключам. Здесь рассмотрим базовый минимум или стартовая настройка для инфраструктурной настройки, чтобы настроил и забыл на 10 лет 🙂

После покупки нового VPS на Debian сервер сразу становится мишенью для тысяч автоматических ботнетов. Если оставить настройки по умолчанию, сервер быстро забьется логами, а риск брутфорса возрастет.

В этой статье мы разберем три обязательных шага для базовой защиты и оптимизации свежего сервера Debian: настройку Fail2ban, ограничение размера системного журнала и включение автообновлений безопасности.


Шаг 1. Защита SSH с помощью Fail2ban

Fail2ban сканирует системный журнал и временно блокирует IP-адреса, которые слишком часто ошибаются при вводе пароля. Мы настроим жесткое правило: 3 ошибки = бан на 1 день.

1. Установка пакета

Обновите индексы и установите Fail2ban:

bash

sudo apt update && sudo apt install fail2ban -y

2. Создание файла конфигурации

Никогда не редактируйте стандартный файл jail.conf — он перезапишется при обновлении системы. Создайте локальную копию:

bash

sudo nano /etc/fail2ban/jail.local

В современных версиях Debian (начиная с Debian 12 Bookworm) удален классический логгер rsyslog. Чтобы Fail2ban не выдавал ошибку отсутствия логов, мы укажем ему работать напрямую с systemd.

Вставьте в файл следующий рабочий конфиг:

ini

[DEFAULT]
# Игнорировать ваш собственный IP-адрес, чтобы случайно не забанить себя
ignoreip = 127.0.0.1/8 ::1

[sshd]

enabled = true
port = ssh
backend = systemd
maxretry = 3
bantime = 1d
findtime = 10m

4. Запуск и проверка

Активируйте автозапуск и перезапустите службу:

bash

sudo systemctl enable fail2ban
sudo systemctl restart fail2ban

Проверить статус защиты и список уже забаненных IP можно командой:

bash

sudo fail2ban-client status sshd


Шаг 2. Ограничение размера логов (Ротация)

Так как системный журнал systemd-journald теперь собирает абсолютно все логи, со временем он может разрастись до десятков гигабайт и забить диск 🔗. Ограничим его аппетит разумными 200 Мегабайтами — этого с запасом хватит для анализа работы сервера.

  1. Откройте конфигурацию журнала:bashsudo nano /etc/systemd/journald.conf Используйте код с осторожностью.
  2. Раскомментируйте или добавьте в секцию [Journal] параметр SystemMaxUse:ini[Journal] SystemMaxUse=200M Используйте код с осторожностью.
  3. Перезапустите службу логов для применения изменений:bashsudo systemctl restart systemd-journald Используйте код с осторожностью.
  4. Чтобы прямо сейчас очистить старый мусор и освободить место, выполните:bashsudo journalctl --vacuum-size=200M Используйте код с осторожностью.

Шаг 3. Настройка автоматических критических обновлений

Новые уязвимости в Linux находят регулярно. Инструмент unattended-upgrades позволяет серверу автоматически скачивать и устанавливать только патчи безопасности, не затрагивая основные версии программ и не нарушая стабильность системы.

1. Установка утилиты

bash

sudo apt install unattended-upgrades apt-listchanges -y

2. Включение автоматического режима

Запустите интерактивный конфигуратор:

bash

sudo dpkg-reconfigure -plow unattended-upgrades

В открывшемся псевдографическом окне выберите <Да> (или <Yes>) и нажмите Enter.

3. Автоочистка и ночная перезагрузка

Если обновляется ядро Linux, патч безопасности не применится до тех пор, пока сервер не перезагрузится. Настроим автоматическую очистку остатков пакетов и мягкую перезагрузку в 4 часа ночи.

Откройте файл настроек:

bash

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Найдите и приведите к такому виду (удалите символы // в начале строк, если они есть) следующие параметры:

ini

// Автоматически удалять неиспользуемые зависимости и старые ядра
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";

// Разрешить автоперезагрузку в безопасное время
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";

4. Тестовый запуск

Проверьте, что в конфигурации нет синтаксических ошибок, запустив симуляцию обновления:

bash

sudo unattended-upgrades --dry-run --debug

Если в конце вы увидите строку No packages found that can be upgraded unattended — всё настроено идеально.


Заключение

Всего за 10 минут мы превратили голый сервер Debian в защищенную и автономную систему:

  • Роботы-взломщики отправляются в бан на целые сутки.
  • Системный журнал зафиксирован в пределах 200 МБ и не переполняет диск.
  • Критические патчи безопасности устанавливаются без вашего участия глубокой ночью.

5 адресов в бане за пол часа

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *