Первоначальной эту настройку не назовешь, на сервере уже должен быть 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 Мегабайтами — этого с запасом хватит для анализа работы сервера.
- Откройте конфигурацию журнала:bash
sudo nano /etc/systemd/journald.confИспользуйте код с осторожностью. - Раскомментируйте или добавьте в секцию
[Journal]параметрSystemMaxUse:ini[Journal] SystemMaxUse=200MИспользуйте код с осторожностью. - Перезапустите службу логов для применения изменений:bash
sudo systemctl restart systemd-journaldИспользуйте код с осторожностью. - Чтобы прямо сейчас очистить старый мусор и освободить место, выполните:bash
sudo 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 адресов в бане за пол часа