====== Очистка диска 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
}
**Изменения:**
* ''daily'' - ротация каждый день
* ''rotate 3'' - хранить 3 архива
* ''maxsize 50M'' - ротация при достижении 50MB
* ''su root root'' - исправление проблемы с правами
==== Шаг 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
===== Результат =====
После выполнения всех шагов:
* ✅ Освобождено ~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 версия:** любая