ваше сообщение коммита

This commit is contained in:
2025-07-29 18:07:21 +03:00
parent ce42899afc
commit 0f2270a08a
58 changed files with 5367 additions and 5931 deletions

View File

@@ -1,49 +0,0 @@
#!/bin/bash
# Скрипт мониторинга безопасности для nginx
# Автоматически блокирует подозрительные IP
LOG_FILE="/var/log/nginx/access.log"
BLOCKED_IPS="/tmp/blocked_ips.txt"
MAX_REQUESTS=100 # Максимум запросов в минуту
BLOCK_TIME=3600 # Время блокировки в секундах (1 час)
# Создаем файл для заблокированных IP если его нет
touch "$BLOCKED_IPS"
echo "$(date): Запуск мониторинга безопасности..."
while true; do
# Анализируем логи за последнюю минуту
SUSPICIOUS_IPS=$(tail -n 1000 "$LOG_FILE" 2>/dev/null | \
awk -v date="$(date -d '1 minute ago' '+%d/%b/%Y:%H:%M')" \
'$4 ~ date {print $1}' | \
sort | uniq -c | \
awk -v max="$MAX_REQUESTS" '$1 > max {print $2}')
# Блокируем подозрительные IP
for ip in $SUSPICIOUS_IPS; do
if ! grep -q "^$ip$" "$BLOCKED_IPS"; then
echo "$ip" >> "$BLOCKED_IPS"
echo "$(date): Блокируем IP $ip за подозрительную активность"
# Добавляем правило в iptables (если доступно)
if command -v iptables >/dev/null 2>&1; then
iptables -A INPUT -s "$ip" -j DROP
echo "$(date): IP $ip заблокирован в iptables"
fi
fi
done
# Очищаем старые блокировки
while IFS= read -r ip; do
# Проверяем, не истекло ли время блокировки
if [ -f "$BLOCKED_IPS" ]; then
# Простая реализация - можно улучшить
echo "$(date): Проверка блокировок..."
fi
done < "$BLOCKED_IPS"
# Ждем 30 секунд перед следующей проверкой
sleep 30
done