Содержание

Очистка диска 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
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

Шаг 1: Проверка текущего состояния

# Проверка логов 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

Шаг 2: Изменение уровня логирования

# Редактирование конфига
sudo nano /etc/fail2ban/fail2ban.conf

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

[DEFAULT]
loglevel = WARNING

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

Шаг 3: Исправление прав на /var/log

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

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

Шаг 4: Настройка logrotate

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
}

Изменения:

Шаг 5: Тестирование logrotate

# Тест конфигурации
sudo logrotate -d /etc/logrotate.d/fail2ban
 
# Должно быть без ошибок "insecure permissions"

Шаг 6: Очистка логов

# Очистка больших логов 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*

Шаг 7: Перезапуск fail2ban

# Перезапуск сервиса
sudo systemctl restart fail2ban
 
# Проверка статуса
sudo systemctl status fail2ban
 
# Проверка применения loglevel
sudo fail2ban-client get loglevel

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

Шаг 8: Проверка через время

# Подождать минуту
sleep 60
 
# Размер лога должен остаться маленьким
ls -lh /var/log/fail2ban.log
 
# Последние строки - только важные сообщения
tail -50 /var/log/fail2ban.log

Дополнительная очистка (опционально)

Очистка journald

# Проверка размера
journalctl --disk-usage
 
# Очистка старше 3 дней
sudo journalctl --vacuum-time=3d
 
# Или ограничение размером
sudo journalctl --vacuum-size=500M

Очистка Docker

# Удаление неиспользуемых образов, контейнеров, volumes
docker system prune -a --volumes
 
# Или избирательно
docker image prune -a
docker volume prune
docker container prune

Очистка APT кеша

sudo apt autoremove
sudo apt autoclean
sudo apt clean

Результат

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

Мониторинг

# Регулярная проверка дискового пространства
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 версия: любая