Install Snort On Ubuntu 22.04_EP1

SoNaJaa_!!
4 min readMay 14, 2023

--

Snort: Open Source ที่อาจจะเป็นประโยชน์เกี่ยวกับการเพิ่มเติม Solution ในระบบ Security ภายในองกรณ์ของเราครับ ซึ่ง ข้อดีเลยครับ มันฟรี ครับ ไม่ต้องเสียตัง 555+…และ ตัว Snort เอง ยังมี Rule Community (Rule Default)มาให้ใช้งานกันแบบฟรี ๆ ด้วยครับ และถ้าเราอยากจะเพิ่มความเข็มข้น ในการ Detection เราก็สามารถ เขียน Rule Detection ตรวจจับความผิดปกติภายในระบบ Network ได้ตามความต้องการเลยครับ (Custom Rule เอง อยากตรวจจับอะไร เขียนได้เลยฮะ) (เดียวจะมาเขียน Rule Detection(Custom Rule) กันต่อใน EP หน้านะครับ EP นี้จะเป็นในส่วนของการ Install Snort)

ว่าแต่มีใครรู้จัก Snort มั่งไหมครับ เดียวเล่าให้ฟังแบบสั้น ๆ 555
Snort ก็คือเป็นเครื่องมือที่ใช้ตรวจจับพฤติกรรมที่ผิดปกติภายในระบบ Network ภายในองกรณ์ หรืออาจจะเคยได้ยิน ว่า Intrusion Detection System(IDS) นั้นเองครับ ซึ่งการทำงานในส่วนนี้เราจะเอาไปใช้ประโยชน์เกี่ยวกับ Detection Traffic ที่มีการใช้งานในระบบ Network ของเราเช่น Analysis Behavior ที่อาจจะเป็นการโจมตี หรือ เป็น Behavior ที่ไม่ใช้การทำงานทั่ว ๆ ไปครับ และเมื่อ Snort Detection ได้แล้ว ก็สามารถทำเกี่ยวกับการ Alert เพื่อแจ้งเตือน Team IT ได้ครับ ซึ่งเมื่อเรารู้ว่าผิดปกติ เราก็จะสามารถแก้ไขได้ตรงจุดครับ… มาเริ่ม Install กันเลยครับ 555 โม้ไว้เยอะแล้ว 555 !!!!

Ref: https://www.howtoforge.com/install-and-configure-snort-3-on-ubuntu-22-04/

Ref: https://www.snort.org/

Install Snort On Ubuntu 22.04

Step1:

  • Install Required Dependencies

# apt install build-essential libpcap-dev libpcre3-dev libnet1-dev zlib1g-dev luajit hwloc libdnet-dev libdumbnet-dev bison flex liblzma-dev openssl libssl-dev pkg-config libhwloc-dev cmake cpputest libsqlite3-dev uuid-dev libcmocka-dev libnetfilter-queue-dev libmnl-dev autotools-dev libluajit-5.1-dev libunwind-dev libfl-dev -y

Step2:

  • Install Snort DAQ

# git clone https://github.com/snort3/libdaq.git

# cd libdaq

# ./bootstrap

# ./configure

# make

# make install

Step3:

  • Install Gperftools

# cd

# wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9.1/gperftools-2.9.1.tar.gz

# tar xzf gperftools-2.9.1.tar.gz

# cd gperftools-2.9.1/

# ./configure

# make

# make install

Step4:

  • Install Snort

# cd

# wget https://github.com/snort3/snort3/archive/refs/tags/3.1.43.0.tar.gz

# tar -xvzf 3.1.43.0.tar.gz

# cd snort3–3.1.43.0

# ./configure_cmake.sh — prefix=/usr/local — enable-tcmalloc

# cd build

# make

# make install

# ldconfig

# snort -V

Step5:

  • Configure Snort
  • หมายเหตุ: ens33 คือ Interface Network ที่ติดตั้ง snort นะครับ…เปลี่ยน ของเป็นของตัวเองด้วยครับ

# ip link set dev ens33 promisc on

# ip add sh ens33

# ethtool -k ens33 | grep receive-offload

** You will get the following output:

generic-receive-offload: on

large-receive-offload: off [fixed]

# ethtool -K ens33 gro off lro off

Step6:

  • Create a Systemd Service File for Snort NIC

# vi /etc/systemd/system/snort3-nic.service

* Add the following lines:

[Unit]

Description=Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot

After=network.target

[Service]

Type=oneshot

ExecStart=/usr/sbin/ip link set dev ens33 promisc on

ExecStart=/usr/sbin/ethtool -K ens33 gro off lro off

TimeoutStartSec=0

RemainAfterExit=yes

[Install]

WantedBy=default.target

# systemctl daemon-reload

# systemctl start snort3-nic.service

# systemctl enable snort3-nic.service

# systemctl status snort3-nic.service

Step7:

  • Install Snort Rule

# mkdir /usr/local/etc/rules
# wget -qO- https://www.snort.org/downloads/community/snort3-community-rules.tar.gz | tar xz -C /usr/local/etc/rules/

# vi /usr/local/etc/snort/snort.lua

*** Defen your network as shown below แก้ไขข้างล่างตามหัวข้อโดยการ Search และไปแก้ไข Config ตามไฮไล

HOME_NET = ‘192.168.56.124/32’ Network/Subnet Snort

EXTERNAL_NET = ‘!$HOME_NET’

***** Next, Define your Snort Rules Path:

ips =

{

— use this to enable decoder and inspector alerts

— enable_builtin_rules = true,

— use include for rules files; be sure to set your path

— note that rules files can include other rules files

— (see also related path vars at the top of snort_defaults.lua)

variables = default_variables,

rules = [[

include /usr/local/etc/rules/snort3-community-rules/snort3-community.rules

]]

}

Step8:

  • Install Snort OpenAppID

# wget https://www.snort.org/downloads/openappid/26425 -O OpenAppId-26425.tgz

# tar -xzvf OpenAppId-26425.tgz

# cp -R odp /usr/local/lib/

# vi /usr/local/etc/snort/snort.lua

*** Change the following lines:

appid =

{

app_detector_dir = ‘/usr/local/lib’,

log_stats = true,

}

Step9:

  • Create Snort Custom Rules

# vi /usr/local/etc/rules/local.rules

*** Add the following line:

alert icmp any any -> $HOME_NET any (msg:”ICMP connection test”; sid:1000001; rev:1;)

alert tcp any any -> $HOME_NET any (msg:”SSH Attempted”; sid:60002;rev:1;)

# snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules

# snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules -i ens33 -A alert_fast -s 65535 -k none

Step10:

  • Create a Systemd Service File for Snort

# vi /etc/systemd/system/snort3.service

*** Add the following configurations:

[Unit]

Description=Snort Daemon

After=syslog.target network.target

[Service]

Type=simple

ExecStart=/usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none -l /var/log/snort -D -i ens33 -m 0x1b -u root -g root

ExecStop=/bin/kill -9 $MAINPID

[Install]

WantedBy=multi-user.target

# systemctl daemon-reload

# systemctl enable — now snort3

# systemctl status snort3

เสร็จสิ้นการ Install แล้วนะครับ… เดียวมาต่อกัน EP ต่อไป ของฟรี…แต่ประโยชน์เยอะมาก ๆเลยครับ
ขอบคุณครับ

Example: Detection

  • Scan Network “Detection Nmap”
Detection SCAN Network
  • Detection SQL Injection
Detection Pattern SQL Injection Attack
  • Detection SSH
Detection Protocol SSH and ICMP

--

--

SoNaJaa_!!

My Dream is Specialist Cybersecurity | Threat Hunting, DFIR | Blue Team | Red Team.