ติดตั้ง snort บน ubuntu

จาก Wiki Opensource

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 08-02-2555

ดูแลโดย WIPAT


  • ทดสอบกับ ubuntu 10.04
  • ตั้งค่าให้มีการ log เข้าไปเก็บไว้ใน mysql server ด้วย
  • ติดตั้ง snort report เพื่อให้ดูข้อมูล snort ผ่านหน้าเวบ ได้


  1. ต้องติดตั้ง mysql server ก่อน ทำดังนี้
    sudo apt-get install mysql-server

    หากได้หน้าต่าง Configuring mysql-server-5.0  มีข้อความแจ้งให้ใส่รหัสผ่าน
    ในตอนนี้ยังไม่ต้องใส่อะไร ให้เลื่อนไปเลือก <Ok>
    ระบบจะทำการติดตั้งต่อไปจนเสร็จ

    เพื่อความปลอดภัยให้รีบแก้ไขรหัสผ่านของ root ของ mysql
    สมมติว่าต้องการให้รหัสของผู้ใช้ root มีรหัสผ่านว่า mysqldroot
    ตัวอย่างนี้ใช้คำสั่งว่า mysqladmin -uroot password mysqldroot

    สร้าง database สำหรับ snort ชื่อว่า snort ทำดังนี้
    mysql -uroot -pmysqldroot -e "CREATE DATABASE snortdatabase CHARACTER SET 'UTF8';"

    กำหนดสิทธิ์การใช้ database ชื่อ snort ให้แก่ user ชื่อ snortmysql โดยมีรหัสผ่านว่า snortpass ใช้คำสั่งคือ
    mysql -uroot -pmysqldroot -e "grant all privileges on snortdatabase.* to 'snortmysql'@'localhost' identified by 'snortpass';"
  2. ติดตั้ง package เพิ่มเติมด้วยคำสั่งดังนี้
    sudo apt-get install nmap nbtscan apache2 php5 php5-mysql php5-gd libpcap0.8-dev libpcre3-dev g++ bison flex
    sudo apt-get install libpcap-ruby libmysqlclient16-dev libtool autoconf
  3. ติดตั้ง JpGraph ทำดังนี้
    sudo mkdir -p /var/www/jpgraph
    wget http://ftp.psu.ac.th/pub/snort/jpgraph-1.27.1.tar.gz -P /tmp
    tar -zxpvf /tmp/jpgraph-1.27.1.tar.gz -C /tmp
    sudo cp -Rv /tmp/jpgraph-1.27.1/src /var/www/jpgraph
  4. ติดตั้ง Snort Report ทำดังนี้
    wget http://ftp.psu.ac.th/pub/snort/snortreport-1.3.3.tar.gz -P /tmp
    sudo tar -zxvf /tmp/snortreport-1.3.3.tar.gz -C /var/www

    แล้วแก้ไขแฟ้ม /var/www/snortreport-1.3.3/srconf.php
    ไปที่ประมาณบรรทัดที่ 22 แก้ไขเลขเวอร์ชั่น ดังนี้
    $srVersion = "Snort Report Version 1.3.3";
    ไปที่ประมาณบรรทัดที่ 30 แก้ไขตัวแปร ดังนี้
    $user = "snortmysql";
    $pass = "snortpass";
    $dbname = "snortdatabase";

    แก้ไขแฟ้ม /var/www/snortreport-1.3.3/alerts.php
    ไปที่ประมาณบรรทัดที่ 398 แก้ไขตัวแปร FQDN จากเดิม
    $detailURL = $detailURL . "&FQDN=yes&".$timespan->getURL('beginTime', 'endTime');
    ให้เปลี่ยนเป็นว่า
    $detailURL = $detailURL . "&FQDN=no&".$timespan->getURL('beginTime', 'endTime');
  5. ติดตั้ง Data Acquistion API ทำดังนี้
    wget http://ftp.psu.ac.th/pub/snort/daq-0.6.2.tar.gz -P /tmp
    tar -zxvf /tmp/daq-0.6.2.tar.gz -C /tmp
    cd /tmp/daq-0.6.2
    ./configure
    make
    sudo make install
    sudo ldconfig
    cd
  6. ติดตั้ง libdnet ทำดังนี้
    wget http://ftp.psu.ac.th/pub/snort/libdnet-1.12.tgz -P /tmp
    tar -zxvf /tmp/libdnet-1.12.tgz -C /tmp
    cd /tmp/libdnet-1.12
    ./configure
    make
    sudo make install
    sudo ln -s /usr/local/lib/libdnet.1.0.1 /usr/lib/libdnet.1
    cd
  7. ติดตั้ง Snort ทำดังนี้
    wget http://ftp.psu.ac.th/pub/snort/snort-2.9.2.tar.gz -P /tmp
    tar -zxvf /tmp/snort-2.9.2.tar.gz -C /tmp
    cd /tmp/snort-2.9.2
    ./configure prefix=/usr/local/snort --enable-sourcefire
    make
    sudo make install
    sudo mkdir -p /var/log/snort
    sudo mkdir -p /var/snort
    sudo groupadd snort
    sudo useradd -g snort snort
    sudo chown snort:snort /var/log/snort
    mysql -u snortmysql -psnortpass -D snortdatabase < ./schemas/create_mysql
    mysql -u snortmysql -psnortpass -D snortdatabase < /var/www/snortreport-1.3.3/create_indexes.sql
    cd
  8. ติดตั้ง Snort Rules ทำดังนี้
    wget http://ftp.psu.ac.th/pub/snort/snortrules-snapshot-2920.tar.gz -P /tmp
    sudo tar -zxvf /tmp/snortrules-snapshot-2920.tar.gz -C /usr/local/snort
    sudo mkdir -p /usr/local/snort/lib/snort_dynamicrules
    sudo cp /usr/local/snort/so_rules/precompiled/Ubuntu-10-4/i386/2.9.2.0/* /usr/local/snort/lib/snort_dynamicrules
    sudo touch /usr/local/snort/rules/white_list.rules
    sudo touch /usr/local/snort/rules/black_list.rules
  9. แก้ไขแฟ้ม /usr/local/snort/etc/snort.conf 
    ประมาณบรรทัดที่ 113 ให้ปรับปรุงตัวแปรเป็นดังนี้
    var WHITE_LIST_PATH /usr/local/snort/rules
    var BLACK_LIST_PATH /usr/local/snort/rules

    ประมาณบรรทัดที่ 247 ให้ปรับปรุงตัวแปรเป็นดังนี้
    dynamicpreprocessor directory /usr/local/snort/lib/snort_dynamicpreprocessor/
    dynamicengine /usr/local/snort/lib/snort_dynamicengine/libsf_engine.so
    dynamicdetection directory /usr/local/snort/lib/snort_dynamicrules

    ประมาณบรรทัดที่ 420 ให้ลบเครื่องหมาย # นำหน้าออก  เหลือเป็นเพียงว่า
    preprocessor arpspoof

    ประมาณบรรทัดที่ 520 ปรับปรุงเพิ่มบรรทัดตัวแปรเป็นว่า
    output unified2: filename snort.u2, limit 128
  10. ติดตั้ง Banyard2 ทำดังนี้
    wget http://ftp.psu.ac.th/pub/snort/barnyard2-1.9.tar.gz -P /tmp
    tar -zxvf /tmp/barnyard2-1.9.tar.gz  -C /tmp
    cd /tmp/barnyard2-1.9
    ./configure --with-mysql
    sudo make
    sudo make install
    sudo cp -v etc/barnyard2.conf /usr/local/snort/etc
    sudo mkdir -p /var/log/barnyard2
    sudo chmod 666 /var/log/barnyard2
    sudo touch /var/log/snort/barnyard2.waldo
    sudo chown snort.snort /var/log/snort/barnyard2.waldo
    cd

    แล้วแก้ไขแฟ้ม /usr/local/snort/etc/barnyard2.conf
    ประมาณบรรทัดที่ 29 ปรับปรุงตัวแปรเป็นว่า
    config reference_file:      /usr/local/snort/etc/reference.config
    config classification_file: /usr/local/snort/etc/classification.config
    config gen_file:            /usr/local/snort/etc/gen-msg.map
    config sid_file:            /usr/local/snort/etc/sid-msg.map
    ประมาณบรรทัดที่ 60 ปรับปรุงตัวแปรเป็นว่า
    config hostname:   localhost
    config interface:  eth0
    ประมาณบรรทัดที่ 319 ปรับปรุงตัวแปรเป็นว่า
    output database: log, mysql, dbname=snortdatabase user=snortmysql password=snortpass host=localhost
  11. ทดสอบ snort ด้วยคำสั่งดังนี้
    sudo /usr/local/snort/bin/snort -u snort -g snort -c /usr/local/snort/etc/snort.conf -i eth0
    ระบบจะเริ่มทำงานจนหน้าจอได้ข้อความประมาณว่า
    Commencing packet processing (pid=...)
    แสดงว่า snort ใช้การได้แล้ว ให้กลับออกมาด้วยการกดแป้น Control_C
  12. ให้ snort ทำงานด้วยคำสั่งดังต่อไปนี้
    sudo /usr/local/snort/bin/snort -u snort -g snort -c /usr/local/snort/etc/snort.conf -i eth0 -D
    sudo  /usr/local/bin/barnyard2 -c /usr/local/snort/etc/barnyard2.conf -G /usr/local/snort/etc/gen-msg.map -S /usr/local/snort/etc/sid-msg.map -d /var/log/snort -f snort.u2 -w /var/log/snort/barnyard2.waldo -D

    สั่งให้ apache ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/apache2 restart
    แล้วทดสอบดูผลงานผ่านเวบที่ http://localhost/snortreport-1.3.3
  13. การปรับปรุง rules ให้ไปลงทะเบียนที่เวบ  http://www.snort.org เพื่อจะได้มีสิทธิ์ในการดาวน์โหลด rules ของ Registered User Release
    เมื่อลงทะเบียนแล้ว ให้ login เข้าไปที่หน้าเวบ http://www.snort.org/snort-rules
    จัดการดาวน์โหลด rules ให้ถูกรุ่น  ตัวอย่างการติดตั้งเป็น snort 2.9.x ก็ให้เลือกดาวน์โหลดชุด Snort v2.9.x

    มีการ mirror แฟ้ม rules ของ snort มาเก็บไว้ที่ http://ftp.psu.ac.th/pub/snort
    ตัวอย่างการ update snort rules รุ่น 2.9.2.0 ให้ทำดังนี้
    wget http://ftp.psu.ac.th/pub/snort/snortrules-snapshot-2920.tar.gz -P /tmp
    mkdir -p /tmp/snort
    tar -zxvf /tmp/snortrules-snapshot-2920.tar.gz  -C /tmp/snort
    sudo cp -Rfv /tmp/snort/rules/*.rules  /usr/local/snort/rules
    sudo cp -Rfv /tmp/snort/preproc_rules/*.rules /usr/local/snort/preproc_rules
    sudo cp -Rfv /tmp/snort/so_rules/*.rules /usr/local/snort/so_rules
  14. การตั้งค่าให้ snort ตรวจสอบ arp spoof ด้วย ให้ทำดังนี้
    แก้ไขแฟ้ม /usr/local/snort/etc/snort.conf
    ประมาณบรรทัดที่ 420 ให้ลบเครื่องหมาย # นำหน้าออก  เหลือเป็นเพียงว่า
    preprocessor arpspoof