====== Очистка диска 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 версия:** любая