Optimierung der nginx.conf für das XUI One IPTV Panel gegen Layer 7 DDoS-Angriffe und Bannen von Angreifer-IP-Adressen mit Fail2Ban
1. Optimierung der nginx.conf
Fügen Sie die folgenden Optimierungen in Ihre nginx.conf-Datei ein, um sich vor Layer 7 DDoS-Angriffen zu schützen:
2. Konfiguration von Fail2Ban
2.1 Installieren Sie Fail2Ban, falls noch nicht installiert:
2.2 Erstellen Sie eine Filterdatei für Nginx:
Erstellen Sie eine neue Datei mit dem Namen `nginx-xui.conf` im Verzeichnis `/etc/fail2ban/filter.d/` und fügen Sie den folgenden Inhalt ein:
2.3 Konfigurieren Sie Fail2Ban:
Erstellen Sie eine neue Datei mit dem Namen `xui-one-nginx.local` im Verzeichnis `/etc/fail2ban/jail.d/` und fügen Sie den folgenden Inhalt ein:
2.4 Starten Sie Fail2Ban neu:
3. Überprüfung
Überwachen Sie die Logdateien von Nginx und Fail2Ban, um sicherzustellen, dass die Konfiguration korrekt funktioniert und potenzielle Angreifer blockiert werden.
Hinweis: Stellen Sie sicher, dass Sie die Konfigurationen an Ihre spezifischen Anforderungen anpassen und regelmäßig überwachen, um potenzielle Angriffe zu erkennen und darauf zu reagieren.
1. Optimierung der nginx.conf
Fügen Sie die folgenden Optimierungen in Ihre nginx.conf-Datei ein, um sich vor Layer 7 DDoS-Angriffen zu schützen:
NGINX:
# Nginx-Konfiguration für das XUI One Webpanel mit Schutz gegen Layer 7-Angriffe
# Benötigte Module aktivieren
load_module modules/ngx_http_geoip_module.so;
# Benutzerdefinierte Log-Formate definieren
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
log_format timed_combined '$time_iso8601 $remote_addr $request_time "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
# Globale Einstellungen
worker_processes auto;
worker_rlimit_nofile 100000;
events {
worker_connections 1024;
multi_accept on;
use epoll;
}
http {
# Standard-Log-Dateien
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;
# MIME-Typen
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Globale Sicherheitseinstellungen
server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
# Timeout-Einstellungen
client_body_timeout 10s;
client_header_timeout 10s;
keepalive_timeout 10s;
send_timeout 10s;
# TCP-Optionen
tcp_nopush on;
tcp_nodelay on;
# Gzip-Komprimierung
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
# Schutz gegen Layer 7-Angriffe
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
# GeoIP-Konfiguration
geoip_country /usr/share/GeoIP/GeoIP.dat;
geoip_city /usr/share/GeoIP/GeoLiteCity.dat;
map $geoip_country_code $allowed_country {
default no;
US yes;
# Weitere Länder können nach Bedarf hinzugefügt werden
}
# Server-Konfiguration
server {
listen 80;
server_name your_domain.com;
# Sicherheitseinstellungen
if ($allowed_country = no) {
return 403;
}
# Schutz gegen zu viele Requests
location / {
limit_req zone=one burst=5 nodelay;
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Statische Ressourcen
location ~* \.(jpg|jpeg|gif|css|png|js|woff|woff2|eot|ttf|svg)$ {
expires 1M;
access_log off;
add_header Cache-Control "public";
}
}
}
2. Konfiguration von Fail2Ban
2.1 Installieren Sie Fail2Ban, falls noch nicht installiert:
Code:
sudo apt-get update
sudo apt-get install fail2ban
2.2 Erstellen Sie eine Filterdatei für Nginx:
Erstellen Sie eine neue Datei mit dem Namen `nginx-xui.conf` im Verzeichnis `/etc/fail2ban/filter.d/` und fügen Sie den folgenden Inhalt ein:
Code:
# /etc/fail2ban/filter.d/nginx-xui.conf
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*(\.php|\.asp|\.exe|\.pl).*HTTP.*" 404.*$
ignoreregex =
2.3 Konfigurieren Sie Fail2Ban:
Erstellen Sie eine neue Datei mit dem Namen `xui-one-nginx.local` im Verzeichnis `/etc/fail2ban/jail.d/` und fügen Sie den folgenden Inhalt ein:
Code:
# /etc/fail2ban/jail.d/xui-one-nginx.local
[xui-one-nginx]
enabled = true
port = http,https
filter = nginx-xui
logpath = /var/log/nginx/access.log
maxretry = 5
findtime = 600
bantime = 3600
2.4 Starten Sie Fail2Ban neu:
Code:
sudo service fail2ban restart
3. Überprüfung
Überwachen Sie die Logdateien von Nginx und Fail2Ban, um sicherzustellen, dass die Konfiguration korrekt funktioniert und potenzielle Angreifer blockiert werden.
Hinweis: Stellen Sie sicher, dass Sie die Konfigurationen an Ihre spezifischen Anforderungen anpassen und regelmäßig überwachen, um potenzielle Angriffe zu erkennen und darauf zu reagieren.