تشخیص نفوذ در شبکه به كمک شبكه عصبی و الگوريتم ژنتيک

تغییرات پروژه از تاریخ 1394/04/10 تا حالا
# سیستم های تشخیص نفوذ مبتنی بر شبکه عصبی هوشمند

یک سیستم تشخیص نفوذ مجموعه ای از فعالیت ها است که با هدف محافظت و برقراری امکان دسترسی امن به منابع توسعه یافته است. سیستم های تشخیص نفوذ با وضع کردن قوانین خاصی عملکرد کاربران را محدود و بر روی ان  نظارت می کنند.

شبکه های عصبی یکی از روش های متداولی بوده است که به منظور توسعه یک سیستم تشخیص نفوذ هوشمند مورد مطالعه واقع شده است. روش هایی که مبتنی بر شبکه عصبی هستند به صورت زیر دسته بندی می شوند:

·        سیستم های تشخیص نفوذ مبتنی بر شبکه عصبی که از منطق فازی تبعیت می کنند: این دسته از روش ها متشکل از یک خوشه بند فازی و شبکه عصبی می باشد. دو دلیل اصلی برای توسعه این سیستم ها ارایه شده است: [1]

1.     افزایش دقت سیستم برای تشخیص حملات با تکرار کم

2.       بهبود پایداری سیستم

به عنوان مثال تقسیم داده های اموزشی به دسته های کوچک تر متقارن توسط خوشه بند فازی و سپس اموزش شبکه عصبی به صورت مجزا بر روی هر کدام از این مجموعه داده ها

*        ترکیب شبکه عصبی و الگوریتم ژنتیک در سیستم تشخیص نفوذ : یکی از مشکلات استفاده از شبکه های عصبی در سیستم های تشخیص نفوذ تشخیص اندازه مناسب شبکه و وزن های ان می باشد. از الگوریتم ژنتیک برای بهینه سازی این بخش بهره برده شده است. الگوریتم ژنتیک از جمله الگوریتم های تکاملی است که از تکامل ژنتیکی برای حل مساله  بهره می برد. شکل زیر فلوچارت پردازشی این الگوریتم را نشان می دهد.
![شکل 1. فلوچارت پردازشی الگوریتم ژنتیک](https://boute.s3.amazonaws.com/179-Capture2.PNG)                                                                                                           


مراحل پردازشی الگوریتم ژنتیک به شرح زیر می باشد :

1.       در ابتدا یک جمعیت اولیه تصادفی تولید می گردد. هر کدام از اعضای این جمعیت حاوی یک جواب برای حل مساله می باشند.

2.       در این مرحله جواب ها ارزیابی می شوند. ارزیابی جواب ها توسط تابع هدف انجام می گیرد. تابع هدف با توجه به چالش مورد مطالعه که می تواند بازدهی, امنیت و عامل های دیگر در سیستم باشد به جواب ها مقادیری را تخصیص دهد. این مقادیر نشان می دهند که به چه میزان جواب ها به هدف مورد نظر نزدیک هستند

3.     عمل کراس اور

4.       عمل mutation

عملیات کراس اور و  mutation به منظور جلوگیری از همگرایی زودرس و ایجاد واگرایی در جواب ها انجام می گردد. انتخاب صحیح تعداد دفعاتی که این دو عملیات در مجموعه سیکل های ارزیابی عناصر صورت می گیرد یکی از فاکتور های تاثیرگذار در بازدهی الگوریتم می باشد.


# پیشینه تحقیق

**سیستم تشخیص نفوذ برای شبکه های ابری با الگوریتم FC-ANN** 

با توجه به افزایش حملات اینترنتی, ایجاد یک سیستم تشخیص نفوذ برای امنیت سیستم ها به یک امر ضروری تبدیل شده است. در بیشتر سیستم های تشخیص نفوذ ارایه شده یک دیتابیس برای ذخیره الگوهای مربوط به حملات وجود دارد که با کمک ان مراقبت از سیستم انجام می گیرد. در روش FC-ANN ارایه شده[2] الگوها به صورت خودکار یافت می شوند و این الگوها در دیتابیس های IDS ذخیره و مورد استفاده قرار می گیرد.

روش پیشنهادی مبتنی بر سه ماژول زیر می باشد :

1.       مشاهده و صف کردن : این ماژول بسته های داده ای UDP,TCP,IP,ICMP را دریافت می کند. سپس داده ها را به صف مشترک ماژول انالیز می سپارد

2.       انالیز و پردازش

3.       گزارش

همان گونه که در شکل 2 نشان داده شده است کنترل صف به صورت چندنخی انجام می گیرد. سپس در این صف بسته ها مورد بررسی قرار می گیرند و هشدارهای لازمه تولید می گردد.
![](https://boute.s3.amazonaws.com/179-Capture7.PNG)

الگوریتم FC-ANN شامل دو بخش اموزش و تست می باشد. در بخش اموزش سه مرحله زیر توسعه داده شده است:

·        در بخش اول داده ها به دو بخش مجموعه داده های اموزشی و تست تقسیم می شود

·        مجموعه های داده ای برای یادگیری شبکه های عصبی مورد استفاده قرار می گیرند

·         نتایج بدست امده ترکیب می شود تا نتیجه نهایی گزارش شودجدا کردن داده ها و ترکیب داده ها هر دو توسط یک ماژول فازی انجام می گیرد.  


**یک سیستم تشخیص نفوذ در پردازش ابری با استفاده از شبکه عصبی**

در این پژوهش[3] هدف ایجاد یک متود به منظور یافتن تعداد بهینه ویژگی ها برای ساختن یک مدل موثر تشخیص نفوذ می باشد. به دلیل حجم زیاد داده ها در شبکه ابری, پردازش داده ها دشوار و زمان بر می گردد. به همین دلیل داده های بی ارزش از دیتابیس حذف می گردد.
روش ارایه شده که شبکه عصبی انالیزگر اعضای اصلی نام دارد با هدف کاهش منابع پردازشی مانند حافظه وCPU توسعه یافته است.
در بخش کاهش داده ها یا کاهش ابعاد از روش انالیز اعضای اصلی [4] بهره بده شده است. از جمله کارهایی که این انالیز انجام می دهد می توان به موارد زیر اشاره کرد:

·        تشخیص الگوها در داده های ورودی

·        تشخیص شباهت ها و تفاوت ها داده ها

تشخیص ویژگی ها در این روش دارای دو مرحله است:

·        انتخاب ویژگی ها: ایده اصلی این بخش انتخاب یک مجموعه ای از ورودی ها بدون در نظر گرفتن ویژگی هایی که کم یا هیچ اطلاعات پیش بینی شده ای ندارند

·        استخراج ویژگی ها: عمل اصلی که انجام می شود تبدیل داده های ورودی به مجموعه ای از ویژگی ها استشبکه عصبی به کار برده شده در این روش با استفاده از الگوریتم پس انتشار اموزش داده می شود. الگوریتم یادگیری پس انتشار با استفاده از روش steepest-descent مقدار مینیمم جهانی را پیدا می کند[5]. این روش یادگیری را با پردازش مکرر داده های اموزشی و مقایسه نتایج بدست امده با نتایج قطعی انجام می دهد.




**طراحی و تحلیل یک سیستم تشخیص نفوذ در شبکه های کامپیوتری با بهره گیری از یک سیستم فازی-ژنتیک**

یکی دیگر از سیستم هایی که به منظور تشخیص نفوذ پیشنهاد شده است از ترکیب منطق فازی و توانایی یادگیری الگوریتم های تکاملی است. هدف این پژوهش[6] طراحی و تحلیل انواع مختلفی از سیستم های ژنتیک-فازی است که برای تشخیص نفوذ می تواند مورد استفاده قرار بگیرد. در نهایت نیز مقاله یک معماری برای کنار هم قرار دادن طبقه بند ها ارایه کرده است. سه نوع سیستم فازی-ژنتیک زیر مورد بررسی قرار گرفته اند :

·        روش میشیگان[7]

·        روش پیتسبورگ[8]

.         روش یادگیری قوانین با تکرار

متغیرهای زبانی استفاده شده در طبقه بند فازی در شکل زیر نشان داده شده است. این نمودار میزان تعلق به صفت مورد نظر به پنج دسته را نشان می دهد. متغیرها به صورت زیر تعریف شده اند:

·        S =small

·        MS-medium small

·        M-medium

·        ML-medium largeL-large


![نمودار گاوسی متغیرهای فازی](https://boute.s3.amazonaws.com/179-Capture9.PNG)

مراحل پردازشی روش میشیگان به شرح زیر است:

·        تولید یک جمعیت اولیه فازی از قوانین if-then 

·        تولید قوانین جدید فازی if-then به وسیله عملیات ژنتیک

·        جانشین کردن بخشی از جمعیت موجود با قوانین جدید

·        افزودن دوباره جمعیت 

·        اگر شرایط توقف ملاقات شد پردازش را متوقف کن

مراحل پردازشی روش پیتسبورگ در زیر اورده شده است:

·        تولید یک جمعیت اولیه از قوانین فازی

·        تولید قوانین جدید فازی با کمک عملیات ژنتیک

·        جایگزینی بخشی از جمعیت موجود با قوانین تازه 

·        اگر شرایط توقف ملاقت شده پردازش را متوقف کن در غیر این صورت به مرحله 2 برو

دیاگرام روش یادگیری قوانین با تکرار در شکل 4 دیده می شود. در این سیستم از روش میشیگان تسریع شده نیز بهره برده شده است. انقدر مراحل یادگیری در این چرخه تکرار می گردد تا به نتایج مورد نظر برسیم. قوانین فازی در این روش در هر فاز اضافه می شوند تا دقت در یافتن جواب افزایش یابد. بخش تسریع دهنده روش میشیگان وزن مثال های اموزشی که به درستی طبقه بندی شده اند را کاهش می دهد تا پردازش چندباره بر روی بخشی از داده ها صورت نگیرد.

![شکل 4.دیاگرام روش یادگیری قوانین با تکرار](https://boute.s3.amazonaws.com/179-Capture10.PNG)

مدل نهایی ارایه شده که ترکیبی از c طبقه بند است در شکل 5 نمایش داده شده است. هر کدام از این طبقه بند ها به صورت جداگانه پردازش خود را انجام می دهند. در نهایت نیز جواب های هر کدام از طبقه بندها به یک واحد ارسال می شود و این واحد نتیجه نهایی را از ترکیب نتایج طبقه بند ها ارایه می دهد.

![مدل نهایی مقاله](https://boute.s3.amazonaws.com/179-Capture11.PNG)





# سیستم تشخیص نفوذ پیشنهادی

در این پروژه قصد داریم که با ارایه یک سیستم تشخیص نفوذ بهبود یافته زمان پردازشی که صرف یافتن نفوذ ها می شود را کاهش دهیم. مدل پیشنهادی از سه بخش تشکیل شده است:

1.       ابتدا روش خوشه بندی فازی برای تولید زیر مجموعه های اموزشی مختلف مورد استفاده قرار می گیرد

2.       سپس بر اساس زیر مجموعه های اموزشی, شبکه های عصبی مختلف اموزش می بینند و با استفاده از الگوریتم ژنتیک اندازه مناسب شبکه و وزن های ان تعیین می گردد

3.       در نهایت ماژول ترکیب کننده فازی, که نتیجه نهایی را به عنوان خروجی نشان می دهد
شکل زیر ساختار سیستم پیشنهادی را نشان می دهد.
![ساختار روش پیشنهادی](https://boute.s3.amazonaws.com/179-Capture3.PNG)
هدف از قرار دادن یک خوشه بند فازی در روش پیشنهادی, تقسیم داده ها برای بخش اموزش شبکه عصبی می باشد. این خوشه بند فازی شامل ویژگی های زیر است:

·        دادگان موجود در یک خوشه یکجور باشند

·         تجانس بین خوشه ها وجود داشته باشد. بدین معنی که داده های هر خوشه تا حد ممکن از داده های خوشه های دیگر تفاوت داشته باشد

از خوشه بند c-meansفازی در این بخش استفاده شده است. توابع هدف زیر در این بخش استفاده شده است:
![](https://boute.s3.amazonaws.com/179-Capture4.PNG)
مقدار m بیشتر از یک است. u درجه عضویت عنصر i ام در خوشه j ام. X یک داده مقدار دهی شده که d بعد دارد. C مرکز خوشه j ام است. مقدار u و c به صورت زیر بدست می اید:
![](https://boute.s3.amazonaws.com/179-Capture5.PNG)
مقدار دهی به این دو پارامتر انقدر تکرار می گردد تا شرط زیر پایدار گردد:
![](https://boute.s3.amazonaws.com/179-Capture6.PNG)
اپسیلون مقداری بین صفر و یک دارد و q نیز تعداد دفعات تکرار را نشان می دهد.

پس از اینکه داده های اموزش به چندین دسته تقسیم شدند, این داده ها برای اموزش چندین شبکه عصبی هوشمند مورد استفاده قرار می گیرد. ساختار این شبکه های عصبی feedforward است. شبکه های feedforward متشکل از چندین لایه می باشند. لایه اول شبکه مربوط به ورودی است. لایه نهایی نیز به خروجی تخصیص داده می شود. این نوع شبکه برای یادگیری نگاشت مقادیر ورودی به مقادیر خروجی به کار برده می شوند. نکته اساسی و مهم در این نوع شبکه ها انتخاب پارامترهایی است که با توجه به ان عمل نگاشت صورت می گیرد. این عامل تاثیر بسزایی بر زمان یادگیری و بازدهی شبکه عصبی دارد. به همین دلیل در ابتدا شبکه عصبی و الگوریتم ژنتیک به صورت تعاملی به دنبال پارامترهای مناسب برای اموزش می باشند. نحوه کدینگ کروموزوم ها به صورت [L1,R1] است. L1 مشخص کننده محدودگر سمت چپ و R1 نیز مشخص کننده محدودگر سمت راست است. تابع ارزیاب کروموزوم ها زمان پردازشی است که با ان شبکه اموزش داده می شود. از کراس اور و mutation نیز برای ایجاد واگرایی در جواب ها استفاده شده است. پس از انکه تعداد نسل های یادگیری الگوریتم ژنتیک به پایان رسید محدوده پارامترهای مناسب که برای اموزش شبکه باید مورد استفاده قرار گیرد مشخص می شود.

·        داده های تست به شبکه های اموزش دیده داده می شوند. هر شبکه خروجی خود را ایجاد می کند. 

·        در مرحله اخر نیز جواب های هر شبکه عصبی که با داده های مختلف اموزش دیده اند با یکدیگر ترکیب می گردد تا تنیجه نهایی حاصل شود


# نتایج و یافته ها

در این بخش به توضیح در مورد ساختار پیاده سازی و فاکتورهای اساسی روش و در نهایت به نتایج حاصله می پردازیم. پیاده سازی روش پیشنهادی در نرم افزار متلب انجام شده است. متلب یک نرم افزار چند منظوره می باشد که در بسیاری از مسایل مهندسی کاربرد دارد . همچنین این نرم افزار شامل جعبه ابزار های متعدد و گوناگون می باشد که با ارایه یک رابط کاربری ساده و قابلیت های خیره کننده کار را برای بسیاری از محققان و مهندسین اسان نموده است. 

همان طور که در بخش قبل اشاره شده روش ارایه شده دارای سه بخش مختلف است:

1.       خوشه بند فازی

2.       شبکه های عصبی در تعامل با الگوریتم ژنتیک

3.     ماژول ترکیب کننده فازی

دیتاست KDD-CUP1999   برای اموزش و تست سیستم تشخیص نفوذ مورد استفاده قرار گرفته است. این دیتاست در سومین دوره مسابقات کشف اطلاعات و داده کاوی به شرکت کنندگان داده شد. دیتاست شامل اطلاعاتی است که از سرور های شبکه های نظامی استخراج شده است.

هر سطر این دیتاست شامل 42 پارامتر است که می توان به موارد زیر اشاره کرد:

·        نوع حمله به شبکه

·        تعداد سرور هایی که درخواست ها از ان ها ارسال می شود

·        نرخ تفاوت سرورها

·        اندازه بسته 

·        نوع پروتکل

·        بازه زمانی اتصال 

از جمله حملاتی که در این دیتاست وجود دارد می توان به موارد زیر اشاره کرد:

·        حمله سرریز بافر

·        حمله teardrop

·        حمله Satan

·         حمله warezclient

در پیاده سازی های صورت گرفته فایل اموزش شامل سه خوشه زیر بود:

1.       داده هایی که نشان دهنده فعالیت نرمال کاربران شبکه است

2.       داده هایی که نشان دهنده حمله teardrop است

3.     داده هایی که نشان دهنده warezclient هستند

خوشه بند فازی c-means داده ها را به سه خوشه بیان شده تقسیم می کند. داده های تقسیم شده به سه شبکه عصبی که با الگوریتم ژنتیک تعامل دارد تخصیص داده می شوند. نمونه ای از رفتار تکرار شونده خوشه بند c-means و مقادیر تابع هدف ان در هر تکرار در جدول زیر نشان داده شده است.
الگوریتم ژنتیک با در نظر گرفتن مجموعه های مختلفی از پارامترها و سنجش زمان های اموزش مربوط به ان ها کروموزوم ها را ارزیابی می کند. برای ایجاد واگرایی در جواب ها و جلوگیری از همگرایی زودرس از کراس اور و mutation بهره برده شده است.در بخش الگوریتم از کراس اور تک نقطه ای استفاده کردیم. در این روش دو کروموزوم به صورت تصادفی انتخاب می شود. یک نقطه به عنوان نقطه تغییر در نظر گرفته می شود و بقیه عناصر بعد از ان با عناصر کروموزوم دیگر عوض می شود.

در بخش mutation  ما از روش تغییر یک بیت بهره برده ایم. این روش به صورت زیر عمل می کند:

·        یک کروموزوم به صورت تصادفی انتخاب می گردد. 

·        یک بیت ان به صورت تصادفی انتخاب می گردد

·        مقدار تصادفی جدید جای مقدار قبلی را می گیردپردازش های الگوریتم ژنتیک(ارزیابی, کراس اور, mutation) به صورت مکرر انجام می شود تا زمانی که تعداد نسل ها به اتمام برسد

شبکه های عصبی استفاده شده به صورت feedforward می باشند.  همان طور که در شکل زیر نیز نمایان است شبکه دارای سه لایه ورودی, مخفی و خروجی است. لایه مخفی خود از 10 لایه تشکیل شده است.
پس از انکه پارامترهای یادگیری توسط بخش شبکه عصبی و ژنتیک در فاز اموزش انتخاب شد, داده های تست به شبکه های عصبی تخصیص داده می شود. خروجی های حاصل از شبکه های عصبی به وسیله یک ماژول ترکیب کننده فازی ترکیب می شود و نتیجه نهایی بدست می اید.در بخش ترکیب کننده فازی از درجات عضویتی که در بخش خوشه بند فازی محاسبه شد برای ترکیب نتایج استفاده می شود. نمونه این مقادیر در جدول زیر اورده شده است.
![](https://boute.s3.amazonaws.com/179-Capture12.PNG)

جدول زیر مقایسه روش پیشنهادی را با روش خوشه بند فازی و شبکه عصبی نشان می دهد.
![](https://boute.s3.amazonaws.com/179-Capture13.PNG)

جدول 3 میزان خطا را در سیستم پیشنهادی نشان می دهد

![جدول مقایسه میزان خطا](https://boute.s3.amazonaws.com/179-Capture14.PNG)

**نتیجه گیری و کارهای آینده**

در این پروژه به معرفی روش جدیدی به منظور ایجاد یک سیستم تشخیص نفوذ در شبکه های ابری پرداختیم. روش های بسیاری با هدف ارایه یک سیستم تشخیص نفوذ کارا ارایه شده اند اما بسیاری از ان ها از مشکلات زیر رنج می برند:

·         عدم توجه به تمامی فاکتورهای تاثیر گذار در یافتن نفوذها

·         عدم توجه به زمان پردازشی لازم برای انجام عملیات

·         دقت در یافتن حملات و نفوذها

شبکه های عصبی از جمله روش هایی هستند که در بسیاری از مسایل بهینه سازی مانند پردازش تصویر, خوشه بندی و غیره مورد استفاده قرار گرفته اند. یکی از فاکتور های تاثیرگذار در شبکه های عصبی نحوه اموزش ان است. توجه به این مساله که کدامین ویژگی ها برای اموزش شبکه استفاده شوند می تواند تاثیر بسزایی در بازدهی, تصمیم گیری و زمان لازم برای اموزش شبکه داشته باشد. به همین دلیل با بهره گیری از الگوریتم ژنتیک, به دنبال پارامترهایی در مجموعه داده ای اموزش گشتیم تا بتوانیم یادگیری را سرعت بخشیم. الگوریتم ژنتیک از جمله الگوریتم های تکاملی است که از تکامل ژنتیکی برای حل مساله  بهره می برد. روش پیشنهادی از سه بخش تشکیل شده است:

1.     بخش خوشه بند فازی c-means

2.     بخش متشکل از الگوریتم ژنتیک و شبکه عصبی

3.     بخش ترکیب کننده فازی

این بخش ها به تفضیل در گزارش بررسی شده اند. از ویژگی های روش پیشنهادی نسبت به کارهای مشابه می توان به موارد زیر اشاره کرد:

·         ارایه یک روش نوین در کدینگ کروموزوم ها در الگوریتم ژنتیک

·         کاهش زمان یادگیری و همچنین تست شبکه عصبی

·         افزایش دقت در تشخیص نفوذ ها با بهره گیری از خوشه بند فازی و چندین شبکه عصبیکاهش خطا و نویز با استفاده از ترکیب کننده فازی 


**ادرس کد**
[پیوند](https://github.com/fafa70/IDS)
برای اجرای کد فایل fuzzy.mرا اجرا کنید
فایل داده نیز در فایل a.dat قرار دارد

**منابع**
[1] Wang, Gang, et al. "A new approach to intrusion detection using Artificial Neural Networks and fuzzy clustering." _Expert Systems with Applications_ 37.9 (2010): 6225-6232

[2] Ramteke, Swati, Rajesh Dongare, and Komal Ramteke. "Intrusion Detection System for Cloud Network Using FC-ANN Algorithm." _Int. Journal of Advanced Research in Computer and Communication EngineeringVol_ 2,2013

[3]Mahmood, Zeenat, et al. "Intrusion detection in cloud computing environment using neural network." _International Journal of Research in Computer Engineering & Electronics_ 1.1 (2012): 19-22

[4] Feature Reduction using Principal Component Analysis for Effective Anomaly–Based Intrusion Detection on NSL-KDD by Shilpa Lakhina, Sini Joseph, Bhupendra Verma, ijest june 2010

[5] M. Basseville, I. V. Nikiforov, ‚Detection of Abrupt Changes: Theory and Applications,‛ Englewood Cliffs: Prentice-Hall, 1993

[6] Abadeh, Mohammad Saniee, Hamid Mohamadi, and Jafar Habibi. "Design and analysis of genetic fuzzy systems for intrusion detection in computer networks." _Expert Systems with Applications_ 38.6 (2011): 7067-7075

[7] Saniee Abadeh, M., Habibi, J., & Lucas, C. (2007). Intrusion detection using a fuzzygenetics-based learning algorithm. Journal of Network and Computer Applications, 30(1), 414–428

[8] Cervantes, A., Galvan, I., & Isasi, P. (2005). A comparison between the Pittsburgh and
Michigan approaches for the binary PSO algorithm. InThe 2005 IEEE congress onevolutionary computation(pp. 290–297)