حماية خادم Arma 3 من هجمات DDoS
أي المنافذ الخمسة من 2302 حتى 2306 UDP يحتاجه خادم Arma 3 فعلاً، وكيف تؤمّنون استعلام Steam وBattlEye RCon وHeadless Client، ومن أي معدل حزم لا تفيد إلا التصفية في الشبكة الواقعة قبل الخادم.
من يريد حماية خادم Arma 3 من هجمات DDoS فهو يتعامل مع خمسة منافذ UDP بالضبط: من 2302 حتى 2306. والخادم المخصص الذي ينقطع مساءً في وسط المهمة عن جميع اللاعبين في وقت واحد نادراً ما تكون مشكلته في العتاد. ففي الغالب يجري هجوم على كتلة المنافذ هذه بالتحديد، وذلك في اللحظة التي تُظهر فيها قائمة الخوادم أعلى عدد من اللاعبين. يعرض هذا المقال أولاً ما تستطيعون تأمينه بأنفسكم دون تكاليف إضافية، ثم أين تنتهي هذه الإجراءات تقنياً، وفي الختام ما يجب أن يحدث في الشبكة الواقعة قبل الخادم.
جميع المعطيات تتعلق بخادم Arma 3 مخصص (تطبيق SteamCMD رقم 233780) يعمل بنظام Debian 12 أو Debian 13 أو Ubuntu 22.04 LTS أو Ubuntu 24.04 LTS. والأوامر مكتوبة للمستخدم root، وكمستخدم عادي تضعون sudo قبلها. وإذا كان الهجوم جارياً الآن: لا تغيّروا شيئاً في الإعدادات ولا تعيدوا تشغيل الخادم، بل احفظوا أولاً القياسات الواردة في قسم «التسجيل». فهي تختفي بعد انتهاء الهجوم.
لماذا تُهاجَم خوادم Arma 3 ومتى تصبح الحماية من DDoS ضرورية
يجمع Arma 3 عدة خصائص تجعل الخادم هدفاً مريحاً. أولاً، ينشر الخادم عنوانه بنفسه: فهو يسجّل نفسه عبر المنفذ 2304 UDP لدى خادم Steam الرئيسي، ويجيب على المنفذ 2303 UDP عن الاستعلامات بالاسم والخريطة وعدد اللاعبين وقائمة الإضافات. فبدون هذين المنفذين لا يجدكم أحد، ومعهما يظهر عنوان IP الخاص بكم في كل متصفح خوادم وفي كل صفحة حالة تستعلم من متصفح الخوادم.
ثانياً، جمهور اللاعبين مرتبط بأوقات ثابتة. فمشاريع لعب الأدوار الحياتية على Altis وTanoa، وكذلك Exile وAntistasi وKing of the Hill، تمتلئ مساءً وفي نهاية الأسبوع، وبذلك يكون الانقطاع في الثامنة مساءً مرئياً إلى أقصى حد. ثالثاً، هناك منافسة بين المشاريع، ولاعبون محظورون، وخلافات داخلية، والهجوم لا يكلّف من يطلقه مهارةً ولا مالاً يُذكر.
وتقنياً تُضاف النقطة الحاسمة: يعمل Arma 3 بالكامل عبر UDP، ولا تحتاج اللعبة إلى TCP لتشغيل اللعب. ولا يعرف UDP أي إنشاء اتصال يمكن اشتراطه، وعناوين المرسل قابلة للتزييف. لذلك لا يحتاج المهاجم إلى الدخول إلى خادمكم ولا إلى مخاطبته بشكل صحيح لكي يولّد حِملاً. يُضاف إلى ذلك أن حلقة المحاكاة في خادم Arma 3 تعمل في جوهرها على نواة معالجة واحدة: فمن يرسل ما يكفي من الحزم يستهلك وقت المعالجة في هذه النواة الواحدة، بصرف النظر عن عدد النوى الأخرى في الجهاز. وما هو هجوم DDoS بالتفصيل يشرحه المقال ما هو هجوم DDoS؟.
المنافذ التي يتعلق بها الأمر فعلاً
يحتل خادم Arma 3 افتراضياً الكتلة من 2302 حتى 2306 UDP. ويحدد معامل التشغيل -port=2302 المنفذ الأول وحده، أما الأربعة الباقية فتنتج عنه بشكل ثابت، أي منفذ اللعبة زائد 1 حتى زائد 4. ولهذا يترك من يشغّل عدة نسخ على الجهاز نفسه مسافة 100 منفذ على الأقل (2302 و2402 و2502)، وإلا سلبت النسخ بعضها المنافذ التالية.
| المنفذ | البروتوكول | الوظيفة | ينتمي إلى الشبكة المفتوحة |
|---|---|---|---|
| 2302 (منفذ اللعبة) | UDP | حركة اللعب وVON، أي نقل الصوت المدمج | نعم |
| 2303 (منفذ اللعبة زائد 1) | UDP | استعلام Steam: يجيب عن استعلامات A2S بالاسم والخريطة وعدد اللاعبين وقائمة الإضافات والتوقيعات | نعم، وإلا غاب الإدراج في متصفح الخوادم |
| 2304 (منفذ اللعبة زائد 2) | UDP | Steam-Master: تسجيل الخادم لدى خادم Steam الرئيسي | نعم |
| 2305 (منفذ اللعبة زائد 3) | UDP | VON، محفوظ وفق Bohemia وغير مستخدم حالياً | لا |
| 2306 (منفذ اللعبة زائد 4) | UDP | حركة BattlEye، ومنها واجهة RCon (RConPort في beserver_x64.cfg) |
لا، عناوين الإدارة الخاصة بكم فقط |
| 2344 و2345 (صادر) | TCP وUDP | اتصال BattlEye من الخادم إلى arma31.battleye.com | يُسمح به صادراً، ولا يُفتح شيء وارداً |
| 3306 | TCP | MySQL لأجل extDB3، أي ربط قاعدة البيانات في كل إطار عمل حياتي | لا، يُربط على 127.0.0.1 |
| 22 | TCP | وصول SSH | لا، عناوينكم الخاصة فقط |
من هذه الصفوف الثمانية تنتمي ثلاثة بالضبط إلى الإنترنت المفتوح: 2302 و2303 و2304 UDP. وكل ما عدا ذلك إدارة، ومنافذ الإدارة المفتوحة هي أكثر الأخطاء القابلة للتجنب شيوعاً على خوادم Arma 3.
ما تستطيعون فعله بأنفسكم قبل أن تدفعوا مالاً
هذا القسم هو الأطول، وذلك بقصد. فخادم Arma 3 المُعَدّ إعداداً نظيفاً يتحمل الهجمات الصغيرة والمتوسطة بقوته الذاتية، بصرف النظر عن الجهة التي يقف عندها.
1. الجرد: ما الذي يستمع على الخادم؟
قبل أن تكتبوا قاعدة واحدة، انظروا ما الذي يعرضه خادمكم إلى الخارج. لا تخمّنوا، بل انظروا:
ss -lntup
المهم هو العمود الذي يحمل العنوان المحلي. فـ 0.0.0.0:2302 يعني «قابل للوصول من الإنترنت بأكمله»، و127.0.0.1:3306 يعني «محلياً فقط» ولا يحتاج إلى قاعدة في جدار الحماية. وإلى جانب اللعبة تظهر هناك على خادم حياتي بانتظام MariaDB، وخادم ويب لصفحة الفصائل، وخدمة صوت مثل TeamSpeak، ولوحة تحكم منسية. أما رؤية المهاجم فيوفرها فحص المنافذ من الخارج:
nmap -Pn -sU -p 2300-2320 YOUR.SERVER.IP.ADDRESS
nmap -Pn -p- --min-rate 1000 YOUR.SERVER.IP.ADDRESS
يُظهر الأمر الأول كتلة UDP الخاصة باللعبة، ويُظهر الثاني كل ما هو مفتوح على TCP. ولا يحتاج خادم Arma 3 إلى منفذ TCP مفتوح واحد لتشغيل اللعب.
2. إبقاء المنافذ التي يحتاجها Arma 3 فعلاً وحدها مفتوحة
ثلاثة منافذ UDP نحو الخارج تكفي، وكل ما عداها يُقيَّد. ومع UFW يبدو ذلك على النحو التالي، وبهذا الترتيب بالضبط حتى لا تحجبوا أنفسكم:
ufw allow from 203.0.113.10 to any port 22 proto tcp comment 'SSH'
ufw allow 2302:2304/udp comment 'لعبة Arma 3، استعلام Steam، ماستر Steam'
ufw allow from 203.0.113.10 to any port 2306 proto udp comment 'BattlEye RCon'
ufw default deny incoming
ufw default allow outgoing
ufw --force enable
ufw status verbose
استبدلوا 203.0.113.10 بعنوانكم الخاص. ويبقى المنفذ 2305 مغلقاً، لأن Bohemia تُدرجه كمحفوظ وغير مستخدم حالياً. والمهم هو السطر ufw default allow outgoing: فـ BattlEye يبني من الخادم اتصالاً إلى arma31.battleye.com، ويحتاج لذلك صادراً إلى المنفذ 2344 على TCP وUDP وإلى 2345 على TCP. ومن يحجب الصادر جملةً يحجب نظام مكافحة الغش الخاص به. تحقّقوا بعد التعديل، بانضمام حقيقي، من أن BattlEye ما زال يسمح بمرور لاعبيكم. والدليل الكامل مع طريق النجاة موجود في إعداد جدار حماية UFW دون حجب نفسكم.
ولا تنتمي قاعدة البيانات إلى الشبكة المفتوحة بأي حال. فـ Altis Life وبقية أطر العمل الحياتية تتحدث عبر الامتداد extDB3 مع قاعدة بيانات MySQL، وبيانات الدخول مكتوبة بنص صريح في @extDB3/extdb3-conf.ini. تحقّقوا في /etc/mysql/mariadb.conf.d/50-server.cnf من وجود هذا السطر:
bind-address = 127.0.0.1
3. تهدئة منفذ استعلام Steam دون السقوط من متصفح الخوادم
المنفذ 2303 UDP هو أكثر نقطة حساسية في خادم Arma 3 عام. فهو يجيب عن استعلامات A2S، أي الاستعلام القياسي لمتصفح خوادم Steam: يقدّم A2S_INFO الاسم والخريطة وعدد اللاعبين، ويقدّم A2S_PLAYERS قائمة اللاعبين، ويقدّم A2S_RULES قائمة الإضافات والتوقيعات. والاستعلام حزمة UDP صغيرة، أما الجواب فهو أضعاف ذلك. ويُدرج US-CERT بروتوكول Steam في التحذير TA14-017A بمعامل تضخيم للنطاق الترددي يبلغ 5.5، وفي Arma 3 يكون الجواب كبيراً بشكل خاص، لأن قائمة الإضافات الكاملة تُرسَل معه.
ويترتب على ذلك أمران. أولاً، يمكن إساءة استخدام خادمكم كمُضخِّم ضد أطراف ثالثة، إذا أرسل مهاجم استعلامات بعنوان مرسل مزيف. وثانياً، وهو الأهم لكم، يستهلك كل استعلام وقت معالجة في النواة الواحدة التي تحمل المحاكاة. وتحتفظ Bohemia منذ عام 2015 بتذكرة في هذا الشأن (T83469): حزم UDP مزيفة موجَّهة إلى منفذ اللعبة أو إلى منفذ استعلام Steam دفعت المعالج إلى 100 بالمئة وجمّدت الخادم، وقد كفى 4 Mbit/s لهجوم ناجح عبر منفذ الاستعلام. وهذا هو السبب في أن معدل الحزم في Arma 3 أخطر من النطاق الترددي.
أول أداة بين يديكم هي حجم الجواب. فالإعداد steamProtocolMaxDataSize في server.cfg يحدد عدد البايتات التي يحق للخادم أن يحزمها في جواب الاستعلام. ويرفعه مشغّلو قوائم الإضافات الكبيرة إلى 2048 أو أكثر، لأن التحذير «Query data overflow, Mods/Signatures will not be correctly received by clients» يظهر في السجل خلاف ذلك. لكن كل زيادة تُكبّر بالضبط ذلك الجواب الذي يضخّمه المهاجم. لذلك اجعلوا القيمة منخفضة بالقدر الذي تسمح به قائمة إضافاتكم بالكاد، وأزيلوا الإضافات غير المستخدمة من أمر التشغيل:
steamProtocolMaxDataSize = 2048;
والأداة الثانية هي تحديد المعدل لكل عنوان مصدر، بحيث يصيب منفذ الاستعلام وحده. لا تحجبوا 2303 UDP جملةً: فبدون جواب الاستعلام يختفي خادمكم من متصفح الخوادم ومن كل صفحة حالة، ولن يجده اللاعبون الجدد بعد ذلك. ومتصفح الخوادم المشروع يستعلم بضع مرات في الدقيقة، لا مئات المرات في الثانية.
4. إخراج BattlEye RCon من الشبكة المفتوحة
BattlEye هو نظام مكافحة الغش في Arma 3، ويُشغَّل في server.cfg بالسطر BattlEye = 1;. أما أداة التحكم عن بعد المرافقة له، أي BattlEye RCon، فهي بروتوكول UDP مستقل ويُعَد في BattlEye/beserver_x64.cfg (والملف الذي يحمل اللاحقة _x64 يسري على arma3server_x64، أي الخادم الشائع اليوم):
RConPassword YourAlphanumericPassword
RConPort 2306
RConIP 127.0.0.1
MaxPing 350
RestrictRCon 0
ثلاث نقاط حاسمة هنا. يجب أن تكون كلمة مرور RCon أبجدية رقمية بحتة، فالرموز الخاصة تُخرج محلّل بروتوكول BattlEye عن مساره بصمت، ووصول RCon الذي يفشل بصمت هو وصول لا تملكونه عند الجدّ. ويحدد RConIP العنوان الذي يستمع عليه RCon: فإذا كان 127.0.0.1، صارت الواجهة قابلة للوصول محلياً فقط، وتصل إليها أداة RCon لديكم عبر تمرير SSH. ويجب أن يكون RConPort فوق كتلة اللعبة، والمعتاد هو منفذ اللعبة زائد 4، أي 2306. ومن كان مضطراً إلى فتح RCon نحو الخارج يفتح المنفذ للعنوان الثابت الخاص بفريق إدارته فقط.
وشيء واحد يجب أن يكون واضحاً: BattlEye نظام لمكافحة الغش، وليس حماية من DDoS. فهو يفحص اللاعبين المتصلين. أما المهاجم الذي يُغرق خادمكم فهو لا يريد الانضمام أصلاً.
5. تثبيت Headless Client على عنوان محدد
الـ Headless Client هو نسخة ثانية من Arma 3 بدون رسوميات، تتصل بالخادم مثل أي لاعب وتتولى عنه حساب الذكاء الاصطناعي للمهمة. وهذا هو أكبر مكسب أداء على الإطلاق في المهام الكبيرة، لأن الذكاء الاصطناعي يقع خلاف ذلك على النواة نفسها التي تحمل المحاكاة. ويُسمح به في server.cfg:
headlessClients[] = {"127.0.0.1"};
localClient[] = {"127.0.0.1"};
الخبر الجيد أن الخادم لا يقبل أي اتصال من Headless Client بدون هذين السطرين. والخبر السيئ أن localClient[] يمنح العنوان المُدرَج نطاقاً ترددياً غير محدود وعملياً بلا فحص لزمن الاستجابة. لذلك أدرجوا هناك 127.0.0.1 حصراً أو العنوان الثابت لخادم Headless Client الخاص بكم، ولا تدرجوا مجالاً كاملاً من العناوين أبداً. ويُشغَّل العميل بالأمر -client -connect=127.0.0.1 -port=2302 -password=...، وهو يحتل خانة من maxPlayers. لذا خططوا لذلك، وإلا وقف لاعبوكم أمام خادم ممتلئ.
6. تحصين الانضمام والتوقيعات والتصويتات
هذه الإعدادات لا تحمي وصلتكم، لكنها تُغلق كل ما يأتي عبر طريق الانضمام النظامي: العملاء المعدَّلون، وتنفيذ السكربتات داخل اللعبة، وإساءة استخدام التصويت. والأسطر التالية تنتمي إلى كل server.cfg لخادم عام:
verifySignatures = 2;
BattlEye = 1;
kickDuplicate = 1;
allowedFilePatching = 0;
maxPlayers = 64;
disconnectTimeout = 30;
maxPing = 200;
maxDesync = 150;
maxPacketLoss = 50;
kickClientsOnSlowNetwork[] = {1, 1, 1, 1};
voteThreshold = 1.5;
voteMissionPlayers = 100;
onUnsignedData = "kick (_this select 0)";
onHackedData = "kick (_this select 0)";
يفرض verifySignatures = 2 التحقق من التوقيعات بالإصدار 2 على جميع الإضافات، وهو الحد الأدنى المطلوب لأي خادم عام يعمل بإضافات. ويرفض allowedFilePatching = 0 انضمام العملاء الذين شُغّلوا بالمعامل -filePatching (والقيمة 1 تسمح بذلك لعملاء Headless فقط، والقيمة 2 تسمح للجميع). ويطرد kickDuplicate = 1 الاتصال الثاني القادم من المُعرّف نفسه. ويحدد kickClientsOnSlowNetwork[] لكل مُدخَل ما إذا كانت العتبات الأربع المأخوذة من maxPing وmaxPacketLoss وmaxDesync وdisconnectTimeout تُسجَّل فقط (0) أم تُطبَّق فعلاً (1). ويقبل disconnectTimeout قيماً من 5 حتى 90 ثانية. أما voteThreshold الأعلى من 1 فيجعل التصويتات غير قابلة للتحقق، ويُنهي بذلك أشهر طريقة لتعطيل خادم دون حزمة هجوم واحدة: تغيير المهمة بالتصويت.
7. تحديد معدل الحزم والاتصالات لكل عنوان مصدر
يفيد وضع حد أعلى لكل عنوان مصدر ضد الهجمات الصغيرة والبوتات غير النظيفة. ولأن Arma 3 يعمل بـ UDP خالص، يُستخدم hashlimit، ويحصل منفذ الاستعلام على حد أضيق بكثير من منفذ اللعبة:
iptables -I INPUT -p udp --dport 2303 -m hashlimit --hashlimit-name a3_query --hashlimit-mode srcip --hashlimit-above 10/sec --hashlimit-burst 20 -j DROP
iptables -I INPUT -p udp --dport 2302 -m hashlimit --hashlimit-name a3_game --hashlimit-mode srcip --hashlimit-above 900/sec --hashlimit-burst 1200 -j DROP
iptables -I INPUT -p udp --dport 2302:2306 -m length --length 0:27 -j DROP
تُسقط القاعدة الأولى استعلامات المصدر نفسه بدءاً من أكثر من عشرة في الثانية بشكل دائم، وتُسقط الثانية حزم اللعب بدءاً من أكثر من 900 في الثانية بشكل دائم، وتُسقط الثالثة حزم UDP التي لا تحمل حمولة مفيدة. والأرقام الثلاثة كلها قيم بداية، لا حقائق: فخادم حياتي ممتلئ بـ 80 لاعباً يولّد حزماً أكثر بكثير من جولة Antistasi بستة لاعبين، ومن يضبط الحد بضيق شديد يطرد لاعبيه. لذلك قيسوا أولاً أسبوعاً في التشغيل الطبيعي.
وملاحظتان في هذا الصدد. قواعد iptables المجردة تختفي بعد إعادة التشغيل، وتُحفظ على Debian وUbuntu على النحو التالي:
apt-get install -y iptables-persistent
netfilter-persistent save
ومع UFW تنتمي هذه القواعد إلى /etc/ufw/before.rules، لأنها تختفي خلاف ذلك عند ufw reload التالي. وهناك عنق زجاجة يُغفَل عنه كثيراً، وهو تتبّع الاتصالات في نواة النظام: فـ UDP أيضاً يُنشئ مُدخلات هناك، وإغراق الاستعلامات القادم من عناوين مزيفة كثيرة يملأ الجدول في ثوانٍ. وعندما يمتلئ، يُسقط الخادم الحزم المشروعة أيضاً، ويظهر في السجل «nf_conntrack: table full». والوضع الحالي والحد الأعلى يُظهرهما الأمر:
sysctl net.netfilter.nf_conntrack_count net.netfilter.nf_conntrack_max
8. ملف basic.cfg: النطاق الترددي وأحجام الحزم والملفات الإضافية
ملف الإعداد الثاني لخادم Arma 3 اسمه basic.cfg ويُحمَّل بالمعامل -cfg=، بينما يحمّل -config= ملف server.cfg. وهو يتحكم في سلوك الشبكة ويحتوي على قيمة واحدة بالضبط ذات أثر أمني مباشر:
MaxMsgSend = 1024;
MaxSizeGuaranteed = 512;
MaxSizeNonguaranteed = 256;
MinBandwidth = 15000000;
MaxBandwidth = 100000000;
MinErrorToSend = 0.001;
MinErrorToSendNear = 0.01;
MaxCustomFileSize = 0;
class sockets { maxPacketSize = 1400; };
الإعداد MaxCustomFileSize هو الحجم الأقصى بالبايت لملفات الوجوه والأصوات التي يجلبها اللاعبون ويوزّعها الخادم على الآخرين جميعاً. والقيمة 0 تُعطّل هذا التوزيع. وبذلك يسقط طريق يستطيع عميل واحد من خلاله أن يحتل النطاق الترددي لخادمكم دون أي بنية هجوم. والإعداد MinBandwidth هو النطاق الترددي الذي يفترضه الخادم مضموناً، والقيمة الاستدلالية هي عدد اللاعبين مضروباً بـ 256 kbit/s، أي نحو 16 Mbit/s لأجل 64 خانة. والقيم المتفائلة جداً ترفع الحِمل وفقدان التزامن، لأن الخادم يولّد رسائل يُسقطها بعد ذلك. ويحدد MaxMsgSend عدد الحزم في كل خطوة محاكاة، وهو أول أداة ضد فقدان التزامن، والقيمة الافتراضية 128 منخفضة جداً بمقاييس الخوادم الحديثة.
9. التسجيل، حتى لا تخمّنوا أثناء الهجوم
أهم خطوة هي تلك التي لا يفعلها أحد تقريباً مسبقاً: إنشاء خط أساس للمقارنة ما دام كل شيء يعمل بشكل طبيعي. فبدون قيمة طبيعية لا تستطيعون القول بعد الحادث إن 40,000 حزمة في الثانية كانت كثيرة أم كانت مجرد مساء سبت عادي. وبالأمر apt-get install -y vnstat sysstat يستمر القياس دائماً، ويمنحكم السطر logFile = "arma3server.log"; في server.cfg رؤية الخادم إلى جانب ذلك. وأثناء الحادث تكفي أربعة أوامر:
sar -n DEV 1 10
ip -s link show eth0
dmesg -T | tail -50
tcpdump -ni eth0 udp portrange 2302-2306 -c 200 -q
والمقارنة بين المنافذ هي ما يكشف الصورة. فإذا كان الحِمل واقعاً كله تقريباً على 2303، فهو إغراق استعلامات، وهو يصيب وقت المعالجة. وإذا توزّع بالتساوي على 2302 حتى 2306 مع عناوين مرسل جديدة دائماً، فهو إغراق UDP مزيف، وهو يصيب الوصلة. وفي tcpdump تسري قاعدة ثابتة: قيّدوا دائماً بالمعامل -c، فالتسجيل تحت الحِمل الكامل يُثقل خادماً مُثقلاً أصلاً. وكيف تحلّلون القيم يوضحه المقال كشف هجوم DDoS. وكيف يُثبَّت الخادم ويُحدَّث بشكل نظيف من الأساس يوضحه المقال تثبيت خادم لعب بواسطة SteamCMD.
أين تنتهي هذه الإجراءات
وهنا يأتي الجزء الذي لا يحلّه أي ملف إعداد. فكل الإجراءات السابقة تعمل على خادمكم، أي في نهاية الوصلة. وقاعدة جدار الحماية تبتّ في حزمة سارت فعلاً عبر الكابل. تستطيعون إسقاطها، لكن لا تستطيعون جعلها غير مُرسَلة.
احسبوا معنا مرة. خادم اللعب النموذجي معلّق على 1 Gbit/s، أي 125 ميغابايت في الثانية، والوصلة تمتلئ بمجرد أن يرسل أحد أكثر من ذلك. والمقدار الثاني هو معدل الحزم، وهو في Arma 3 يضرب أولاً في كل الأحوال تقريباً. ومع الحزم الصغيرة بحجم 64 بايت تتسع وصلة بسرعة 1 Gbit/s لنحو 1.49 مليون حزمة في الثانية. أما نواة النظام العادية فتعالج، حسب المعالج وبطاقة الشبكة، بعض مئات الآلاف منها قبل أن تبدأ بالإسقاط، ومحاكاة Arma 3 معلّقة فوق ذلك على نواة معالجة واحدة.
| المؤشر | القيمة |
|---|---|
| كتلة المنافذ الافتراضية | من 2302 حتى 2306 UDP، ولا TCP لتشغيل اللعب |
| منفذ الاستعلام | منفذ اللعبة زائد 1، والافتراضي 2303 UDP |
| منفذ RCon (BattlEye) | قابل للاختيار عبر RConPort، والمعتاد منفذ اللعبة زائد 4، أي 2306 UDP |
| المسافة بين المنافذ عند تشغيل عدة نسخ | 100 على الأقل (2302 و2402 و2502) |
| القيمة الاستدلالية للنطاق الترددي في التشغيل الطبيعي | عدد اللاعبين مضروباً بـ 256 kbit/s، أي نحو 16 Mbit/s عند 64 خانة |
| معامل تضخيم بروتوكول Steam | 5.5 وفق تحذير US-CERT رقم TA14-017A |
| الحد الأدنى الموثّق لهجوم فعّال | كفى 4 Mbit/s على منفذ الاستعلام لتجميد خادم Arma 3 (تذكرة Bohemia رقم T83469) |
| 1 Gbit/s محسوبةً بالحزم | نحو 1.49 مليون حزمة في الثانية عند حجم حزمة 64 بايت |
| الذُرى التي صُفّيت لدى KernelHost | 473.4 Gbit/s بمعدل 41.5 مليون حزمة في الثانية، وبشكل منفصل إغراق UDP بسرعة 112.2 Gbit/s |
والصف الذي يذكر 4 Mbit/s هو الأكثر إزعاجاً. فالهجوم على Arma 3 لا يحتاج أن يكون كبيراً ليكون فعّالاً: يكفي أن يرسل ما يكفي من الحزم إلى المنفذ الصحيح. ويعيش المشغّلون ذلك على شكل «الاستخدام لم يكن مرتفعاً أصلاً، ومع ذلك ضاع كل شيء». وفي المقابل تسري على الهجمات الحجمية فيزياء بسيطة: عند 473.4 Gbit/s تصبح كل إعداد محلي بلا معنى، لأن حزم لاعبيكم لم تعد تمر من قبل ذلك. فالهجمات الحجمية يجب أن تنتهي في الشبكة الواقعة قبل الخادم.
ما تضعه KernelHost في المقابل
الحماية الدائمة المشمولة في كل خادم
الحماية من DDoS لدى KernelHost مبنية على مستويين وفعّالة بشكل دائم، دون أن تحتاجوا إلى تشغيل شيء أو طلبه أو إعداده:
- المستوى 1: سعة تخفيف تبلغ 17 Tbps في شبكة التنقية العالمية. تُنقّى الهجمات الحجمية قريباً من مصدرها، قبل أن تصل إلى مركز البيانات.
- المستوى 2: تصفية Arbor في الوقت الفعلي بسعة 3.2 Tbps في فرانكفورت أم ماين. وقبل الخادم مباشرةً تُكشَف الأنماط الخاصة بكل بروتوكول وتُسقَط، حزمةً حزمة.
وخاصّتان هنا حاسمتان. الحماية تعمل بشكل دائم ولا تحتاج إلى الاستجابة لهجوم أولاً، فلا توجد دقائق في البداية يكون الخادم فيها غائباً. ولا يُستخدم التوجيه إلى العدم (Nullrouting): فعنوان IP الخاص بكم يبقى في الشبكة، وتُسقَط الحزم الضارة وحدها. ومن يسحب عنوان IP من الشبكة يصل بكم إلى النتيجة نفسها التي يريدها المهاجم. أما الألعاب والبروتوكولات المشمولة فيسردها المقال حماية خوادم اللعب من DDoS في الوقت الفعلي.
Advanced DDoS Protection للمشاريع التي تتعرض للقصف باستمرار
بعض المشاريع لا تُهاجَم من حين إلى آخر، بل تُهاجَم بشكل مقصود وعلى مدى أسابيع. والخادم الحياتي الذي يملك جمهوراً ثابتاً ومشهداً تنافسياً هو الحالة القاعدة في ذلك، لا الاستثناء. ولهذا توجد Advanced DDoS Protection ابتداءً من 50.00 EUR في الشهر، بنظام PrePaid، دون حد أدنى لمدة الالتزام ودون رسوم إعداد. والفرق ليس في سعة أكبر، بل في التحكم:
- عنوان IP مخصص للحماية من النواة الفرانكفورتية، يُحوَّل خادمكم إليه داخل شبكتنا. ولا يلزم أي تغيير في جهتكم.
- قواعد حماية تديرونها بأنفسكم لكل منفذ وبروتوكول في منطقة العملاء: تضبطون بشكل منفصل ما المسموح على 2302 UDP وما المسموح على 2303 UDP، وبذلك يمكنكم تشغيل منفذ الاستعلام بحدود أضيق بكثير من منفذ اللعبة.
- التغييرات تسري في الوقت الفعلي، أي تستطيعون التعديل أثناء هجوم جارٍ بدلاً من انتظار نافذة صيانة.
- ملف حماية مناسب لكل لعبة، وكذلك للتطبيقات المعدَّلة والخاصة على أي منفذ TCP أو UDP.
مقارنة بين المستويين
| الخاصية | الحماية الدائمة المشمولة من DDoS | Advanced DDoS Protection |
|---|---|---|
| السعر | مشمولة في كل حزمة خادم دون زيادة في السعر | ابتداءً من 50.00 EUR في الشهر، بنظام PrePaid |
| سعة التصفية | 17 Tbps تنقية عالمية إضافةً إلى تصفية Arbor في الوقت الفعلي بسعة 3.2 Tbps في فرانكفورت أم ماين | التصفية نفسها ذات المستويين |
| عنوان IP | عنوان IP الخاص بخادمكم | عنوان IP إضافي مخصص للحماية |
| مجموعة القواعد | ملفات آلية، ولا حاجة إلى أي إعداد | قواعد خاصة بكم لكل منفذ وبروتوكول في منطقة العملاء، مثلاً 2302 و2303 بشكل منفصل |
| التغييرات | تسري آلياً مع النظام | تسري في الوقت الفعلي، وأثناء الهجوم أيضاً |
| ملف اللعبة | ملفات محسّنة للألعاب الشائعة | ملف مناسب للعبة، وللتطبيقات المعدَّلة أيضاً |
| التوجيه إلى العدم | لا | لا |
| مدة الالتزام | مرتبطة بحزمة الخادم | بنظام PrePaid، دون حد أدنى لمدة الالتزام، ودون مهلة إشعار للإلغاء، ودون رسوم إعداد |
ولمعظم مشاريع Arma 3 تكفي الحماية الدائمة المشمولة مع إعداد نظيف للخادم. أما Advanced DDoS Protection فهي الجواب على أن يأخذ أحدهم الأمر على المستوى الشخصي.
أخطاء شائعة وحلولها
«نقلت المنفذ من 2302 إلى 2402، والهجوم استمر»: هذا هو المتوقع. فالخادم يسجّل منفذه الجديد بنفسه لدى خادم Steam الرئيسي، وتنشره قائمة الخوادم فوراً من جديد. وتغيير المنفذ لا يفيد إلا ضد شخص يستخدم عنواناً قديماً من لقطة شاشة قديمة.
«حجبت 2303 بالكامل، والآن لا يجدنا أحد»: هذا بالضبط ما يحدث. فبدون جواب على منفذ استعلام Steam يغيب الإدراج في متصفح الخوادم، وتُظهر كل صفحة حالة وكل بوت Discord الخادم على أنه غير متصل. والصحيح هو تحديد المعدل لكل عنوان مصدر، لا الحجب.
«في السجل مكتوب NetServer::SendMsg: cannot find channel»: تظهر هذه الرسالة عندما يريد الخادم الكتابة إلى اتصال لم يعد موجوداً. وهي ترافق في العادة انقطاع اتصالات اللاعبين وتراجع الأداء (وتُدرجها Bohemia تحت T83936)، ولا تعني بالضرورة وجود هجوم. تحقّقوا أولاً مما إذا كان معدل الحزم على الواجهة ملحوظاً أصلاً.
«قواعد iptables لدي لا تعمل»: ثلاثة أسباب شائعة. القواعد موضوعة بعد سلاسل UFW ولا يُوصَل إليها أبداً، أو أنها اختفت بعد إعادة التشغيل الأخيرة (وهنا يفيد netfilter-persistent save أو مُدخَل في /etc/ufw/before.rules)، أو أن الهجوم حجمي والقاعدة تعمل بشكل صحيح على وصلة ممتلئة أصلاً. تحقّقوا بالأمر iptables -L INPUT -n -v مما إذا كانت عدّادات المطابقات ترتفع. فإذا بقيت عند الصفر، فالقاعدة لا يُوصَل إليها.
«BattlEye يطرد جميع اللاعبين منذ جدار الحماية الجديد»: الخادم لم يعد يصل إلى arma31.battleye.com. فالمنافذ الصادرة 2344 على TCP وUDP و2345 على TCP يجب أن تبقى مفتوحة، وإلا انقطع اتصال مكافحة الغش الخاص بالخادم.
«مزودي السابق حجب عنوان IP الخاص بي»: هذا هو التوجيه إلى العدم. فالمزود يحمي بذلك شبكته الخاصة، أما بالنسبة لكم فالنتيجة مطابقة لهجوم ناجح، وغالباً لساعات بعده أيضاً. اسألوا عند الشك عمّا إذا كانت الحركة تُصفّى أم تُوجَّه إلى العدم. فالجواب يقرر في جهوزيتكم أكثر من أي معطى عن العتاد.
«لا أرى في tcpdump شيئاً ملحوظاً»: إذا كانت الحركة تُصفّى في الشبكة الواقعة قبل الخادم، فلا يصل إلى الخادم شيء كما هو متوقع. وهذه هي الحالة الطبيعية عند عمل التصفية. وفي المقابل: إذا كانت الوصلة مشبعة، فقد لا تصلكم حتى جلسة SSH التي أردتم القياس بها. استخدموا في هذه الحالة وحدة تحكم VNC في منطقة العملاء، فهي تعمل بشكل مستقل عن شبكة النظام الضيف.
باختصار
- يحتاج خادم Arma 3 نحو الخارج إلى ثلاثة منافذ UDP بالضبط: 2302 لحركة اللعب والصوت، و2303 لاستعلام Steam، و2304 للتسجيل لدى خادم Steam الرئيسي. أما TCP فلا تحتاجه اللعبة.
- يحمل المنفذ 2306 UDP حركة BattlEye وواجهة RCon، وينتمي حصراً إلى عناوين الإدارة الخاصة بكم، وتُضبط عبر
RConPortوRConIPفيbeserver_x64.cfg. - منفذ استعلام Steam رقم 2303 هو النقطة الأكثر حساسية: فبروتوكول Steam يملك وفق US-CERT TA14-017A معامل تضخيم يبلغ 5.5، وكل استعلام يستهلك وقت معالجة في النواة التي تحمل المحاكاة. حدّدوا المعدل بدلاً من الحجب.
- أبقوا
steamProtocolMaxDataSizeصغيراً بالقدر الذي تسمح به قائمة الإضافات، واضبطواMaxCustomFileSize = 0;فيbasic.cfg: فكلاهما يُصغّر كمية البيانات التي يسلّمها خادمكم دون طلب. - في Arma 3 يحسم معدل الحزم، لا النطاق الترددي. وتوثّق Bohemia منذ عام 2015 تحت T83469 أن 4 Mbit/s على منفذ الاستعلام كفت لتجميد خادم.
- الإجراءات المحلية تنتهي عند الوصلة. فمن حجم هجوم يبلغ 1 Gbit/s أو بعض مئات الآلاف من الحزم في الثانية، تحسم التصفية في الشبكة الواقعة قبل الخادم وحدها.
- لدى KernelHost تكون الحماية الدائمة ذات المستويين مشمولة في كل حزمة خادم دون زيادة في السعر وفعّالة من لحظة التسليم، دون توجيه إلى العدم. وتُكمّلها Advanced DDoS Protection ابتداءً من 50.00 EUR في الشهر بعنوان IP مخصص للحماية وقواعد لكل منفذ تديرونها بأنفسكم.
إذا كان مشروعكم يعمل لدى KernelHost أصلاً، فالتصفية فعّالة دون أن تفعلوا شيئاً. وإذا لاحظتم مع ذلك أموراً غير معتادة، افتحوا تذكرة دعم ليُعاد ضبط قواعد التصفية لعنوان IP الخاص بكم. وأثناء هجوم جارٍ تستطيعون الوصول إلينا إضافةً إلى ذلك عبر محادثة الطوارئ على WhatsApp على الرقم +43 650 8209883.
الأسئلة الشائعة
خادم Arma 3 الخاص بي غير متصل الآن. كيف أعرف إن كان الأمر هجوم DDoS؟
ما المنافذ التي يحتاجها خادم Arma 3 فعلاً؟
هل أستطيع ببساطة حجب منفذ استعلام Steam رقم 2303؟
ما هو انعكاس استعلام Steam ولماذا يصيب خوادم Arma 3؟
هل يحمي BattlEye خادم Arma 3 من هجمات DDoS؟
هل يفيد تغيير عنوان IP أو المنفذ بسرعة الآن؟
هل أستطيع الدفاع عن نفسي بـ iptables أو UFW ضد هجوم DDoS؟
من أي حجم لا يعود خادم Arma 3 قادراً على التحمل وحده؟
كيف أؤمّن Headless Client بشكل صحيح؟
هل يصبح خادمي لدى KernelHost غير متصل أثناء الهجوم؟
هل تكلّف الحماية من DDoS لدى KernelHost مبلغاً إضافياً ومتى أحتاج إلى Advanced DDoS Protection؟
2026 KernelHost GmbH. جميع الحقوق محفوظة. هذا الشرح محمي بحقوق النشر. لا يُسمح بإعادة نشره على مواقع أخرى، كليًا أو جزئيًا أو بصيغة معدّلة، دون موافقتنا الخطية. أما الاقتباس مع ذكر المصدر ووضع رابط فهو مرحّب به تمامًا.

