কম্পিউটার টিউটোরিয়াল

Snort (ফ্রি IDS/IPS) ব্যবহার করে নেটওয়ার্ক সিকিউরিটি হার্ডেনিং: সম্পূর্ণ গাইড

Snort: ওপেন-সোর্স নেটওয়ার্ক ইনট্রুশন ডিটেকশন/প্রিভেনশন সিস্টেম (IDS/IPS) দিয়ে নেটওয়ার্ক হার্ডেনিং

Snort (Cisco-এর মালিকানা, GPLv2) নেটওয়ার্ক সিকিউরিটির ডি-ফ্যাক্টো স্ট্যান্ডার্ড IDS/IPS। এটি রিয়েল-টাইম ট্রাফিক অ্যানালাইসিস, রুল-ভিত্তিক থ্রেট ডিটেকশন, প্যাকেট লগিং এবং ইনলাইন ব্লকিং (IPS মোডে) দিয়ে নেটওয়ার্ককে হার্ডেন করে। নিচে ইনস্টলেশন, কনফিগারেশন, রুল ম্যানেজমেন্ট এবং প্রোডাকশন ডিপ্লয়মেন্ট গাইড দেওয়া হলো।

Snort-র কাজ করার মোড

ইনস্টলেশন (Ubuntu 22.04/24.04 LTS / Debian 12)

# ১. ডিপেন্ডেন্সি
sudo apt update && sudo apt install -y build-essential libpcap-dev libpcre3-dev libdnet-dev zlib1g-dev luajit libluajit-5.1-dev libnghttp2-dev libssl-dev libhwloc-dev libmnl-dev libnetfilter-queue-dev libunwind-dev

# ২. DAQ (Data Acquisition Library) - IPS মোডের জন্য NFQ DAQ প্রয়োজন
cd /tmp && wget https://www.snort.org/downloads/snort/daq-2.0.7.tar.gz
tar xzf daq-2.0.7.tar.gz && cd daq-2.0.7
./configure && make && sudo make install

# ৩. Snort 2.9.x (স্টেবল) বা 3.x (আধুনিক, 멀티-থ্রেডেড)
# Snort 3 (সুপারিশ):
cd /tmp && wget https://github.com/snort3/snort3/archive/refs/tags/3.1.80.0.tar.gz -O snort3.tar.gz
tar xzf snort3.tar.gz && cd snort3-3.1.80.0
./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc
cd build && sudo make install
sudo ldconfig

# ৪. কনফিগারেশন ডিরেক্টরি সেটআপ
sudo mkdir -p /etc/snort/rules /etc/snort/preproc_rules /usr/local/lib/snort_dynamicrules /var/log/snort
sudo cp /usr/local/etc/snort/snort.lua /etc/snort/snort.lua
sudo cp /usr/local/etc/snort/file_magic.lua /etc/snort/

কনফিগারেশন: snort.lua (Snort 3) / snort.conf (Snort 2.9)

-- /etc/snort/snort.lua (Snort 3) - মূল অংশ
HOME_NET = '192.168.1.0/24'  -- আপনার লোকাল নেটওয়ার্ক
EXTERNAL_NET = 'any'

-- ইন্টারফেস সেট করুন
interface = 'ens192'  -- আপনার ইন্টারফেস (ip link show দিয়ে চেক করুন)

-- রুল পাথ
rules = [[
include /etc/snort/rules/local.rules
include /etc/snort/rules/community.rules
-- সাবস্ক্রিপশন থাকলে: include /etc/snort/rules/snort3-subscriber.rules
]]

-- আউটপুট: Unified2 (ফাস্ট, স্ট্যান্ডার্ড)
output = {
    unified2 = {
        filename = '/var/log/snort/snort.log',
        limit = 128,  -- MB
        nostamp = false,
    }
}

-- IPS মোডে (inline) NFQ ব্যবহার করতে:
-- ips = { mode = 'inline', policy = 'security' }

রুলস (Rules) ম্যানেজমেন্ট: ওয়াস্ট বা পুলসড্রে (oinkmaster / pulledpork)

# PulledPork 3 (Snort 3 compatible) - সাবস্ক্রিপশন (Oinkcode) বা কমিউনিটি রুলস আপডেটের জন্য
cd /tmp && git clone https://github.com/shirkdog/pulledpork3
cd pulledpork3 && sudo make install
# /etc/pulledpork3/pulledpork.conf এ Oinkcode এবং রুল পাথ সেট করুন
sudo pulledpork3 -c /etc/pulledpork3/pulledpork.conf -l -v

# Cron job দিয়ে দৈনিক আপডেট:
# 0 3 * * * /usr/local/bin/pulledpork3 -c /etc/pulledpork3/pulledpork.conf -l > /var/log/pulledpork.log 2>&1

Snort রান করা (টেস্ট / প্রোডাকশন)

# কনফিগারেশন টেস্ট
sudo snort -c /etc/snort/snort.lua --plugin-path /usr/local/lib/snort --warn-all

# IDS মোডে (প্রোমিস্কুয়াস, ট্রাফিক ট্যাপ/SPAN পোর্ট থেকে)
sudo snort -c /etc/snort/snort.lua -i ens192 -A alert_fast -k none

# IPS মোডে (Inline - NFQUEUE ব্যবহার করে)
# ১. iptables রুল এড করুন ট্রাফিক NFQUEUE-তে পাঠাতে
sudo iptables -I FORWARD -j NFQUEUE --queue-num 0
# ২. Snort IPS মোডে চালান
sudo snort -c /etc/snort/snort.lua -i ens192 --daq nfq --daq-var queue=0 -A alert_fast -k none
# নোট: প্রোডাকশনে systemd service তৈরি করুন।

প্রোডাকশন ডিপ্লয়মেন্ট আর্কিটেকচার (Best Practice)

  1. প্লেসমেন্ট: Snort সенসর ফায়ারওয়ালের ভিতরে (Internal interface) রাখুন যাতে ইন্টারন্যাল ল্যাটারাল মুভমেন্ট, C2 বি঳ন, ডেটা এক্সফিল্ট্রেশন ডিটেক্ট হয়। এক্সটার্নাল ইন্টারফেসে রাখলে এনক্রিপ্টেড ট্রাফিক (TLS 1.3) দেখতে পাবেন না।
  2. ট্রাফিক ভিজিবিলিটি: SPAN/Mirror পোর্ট (IDS) বা Inline TAP/NFQUEUE (IPS) ব্যবহার করুন।
  3. পারফরম্যান্স টিউনিং:
    • Snort 3: `--enable-tcmalloc`, `HYPERSCAN` (regex acceleration), 멀티-থ্রেড (`snort -c ... --threads=4`)。
    • অফলোড: RSS (Receive Side Scaling), XDP/eBPF (AF_XDP) ব্যবহার করুন।
    • রুল অপ্টিমাইজেশন: শুধু প্রয়োজনীয় রুলসেট (Emerging Threats Pro, Talos, Snort Subscriber) ব্যবহার করুন, `disable` কীওয়ার্ড দিয়ে নয়েজি রুল বন্ধ করুন।
  4. হায় আভেইলেবিলিটি: দুটি সেনসর Active/Standby (keepalived/VRRP) বা Active/Active (Load Balancer) এ ডিপ্লয় করুন।
  5. লগ ম্যানেজমেন্ট: Unified2 লগ → Filebeat / Logstash / Fluent Bit → Elasticsearch / Splunk / OpenSearch → Kibana / Dashboard।
  6. অ্যালার্ট টুনিং: False Positive কমাতে রুল থ্রেশহোল্ড (`threshold`, `suppression`) ব্যবহার করুন। MITRE ATT&CK ট্যাগ দিয়ে অ্যালার্ট এনরিচ করুন।

Snort 3 এর নতুন ফিচারস (Snort 2.9.x থেকে উন্নতি)

  • মাল্টি-থ্রেডেড আর্কিটেকচার: একক প্রসেসে একাধিক প্যাকেট প্রসেসিং থ্রেড (RSS/AF_XDP সাপোর্ট) — ১০ Gbps+ হ্যান্ডেল করতে পারে।
  • Lua-ভিত্তিক কনফিগারেশন (snort.lua): পাইথন-সদৃশ সিনট্যাক্স, মডুলার, সহজে স্ক্রিপ্টেবল।
  • প্লাগইন আর্কিটেকচার: কাস্টম ডিটেকশন প্লাগইন লিখা যায় (Lua/C++)।
  • Hyperscan সাপোর্ট: হাই-পারফরম্যান্স রেগুলার এক্সপ্রেশন ম্যাচিং।
  • বेहতর پروتোকল ডিকোডার: HTTP/2, TLS 1.3, DNS over HTTPS, QUIC, gRPC প্রোটোকল অ্যানালাইসিস।
  • NFQ / AF_XDP DAQ: কernel-বাইপাস হাই-স্পিড IPS।

সামান্য সমস্যা ও সমাধান

  • High CPU / Packet Drop: রুলসেট ছোট করুন, Hyperscan সক্ষম করুন, AF_XDP ব্যবহার করুন, ট্রাফিক ফিল্টার করুন (বেশি পোর্ট বাদ দিন)।
  • False Positives: Suppression rules (`suppress gen_id 1, sig_id 1234, track by_src, ip 192.168.1.10`) ব্যবহার করুন।
  • SSL/TLS ট্রাফিক অনালাইজ করা যায় না: Snort পেলোড ডিক্রিপ্ট করতে পারে না। TLS Inspection (SSL Decryption) প্রক্সি (Squid, F5, Palo Alto) দিয়ে ডিক্রিপ্টেড ট্রাফিক Snort-এ পাঠান।
  • রুলস আপডেট হয় না: Oinkcode চেক করুন, PulledPork লগ চেক করুন, ডিস্ক স্পেস চেক করুন।

বিকল্প ও পূরক টুলস

  • Suricata: 멀্টি-থ্রেডেড, Lua/JIT,conditional logging, Eve JSON আউটপুট, Kubernetes সাপোর্ট — বর্তমান সেরা অপেন-সোর্স IDS/IPS।
  • Zeek (Bro): নেটওয়ার্ক ট্রাফিক অ্যানালাইসিস ফ্রেমওয়ার্ক (ফ্লো-ভিত্তিক, প্রোটোকল ডিকোডিং, ফাইল এক্সট্রাকশন) — IDS নয়, NSM (Network Security Monitoring) টুল।
  • Wazuh / OSSEC: HIDS (Host-based) + নেটওয়ার্ক IDS ইন্টিগ্রেশন।
  • Security Onion: পূর্ণ NSM ডিস্ট্রো (Ubuntu-ভিত্তিক) — Snort/Suricata/Zeek/Wazuh/Elastic/Kibana প্রি-কনফিগার্ড। নতুনদের জন্য সেরা স্টার্টিং পয়েন্ট।
  1. আমার নেটওয়ার্ক সিকিউরিটি কীভাবে চেক করবেন?

  2. ACL (অ্যাক্সেস কন্ট্রোল লিস্ট) নেটওয়ার্ক সিকিউরিটি উন্নত করতে কীভাবে সাহায্য করে?

  3. Suricata নেটওয়ার্ক সিকিউরিটিতে কীভাবে ব্যবহার করা যায়?

  4. লিনাক্স নেটওয়ার্ক সিকিউরিটিতে কীভাবে ব্যবহার করা যায়?

কপিরাইট © https://bd.wsxdn.com সমস্ত অধিকার সংরক্ষিত
মোডবিবরণব্যবহার ক্ষেত্র
Sniffer Modeপ্যাকেট ক্যাপচার করে কনসোলে দেখায় (tcpdump-সদৃশ)ডিবাগিং, লার্নিং
Packet Logger Modeপ্যাকেট লগ ফাইলে লেখে (pcap / unified2)ফরেনসিক, ऑफलাইন অ্যানালাইসিস
NIDS Mode (IDS)রুলসের বিপরীতে ট্রাফিক ম্যাচ করলে অ্যালার্ট জেনারেট করে (ব্লক করে না)মনিটরিং, SOC অ্যালার্টিং
NIPS Mode (IPS - Inline)ট্রাফিক ইনলাইন होकर যায়, ম্যালিশিয়াস প্যাকেট ড্রপ/ব্লক করেপ্রোডাকশন ব্লকিং, হায়-পারফরম্যান্স নেটওয়ার্ক