2013-04-29, 09:41 PM
سیستم های تشخیص نفوذ درلینوکس: hock:
(IDS) یا سیستم تشخیص نفوذ به سختافزار، نرمافزار یا تلفیقی از هر دو اطلاق میگردد که در یک سیستم رایانهیی که میتواند یک شبکهی محلی ا گسترده باشد، وظیفهی شناسایی تلاشهایی که برای حمله به شبکه صورت میگیرد و ایجاد اخطار احتمالی متعاقب حملات، را بر عهده دارد.IDSها عملاً سه وظیفهی کلی را برعهده دارند : پایش، تشخیص، واکنش. هرچند که واکنش در مورد IDSها عموماً به ایجاد اخطار، در قالبهای مختلف، محدود میگردد. هرچند دستهیی مشابه از ابزارهای امنیتی به نام Intrusion Prevention System وجود دارند که پس از پایش و تشخیص، بستههای حملههای احتمالی را حذف میکنند. نکتهیی که در این میان باید متذکر شد، تفاوت و تقابل میان Firewallها و IDSها است. از آنجاکه ماهیت عملکرد این دو ابزار با یکدیگر به کلی متفاوت است، هیچیک از این دو ابزار وظیفهی دیگری را به طور کامل برعهده نمیگیرد، لذا تلفیقی از استفاده از هردو ابزار میتواند امنیت کلی سیستم را بالا ببرد.
snortیک ابزارتشخیص نفوذشبکه ای یک نرمافزار تشخیص نفوذ بهصورت کدباز است که بر روی سیستم عامل های بسیاری از جمله محیطهای Linux و Windows عرضه میگردد و با توجه به رایگان بودن آن، به یکی از متداولترین سیستمهای تشخیص نفوذ شبکههای رایانهیی مبدل شده است چراکه به کاربران امکان استفاده و بررسی یک نذم افزار تشخیص نفوذ واقعی را میدهد. این سیتم قادر است حملات مختلفی از قبیل سرریزی بافر,پویش مخفی پورتها,جلوگیری از سرویس و... را شناسایی کند.برای کمک به فهم بهترsnortمیتوان ان را همچون خلائی در نظر گرفت که بخش های مختلف یک نوع در این مورد بسته ها را جذب میکندو اجازه میدهد تا عملیات مختلفی روی انها انجام گیرد.با استفاده از snort میتوانیدبربخش های جذب شده نظارت داشته باشید(Packet sniffer);یا میتوانید بخش ها را درمحفظه ای قرار دهید تا بعد انا بررسی کنید(Packet Logger);یا اینکه ان ها را مرتب کرده و بخش هارا بافهرستی از معیارها تطابق دهیدو زمانی که تطابق پیدا شد هشداری را ارسال کنید(NIDS)با استفاده از این خصیصه ها میتوان تحلیل های مفید امنیتی انجام داد.شهرتsnortبه موازات شهرتlinuxوبقیه سیستم عامل های مبتنی برBSDافزایش یافته است.
مزایای snort:
- رایگان بودن
- ثبت وقایع و رویدادهاوتحلیل بلادرنگ ترافیک شبکه
- بررسی داده های اصلی و مهم یک بسته و بررسی عواقب احتمالی ورود این داده هابه سیستم
- شناسایی حملات مختلف مانند سرریزی بافر,حملاتCGJ,حمله به پروتکلSMB,حمله تشخص نوع سیستم عامل و حمله جلوگیری از سرویس
- تشخیص جزئیات سرایند یک بسته اطلاعاتی وکشف وارائه امارنمونه های مشکوک
-ثبت وقایع به صورت xml
- وجود یک زبان انعطاف پذیر برای ثبت وقایع
معایب snort
جمع اوری نکردن کلیه بسته ها:
این اشکال باعث بوجود امدن اغتشاش شده در نتیجه داده های مهم شبکه مفقود میشود. بیشتر زمانی اتفاق می افتد که سرعت شبکه با سیستم هایی کهsnortروی ان ها قرار دارد یکی نباشد. کارائی snortبه پیاده سازی پشته ی شبکه ای سیستم عامل بستگی دارد.
هشدار نادرست:
یعنی اینکه snortهشداری را نمایش داده درحالی که نبقاید نشان میداد.بسیاری از اوقات وقتی snortبا تنظیمات پیش فرض نصب میشود این ایراد اتفاق می افتد.البته اینکه هشدار های نادرست را دریافت کرده و سپس انرا کاهش دهیم بهتر از ان است که داده هایی را که ممکن است یک حمله بحرانی را نشان دهد,از دست بدهیم.
عدم تشخیص:در این حالت حمله ای روی سیستم اتفاق می افتد ولی snortان را تشخیص نمیدهد.این به این دلیل است که یا قوانین ان قدیمی است و یا حمله هایی بوجود امده که هنوز امضائی برای ان نوشته نشده است.برای حل این مشکل بهتر است Snort را بروز رسانی کنیم.
چگونگی نصب snort:برای نصب این نرم افزاررویcentos6.3بایداین مراحل را طی کنید:
Update your system using yum update and reboot
yum update -y
reboot
Install EPEL repository
rpm -Uvh <!-- m --><a class="postlink" href="http://ftp.uninett.no/linux/epel/6/i386/epel-release-6-8.noarch.rpm">http://ftp.uninett.no/linux/epel/6/i386 ... noarch.rpm</a><!-- m -->
Install PCRE, libdnet and more prerequisite packages
yum install libdnet libdnet-devel pcre pcre-devel gcc make flex byacc bison kernel-devel libxml2-devel wget -y
Create dir for Snort prerequisite sources
mkdir /usr/local/src/snort
cd /usr/local/src/snort
Download and install libpcap
wget <!-- m --><a class="postlink" href="http://www.tcpdump.org/release/libpcap-1.3.0.tar.gz">http://www.tcpdump.org/release/libpcap-1.3.0.tar.gz</a><!-- m --> -O libpcap.tar.gz
tar zxvf libpcap.tar.gz
cd libpcap-*
./configure && make && make install
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig -v
Download and install DAQ
cd /usr/local/src/snort
wget <!-- m --><a class="postlink" href="http://www.snort.org/downloads/2216">http://www.snort.org/downloads/2216</a><!-- m --> -O daq.tar.gz
tar zxvf daq.tar.gz
cd daq-*
./configure && make && make install
ldconfig -v
Create snort user and group
groupadd snort
useradd -g snort snort
Install Snort
Download and install Snort
cd /usr/local/src/snort
wget <!-- m --><a class="postlink" href="http://www.snort.org/dl/snort-current/snort-2.9.4.tar.gz">http://www.snort.org/dl/snort-current/s ... 9.4.tar.gz</a><!-- m --> -O snort.tar.gz
tar zxvf snort.tar.gz
cd snort-2*
./configure --prefix /usr/local/snort --enable-sourcefire && make && make install
Create links for Snort files
ln -s /usr/local/snort/bin/snort /usr/sbin/snort
ln -s /usr/local/snort/etc /etc/snort
Configure Snort startup script to run at startup
cp rpm/snortd /etc/init.d/
chmod +x /etc/init.d/snortd
cp rpm/snort.sysconfig /etc/sysconfig/snort
chkconfig --add snortd
Delete following lines from snort startup file
vi /etc/init.d/snortd
...
# check if more than one interface is given
if [ `echo $INTERFACE|wc -w` -gt 2 ]; then
...
else
# Run with a single interface (default)
daemon /usr/sbin/snort $ALERTMODE $BINARY_LOG $NO_PACKET_LOG $DUMP_APP -D $PRINT_INTERFACE $INTERFACE -u $USER -g $GROUP $CONF -l $LOGDIR $PASS_FIRST $BPFFILE $BPF
fi
Comment out the following variable in /etc/sysconfig/snort and add / to the LOGDIR variable
vi /etc/sysconfig/snort
...
LOGDIR=/var/log/snort/
...
#ALERTMODE=fast
...
#BINARY_LOG=1
...
Download Snort rules files from <!-- m --><a class="postlink" href="http://www.snort.org/snort-rules">http://www.snort.org/snort-rules</a><!-- m --> to /usr/local/src/snort
You have to register to the site in order to get the free register user rules
or you can pay and get the most update rules as a "Subscriber user"
Extract rules file in the new created directory
cd /usr/local/snort
tar zxvf /usr/local/src/snort/snortrules-snapshot-2*
Create directory for snort logging
mkdir -p /usr/local/snort/var/log
chown snortnort /usr/local/snort/var/log
ln -s /usr/local/snort/var/log /var/log/snort
Create links for dynamic rules files and directories
ln -s /usr/local/snort/lib/snort_dynamicpreprocessor /usr/local/lib/snort_dynamicpreprocessor
ln -s /usr/local/snort/lib/snort_dynamicengine /usr/local/lib/snort_dynamicengine
ln -s /usr/local/snort/lib/snort_dynamicrules /usr/local/lib/snort_dynamicrules
Set snort permissions
chown -R snortnort /usr/local/snort
Comment out or delete all reputation preprocessor configuration lines from snot.conf and configure ouput plugin
vi /usr/local/snort/etc/snort.conf
...
#preprocessor reputation: \
# memcap 500, \
# priority whitelist, \
# nested_ip inner, \
# whitelist $WHITE_LIST_PATH/white_list.rules, \
# blacklist $BLACK_LIST_PATH/black_list.rules
...
output unified2: filename snort.log, limit 128
...
Create Dynamicrules directory
mkdir /usr/local/snort/lib/snort_dynamicrules
Copy dynamicrules files
On i386 system
cp /usr/local/snort/so_rules/precompiled/RHEL-6-0/i386/2.9*/*so /usr/local/snort/lib/snort_dynamicrules/
On x86_64 system
cp /usr/local/snort/so_rules/precompiled/RHEL-6-0/x86-64/2.9*/*so /usr/local/snort/lib/snort_dynamicrules/
Dump the stub rules
snort -c /usr/local/snort/etc/snort.conf --dump-dynamic-rules=/usr/local/snort/so_rules
Enable snort dynamic rules configuration in the end of snort.conf file
vi /usr/local/snort/etc/snort.conf
...
# dynamic library rules
include $SO_RULE_PATH/bad-traffic.rules
include $SO_RULE_PATH/chat.rules
include $SO_RULE_PATH/dos.rules
include $SO_RULE_PATH/exploit.rules
include $SO_RULE_PATH/icmp.rules
include $SO_RULE_PATH/imap.rules
include $SO_RULE_PATH/misc.rules
include $SO_RULE_PATH/multimedia.rules
include $SO_RULE_PATH/netbios.rules
include $SO_RULE_PATH/nntp.rules
include $SO_RULE_PATH/p2p.rules
include $SO_RULE_PATH/smtp.rules
include $SO_RULE_PATH/snmp.rules
include $SO_RULE_PATH/specific-threats.rules
include $SO_RULE_PATH/web-activex.rules
include $SO_RULE_PATH/web-client.rules
include $SO_RULE_PATH/web-iis.rules
include $SO_RULE_PATH/web-misc.rules
...
Test Snort configuration
snort -c /usr/local/snort/etc/snort.conf -T
Update Snort rules automatically
(IDS) یا سیستم تشخیص نفوذ به سختافزار، نرمافزار یا تلفیقی از هر دو اطلاق میگردد که در یک سیستم رایانهیی که میتواند یک شبکهی محلی ا گسترده باشد، وظیفهی شناسایی تلاشهایی که برای حمله به شبکه صورت میگیرد و ایجاد اخطار احتمالی متعاقب حملات، را بر عهده دارد.IDSها عملاً سه وظیفهی کلی را برعهده دارند : پایش، تشخیص، واکنش. هرچند که واکنش در مورد IDSها عموماً به ایجاد اخطار، در قالبهای مختلف، محدود میگردد. هرچند دستهیی مشابه از ابزارهای امنیتی به نام Intrusion Prevention System وجود دارند که پس از پایش و تشخیص، بستههای حملههای احتمالی را حذف میکنند. نکتهیی که در این میان باید متذکر شد، تفاوت و تقابل میان Firewallها و IDSها است. از آنجاکه ماهیت عملکرد این دو ابزار با یکدیگر به کلی متفاوت است، هیچیک از این دو ابزار وظیفهی دیگری را به طور کامل برعهده نمیگیرد، لذا تلفیقی از استفاده از هردو ابزار میتواند امنیت کلی سیستم را بالا ببرد.
snortیک ابزارتشخیص نفوذشبکه ای یک نرمافزار تشخیص نفوذ بهصورت کدباز است که بر روی سیستم عامل های بسیاری از جمله محیطهای Linux و Windows عرضه میگردد و با توجه به رایگان بودن آن، به یکی از متداولترین سیستمهای تشخیص نفوذ شبکههای رایانهیی مبدل شده است چراکه به کاربران امکان استفاده و بررسی یک نذم افزار تشخیص نفوذ واقعی را میدهد. این سیتم قادر است حملات مختلفی از قبیل سرریزی بافر,پویش مخفی پورتها,جلوگیری از سرویس و... را شناسایی کند.برای کمک به فهم بهترsnortمیتوان ان را همچون خلائی در نظر گرفت که بخش های مختلف یک نوع در این مورد بسته ها را جذب میکندو اجازه میدهد تا عملیات مختلفی روی انها انجام گیرد.با استفاده از snort میتوانیدبربخش های جذب شده نظارت داشته باشید(Packet sniffer);یا میتوانید بخش ها را درمحفظه ای قرار دهید تا بعد انا بررسی کنید(Packet Logger);یا اینکه ان ها را مرتب کرده و بخش هارا بافهرستی از معیارها تطابق دهیدو زمانی که تطابق پیدا شد هشداری را ارسال کنید(NIDS)با استفاده از این خصیصه ها میتوان تحلیل های مفید امنیتی انجام داد.شهرتsnortبه موازات شهرتlinuxوبقیه سیستم عامل های مبتنی برBSDافزایش یافته است.
مزایای snort:
- رایگان بودن
- ثبت وقایع و رویدادهاوتحلیل بلادرنگ ترافیک شبکه
- بررسی داده های اصلی و مهم یک بسته و بررسی عواقب احتمالی ورود این داده هابه سیستم
- شناسایی حملات مختلف مانند سرریزی بافر,حملاتCGJ,حمله به پروتکلSMB,حمله تشخص نوع سیستم عامل و حمله جلوگیری از سرویس
- تشخیص جزئیات سرایند یک بسته اطلاعاتی وکشف وارائه امارنمونه های مشکوک
-ثبت وقایع به صورت xml
- وجود یک زبان انعطاف پذیر برای ثبت وقایع
معایب snort
جمع اوری نکردن کلیه بسته ها:
این اشکال باعث بوجود امدن اغتشاش شده در نتیجه داده های مهم شبکه مفقود میشود. بیشتر زمانی اتفاق می افتد که سرعت شبکه با سیستم هایی کهsnortروی ان ها قرار دارد یکی نباشد. کارائی snortبه پیاده سازی پشته ی شبکه ای سیستم عامل بستگی دارد.
هشدار نادرست:
یعنی اینکه snortهشداری را نمایش داده درحالی که نبقاید نشان میداد.بسیاری از اوقات وقتی snortبا تنظیمات پیش فرض نصب میشود این ایراد اتفاق می افتد.البته اینکه هشدار های نادرست را دریافت کرده و سپس انرا کاهش دهیم بهتر از ان است که داده هایی را که ممکن است یک حمله بحرانی را نشان دهد,از دست بدهیم.
عدم تشخیص:در این حالت حمله ای روی سیستم اتفاق می افتد ولی snortان را تشخیص نمیدهد.این به این دلیل است که یا قوانین ان قدیمی است و یا حمله هایی بوجود امده که هنوز امضائی برای ان نوشته نشده است.برای حل این مشکل بهتر است Snort را بروز رسانی کنیم.
چگونگی نصب snort:برای نصب این نرم افزاررویcentos6.3بایداین مراحل را طی کنید:
Update your system using yum update and reboot
yum update -y
reboot
Install EPEL repository
rpm -Uvh <!-- m --><a class="postlink" href="http://ftp.uninett.no/linux/epel/6/i386/epel-release-6-8.noarch.rpm">http://ftp.uninett.no/linux/epel/6/i386 ... noarch.rpm</a><!-- m -->
Install PCRE, libdnet and more prerequisite packages
yum install libdnet libdnet-devel pcre pcre-devel gcc make flex byacc bison kernel-devel libxml2-devel wget -y
Create dir for Snort prerequisite sources
mkdir /usr/local/src/snort
cd /usr/local/src/snort
Download and install libpcap
wget <!-- m --><a class="postlink" href="http://www.tcpdump.org/release/libpcap-1.3.0.tar.gz">http://www.tcpdump.org/release/libpcap-1.3.0.tar.gz</a><!-- m --> -O libpcap.tar.gz
tar zxvf libpcap.tar.gz
cd libpcap-*
./configure && make && make install
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig -v
Download and install DAQ
cd /usr/local/src/snort
wget <!-- m --><a class="postlink" href="http://www.snort.org/downloads/2216">http://www.snort.org/downloads/2216</a><!-- m --> -O daq.tar.gz
tar zxvf daq.tar.gz
cd daq-*
./configure && make && make install
ldconfig -v
Create snort user and group
groupadd snort
useradd -g snort snort
Install Snort
Download and install Snort
cd /usr/local/src/snort
wget <!-- m --><a class="postlink" href="http://www.snort.org/dl/snort-current/snort-2.9.4.tar.gz">http://www.snort.org/dl/snort-current/s ... 9.4.tar.gz</a><!-- m --> -O snort.tar.gz
tar zxvf snort.tar.gz
cd snort-2*
./configure --prefix /usr/local/snort --enable-sourcefire && make && make install
Create links for Snort files
ln -s /usr/local/snort/bin/snort /usr/sbin/snort
ln -s /usr/local/snort/etc /etc/snort
Configure Snort startup script to run at startup
cp rpm/snortd /etc/init.d/
chmod +x /etc/init.d/snortd
cp rpm/snort.sysconfig /etc/sysconfig/snort
chkconfig --add snortd
Delete following lines from snort startup file
vi /etc/init.d/snortd
...
# check if more than one interface is given
if [ `echo $INTERFACE|wc -w` -gt 2 ]; then
...
else
# Run with a single interface (default)
daemon /usr/sbin/snort $ALERTMODE $BINARY_LOG $NO_PACKET_LOG $DUMP_APP -D $PRINT_INTERFACE $INTERFACE -u $USER -g $GROUP $CONF -l $LOGDIR $PASS_FIRST $BPFFILE $BPF
fi
Comment out the following variable in /etc/sysconfig/snort and add / to the LOGDIR variable
vi /etc/sysconfig/snort
...
LOGDIR=/var/log/snort/
...
#ALERTMODE=fast
...
#BINARY_LOG=1
...
Download Snort rules files from <!-- m --><a class="postlink" href="http://www.snort.org/snort-rules">http://www.snort.org/snort-rules</a><!-- m --> to /usr/local/src/snort
You have to register to the site in order to get the free register user rules
or you can pay and get the most update rules as a "Subscriber user"
Extract rules file in the new created directory
cd /usr/local/snort
tar zxvf /usr/local/src/snort/snortrules-snapshot-2*
Create directory for snort logging
mkdir -p /usr/local/snort/var/log
chown snortnort /usr/local/snort/var/log
ln -s /usr/local/snort/var/log /var/log/snort
Create links for dynamic rules files and directories
ln -s /usr/local/snort/lib/snort_dynamicpreprocessor /usr/local/lib/snort_dynamicpreprocessor
ln -s /usr/local/snort/lib/snort_dynamicengine /usr/local/lib/snort_dynamicengine
ln -s /usr/local/snort/lib/snort_dynamicrules /usr/local/lib/snort_dynamicrules
Set snort permissions
chown -R snortnort /usr/local/snort
Comment out or delete all reputation preprocessor configuration lines from snot.conf and configure ouput plugin
vi /usr/local/snort/etc/snort.conf
...
#preprocessor reputation: \
# memcap 500, \
# priority whitelist, \
# nested_ip inner, \
# whitelist $WHITE_LIST_PATH/white_list.rules, \
# blacklist $BLACK_LIST_PATH/black_list.rules
...
output unified2: filename snort.log, limit 128
...
Create Dynamicrules directory
mkdir /usr/local/snort/lib/snort_dynamicrules
Copy dynamicrules files
On i386 system
cp /usr/local/snort/so_rules/precompiled/RHEL-6-0/i386/2.9*/*so /usr/local/snort/lib/snort_dynamicrules/
On x86_64 system
cp /usr/local/snort/so_rules/precompiled/RHEL-6-0/x86-64/2.9*/*so /usr/local/snort/lib/snort_dynamicrules/
Dump the stub rules
snort -c /usr/local/snort/etc/snort.conf --dump-dynamic-rules=/usr/local/snort/so_rules
Enable snort dynamic rules configuration in the end of snort.conf file
vi /usr/local/snort/etc/snort.conf
...
# dynamic library rules
include $SO_RULE_PATH/bad-traffic.rules
include $SO_RULE_PATH/chat.rules
include $SO_RULE_PATH/dos.rules
include $SO_RULE_PATH/exploit.rules
include $SO_RULE_PATH/icmp.rules
include $SO_RULE_PATH/imap.rules
include $SO_RULE_PATH/misc.rules
include $SO_RULE_PATH/multimedia.rules
include $SO_RULE_PATH/netbios.rules
include $SO_RULE_PATH/nntp.rules
include $SO_RULE_PATH/p2p.rules
include $SO_RULE_PATH/smtp.rules
include $SO_RULE_PATH/snmp.rules
include $SO_RULE_PATH/specific-threats.rules
include $SO_RULE_PATH/web-activex.rules
include $SO_RULE_PATH/web-client.rules
include $SO_RULE_PATH/web-iis.rules
include $SO_RULE_PATH/web-misc.rules
...
Test Snort configuration
snort -c /usr/local/snort/etc/snort.conf -T
Update Snort rules automatically