شناسايي مهاجمين با استفاده از ACID

 

 نصب: آشكارساز متجاوزين‌ با كمي‌ حوصله‌ از طريق‌ نرم‌افزارهاي‌ مجاني‌  امكان‌پذير مي‌باشد.

 

نوشته: Joe Bar

مترجم: مرجان‌ صديقي‌ اناركي‌

 

 

خلاصه

تنها مسئله، داشتن‌ وقت‌ كافي‌ براي‌ نصب‌ نرم‌افزارها مي‌باشد. با نصب‌ اين‌ نرم‌افزارهاي‌ مجاني‌ يك‌ سيستم‌ آشكارساز قدرتمند متجاوز را بر روي‌ سيستم‌ عامل‌ يونيكس‌ خواهيد داشت. مراحل‌ زير را دنبال‌ كنيد و سيستم‌ خود را در مقابل‌ ورود افراد متجاوز ايمن‌ نماييد.

 

پس‌ از اينكه‌ سرور من‌ در سال‌ گذشته‌ مورد حمله‌ قرار گرفت، تصميم‌ به‌ نصب ACID گرفتم. من‌ از نرم‌افزاري صحبت‌ مي‌كنم‌ كه Analysis Console for Intrusion Database است‌ و تقريبا بصورت‌ بلادرنگ‌ اخطارها را به‌ كمك Snort به‌ شما نشان‌ مي‌دهد. Snort يك Open Source Intrusion Detection System (IDS) اعجاب‌انگيز مي‌باشد كه‌ توسط Marty Reosch معرفي‌ شده‌ است.

 

همه‌ چيز با Snort شروع‌ مي‌شود

آشنايي‌ من‌ با ACID از نصب Snort شروع‌ شد. توجه‌ به‌ اين‌ نكته‌ ضروري‌ است‌ كه‌ نصب ACID مشابه‌ ساير بسته‌هاي‌ نرم‌افزاري‌ مي‌باشد و براي‌ كار با آن‌ بايد پكيج‌هاي‌ مختلف‌ نرم‌افزاري‌ را نصب‌ كرد. آيا Apache شما درست‌ نصب‌ نشده‌ و يا PHP شما كار نمي‌كند. اگر مايل‌ به‌ استفاده‌ از Snort با MySQL هستيد و بخش‌هاي‌ مختلف‌ مرتبط‌ در MySQL پيدا نمي‌شوند. با اسكريپ Snort براي‌ غلبه‌ بر اين‌ مشكل‌ بپاخيزيد.

اولين‌ چيزي‌ كه‌ من download كردم Snort بود. نسخه 1.8.4 را در يكي‌ از ليست‌هاي‌ سايت Snort.org پيدا كردم. فايل download شده‌ حاوي‌ يك‌ راهنماي‌ بسيار خوب‌ در فرمت PDF تهيه‌ شده‌ در تاريخ‌ 13 مارس‌ 2002 بود. همچنين‌ يك‌ سري‌ فايل README.* نيز همراهش‌ بود. اگر تصميم‌ به‌ نصب ACID داريد فايل README ديتابيس، حياتي‌ است. Snort از MySQL، PostgreSQL، Oracle‌ و هر Unix ODBC پشتيباني‌ مي‌كند.

 

مرحله‌ بعد نصب MySQL مي‌باشد

من MySQL را انتخاب‌ كردم‌ چون‌ به‌ تصور من MySQL بهترين‌ نرم‌افزار مي‌باشد. شما مي‌توانيد از هر نرم‌افزار ديگري‌ چون‌ Oracle، PostgreSQL و يا هر آنچه‌ مي‌خواهيد استفاده‌ كنيد. كار خود را با نصب MySQL  3.23.49a-1  از  Red Hat 7.2 RPM  شروع‌ كردم.

برگرديم‌ به Snort، براي‌ شروع‌ اسكريپ‌ پيكربندي‌ با ديتابيس‌ وابسته‌ به MySQL را اجرا كردم. در حين‌ اجرا، نرم‌افزار نتوانست‌ فايل mysql.h را پيدا كند و اجرا ناتمام‌ به‌ پايان‌ رسيد. جاي‌ تعجب‌ نيست‌ كه‌ نتوانست‌ فايل‌ را پيدا كند. روي‌ سيستم‌ من‌ نبود. از سي‌دي Red Hat، محيطMySQL  development PRM را نصب‌ كرده‌ و كار را مجددا انجام‌ دادم‌ و مسير كامل‌ را به‌ header file اضافه‌ كردم. در فايل‌هاي‌ برنامه‌ به‌ دنبال‌ اسكريپ‌ پيكربندي‌ گشتم‌ و چنين‌ چيزي‌ به‌ دايركتوري كه‌ تعيين‌ كرده‌ بودم‌ افزوده‌ شد:

 

/include/mysql/mysql.h

 

مسير را با عبارت -mysql=/usr قطع‌ كردم. به‌ خوبي‌ كار مي‌كرد. بعد از اجراي‌ اسكريپ‌هاي‌ لازم‌ براي‌ ايجاد كردن‌ ديتابيس Snort، با اختصاص‌ نام‌ كاربري‌ و كلمه‌ عبور براي‌ دسترسي‌ به‌ ديتابيس‌ كار را ادامه‌ دادم. سپس‌ شروع‌ به‌ تغيير دادن‌ فايل snort.conf كردم. output database:log(etc) را uncomment كرده و براي‌ ديتابيس، نام كاربري و كلمه‌ عبور وارد كردم‌. يك خط جداگانه براي output database:alert(etc) اضافه كردم. براي‌ شروع‌ كار snort، (ثبت logging/alerting به‌ ديتابيس MySQL) به‌ سادگي فرمان زير را وارد كردم:

 

snort -D -c /etc/snort/snort.conf

 

مرحله‌ بعد نصب ADOdb، PHP، Apache و ساير نرم‌افزارهايي‌ از اين‌ قبيل‌

البته‌ من‌ بعد از نصب‌ نرم‌افزارهاي‌ زيادي‌ به‌ سراغ Snort رفتم. هدف‌ از اين‌ كار، ايجاد پيام‌هاي هشدار دهنده در فرمت GUI بود. براي‌ اين‌ كار به ACID نياز داشتم. ACID به Apache و ADOdb نياز داشت. Apache نياز به‌ برقراري‌ ارتباط‌ با PHP و MySQL داشت‌ و PHP بايد با MySQL به‌ خوبي‌ ارتباط‌ داشته‌ باشد. همچنين‌ به‌ كتابخانه‌ گرافيكي GD نيز نياز بود.

سپس‌ نوبت Apache بود. نسخه 1.3.24 آن‌ را از سايت Apache.org گرفتم‌ چون‌ سرور Apache كه‌ قبلا نصب‌ كرده‌ بودم‌ براي‌ اين‌ كار مناسب‌ نبود. بعد از يك‌ سري‌ مشكلات‌ بالاخره‌ با موفقيت‌ براساس‌ ساختار پيكربندي‌ زير نصب‌ شد:

./configure --enable-module=most

--enable-shared=max

 

بعد نوبت‌ به PHP رسيد. براي‌ درست‌ شدن PHP زمان‌ بيشتري‌ صرف‌ شد. من‌ يك‌ مقدار وقت‌ را به‌ دليل‌ اشتباه‌ در نصب Apache از دست‌ دادم. تا زماني‌ كه Apache مناسبي‌ را نداشتم، داشتن PHP برايم‌ مهم‌ نبود و در نهايت‌ به‌ ساختار زير رسيدم:

./configure --with-mysql=/user --with-apxs= /usr/local/apache/bin/apxs --with-gd

حال‌ در چند قدمي‌ هدف‌ بودم. ابتدا بايد ADOdb را براي‌ استاندارد كردن‌ اينترفيس‌هاي‌ ديتابيس PHP اضافه‌ مي‌كردم. اين‌ كار به‌ سادگي‌ با download كردن‌ و باز كردن‌ فايل‌ فشرده ADOdb PHP انجام‌ شد. سپس‌ آنها را به‌ مسير /usr/local/apache/htdocs انتقال‌ دادم. بعد نوبت‌ كتابخانه‌ گرافيكي GD و phplot بود. بعد از download كردن GD از وب‌ سايت‌ فايل‌ متني readme.txt را خواندم‌ و نصب GD را با دستور make install شروع‌ كردم. اين‌ كار libgd.so را به/usr/local/lib  اضافه‌ كرد. پس‌ از اطمينان‌ از اينكه‌ دايركتوري‌ حاوي /etc/ld.so.conf مي‌باشد /sbin/ldconfig را اجرا كردم.

phplot لازمه‌ استفاده‌ از تصاوير PNG مي‌باشد. PHP را در مسيري‌ كه‌ بقيه‌ چيزها را نصب‌ كرده‌ بودم‌ قرار دادم:

/usr/local/apache/htdocs/

 

سرانجام‌ نوبت‌ به ACID رسيد

حال‌ نوبت‌ نصب ACID مي‌باشد. پس‌ از download كردن‌ و باز كردن‌ فايل‌ فشرده‌ شده‌ در همان‌ دايركتوري Apache htdocs شروع‌ به‌ اديت‌ كردن‌ فايل acidconf.php و آماده‌ كردن‌ براي‌ قرار دادن‌ در ديتابيس snort كه‌ شامل‌ نام‌ كاربر و كلمه‌ عبور براي‌ استفاده‌ از نرم‌افزار مي‌باشد. تعيين‌ مسير ADOdb و phplot كردم.

اولين‌ بار كه‌ از ACID استفاده‌ كردم‌ بايد چيزهايي‌ را به‌ ديتابيس snort اضافه‌ مي‌كرد. به‌ سادگي‌ مسير update كردن‌ را دنبال‌ كردم‌ و هر آنچه‌ گفته‌ بود، انجام‌ دادم. تنها كار اين‌ بود كه‌ اجازه‌ دهم snort داده‌ را جمع‌آوري‌ كند.

براي‌ اسكن‌ كردن IP آدرس، از يكي‌ از اعضاي LUG كمك‌ گرفتم. بيش‌ از 10000 اخطار طي‌ 2 ساعت‌ پيدا شدند. همچنين‌ يك‌ شكاف‌ امنيتي‌ بزرگ‌ در سيستم‌ من‌ پيدا شده‌ بود، برنامه ACID براي‌ هر كسي‌ كه‌ يك‌ پيام HTML را  به‌ پورت 8080 در آدرس IP من‌ مي‌فرستاد، قابل‌ دسترس‌ بود و يكي‌ از كساني‌ كه‌ اسكن‌ شده‌ بود، داوطلبانه‌ گفت: او با IP آدرس‌ خود در يك‌ ديتابيس‌ به‌ دنبال ACID مي‌گشته‌ است‌ كه‌ به ACID در كامپيوتر من‌ رسيده‌ است.

براي‌ رفع‌ اين‌ نقص‌ در قسمت‌ دسترسي‌ به Apache، httpd.conf را از حالت "Allow from any" به 127.0.0.1 تغيير دادم. مستندات PHP را دقيقا‌ بخوانيد، چون‌ مسائل امنيتي خاص خود را در آن مطرح ساخته است.

ACID home page با اجراي‌ انواع‌ مختلف‌ پروتكل‌ها مانند TCP، UDP و ICMP فعاليت‌ پورت‌ها را اسكن‌ مي‌كند. بصورت‌ پيش‌فرض‌ اين‌ كار هر سه‌ دقيقه refresh مي‌شود. براي‌ قطع‌ و يا وصل‌ كردن refreshing مي‌توانيد acid.conf.php را ويرايش كنيد يا بازده‌ زماني refreshmentها را تغيير دهيد. ACID اجازه‌ مي‌دهد تا شما خود ابزارهاي‌ موردنياز براي‌ آناليز ديتابيس‌ را انتخاب‌ كنيد.

در انتخاب‌ نحوه‌ گزارش‌گيري، گزينه‌هاي‌ متعددي‌ وجود دارد مي‌توان‌ درخواست‌ كرد اخطارهايي‌ را كه‌ به‌ تازگي‌ فعال‌ بوده‌اند نمايش‌ دهد و يا اخطارهايي‌ كه‌ در روزهاي‌ گذشته‌ بوده‌اند و غيره‌ را نمايش‌ دهد.

امنيت‌ واقعي‌ با ACID بصورت‌ ناگهاني‌ از طريق‌ بسته‌ نرم‌افزاري "snapshots" حاصل‌ نمي‌شود، بلكه‌ نحوه‌ بكارگيري‌ توانمندي‌هاي‌ جستجو اين‌ امنيت‌ را فراهم‌ مي‌سازد. صفحه‌ جستجو اجازه‌ مي‌دهد تا شما تقريبا از هر معيار جستجو از آدرس IP تا محتواي‌ پاكت‌ براي‌ دسته‌بندي‌ كردن‌ اخطار براساس‌ زمان‌ در روز، براي‌ درخواست‌ ديتابيس‌ استفاده‌ نماييد.

تصوير زير يك‌ گراف‌ از اخطارها را برحسب‌ ساعت‌ در يك‌ روز نشان‌ مي‌دهد. ACID كه‌ توسط Roman Danyliw نوشته‌ شده‌ است‌ بخشي‌ از يك‌ پروژه‌ بزرگ‌ به‌ نام AirCERT مي‌باشد. AirCERT يك‌ مخزن‌ از اخطارهاي‌ امنيتي‌ در اينترنت‌ جهاني‌ و يا افراد غيرمجاز از سايت‌هاي‌ محلي‌ انتخابي، جستجو مي‌كند. علاوه‌ بر اين‌ امضا افراد حقه‌باز و محله‌هاي‌ جديد را سريع‌تر آشكار مي‌كند.

 

سايتهاي مرتبط

·        ACID homepage (http://acidlab.sourceforge.net/)

·        ADOdb homepage (http://php.weblogs.com/ADODB)

·        AirCERT project (http://www.cert.org/kb/aircert/)

·        Apache homepage (http://www.apache.org/)

·        phplot homepage (http://www.phplot.com/)

·        Snort homepage (http://www.snort.org/)