Suricata নিয়ে প্রায় প্রতিটি নির্দেশিকা শেষ হয় Elasticsearch, Logstash ও Kibana বসানোর মধ্য দিয়ে। একটি VPS-এর জন্য এটা খারাপ পরামর্শ: এই স্তূপ চার গিগাবাইট মেমরি আর অবিরত মনোযোগ চাইবে, অথচ আপনি কেবল দেখতে চেয়েছিলেন গত দিনে IDS কী ধরল। Suricata এগুলো ছাড়া দিব্যি কাজ করে — তবে তার একটা বৈশিষ্ট্য আছে যার কারণে লোকে তাকে বসিয়ে এক সপ্তাহ পরে সরিয়ে ফেলে।
ডিফল্ট সেটিংসে লুকানো মাইন
বাক্স থেকে বেরিয়েই Suricata eve.json-এ ত্রিশের বেশি ধরনের ঘটনা লেখে: কেবল alert নয়, বরং প্রতিটি DNS অনুরোধ, প্রতিটি TLS handshake, প্রতিটি HTTP লেনদেন, ARP, DHCP, একের পর এক flow। সঙ্গে প্রতি আট সেকেন্ডে আলাদা stats.log। আর এসব করতে গিয়ে Suricata লগ ঘূর্ণন সাজায় না — সেটা প্রশাসকের কাজ, আর কোথাও বড় অক্ষরে লেখা নেই।
বাস্তব সার্ভারের একটা সংখ্যা: দুই দিনে 15 গিগাবাইট — নয়টি eve.json-এ আর প্রায় ছয়টি stats.log-এ। ডিস্ক ভরে যাওয়ার আগে প্রায় পাঁচ দিন বাকি ছিল। ওই সার্ভারে ট্রাফিকও বেশি ছিল না; ব্যস্ত নোডে এটা ঘণ্টার ব্যাপার হতো।
নিজেরটা এখনই যাচাই করুন:
sudo du -sh /var/log/suricata/*
যা পড়েন কেবল তাই রাখুন
আপনি যদি নেটওয়ার্ক ফরেনসিক নয়, alert দেখেন, তবে eve-log থেকে ঠিক এক ধরনের ঘটনাই দরকার। /etc/suricata/suricata.yaml-এ outputs ব্লক খুঁজুন আর eve-log-এর types-এ 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 root-এর নয়, suricata গোষ্ঠীর, আর 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 ছাড়া কীভাবে পড়বেন
সংক্ষিপ্ত alert থাকে /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 খোদ ট্রাফিক দেখে এবং তা দেখে যা কোনো লগে কখনও থাকবে না: পোর্ট স্ক্যানিং, পরিচিত স্বাক্ষরের সঙ্গে মেলা শোষণের চেষ্টা, আপনার যন্ত্রের ভেতর থেকে কমান্ড সার্ভারে সংযোগ। শেষেরটি বিশেষভাবে মূল্যবান: অন্যের কমান্ড সার্ভারে বাইরে যাওয়া সংযোগ হলো সবচেয়ে আগাম ইঙ্গিত যে সার্ভারে আগে থেকেই এমন কিছু চলছে যা আপনি চালু করেননি।
দুটোই রাখা ঠিক আছে, তারা সংঘর্ষে যায় না। প্রশ্ন কেবল এটাই যে ত্রৈমাসিকে একবারের বেশি তাদের ফলাফল কেউ পড়ে কি না। একই alert এক পাতায়, শ্রেণি ও উৎস অনুযায়ী ভাগ করা অবস্থায় কেমন দেখায় — নিচের ডেমোতে।