#!/bin/bash # Setup Fail2ban for Nginx set -e echo "Setting up Fail2ban..." # Install fail2ban if not installed if ! command -v fail2ban-server &> /dev/null; then apt update apt install -y fail2ban fi # Create filter for Nginx SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" DEPLOYMENT_DIR="$( cd "$SCRIPT_DIR/.." && pwd )" cat > /etc/fail2ban/filter.d/nginx-limit-req.conf << 'EOF' [Definition] failregex = ^.*limiting requests, excess:.*by zone.*client: .*$ ignoreregex = EOF # Create jail configuration cat > /etc/fail2ban/jail.d/explorer.conf << 'EOF' [nginx-limit-req] enabled = true port = http,https logpath = /var/log/nginx/explorer-error.log maxretry = 10 findtime = 600 bantime = 3600 [nginx-botsearch] enabled = true port = http,https logpath = /var/log/nginx/explorer-access.log maxretry = 2 findtime = 600 bantime = 86400 EOF # Restart fail2ban systemctl restart fail2ban # Check status fail2ban-client status echo "Fail2ban configured!" echo "Jails: nginx-limit-req, nginx-botsearch"