كل دليل عن Suricata تقريبًا ينتهي بتثبيت Elasticsearch و Logstash و Kibana. وبالنسبة لخادم VPS واحد هذه نصيحة سيئة: ستطلب هذه الكومة أربعة غيغابايت من الذاكرة واهتمامًا دائمًا، بينما كل ما أردته هو رؤية ما التقطه نظام كشف التسلل خلال اليوم الماضي. تعمل Suricata جيدًا تمامًا بدونها — لكن لها خاصية تجعل الناس يثبّتونها ثم يزيلونها بعد أسبوع.
اللغم في الإعدادات الافتراضية
تكتب Suricata جاهزةً في eve.json أكثر من ثلاثين نوعًا من الأحداث: لا التنبيهات فحسب، بل كل استعلام DNS، وكل مصافحة TLS، وكل معاملة HTTP، و ARP و DHCP، وتدفقًا بعد تدفق. إضافة إلى ملف stats.log منفصل كل ثماني ثوانٍ. ولا تُعِدّ Suricata تدوير السجلات أثناء ذلك — فتلك مهمة المسؤول، ولا تُكتب في أي مكان بخط عريض.
رقم من خادم حقيقي: 15 غيغابايت في يومين — تسعة في eve.json وستة تقريبًا في stats.log. وقد بقي نحو خمسة أيام حتى امتلاء القرص. ولم تكن الحركة على ذلك الخادم كثيرة أصلًا؛ وعلى عقدة مزدحمة كانت المسألة ستكون ساعات.
افحص خادمك الآن:
sudo du -sh /var/log/suricata/*
أبقِ ما تقرؤه فقط
إن كنت تنظر إلى التنبيهات بدل أن تمارس التحليل الجنائي للشبكة، فأنت بحاجة إلى نوع حدث واحد بالضبط من eve-log. في /etc/suricata/suricata.yaml جد كتلة outputs وتحت types الخاصة بـ eve-log أبقِ alert وعلّق الباقي. وفي الموضع نفسه عطّل مخرج الإحصاءات:
- stats:
enabled: no
بعد التحرير يصبح فحص الإعداد إلزاميًا — قبل إعادة تشغيل الخدمة:
sudo suricata -T -c /etc/suricata/suricata.yaml -v
الترتيب مهم: لن ينجح الاختبار إن لم تكن القواعد قد حُمِّلت بعد. أولًا suricata-update، ثم فحص الإعداد، ثم التشغيل.
تدوير يعمل فعلًا
الملف /etc/logrotate.d/suricata:
/var/log/suricata/*.log /var/log/suricata/*.json {
daily
rotate 7
maxsize 200M
missingok
compress
delaycompress
create 0664 suricata suricata
su suricata suricata
postrotate
systemctl kill -s HUP suricata
endscript
}
سطران هنا غير بديهيين وكلاهما حرج.
su suricata suricata — بدونه يتخطى logrotate كل الملفات بصمت. فالدليل /var/log/suricata يعود للمجموعة suricata لا لـ root، ويعتبر logrotate مثل هذا الترتيب غير آمن. ولن يكون هناك خطأ في البريد ولا في السجل؛ ستكون ببساطة واثقًا أن التدوير موجود حتى ينفد القرص. والسبيل الوحيد لالتقاط ذلك مسبقًا هو تشغيل تجريبي:
sudo logrotate -d /etc/logrotate.d/suricata
create 0664 suricata suricata — أذونات الملف الجديد. فمع القيم الافتراضية (0640) لن ترى أي لوحة أو سكربت يقرأ السجلات بمستخدم غير root شيئًا بعد أول تدوير.
ماذا تضبط غير السجلات
HOME_NET. يصف هذا ما تعتبره Suricata شبكتها. القيمة الافتراضية تسرد كل النطاقات الخاصة، بينما لخادم VPS عنوان عام — ولذلك لا تنطلق بعض القواعد أو تنطلق بالمقلوب. حدّد شبكتك صراحة.
القواعد. مجموعة Emerging Threats Open يجلبها suricata-update، ومكانه في cron مرة يوميًا. وتُعطَّل التواقيع المزعجة فرادى بالمعرّف في /etc/suricata/disable.conf — ولا تخف من استخدام ذلك: فالمجموعة موجّهة لشبكة مؤسسية، وعلى خادم ويب عادي ستنطلق عشرات القواعد باستمرار وبلا سبب.
الوضع. افتراضيًا تستمع Suricata إلى نسخة من الحركة وتحذّر فقط (IDS). أما وضع الحجب (IPS، عبر nfqueue) على خادم واحد فهو خطر عليك أنت أساسًا: إنذار كاذب واحد وتكون قد أقفلت على نفسك الباب. ابدأ بالمراقبة واقضِ شهرًا ترى ما الذي يُلتقط.
كيف يُقرأ ذلك بلا Kibana
التنبيهات المختصرة تعيش في /var/log/suricata/fast.log — سطر واحد لكل حدث، مقروء بالعين:
sudo tail -50 /var/log/suricata/fast.log
أما التفاصيل ففي eve.json، كائن JSON واحد لكل سطر. وكل ما يُثبَّت Kibana من أجله عادة يختصر في أمر واحد:
sudo jq -r 'select(.event_type=="alert") | .alert.signature' \
/var/log/suricata/eve.json | sort | uniq -c | sort -rn | head -20
هذه هي التواقيع العشرون الأكثر تكرارًا. وعلى مدى أسبوع تجيب قائمة كهذه بصدق عمّا يجري مع الخادم، وتُظهر أيضًا أي القواعد حان وقت تعطيلها.
لماذا العناء ما دام Fail2ban موجودًا
هما مختلفان في طبيعتهما. يقرأ Fail2ban سجلات التطبيقات ويستجيب لعمليات الدخول الفاشلة — أي لما وصل إلى خدمة بالفعل. أما Suricata فتنظر إلى الحركة نفسها وترى ما لن يكون في سجل أبدًا: مسح المنافذ، ومحاولات الاستغلال المطابقة لتواقيع معروفة، والاتصالات بخوادم الأوامر من داخل آلتك. والأخير ثمين بشكل خاص: فاتصال صادر إلى خادم أوامر وسيطرة تابع لغيرك هو أبكر علامة على أن شيئًا يعمل على الخادم لم تشغّله أنت.
الإبقاء على الاثنين لا بأس به، فهما لا يتعارضان. والسؤال الوحيد هو هل يقرأ أحد مخرجاتهما أكثر من مرة كل ربع سنة. وشكل التنبيهات نفسها على صفحة واحدة، مقسّمة حسب الفئة والمصدر، يعرضه العرض التوضيحي أدناه.