نادرًا ما يأتي هذا السؤال من فراغ. صار الخادم أبطأ، أو أرسل مزوّد الاستضافة رسالة عن حركة صادرة، أو وصلك إشعار بتسجيل دخول لم تقم به. ثم يأتي الجزء المزعج: ليس واضحًا إلى أين تنظر ولا بأي ترتيب، والاندفاع الأول — امسح كل شيء وابدأ من جديد — يكون سابقًا لأوانه دائمًا تقريبًا.

في ما يلي ترتيب للفحوص يستغرق نحو عشرين دقيقة، ويعطي في معظم الحالات إجابة واضحة. يبدأ من الأرخص وينتهي بالأغلى: أولًا ما يظهر فورًا، ثم ما يجب مقارنته بمرجع.

الخطوة الأولى: من الذي دخل

ابدأ بعمليات الدخول. إذا دخل شخص آخر فقد جاء على الأرجح عبر SSH، وقد ترك أثرًا.

last -20
lastb | head -20
who

يعرض last آخر عمليات الدخول الناجحة، وlastb الفاشلة، وwho من هو متصل الآن. المهم ليس العدد بل الشكل. آلاف المحاولات الفاشلة من عناوين لا تعود أبدًا هي الخلفية المعتادة للتخمين الأعمى؛ فهو يعمل بلا توقف ضد أي عنوان عام ولا يعني شيئًا.

ما ينبغي أن يقلقك شيء آخر:

  • دخول ناجح من عنوان لا يوجد فيه أحد من فريقك؛
  • دخول باسم مستخدم لم تنشئه قط؛
  • محاولات فاشلة ضد اسم مستخدم موجود فعلًا على هذه الآلة — وهذا يعني أن أحدهم عرف من هم مستخدموك بدل أن يجرّب قاموسًا؛
  • جلسة مفتوحة الآن لم تفتحها أنت.

افحص على حدة ما إذا كانت قد ظهرت مفاتيح غريبة. الملف ~/.ssh/authorized_keys هو أشيع وسيلة للبقاء في الداخل: يمكن تغيير كلمة المرور كما تشاء، أما المفتاح فيبقى.

cat ~/.ssh/authorized_keys
sudo cat /root/.ssh/authorized_keys

كل سطر هناك هو وصول لشخص ما. إن لم تستطع تحديد صاحبه، فاعتبره غريبًا.

الخطوة الثانية: ما الذي تغيّر في النظام

الاقتحام يترك أثرًا على القرص دائمًا تقريبًا: ملف تنفيذي مستبدل، سطر زائد في إعداد، ملف جديد في دليل خادم الويب. فحص ذلك بالعين ميؤوس منه — أنت بحاجة إلى مرجع.

على Debian و Ubuntu المرجع موجود سلفًا: كل حزمة تعرف المجاميع الاختبارية لملفاتها.

sudo apt install debsums
sudo debsums -c

يسرد الأمر الملفات التي تختلف عمّا ثبّتته التوزيعة. جزء من النتائج سيكون مشروعًا — فملفات الإعداد في /etc موجودة أصلًا لتُحرَّر. أما ملف تنفيذي معدَّل في /usr/bin أو /usr/sbin أو /bin على خادم لم تلمسه بيدك، فهذا أمر مختلف تمامًا.

المصدر الثاني هو ملفات حديثة في أماكن لا ينبغي أن تكون فيها. عادة ما يجلس الـ web shell في دليل الرفع ويبدو كملف .php بريء:

find /var/www -type f -name '*.php' -mtime -14 -ls

الأربعة عشر يومًا مجرد نقطة انطلاق؛ استخدم المدة التي تعرف أنك لم تنشر خلالها شيئًا.

الخطوة الثالثة: ما الذي يخرج

نادرًا ما يُخترق خادم لذاته. بل يُستخدم: لإرسال البريد المزعج، وللتعدين، وللوصول إلى شبكات أخرى، ولاستضافة ملفات الآخرين. وكل ذلك ينشئ اتصالات صادرة لم تكن موجودة من قبل.

ss -tulpn
ss -tp state established

يعرض الأمر الأول ما الذي يستمع، والثاني ما هو متصل الآن. اقرأ عمود العملية. ما يثير الأسئلة: عملية مجهولة تستمع على 0.0.0.0؛ اتصالات صادرة إلى منافذ عالية لعناوين لا شأن لتطبيقك بها؛ وقبل كل شيء عملية أُطلقت من /tmp أو /dev/shm — فلا شيء مشروع يعمل من هذين الدليلين.

وما دمت هناك، انظر إلى الحمل أيضًا. المُعدِّن يفضح نفسه بإبقاء المعالج مشغولًا على موقع لا يحظى بأي شعبية إطلاقًا.

إذا كانت العلامات موجودة

الاندفاع الأول هو التنظيف السريع: احذف المفتاح الغريب، أوقف العملية، امسح الملف. لا تفعل — فأنت بذلك تدمّر بالضبط ما كان يمكن أن يفسّر لاحقًا كيف دخلوا. وإن بقي ذلك مجهولًا فسيعودون، ربما غدًا.

ترتيب يحفظ البيانات والصورة معًا:

  1. خذ لقطة للقرص لدى مزوّدك إن كانت متاحة. هذه هي الخطوة الوحيدة التي لا يمكن تكرارها لاحقًا.
  2. افصل الآلة عن الشبكة أو أغلق كل شيء عدا عنوان IP الخاص بك — لكن لا تُطفئها. الإطفاء يُفقدك قائمة العمليات والاتصالات المفتوحة، وهذه نصف الأدلة.
  3. انسخ السجلات خارج الآلة: /var/log/auth.log، وسجلات خادم الويب، ومخرجات الأوامر الثلاثة أعلاه.
  4. والآن فقط اكتشف كيف دخلوا.

إعادة التثبيت من نظيف هي النهاية الصحيحة إذا كان الوصول قد تم بصلاحيات root. فلا قدر من التنظيف يضمن أنه لم يبقَ شيء. لكن إعادة التثبيت دون فهم السبب بلا جدوى: ستعيد الثغرة نفسها إلى نظام جديد.

كيف تمنع السؤال من أن يأتي فجأة

كل ما سبق فحص يدوي لمرة واحدة، وهو يجيب على سؤال «ماذا يحدث الآن». والمشكلة أن هذا السؤال يُطرح متأخرًا عادة: بعد أن يكتب المزوّد أو بعد أن يسقط الموقع.

كل فحص من هذه الفحوص موجود كأداة منفصلة قادرة على المراقبة المستمرة: عمليات الدخول الفاشلة — fail2ban، وتغيّرات الملفات — AIDE، وسلامة الحزم — debsums، والمنافذ المفتوحة — لقطة منتظمة من ss. تثبيتها واحدة تلو الأخرى ليس صعبًا؛ الصعب هو اكتساب عادة الدخول يوميًا لقراءة ستة مخرجات مختلفة، ولهذا لا يقرأها أحد عمليًا.

وهذا بالضبط هو معنى لوحة تجمعها: البيانات نفسها، لكن على صفحة واحدة ومع تاريخ، بحيث تظهر عبارة «لم يكن الأمر هكذا أمس» دون رحلة خاصة. في الأسفل صفحات العرض التوضيحي التي تبيّن شكل ذلك مجمّعًا.