vm:nginx:07-file2ban_log

Очистка диска Ubuntu и настройка fail2ban

Диск заполнен на 97%, основная причина - логи fail2ban занимают ~33GB из-за записи каждого запроса от локального IP в INFO уровне.

# Общая информация по разделам
df -h
 
# Размер основных директорий
sudo du -h --max-depth=1 / 2>/dev/null | sort -rh | head -10
 
# Размер логов
sudo du -sh /var/log/* | sort -rh | head -20
 
# Проверка размера journald
journalctl --disk-usage
# Что занимает место в Docker
docker system df
 
# Размер Docker директорий
sudo du -sh /var/lib/docker/overlay2
sudo du -sh /var/lib/docker/volumes
sudo du -sh /var/lib/docker/containers
# Проверка логов fail2ban
sudo tail -100 /var/log/fail2ban.log
 
# Проверка активных jail
sudo fail2ban-client status
 
# Количество записей от локального IP
grep "192.168.0.1" /opt/fail2ban/logs/nginx-access.log | wc -l
# Редактирование конфига
sudo nano /etc/fail2ban/fail2ban.conf

Найти и изменить:

[DEFAULT]
loglevel = WARNING

Важно: Изменить с INFO на WARNING чтобы не логировать каждое игнорирование локального IP.

# Проверка текущих прав
ls -ld /var/log
 
# Исправление прав (если нужно)
sudo chmod 755 /var/log
 
# Проверка результата
ls -ld /var/log

Должно быть: drwxr-xr-x вместо drwxrwxr-x

sudo nano /etc/logrotate.d/fail2ban

Содержимое файла:

/var/log/fail2ban.log {
    daily
    rotate 3
    maxsize 50M
    compress
    notifempty
    delaycompress
    missingok
    su root root
    postrotate
        fail2ban-client flushlogs 1>/dev/null || true
    endscript
    create 640 root adm
}

Изменения:

  • daily - ротация каждый день
  • rotate 3 - хранить 3 архива
  • maxsize 50M - ротация при достижении 50MB
  • su root root - исправление проблемы с правами
# Тест конфигурации
sudo logrotate -d /etc/logrotate.d/fail2ban
 
# Должно быть без ошибок "insecure permissions"
# Очистка больших логов fail2ban
sudo truncate -s 0 /var/log/fail2ban.log
sudo truncate -s 0 /var/log/fail2ban.log.1
sudo rm -f /var/log/fail2ban.log.*.gz
 
# Проверка результата
df -h /
ls -lh /var/log/fail2ban*
# Перезапуск сервиса
sudo systemctl restart fail2ban
 
# Проверка статуса
sudo systemctl status fail2ban
 
# Проверка применения loglevel
sudo fail2ban-client get loglevel

Должно вывести: WARNING или 30

# Подождать минуту
sleep 60
 
# Размер лога должен остаться маленьким
ls -lh /var/log/fail2ban.log
 
# Последние строки - только важные сообщения
tail -50 /var/log/fail2ban.log
# Проверка размера
journalctl --disk-usage
 
# Очистка старше 3 дней
sudo journalctl --vacuum-time=3d
 
# Или ограничение размером
sudo journalctl --vacuum-size=500M
# Удаление неиспользуемых образов, контейнеров, volumes
docker system prune -a --volumes
 
# Или избирательно
docker image prune -a
docker volume prune
docker container prune
sudo apt autoremove
sudo apt autoclean
sudo apt clean

После выполнения всех шагов:

  • ✅ Освобождено ~32-33GB дискового пространства
  • ✅ Диск заполнен на 44% вместо 97%
  • ✅ Fail2ban больше не генерирует гигабайты логов
  • ✅ Автоматическая ротация логов настроена
  • ✅ Система работает стабильно
# Регулярная проверка дискового пространства
df -h
 
# Проверка размера логов
sudo du -sh /var/log/fail2ban.log
 
# Проверка топ-10 больших файлов
sudo find /var/log -type f -exec du -h {} + | sort -rh | head -10

Дата создания: 2025-12-13
Проверено на: Ubuntu 24.04 LTS
Fail2ban версия: любая

  • vm/nginx/07-file2ban_log.txt
  • Последнее изменение: 2025/12/13 20:21
  • admin