Einführung
Dieses Tutorial erklärt, wie Sie Ihren Spielserver vor DDoS-Angriffen schützen, indem Sie eine einfache Firewall und Ratenbegrenzung einrichten. Beachten Sie jedoch, dass Ihr Server auch mit diesen Einstellungen nicht immun gegen DDoS-Angriffe ist. Eine sichere Firewall kann die Angriffsfläche jedoch minimieren, und Ratenbegrenzungsregeln können eine Überlastung Ihres Servers verhindern.
Voraussetzungen:
- Server mit Ubuntu (Dieses Tutorial wurde mit Ubuntu 22.04 getestet, sollte aber auch mit anderen Versionen funktionieren.)
Schritt 1 – Firewall
Aus Sicherheitsgründen sollten Sie eine Firewall verwenden, die standardmäßig den gesamten eingehenden Datenverkehr blockiert. Sie können dann Ausnahmen hinzufügen, um den Zugriff auf die für die Serveranmeldung (SSH) und die Spielverbindung (TCP/UDP) erforderlichen Protokolle/Ports zu erlauben. Um Ihre Firewall noch weiter zu verstärken, können Sie auch IP-Adressen festlegen, von denen ausschließlich der Zugriff gestattet werden soll. Anfragen von anderen IP-Adressen werden automatisch verworfen. Dieses Tutorial erklärt, wie Sie den gesamten eingehenden Datenverkehr blockieren und:
- Gewähre allen Zugriff auf den Spielport.
- Nur ausgewählte IPs haben Zugriff auf den Spielport.
Die Standard-Firewall in Ubuntu ist ufw. Dieses Tutorial verwendet iptables. Stellen Sie sicher, dass Sie nur eine Firewall verwenden. Die Verwendung mehrerer Firewalls wird nicht empfohlen, da deren Regeln miteinander in Konflikt geraten und zu Problemen führen können.
Um zu überprüfen, ob Sie bereits Regeln haben, können Sie Folgendes verwenden:
sudo iptables -Lاگر فایروال هنوز قوانینی ندارد، اکنون میتوانید آنها را اضافه کنید. وقتی خط مشی پیشفرض برای ترافیک ورودی را روی «DROP» تنظیم میکنید، بلافاصله تمام اتصالات پایان مییابد. به همین دلیل، ابتدا باید مطمئن شوید که اتصالات SSH را مجاز کرده اید تا همچنان بتوانید به سرور خود دسترسی داشته باشید.
اگر از پورت پیشفرض SSH استفاده نمیکنید، حتماً در دستورات زیر 22 را جایگزین کنید.
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
اکنون که فایروال راه اندازی شده است، می توانید پورت بازی خود را باز کنید.فقط IP های انتخاب شده به پورت بازی دسترسی داشته باشند.اگر آیپی بازیکنانی که به بازی ملحق میشوند را میدانید و آیپیها تغییر نمیکنند، میتوانید فقط به آن IPها دسترسی داشته باشید:
sudo iptables -A INPUT -s <203.0.113.1>,<198.51.100.1> -p tcp --dport <your_game_port> -j ACCEPT
sudo iptables -A INPUT -s <203.0.113.1>,<198.51.100.1> -p udp --dport <your_game_port> -j ACCEPT Erlaube allen den Zugriff auf den Spielport. Mit dieser Regel kann jeder auf dein Spiel zugreifen:
sudo iptables -A INPUT -p tcp --dport <your_game_port> -j ACCEPT sudo iptables -A INPUT -p udp --dport <your_game_port> -j ACCEPT
Neue Regeln sollten nun hinzugefügt worden sein. Sie können diese mit `sudo iptables -L` anzeigen. Die Regeln sind standardmäßig nicht persistent und gehen beim nächsten Neustart verloren. Um sie persistent zu machen, installieren Sie Folgendes:
sudo apt update && sudo apt install iptables-persistentحالا قوانین خود را ذخیره کنید:
sudo iptables-save | sudo tee /etc/iptables/rules.v4
sudo ip6tables-save | sudo tee /etc/iptables/rules.v6دفعه بعد که سرور خود را راه اندازی مجدد می کنید، قوانین ذخیره شده در فایل دوباره اعمال خواهند شد. هنگامی که قوانین جدید iptables را اضافه می کنید، باید دوباره دستور iptables-save را برای به روز رسانی فایل ها اجرا کنید.
sudo iptables -L --line-numbers # Listet alle Regeln mit Nummern auf sudo iptables -D INPUT # Löschen Sie eine INPUT-Regel, indem Sie die Nummer angebenمرحله 2 – محدود کردن نرخ
Die Einrichtung einer Firewall wie in “Schritt 1” beschrieben trägt bereits zur Erhöhung der Sicherheit bei. Die öffentliche Freigabe des Spielports vergrößert jedoch die potenzielle Angriffsfläche. Mit Iptables und Fail2Ban lässt sich die Anzahl der zulässigen Anfragen begrenzen. Die Funktionsweise wird im Folgenden erläutert:
- Begrenzen Sie die Anzahl der Anfragen pro IP-Adresse.
- Begrenzen Sie die Anzahl der Anfragen von allen IPs zusammen.
Schritt 2.1 – Begrenzen Sie die Anzahl der Anfragen pro IP-Adresse.
Dieser Schritt nutzt Fail2Ban, um Anfragen zu begrenzen, und iptables, um Anfragen zu protokollieren.
Bevor Sie beginnen, müssen Sie sicherstellen, dass sowohl iptables als auch Fail2Ban verfügbar sind. Sie können mit dem Befehl `systemctl status fail2ban` überprüfen, ob Fail2Ban ausgeführt wird. Installation unter Ubuntu:
apt install fail2ban
systemctl enable --now fail2banبه iptables بگویید تلاش های دسترسی را ثبت کنند
sudo iptables -I INPUT -p tcp --dport <your_game_port> -m conntrack --ctstate NEW -j LOG --log-level 6 --log-prefix "GameServerAccess: "اکنون Iptables تمام تلاشها برای دسترسی به پورت TCP <your_game_port> را در فایل /var/log/syslog ثبت میکند. وقتی فایل را مشاهده می کنید، خواهید دید که تمام تلاش ها برای دسترسی به پورت بازی پیشوند GameServerAccess داده می شود. قاعده را پایدار کنید:
sudo iptables-save | sudo tee /etc/iptables/rules.v4یک فیلتر اضافه کنید در فایل /var/log/syslog، فقط ورودیهای با پیشوند GameServerAccess: مرتبط هستند. فایل زیر را ایجاد کنید تا به Fail2Ban بگویید آن ورودی ها را فیلتر کند:
sudo nano /etc/fail2ban/filter.d/gameserveraccess.confاضافه کردن محتوا:
[Definition]
failregex = GameServerAccess: .* SRC=<HOST>
ignoreregex =به Fail2Ban بگویید تعداد درخواستهای هر IP را محدود کند و برای IPهایی که از حد مجاز فراتر میروند، زمان ممنوعیت تعیین کنید. logpath به Fail2Ban می گوید که IP ها را از کجا دریافت کنید. فیلتری که ما ایجاد کردیم به Fail2Ban میگوید فقط IPهایی را که با پیشوند GameServerAccess ثبت شدهاند نظارت کند.
sudo nano /etc/fail2ban/jail.localInhalte hinzufügen:
[game-server]
enabled = true
filter = gameserveraccess
logpath = /var/log/syslog
maxretry = 7
findtime = 30
bantime = 120Die oben genannten Einstellungen erlauben jeder IP-Adresse, innerhalb von 30 Sekunden 7 Anfragen zu senden. Überschreitet eine IP-Adresse dieses Limit, wird sie für 120 Sekunden gesperrt. Um ein anderes Limit festzulegen, ersetzen Sie die Werte 7, 30 und 120 entsprechend.
Sobald alles eingerichtet ist, starten Sie Fail2Ban neu:
sudo systemctl restart fail2banSchritt 2.2 – Begrenzen Sie die Anzahl der Anfragen von allen IPs zusammen
Mit iptables können Sie mithilfe des Moduls „limit“ die Gesamtzahl neuer Verbindungen innerhalb eines bestimmten Zeitraums begrenzen. Bei Verwendung des Moduls „limit“ legen die Optionen „--limit“ und „--limit-burst“ einen Zeitraum und einen Grenzwert fest.
Löschen Sie die alte Firewall-Regel. Falls Sie den Spielport in “Schritt 1” bereits für alle geöffnet haben, können Sie die Regel jetzt löschen. Dank der unten aufgeführten Ratenbegrenzungsregeln ist diese Regel nicht mehr erforderlich.
sudo iptables -L --line-numbers # Get the line number of "ACCEPT anywhere tcp dpt:<your_game_port>"
sudo iptables -D INPUT <line-number> # Delete the rule that accepts all incoming requests to your game portFühren Sie die folgenden Befehle aus, um neue Regeln hinzuzufügen und einen Grenzwert von 100 sowie eine Zykluszeit von einer halben Minute (30 Sekunden) festzulegen. Wenn Sie andere Grenzwerte festlegen möchten, ersetzen Sie die Werte 100 und 2/min entsprechend.
sudo iptables -A INPUT -p tcp --dport <your_game_port> -m conntrack --ctstate NEW -m limit --limit 2/min --limit-burst 100 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport <your_game_port> -m conntrack --ctstate NEW -j DROPsudo iptables-save | sudo tee /etc/iptables/rules.v4Beim nächsten Neustart Ihres Servers werden die in der Datei gespeicherten Regeln erneut angewendet.
Schritt 3 – Blockierungsregeln
Sobald das in “Schritt 2” festgelegte Limit erreicht ist, kann niemand mehr auf den TCP-Port your_game_port zugreifen. Solange die Anfragen jedoch innerhalb des Limits liegen, wird allen Anfragen Zugriff gewährt. Dies gilt sowohl für legitime als auch für illegitime Anfragen. Die folgende Regel verwirft neue Verbindungen ohne SYN-Flag:
sudo iptables -I INPUT -p tcp ! --syn -m conntrack --ctstate NEW -j DROPWenn alles erledigt ist, müssen Sie Ihre Regeln erneut speichern:
sudo iptables-save | sudo tee /etc/iptables/rules.v4Ergebnis
Bitte beachten Sie, dass diese Einstellungen nicht ausreichen, um DDoS-Angriffe vollständig zu verhindern. Die Sicherheit lässt sich durch weitere DDoS-Schutzmaßnahmen stets verbessern. Mit den in diesem Tutorial vorgestellten Einstellungen verfügen Sie jedoch nun über eine erste Verteidigungslinie gegen DDoS-Angriffe und eine gute Grundlage für zukünftige Optimierungen.









