سلسلة تعلم كاشف الدخلاء (Snort IDS/IPS) خطوة بخطوة: الجزء الثاني:- التثبيت
2. المتطلبات و الاعتماديات
سأقوم بتنصيب المتطلبات كلها مرة واحدة لتسهيل الأمر (قد تحتاج مخازن إضافية كـ EPEL و rpmfusion)
yum -y install gcc gcc-c++.x86_64 httpd mysql-server mysql-bench mysql-devel mysql++-devel.x86_64 mysqlclient10 libpcap libpcap-devel pcre-devel bison flex libdnet.x86_64 libdnet-devel.x86_64
3. التحميل
ملاحظات:
– التحميل من Snort موقع يشترط التسجيل
– عند تحميل الـRules يجب أن تكون متوافقة مع إصدار Snort . مثال: (إصدار Snort هو snort-2.9.2 إذن يجب أن تنيزل الـRules صاحبة الإصدار 2920 تجدها بهذا الشكل snortrules-snapshot-2920.tar.gz )
– Snort: وهو البرنامج نفسه
– DAQ: اختصارا لـ Data Acquisition library وهو برنامج لتحسين إدخال و إخراج الحزم
– Rules: وهي القواعد أو بالأصح التواقيع التي يعتمد عليها Snort في كشف الأحداث
– barnyard2: مشروع تم برمجته خصيصا لدعم (تعامل و تحليل) المخرجات على هيئة unified2 من برنامج Snort
4. التثبيت
لاحظ في التثبيت يجب أن تتبع الترتيب نفسه
4.1 تثبيت DAQ
tar -xzf daq-0.6.2.tar.gz ; cd daq-0.6.2
./configure
make ; make install ; cd ..
4.2 تثبيت Snort
2.4.a تثبيت Snort كـ IDS
tar -xzf snort-2.9.2.tar.gz ; cd snort-2.9.2
./configure --with-mysql --with-mysql-libraries=/usr/lib64/mysql/ --with-mysql-includes=/usr/include/mysql/ --enable-sourcefire
make ; make install
ln -s /usr/local/bin/snort /usr/sbin/snort
2.4.b تثبيت Snort كـ IPS — طبقها فقط إن أردت تحويله إلى IPS و شرحنا سيكون على الـ IDS mode
./configure --enable-inline --with-mysql --with-mysql-libraries=/usr/lib64/mysql/ --with-mysql-includes=/usr/include/mysql/ --enable-sourcefire
make ; make install
modprobe ip_queue
– لنتأكد من تحميل الموديول
lsmod | grep -i ip_queue
ln -s /usr/local/bin/snort /usr/sbin/snort
حيث أن:
–with-mysql: لدعم MySQL أي أن مخرجات Snort ستخزن في قاعدة بيانات
–with-mysql-includes / –with-mysql-libraries: لدعم مكتبات الـMySQL ربنا لا تحتاج هذا الاختيار على منصة 32-bit لأن Snort يبحث هناك في الأمكان الصحيحة
–enable-sourcefire: لدعم عدة إضافات تفضلها شركة Sourcefire.
– لمعرفة المزيد من خيارات التثبيت
./configure --help
– إنشاء مجلدات Snort
mkdir -p /etc/snort/rules mkdir /var/log/snort/
– مازلنا في المجلد(snort-2.9.2)
cp etc/* /etc/snort/
cp -r preproc_rules/ /etc/snort/
– إنشاء مستخدم باسم Snort
useradd snort -s /sbin/nologin
– إعطاء التصاريح لمجلد السجلات
chown -R snort:snort /var/log/snort/
2.4.c إضافة قواعد Snort
– نخرج من مجلد (snort-2.9.2) ثم نفك ضغط القواعد بداخل (/etc/snort)
tar xzf snortrules-snapshot-2920.tar.gz -C /etc/snort/
– نسخ الـ Dynamicrules لتفادي الخطأ(ERROR: parser.c(5161) Could not stat dynamic module path “/usr/local/lib/snort_dynamicrules”: No such file or directory.)
mkdir /usr/local/lib/snort_dynamicrules
cp -a /etc/snort/so_rules/* /usr/local/lib/snort_dynamicrules
chown -R snort:snort /usr/local/lib/snort_dynamicrules
4.3 تثبيت Barnyard2
– تحميل barnyard2 و فك ضغطه
wget -c http://www.securixlive.com/download/barnyard2/barnyard2-1.9.tar.gz
tar -xzf barnyard2-1.9.tar.gz ; cd barnyard2-1.9
– التثبيت مع دعم MySQL
./configure --with-mysql --with-mysql-libraries=/usr/lib64/mysql/ --with-mysql-includes=/usr/include/mysql/
make ; make install
-ما زلنا في مجلد(barnyard2-1.9), ننسخ ملف إعدادات barnyard2
cp etc/barnyard2.conf /etc/snort/ ; cd ..
5. الإعدادات الأولية
5.1 إعداد MySQL
– شغل خدمة MYSQL
service mysqld start
– أنشئ قاعدة بيانات باسم snort
– ثم أنشئ مستخدم للقاعدة باسم snort و كلمة مرور (في شرحنا كلمة المرور 123123)
– ثم اعطه الصلاحيات الازمة
mysql -u root -p
Enter password:>
Mysql> create database snort;
Query OK, 1 row affected (0.00 sec)
mysql> grant create, insert, select, delete, update on snort.* to snort@”localhost”;
Query OK, 0 rows affected (0.00 sec)
mysql> set password for snort@”localhost”=password(‘123123’);
Query OK, 0 rows affected (0.00 sec)
mysql> exit
– استورد السكيما الخاصة بـ Snort
cd snort-2.9.2/schemas
mysql -usnort -p < create_mysql snort
Enter password:
– تأكد من عملية الاستيراد عن طريق عرض الجداول
mysql -usnort -p
Enter password:
mysql> use snort;
Database changed
mysql> show tables ;
+------------------+
| Tables_in_snort |
+------------------+
| data |
| detail |
| encoding |
| event |
| icmphdr |
| iphdr |
| opt |
| reference |
| reference_system |
| schema |
| sensor |
| sig_class |
| sig_reference |
| signature |
| tcphdr |
| udphdr |
+------------------+
16 rows in set (0.01 sec)
mysql> exit
رائع!!
5.2 إعداد Snort
– افتح ملف إعدادات Snort
vim /etc/snort/snort.conf
– اذهب إلى الاختيارات التالية
var RULE_PATH ../rules
var SO_RULE_PATH ../so_rules
var PREPROC_RULE_PATH ../preproc_rules
– بدل المسارات إلى التالي
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
– اذهب إلى الاختيار
# output database: log, , user= password= test dbname= host=
– استبدله بالتالي
output database: log, mysql, user=snort password=123123 dbname=snort host=localhost
\!/ تنبيهات:
– لاحظ أننا أزلنا test يجب أن تترك مسافة واحدة فقط بين كلمة المرور و المعامل dbsname إن زادت عن مسافة واحدة ستواجه خطأ عند التشغيل.
– إذا واجهك الخطأ التالي عند تشغيل الخدمة
ERROR: /etc/snort/snort.conf(490) => Unable to open address file /etc/snort/rules/white_list.rules, Error: No such file or directory
– الرجاء تهميش (وضع علامة # أول السطر) للتالي
preprocessor reputation: \
memcap 500, \
priority whitelist, \
nested_ip inner, \
whitelist $WHITE_LIST_PATH/white_list.rules, \
blacklist $BLACK_LIST_PATH/black_list.rules
– لتصبح كالتالي
#preprocessor reputation: \
# memcap 500, \
# priority whitelist, \
# nested_ip inner, \
# whitelist $WHITE_LIST_PATH/white_list.rules, \
# blacklist $BLACK_LIST_PATH/black_list.rules
5.3 إعداد Barnyard2
سأقوم بتأجيل إعدادات Barnyard لمرحلة أخرى
6. تشغيل الخدمات
التشغيل سيشمل بدء الخدمة و ضمان عملها بشكل تلقائي بعد إعادة التشغيل.
6.1 تشغيل MySQL
– شغل الخدمة و تأكد أنه ستعمل تلقائيا بعد إعادة تشغيل الخادم
service mysqld start ; chkconfig mysqld on
6.2 تشغيل Barnyard
لن نقوم بتشغل الخدمة الأن
6.3 تشغيل Snort
– حمل سكريبت خدمة سنورت و اعطه تصريح
wget -c http://internetsecurityguru.com/snortinit/snort -O /etc/init.d/snortd ; chmod 755 /etc/init.d/snortd
– شغل الخدمة و تأكد أنه ستعمل تلقائيا بعد إعادة تشغيل الخادم
service snortd start ; chkconfig snortd on
2. المتطلبات و الاعتماديات
سأقوم بتنصيب المتطلبات كلها مرة واحدة لتسهيل الأمر (قد تحتاج مخازن إضافية كـ EPEL و rpmfusion)
yum -y install gcc gcc-c++.x86_64 httpd mysql-server mysql-bench mysql-devel mysql++-devel.x86_64 mysqlclient10 libpcap libpcap-devel pcre-devel bison flex libdnet.x86_64 libdnet-devel.x86_64
3. التحميل
ملاحظات:
– التحميل من Snort موقع يشترط التسجيل
– عند تحميل الـRules يجب أن تكون متوافقة مع إصدار Snort . مثال: (إصدار Snort هو snort-2.9.2 إذن يجب أن تنيزل الـRules صاحبة الإصدار 2920 تجدها بهذا الشكل snortrules-snapshot-2920.tar.gz )
– Snort: وهو البرنامج نفسه
– DAQ: اختصارا لـ Data Acquisition library وهو برنامج لتحسين إدخال و إخراج الحزم
– Rules: وهي القواعد أو بالأصح التواقيع التي يعتمد عليها Snort في كشف الأحداث
– barnyard2: مشروع تم برمجته خصيصا لدعم (تعامل و تحليل) المخرجات على هيئة unified2 من برنامج Snort
4. التثبيت
لاحظ في التثبيت يجب أن تتبع الترتيب نفسه
4.1 تثبيت DAQ
tar -xzf daq-0.6.2.tar.gz ; cd daq-0.6.2
./configure
make ; make install ; cd ..
4.2 تثبيت Snort
2.4.a تثبيت Snort كـ IDS
tar -xzf snort-2.9.2.tar.gz ; cd snort-2.9.2
./configure --with-mysql --with-mysql-libraries=/usr/lib64/mysql/ --with-mysql-includes=/usr/include/mysql/ --enable-sourcefire
make ; make install
ln -s /usr/local/bin/snort /usr/sbin/snort
2.4.b تثبيت Snort كـ IPS — طبقها فقط إن أردت تحويله إلى IPS و شرحنا سيكون على الـ IDS mode
./configure --enable-inline --with-mysql --with-mysql-libraries=/usr/lib64/mysql/ --with-mysql-includes=/usr/include/mysql/ --enable-sourcefire
make ; make install
modprobe ip_queue
– لنتأكد من تحميل الموديول
lsmod | grep -i ip_queue
ln -s /usr/local/bin/snort /usr/sbin/snort
حيث أن:
–with-mysql: لدعم MySQL أي أن مخرجات Snort ستخزن في قاعدة بيانات
–with-mysql-includes / –with-mysql-libraries: لدعم مكتبات الـMySQL ربنا لا تحتاج هذا الاختيار على منصة 32-bit لأن Snort يبحث هناك في الأمكان الصحيحة
–enable-sourcefire: لدعم عدة إضافات تفضلها شركة Sourcefire.
– لمعرفة المزيد من خيارات التثبيت
./configure --help
– إنشاء مجلدات Snort
mkdir -p /etc/snort/rules mkdir /var/log/snort/
– مازلنا في المجلد(snort-2.9.2)
cp etc/* /etc/snort/
cp -r preproc_rules/ /etc/snort/
– إنشاء مستخدم باسم Snort
useradd snort -s /sbin/nologin
– إعطاء التصاريح لمجلد السجلات
chown -R snort:snort /var/log/snort/
2.4.c إضافة قواعد Snort
– نخرج من مجلد (snort-2.9.2) ثم نفك ضغط القواعد بداخل (/etc/snort)
tar xzf snortrules-snapshot-2920.tar.gz -C /etc/snort/
– نسخ الـ Dynamicrules لتفادي الخطأ(ERROR: parser.c(5161) Could not stat dynamic module path “/usr/local/lib/snort_dynamicrules”: No such file or directory.)
mkdir /usr/local/lib/snort_dynamicrules
cp -a /etc/snort/so_rules/* /usr/local/lib/snort_dynamicrules
chown -R snort:snort /usr/local/lib/snort_dynamicrules
4.3 تثبيت Barnyard2
– تحميل barnyard2 و فك ضغطه
wget -c http://www.securixlive.com/download/barnyard2/barnyard2-1.9.tar.gz
tar -xzf barnyard2-1.9.tar.gz ; cd barnyard2-1.9
– التثبيت مع دعم MySQL
./configure --with-mysql --with-mysql-libraries=/usr/lib64/mysql/ --with-mysql-includes=/usr/include/mysql/
make ; make install
-ما زلنا في مجلد(barnyard2-1.9), ننسخ ملف إعدادات barnyard2
cp etc/barnyard2.conf /etc/snort/ ; cd ..
5. الإعدادات الأولية
5.1 إعداد MySQL
– شغل خدمة MYSQL
service mysqld start
– أنشئ قاعدة بيانات باسم snort
– ثم أنشئ مستخدم للقاعدة باسم snort و كلمة مرور (في شرحنا كلمة المرور 123123)
– ثم اعطه الصلاحيات الازمة
mysql -u root -p
Enter password:>
Mysql> create database snort;
Query OK, 1 row affected (0.00 sec)
mysql> grant create, insert, select, delete, update on snort.* to snort@”localhost”;
Query OK, 0 rows affected (0.00 sec)
mysql> set password for snort@”localhost”=password(‘123123’);
Query OK, 0 rows affected (0.00 sec)
mysql> exit
– استورد السكيما الخاصة بـ Snort
cd snort-2.9.2/schemas
mysql -usnort -p < create_mysql snort
Enter password:
– تأكد من عملية الاستيراد عن طريق عرض الجداول
mysql -usnort -p
Enter password:
mysql> use snort;
Database changed
mysql> show tables ;
+------------------+
| Tables_in_snort |
+------------------+
| data |
| detail |
| encoding |
| event |
| icmphdr |
| iphdr |
| opt |
| reference |
| reference_system |
| schema |
| sensor |
| sig_class |
| sig_reference |
| signature |
| tcphdr |
| udphdr |
+------------------+
16 rows in set (0.01 sec)
mysql> exit
رائع!!
5.2 إعداد Snort
– افتح ملف إعدادات Snort
vim /etc/snort/snort.conf
– اذهب إلى الاختيارات التالية
var RULE_PATH ../rules
var SO_RULE_PATH ../so_rules
var PREPROC_RULE_PATH ../preproc_rules
– بدل المسارات إلى التالي
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
– اذهب إلى الاختيار
# output database: log, , user= password= test dbname= host=
– استبدله بالتالي
output database: log, mysql, user=snort password=123123 dbname=snort host=localhost
\!/ تنبيهات:
– لاحظ أننا أزلنا test يجب أن تترك مسافة واحدة فقط بين كلمة المرور و المعامل dbsname إن زادت عن مسافة واحدة ستواجه خطأ عند التشغيل.
– إذا واجهك الخطأ التالي عند تشغيل الخدمة
ERROR: /etc/snort/snort.conf(490) => Unable to open address file /etc/snort/rules/white_list.rules, Error: No such file or directory
– الرجاء تهميش (وضع علامة # أول السطر) للتالي
preprocessor reputation: \
memcap 500, \
priority whitelist, \
nested_ip inner, \
whitelist $WHITE_LIST_PATH/white_list.rules, \
blacklist $BLACK_LIST_PATH/black_list.rules
– لتصبح كالتالي
#preprocessor reputation: \
# memcap 500, \
# priority whitelist, \
# nested_ip inner, \
# whitelist $WHITE_LIST_PATH/white_list.rules, \
# blacklist $BLACK_LIST_PATH/black_list.rules
5.3 إعداد Barnyard2
سأقوم بتأجيل إعدادات Barnyard لمرحلة أخرى
6. تشغيل الخدمات
التشغيل سيشمل بدء الخدمة و ضمان عملها بشكل تلقائي بعد إعادة التشغيل.
6.1 تشغيل MySQL
– شغل الخدمة و تأكد أنه ستعمل تلقائيا بعد إعادة تشغيل الخادم
service mysqld start ; chkconfig mysqld on
6.2 تشغيل Barnyard
لن نقوم بتشغل الخدمة الأن
6.3 تشغيل Snort
– حمل سكريبت خدمة سنورت و اعطه تصريح
wget -c http://internetsecurityguru.com/snortinit/snort -O /etc/init.d/snortd ; chmod 755 /etc/init.d/snortd
– شغل الخدمة و تأكد أنه ستعمل تلقائيا بعد إعادة تشغيل الخادم
service snortd start ; chkconfig snortd on