Snort

Чөлөөт нэвтэрхий толь — Википедиагаас
Jump to navigation Jump to search

Snort бол signature-based NIDS учраас халдагчийн дамжуулж буй пакетуудын шинж чанар дээр нь тулгуурлан халдлагыг тодорхойлдог. Халдлага мөн гэдгийг болон төрлийг нь тодорхойлохдоо Rule-үүдийн цуглуулгыг ашигладаг. Snort нь дотроо packet sniffer, packet логger, Network-based Interusion Detection System гэсэн үндсэн гурван функцыг агуулсан орчин үеийн хамгаалалтын application юм. Snort нь лог files-ийг удирдах бичих олон арга замуудыг дэмждэг. Snort ажиллаж байх үед багцуудыг барих, хөнөөлтэй traffic илэрсэн бол системийн админд мэдэгдэх маш өргөн боломжтой програмуудаар өргөжүүлэх боломжтой. Snort-ийг маш олон төрлийн бүтцээр зохион байгуулах боломжтой байдаг учраас тухайн байгууллагад зориулсан бүтцийг гаргахад хялбар байдаг. Snort нь зөвхөн TCP/IP протокол дээр шинжилгээ хийхээс гадна бусад маш олон сүлжээний протокол дээр шинжилгээ хийх боломжтой. Тухайлбал Novell-ийн IPX протокол дээр шинжилгээ хийх боломжтой.Snort нь мөн маш олон төрлийн үйлдлийн систем дээр суулгах боломжтой нээлттэй эх бүхий програм хангамж юм. Тухайлбал Linux, FreeBSD, NetBSD, OpenBSD, Windows, Solaris, MacOS X, MkLinux, PA-RISC HP-UX зэрэгүйлдлийн системүүд дээр ажиллах боломжтой.

Snort-ийн ерөнхий ажиллагаа[засварлах | edit source]

Unix төст системд libpcap буюу windows системд winpcap гэх сүлжээний траффикийг тодорхой форматтайгаар файлд хадгалдаг application programming interface ашиглан пакетуудыг барьдаг. Тухайлбал Snort нь packet sniffing горимд пакетыг уншиж байх үедээ pcap (Packet CAPture library)-ийг ашиглан Process Packet функцийг дуудаж ажиллуулан пакетыг бүтцээр нь задална. Дараа нь IDS горимонд шилжин уг пакетыг шалгаж үнэлгээ дүгнэлт өгнө. Эцэст нь packet-логging горимд шилжин гаралтын plug-in-уудыг дуудаж ажиллуулах замаар alert-уудыг үүсгэдэг.

IDS ажиллагааны зарчим.png
                                                          Ажиллагааны зарчим

Snort нь Ethernet, 802.11, TokenRing, FDDI, Cisco HDLC, SLIP, PPP, and OpenBSD’s PF зэрэг OSI model-ийн хоёрдугаар түвний frame-ийг задлах боломжтой бөгөөд түвшин болгонд ялгаатай задлах функцуудыг ашигладаг. Тухайлбал дээрх зурагт үзүүлсэнчлэн Ethernet frame-ийг задлахдаа DecodeEthPkt функцэд уг frame-ийг дамжуулж frame-ийн өгөгдөл, эх болон очих MAC хаяг, дараагийн түвшний төрөл зэргийг ялгах боломжтой

Snort-ийг суулгах[засварлах | edit source]

Snort-ийг windows систем дээр суулгахдаа www.snort.org татаж аваад step-to-step байдлаар суулгаж болно. Харин unix төст системүүд дээр эх кодыг нь татаж аваад компайл хийх, rpm пакежийг нь татаж аваад суулгах боломжтой. Харин fedora project-д snort-ийг fedora-д зориулан тохиргоо хийсэн кодыг бэлдсэн байдаг учир snort-ийг fedora дээр yum install командаар суулгах боломжтой байдаг. Иймд snort-ийг зөвхөн халдлага илрүүлэх систем байдлаар ажиллуулх тохиолдолд yum install командаар суулгах нь тохиромжтой. Snort-ийн бүх холбоотой пакежуудыг суулгах бол “yum install snort*” гэсэн командаар суулгаж болно. Харин зөвхөн mysql өгөгдлийн санд alert болон лог-уудаа хадгалдаг байхаар ашиглах бол yum install “snort snort-mysql” гэсэн командаар суулгах нь тохиромжтой. Ингэсэн тохиолдолд мэдээж зөвхөн snort нь mysql өгөгөдлийн сантай холбогдох гаралтын plugin-тайгаа л сууна гэсэн үг.

[root@localхост /]# yum install snort*Installed: snort.i386 0:2.8.1-4.fc9 snort-bloat.i386 0:2.8.1-4.fc9 snort-mysql.i3860:2.8.1-4.fc9 snort-mysql+flexresp.i386 0:2.8.1-4.fc9 snort-plain+flexresp.i3860:2.8.1-4.fc9 snort-postgresql.i386 0:2.8.1-4.fc9 snort-postgresql+flexresp.i3860:2.8.1-4.fc9 snort-snmp.i386 0:2.8.1-4.fc9 snort-snmp+flexresp.i386 0:2.8.1-4.fc9 Dependency Installed: libprelude.i386 0:0.9.17.2-1.fc9 mysql-libs.i3860:5.0.51a-1.fc9 postgresql-libs.i386 0:8.3.4-1.fc9 Complete!

Snort-ийг тохируулах[засварлах | edit source]

Халдлагыг зөв тодорхойлох болон хэрэгцээтэй мэдээллээ цуглуулах нь Snort-ийг хэр зэрэг тухайн системд тохирсон оновчтой тохируулга хийхээс хамаарна. Иймд Snort-ийг тохируулахдаа rule сонгох, ямар горимд ажиллуулахөгөгдлийн сан ашиглах эсгийг оновчтой байдлаар сонгох шаардлагатай. Snort-ийн үндсэн тохиргооны файл нь fedora-ийн хувьд /etc/snort/snort.conf файл байдаг. Энэ файл дотор rule-үүдийг тодорхойлох, гадаад болон дотоод сүлжээг ялгах, өгөгдлийн сантай холбох, server-үүдийн хаягийг заах (тухайлбал dns query-ийг alert болгож гаргахгүйн тулд dns server ямар хаяган дээр байгааг тодорхойлдог) зэрэг үндсэн тохиргоог хийдэг.

Rule нэмэх[засварлах | edit source]

Snort нь орж ирсэн пакетыг хөнөөлтэй үйл ажиллагаа явуулах пакет мөн гэдгийг танихын тулд rule-ийг ашигладаг. Rule-үүдийг хэрхэн тохиромжтой бичсэнээс халдлага илрүүлэх систем нь халдлагыг оновчтой тодорхойлж alert гаргах нь хамаарна. Иймд rule-үүдийг зөв сонгох нь чухал байдаг. Rule-ийг өөрийн системд тохиромжтой байдлаар бичих шаардлагатай байдаг боловч Snort-ийг хөгжүүлдэг багаас зөвлөмж болгож өөрсдийнх нь гаргадаг rule-үүдийг албан ёсны сайтандаа үнэгүй татах боломжтойгоор байрлуулсан байдаг. Гэхдээ тухайн сайтад бүртгэгдээгүй хэрэглэгчид нэмэлт сайжруулалт хийгддэгүй rule-үүдийг л татах боломжтой, бүртгэгдсэн хэрэглэгчид нь шинэ гарсан rule-үүдийг 30 хоногийн дараанаас татах боломжтой болно, бүртгэгдээд төлбөр төлсөн хэрэглэгчид болон хөгжүүлэгчид нь шинэ rule-ийг гарсан дариуд нь авах боломжтой байдаг. Шинэ rule гарахаараа бүртгэгдсэн хэрэглэгчдийн и-мэйл хаягаар нь мэдэгддэг. Өөрийн тодорхойлсон болон татаж авсан rule-үүдийг ашиглахын тулд snort-ийн үндсэн тохиргооны файлд оруулах шаардлагатай. Өөрөөр хэлбэл snort-ийн үндсэн тохиргооны файлд rule-ийг тодорхойлж байгаа бичлэгийг нэмэх эсвэл snort-ийн албан ёсны сайтаас татаж авсан rule-үүд байрлах замыг зааж өгч include командаар сонгосон rule-үүдийг үндсэн тохиргооны файлд оруулахшаардлагатай. Анхны утгаараа snort-ийн үндсэн тохиргооны файлд “var RULE_PATH/etc/snort/rules” гэсэн байдлаар rule-үүдийн байрлах замыг тодорхойлсон байдаг. Иймд татаж авсан rule-үүдийг /etc/snort/rules хавтсанд хуулаад үндсэн тохиргооны файл дээр include командаар оруулснаар тухайн rule-ийг ашиглах боломжтой болно. Тухайлбал scan хийхийг шалгадаг rule-ийг татаж аваад /etc/snort/rules хавтсанд хуулсан байлаа гэхэд /etc/snort/snort.conf файлд дараах бичлэгийг нэмэх ёстой. include $Rule_PATH/scan.rule

Deamon хэлбэрээр ажиллуулах тохиргоо[засварлах | edit source]

Системийн администратор тухайн хугацаанд snort-ийг команд ашиглан ажиллуулна гэдэг нь администратор командыг хийж ажиллуулж байгаа season-оо хаахад snort мөн ажиллахгүй болох учир энэ тохиромжгүй үйлдэл бөгөөд deamon хэлбэрээр ажиллуулах нь тохиромжтой. Тухайлбал snort суулгасан машин унтарч ассан ч ажилладаг байхаар тохируулах үед энэ тохиргоо нь хэрэглэгэдэнэ. /etc/init.d/snortd файл дотор snort-ийг deamon хэлбэрээр ажиллахад шаардагдах тохиргоонуудыг хийнэ. Тухайлбал service-ийг ачааллахад snort нь ямар option-той ажиллах вэ гэдгийг тохируулна. “-D” option нь daemon горимонд ажиллана гэдгийн заана, “-u” ямар хэрэглэгчийн эрхээр ажиллана гэдгийг заана. Тухайлбал /etc/init.d/snortd файлыг доор үзүүлсэн байдлаар тохируулж болно.

Код: case "$1" in

  start)
          echo -n "Starting snort: "
          cd /var/лог/snort
          daemon /usr/sbin/snort -D $SNORT_OPTIONS -u $USER -g $GROUP \
                   -i $INTERFACE -c /etc/snort/snort.conf
          touch /var/lock/subsys/snort 
          echo;;
  stop)
          echo -n "Stopping snort: "
          killproc snort
          rm -f /var/lock/subsys/snort
          echo;;
  restart)
          $0 stop
          $0 start
          ;;
  status)
          status snort
          ;;
          *)
                echo "Usage: $0 {start|stop|restart|status}"
                exit 1
  esac
  exit 0

Өгөгдлийн санд холбох тохиргоо[засварлах | edit source]

Snort нь пакетыг барьж аваад хадгалах замаар их хэмжээний лог болон alert-ийг үүсгэдэг учир тэгдээрийг файлд хадгалсан байдлаар нь удирдан зохицуулах нь төвөгтэй байдаг энэ байдлыг шийдвэрлэхийн тулд өгөгдлийн сантай холбож тэдгээр лог болон alert-ийг ангилан хадгалдаг. Энэ ажилдаа Snort-ийг mysql-тэй холбож лог болон alert-уудыг нь өгөгдлийн санд хадгалдаг болгосон. Ингэхийн тулд mysql-ийг суулгасан байх шаардлагатай. Хэрэв суулгаагүй бол fedora дээр yum install командаар суулгах боломжтой.

  1. yum install mysql mysql-server

Installed: mysql-server.i386 0:5.0.51a-1.fc9,mysql-5.0.51a-1.fc9.i386

                Mysql-ийг суулгасний дараа mysql-ээ demon хэлбэрээр ажиллуулах
                # service mysqld start
                Mysql admin-ий нууц үгийг тохируулах
                # mysqladmin -u root password [нууц үг]
                Mysql рүү root хэрэглэгчийн эрхээр нэвтрэх
                # mysql -u root -p
                Snort-д зориулан лог болон alert-ийг хадгалдаг өгөгдлийн сан үүсгэх
                mysql> CREATE DATABASE snort;

Query OK, 1 row affected (0.12 sec)

                Snort-ийн өгөгдлийн санд хандах хэрэглэгчийг үүсгэх болон тухайнхэрэглэгчийн тухайн өгөгдлийн санд хандах эрх болон нууц үгийг ньтодорхойлох
                mysql> grant all privileges on snort.* to snortusr@"localхост" identified

by 'нууц үг'; Query OK, 0 rows affected (0.00 sec)

                Өмнө хийсэн командыг идэвхижүүлэх.
                mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

                Үүсгэсэн өгөгдлийн сандаа лог болон alert хадгалахад хэрэглэгдэххүснэгтүүдийг нэмэх. Yum install командаар snort-ийг суулгах үед/usr/share/doc/snort-2.8.1/create_mysql файл хуулагдсан байдаг. Уг файл дахьхүснэгтүүдийг өгөгдлийн санд дараах командаар оруулж болно.
                #mysql -u root -p < /usr/share/doc/snort-2.8.1/create_mysql snort

Snort-ийг өгөгдлийн сантай холбохдоо үндсэн тохиргооны файл дээр ньдараах бичлэгийг нэмнэ. Энэ бичлэг нь snort-ийг өгөгдлийн сантайгаахолбогдоход нь хэрэглэгдэх тохиргоо бөгөөд өмнө нь суулгасан snort-mysql plugin-ийг тохируулж байна гэсэн үг. Тухйалбал лог эсвэл alert-ийн алийг нь хадгалыг заах, өгөгдлийн сангийн төрөл (mysql, mssql, postgremysql-ийн аль ньгэдгийг), өгөгдлийн санд хандахад хэрэглэгдэх хэрэглэгчийн нэр болон нууц үгзэргийг тодорхойлсон байна. Тухайлбал дараах байдлаар бичиж оруулна. output database: лог, mysql, user=snort password=нууц үг dbname=snort хост=localхост

Веб интерфэйстэй холбох[засварлах | edit source]

Snort-ийн command line интерфэйсийг хэрэглэх нь өргөн боломжтой байдаг боловч хэрэглэхэд төвөгтэй байдаг. Иймд веб интерфэйс холбож өгөгдлийн санд хадгалагдсан лог болон alert-ууд дээр задлан шинжилгээ хийх боломжтой. Snort-д холбох боломжтой base болон acid зэрэг веб интерфэйс буюу php site-ууд байдаг. Энэ туршилтийн ажиллаараа би base-ийг суулгасан. Учир нь base нь acid-аас илүү хэрэглэх өргөн боломжтой байдаг. Тухайлбал acid нь alert-уудыг цагийн бүсээр нь ангилж үзүүлдэггүй. Php хуудсуудыг ажиллуулахдаа apache болон php-ийг суулган ажиллуулж болно. Тэдгээрийг fedora дээр мэдээж дараах байдлаар yum install командаар суулгаж болно.

                 #yum install httpd php php-mysql
                 Веб интерфэйсийг холбохын тулд дараах php site-уудыг татаж авна. Base:

http://sourceforge.net/project/showfiles.php?group_id=103348&package_id=128846 &release_id=617636 ADODB: http://phplens.com/lens/dl/adodb453.tgz Эдгээр нь adodb*.tgz болон base.tar.gz файлууд байх бөгөөд тэдгээрийг задлаад веб сервер ажиллаж байгаа directory-т хуулна. Тухайлбал дараах командуудыг ашиглан хуулж болно.

                  $tar -xvzf ~/adodb453.tgz
                  $mv ~/adodb453 /var/www/html/adodb
                  $tar -xvf ~/base-1.4.1.tar.gz$mv ~/base-php4 /var/www/html/base

Эдгээр php хуудсуудыг apache-гаар ажиллуулахын тулд permision-ийг ньтохируулна. Гэхдээ энд owner нь apache group нь apache гэж тохируулсан байгаа нь жишээ бөгөөд аюулгүй байдал талаа анхаарахын тулд apache-ийн default хэрэглэгч болох apache-г owner нь болгон тохируулахгүй байхыг зөвлөж байна. Гэхдээ суулгах тухайн вэб сэйтыг суулгахад apache хэрэглэгч нь base-ийн үндсэн тохиргооны файлд өөрчлөлт хийх учир permission-ийг нь apache хэрэглэгч write эрхтэй байхаар тохируулсан байх шаардлагатай. Харин суулгасныхаа дараа write эрхгийг нь болиулах нь зөв хувилбар мөн.

                  #chown -R apache:apache /var/www/html/base
                  #chown -R apache:apache /var/www/html/adodb
Snort суурилуулах
                                                        Snort суурилуулах

Base хуудсыг анх ажиллуулахад зурагт үзүүлсэн байдлаар directory-т бичих эрх байхгүй байна гэсэн алдаа заах учир base-ийн direcotory-т нь бичих эрхийг нэмнэ. Дараах командаар бичих эрх нэмж болно.

                   #chmod o+w /var/www/html/base
                   Permision-ийг зөв тохируулсны дараа 5-н алхам дамжаад base-ийг ашиглах боломжтой болно.

Snort-ийг турших[засварлах | edit source]

Snort командаар snort-ийг ажиллаж байгаа эсэхийг шалгана. Snort командыг ажиллуулахад дараах мэдээлэл гарч байвал snort ажиллаж байна гэсэн үг. $ snort

 ,,_       -*> Snort! <*-
o" )~      Version 2.8.1 (Build 28)
'      By Martin Roesch & The Snort Team: http://www.snort.org/team.html
          (C) Copyright 1998-2008 Sourcefire Inc., et al.
          Using PCRE version: 7.8 2008-09-05

USAGE: snort [-options] <filter options> Options:

        -A        Set alert mode: fast, full, console, test or none (alert file alerts only)
                    "unsock" enables UNIX socket логging (experimental).
        -b         Лог packets in tcpdump format (much faster!)
        -B <mask> Obfuscated IP addresses in alerts and packet dumps using CIDR mask
        -c <rules> Use Rules File <rules>
        -C         Print out payloads with character data only (no hex)
        -d         Dump the Application Layer
        -D         Run Snort in background (daemon) mode
        -e          Display the second layer header info
        -f           Turn off fflush() calls after binary лог writes

Snort командыг “-v” оption-той ажиллуулж packet sniffer горимонд ажиллаж байгаа эсэхийг шалгана. Хэрэв зөв ажиллаж байвал тухайн хостын хүлээн авсан болон дамжуулж байгаа, тухайн хостоор дамжиж байгаа пакетууд харагдана. Хэрэв decode хийж харахыг хүсвэл “d” option ашиглана.

  1. snort –v

Not Using PCAP_FRAMES 12/15-00:29:26.815460 10.0.5.217:137 -> 10.0.5.255:137 UDP TTL:128 TOS:0x0 ID:31 IpLen:20 DgmLen:96 Len: 68 12/15-00:29:27.565365 10.0.5.217:137 -> 10.0.5.255:137 UDP TTL:128 TOS:0x0 ID:32 IpLen:20 DgmLen:96 Len:68

Snort-ийг байрлуулах[засварлах | edit source]

Snort нь Network-based Intrusion Detection System учир шинжилгээ хийх сүлжээний пакетууд дамжих байрлалд буй хост дээр суусан байх шаардлагатай. Өөрөөр хэлбэл snort нь тухайн сүлжээнд шинжилгээ хийхийн тулд пакетын урсгал төвлөрсөн газар байрлах ёстой. Тухайлбал snort суусан машин нь төв тухайн сүлжээний төв шугамд холбогдсон байвал тухайн сүлжээгээр дамжиж байгаа пакетуудад шинжилгээ хийхэд тохиромжтой.

Hub ашиглан холбогдсон сүлжээний хувьд “Зураг а”-дүзүүлснээр Snort суусан хостийг huн аb-ийль нэг портонд холбоход тухайн hub-аар дамжиж байгаа бүх пакетуудад шинжилгээ хийх боломжтой болно.

Snort суусан хостийг hub-ий аль нэг портонд холбох

Wireless access point ашиглан холбогдсон сүлжээний хувьд “Зураг б”-д үзүүлснээр hub ашигласан сүлжээтэй адилаар snort бүхий хост нь access point-той холбогдсон бол тухайн access point-оор дамжих пакетыг шинжлэх боломжтой болно.

hub ашигласан сүлжээ

Switch ашигласан сүлжээний хувьд “Зураг в”-д үзүүлснээр snort суусан хост руу сүлжээгээр дамжиж байгаа пакетуудыг дамжуулахын тулд port mirror хийх буюу нэг портоор дамжиж байгаа frame-үүдийг snort суусан хостын холбогдсон порт руу хувилж дамжуулдаг болгоно. Тухайлбал үүний cisco-ийн managed switch-д span порт тохируулах замаар хэрэгжүүлж болно.

snort суусан хост руу сүлжээгээр дамжих

Энэ 2 холболтуудын алийг нь ч ашиглаж болох боловч туршилтын ажилдаа тэдгээрээс хамгийн хямд өртөгтэй холболт болох hub ашигласан холболтыг “Зураг г”-д үзүүлсэн байдлаар холбож ашигласан. “Mnfedora.org” нэртэй хост нь www.mnfedora.org web сайтыг ажиллуулж байгаа веб сервер бөгөөд энэхүү ажилд веб серверт учрах халдлагын тухай мэдээллийг цуглуулах зорилгоор “Зураг д”-д үзүүлсэн физик холболтыг үүсгэсэн

hub ашигласан холболт
физик холболтыг үүсгэх

Ашигласан материал[засварлах | edit source]