IDS: Intrusion Detection System

intrusion detection system concepts and techniques

IDS: Intrusion Detection System

intrusion detection system concepts and techniques

دسته بندی ترافیک شبکه با استفاده از خوشه بندی فازی برای امنیت شبکه

در این بخش به معرفی مقاله" Classification of Network Traffic Using Fuzzy Clustering for Network Security" در خصوص دسته بندی ترافیک شبکه با استفاده از خوشه بندی فازی برای امنیت شبکه  می پردازیم.

مقدمه :
با توجه به اینکه استفاده از شبکه های کامپیوتری به امری عادی در اجتماع تبدیل شده است نیاز است که توجه ویژه ای به حملات مخرب و نفوذ معطوف گردد.این نیازمندی ها موجب پیدا شدن تکنیک های قابل اعتماد و قوی برای محافظت از شبکه ها می گردد.سیستم تشخیص نفوذ یک ابزار مدیریت شبکه را برای تشخیص رفتار های نرمال از غیر نرمال در بسته های ترافیکی شبکه فراهم می نماید.سیستم تشخیص نفوذ این توانایی را دارد که نفوذ های شبکه شامل حملات مخرب ، دسترسی های غیر مجاز و دیگر رفتار های ناهنجار را شناسایی نماید.با توجه به حجم بالایی از ترافیک  که در حال حاضر در شبکه ها وجود دارد بکارگیری تجزیه و تحلیل داده های بزرگ Big Data راهکار های امید بخشی را برای تشخیص نفوذ گر ها فراهم می کند.اغلب سیستم های تشخیص نفوذ از تکنیک های تشخیص الگوی غیر نظارت شده(unsupervised) و یا نظارت شده(supervised) برای ساخت دسته بندی کننده های متا (meta-classifiers) که  برای تشخیص مورد بهره بردرای قرار می گیرد استفاده می کنند.این متدلوژها شامل مدل های آماری(statistical models) ، راهکار های سیستم ایمنی(immune system) ، تایید پروتکل (protocol verification)،بررسی فایل ، شبکه های عصبی ، لیست سفید whitelisting، تطبیق عبارت (expression matching) ،زبان های اختصاصی (dedicated languages)،تجزیه و تحلیل گذار حالت(state transition analysis)، الگوریتم ژنتیک و ...[1, 2].عملکرد این تکنیک ها تنها در محیط های خوب تعریف شده (well-defined) رضایت بخش است.آنها توانایی شناسایی حملات پیچیده و یا ناشناخته را ندارند و همینطور قدرت سازگار شدن بامحیط های داینامیک مثل شبکه های موبایل را نیز ندارند . [3].خوشه بندی فازی نشان داده است که نسبت به خوشه بندی های سنتی مزیت های بیشتری دارد و بر محدودیت های دیگر روشها در محیط های داینامیک و حملات ناشناخته غلبه می نماید.[4] صرف نظر از کارایی عالی روش خوشه بندی فازی اغلب متد های فعلی از برخی از محدودیت ها رنج می برند.Jiang [5] برای استفاده از یک الگوریتم خوشه بندی فازی c-means تلاش نمود ، اما سیستم تولید شده دارای مقدار پایین تشخیص موفق بین  75-85 درصد بود و دیگر تلاش ها نیز از نرخ بالای FP رنج می بردند [6, 7, 8].در این تحقیق از خوشه بندی فازی c-means برای دسته بندی بسته های TCP به نرمال و یا نفوذ استفاده می شود.خوشه ها بوسیله آنالیز مجموعه داده های خیلی بزرگ از بسته های TCP ایجاد می شوند.تست های اولیه حاکی از این است که روش پیشنهادی یک تشخیص عالی برای بسته های مخرب فراهم می کند بدون اینکه نرخ fp بالایی داشته باشد.
خوشه بندی فازی c-means:
بر خلاف خوشه بندی ها  سنتی خوشه بندی فازی c-means اجازه می دهد که یک آیتم داده به چندین خوشه متعلق باشد.مقدار تعلق یک آیتم به خوشه مانند یک مجموعه فازی نمایش داده می شود.FCM(fuzzy c-means clustering) توسط  Dunn [10] توسعه داده شده و بوسیله Bezdek [11, 12] بازنگری شده است.
امنیت شبکه با استفاده از خوشه بندی فازی:
امنیت شبکه با استفاده از خوشه بندی فازی سه فاز دارد که در شکل نشان داده شده است.در فاز اول و دوم سیستم دسته بندی ساخته می شود و در سومین فاز سیستم تشخیص نفوذ واقعی پیاده سازی می شود .فازهای مورد نظر به شرح ذیل می باشند
1-انتخاب زیر مجموعه ویژگی(Feature subset selection) :

از تکنیک های کاهش ابعاد(dimension reduction) برای کاهش تعداد ویژگی های بسته TCP که برای دسته بندی یک بسته در خوشه بندی فازی مورد نیاز است استفاده می شود.

2-خوشه بندی فازی :

خوشه بندی فازی برای تعیین نمودن centroid تعداد n خوشه اعمال می گردد.ان دسته از خوشه هایی که عمدتا بوسیله بسته های مخرب پر می شوند برچسب می شوند.

3-دسته بندی بسته های TCP ورودی:

.به محض اینکه بسته ای وارد شد،میزان درجه عضویت آن در هر خوشه مشخص شده و آنهایی که دارای ارتباط قوی با خوشه هایی که به عنوان مخرب شناسایی شده اند می باشند برچم زده می شوند.

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

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

در این بخش به معرفی مقاله" A new evolutionary neural networks based on intrusion  detection systems using multiverse optimization" در خصوص طراحی یک سیستم تشخیص نفوذ با رویکرد جدید در شبکه های عصبی تکاملی با استفاده از بهینه ساز چند منظوره می پردازیم.

چکیده :

ساخت یک سیستم تشخیص نفوذ یک به فوریت در سیستم ها و شبکه های کامپیوتر تبدیل شده است تا بتوان با استفاده از آن رخنه های امنیتی شبکه را شناسایی نمود.ساخت یک سیستم تشخیص نفوذ موثر و انعطاف پذیر امری  بسیار ضروری است.در این مقاله یک الگوریتم تکامل طبیعی (natural evolutionary algorithm) جدید که بهینه ساز چند منظوره (multiverse optimizer MVO) نامیده می شود مورد بررسی قرار گرفته و با شبکه های عصبی برای توسعه یک راه کار پیشرفته تشخیص برای سیستم های تشخیص نفوذ ترکیب می شود.در این متن  ترکیب شبکه های عصبی و الگوریتم تکاملی منجر به تولید شبکه های عصبی تکاملی می گردد evolutionaryneural network ENN.شبکه های عصبی تکاملی باعث می شود یک سیستم بهبود یافته برای حل مسائلی که شبکه های عصبی معمولی با آن برخورد دارند ایجاد شود.ایده اصلی در این راه کار این است که از MVO برای آموزش یک شبکه عصبی مصنوعی چند لایه پیش خورد (feed forward multilayer artificial neural network) برای شناسایی حملاتی جدید استفاد شود.راه کار ارائه شده بر روی مجموعه داده NSL-KDD و یک مجموعه داده جدید تر تحت نام UNSWNB15 اعمال شده است.در این روش کارایی راه کار ارائه شده در تشخیص انواع مختلف حملات نمایش داده می شود.نتایج بدست آمده  از UNSWNB15 بهتر از نتایجی است که با استفاده از NSL-KDD حاصل شده  است.همچنین کارایی متدی که توسط ما ارائه شده است  هنگامی که با روش های شناخته شده دیگر مثل PSO-ANN مقایسه می شود ثابت می شود.

روش کار :

در این مطالعه سیستم تشخیص نفوذ بر پایه شبکه عصبی مصنوعی که توسط MVO آموزش داده می شود  پیاده سازی می گردد.هدف این است که یک چهارچوب نو  و قدرتمند با استفاده از آموزش شبکه های عصبی توسط الگوریتم های تکاملی بدست آید.شبکه های عصبی این توانایی را دارند که مشکلات متعددی را که با راهکارهای موجود برای تشخیص نفوذ با آنها مواجه هستیم را مرتفع نمایند.شبکه های عصبی ویژگی های معمول کاربران سیستم را شناسایی و انحرافات آماری قابل توجه از رفتارهای تعریف شده کاربران را تشخیص می دهند.علاوه بر این شبکه های عصبی دارای ساختاری باز ، قابل توسعه و انعطاف پذیر هستند.آنها همچنین یک مدل عمومی دانش از رفتار ها در یک محیط تعریف می نمایند.این فرآیند عمدتا شامل ارزیابی پارامتر های نرونهاست تا توانایی تعریف ارتباطات میان الگوهای ورودی و خروجی هدف را بوسیله آموزش برای شبکه های عصبی مصنوعی فراهم نماید.آموزش شبکه عصبی یک وظیفه بسیار پیچیده است و یکی از کارهای مهم در مسائلی که نیاز به آموزش شبکه های عصبی دارند محسوب می شود.این فرآیند را می توان به صورت یک مسائله بهینه سازی در نظر گرفت.یافتن یک راه حل برای فرآیند آموزش نیاز به یک جواب  از یک ثابت خطی linear constraint با یک مسائله بهینه سازی غیر خطی مشتق شده دارد.بنابراین الگوریتم های تکاملی مختلف برای حل این مسائله به کار گرفته شده است.الگوریتم های تکاملی الگوریتم های جستجوی تصادفی جمعیت هستند که هدف آنها پیدا نمودن راه حل مورد پذیرش و یا تقریبا بهینه در فضاهای جستجو  چند حالته (multimodal) هستند.شکلی که در ادامه خوهد آمد   چهارچوب سیستم تشخیص نفوذ ارائه شده را نمایش می دهد و نشان می دهد که این سیستم می تواند به سه ماژول اصلی تقسیم شود که ورودی داده ، شبکه عصبی مصنوعی و ماژول MVO هستند.که شرح آنها در ادامه خواهد آمد.در قدم اول در فریم ورک ما ماژول ورودی داده مورد استفاده قرار می گیرد.این ماژول وظیفه پردازش ، پالایش (filtering) و استخراج ویژگی ها از داده های بازرسی audit data را بر عهده دارد.مجموعه داده شامل مجموعه های آزمایشی و آموزش از پیش تعریف شده است که به عنوان ورودی ها برای ماژول بعدی شبکه عصبی به کار گرفته می شود.قبل از اینکه داده ها وارد ماژول شبکه عصبی شوند ،  ماژول ورودی داده باید ورودی های داخل شده را به اعداد بین ۰ تا یک نگاشت نماید( نرمال سازی).این عمل برای مورد استفاده بودن داده های ورودی در ماژول بعدی ضروری است.در قدم دوم شبکه عصبی N ویژگی آموزشی را از ماژول ورودی داده دریافت می نماید.ماژول شبکه عصبی به صورت MLP طراحی شده است که یک شبکه عصبی پیش خور feed-forward با یک لایه ورودی ، یک لایه مخفی و یک لایه خروجی است.ورودی های داخل شده از ماژول ورودی داده ( داده های آموزشی ) به عنوان یک الگوی آموزشی برای آموزش شبکه عصبی وارد ماژول شبکه عصبی می شوند.این پروسه آموزش بوسیله ارسال وزنها به ماژول MVO انجام می شود.ماژول MVO ه عنوان یک سیستم مستقل برای به روز رسانی وزنهای سیناپتیک (synaptic weights) بعد از هر تکرار طراحی شده است.در هر تکرار فرآیند آموزش ، ماژول ‌MVO  افراد ( جمعیت) را به عنوان یک مجموعه از وزنها به ماژول شبکه عصبی ارسال می کند که این افراد را بر اساس یک مجموعه داده آموزشی مورد ارزیابی قرار داده و سپس مقادیر برازش آنها را باز می گرداند.در این ارائه خطای میانگین مربع Mean squared error (MSE) به عنوان یک تابع برازش شناخته شده برای الگوریتم آموزشی MVO پیشنهادی انتخاب شده است.وزنهای مربوط به سیناپتیک ها با استفاده از مینیمم نمودن مقدار MSE بدست می آید.فرآیند آموزش زمانی که حداثر تعداد تکرار بدست آمد متوقف می شود.بعد از این مرحله پایگاه دانش ( وزنها و biases) به روز رسانی شده اند.در سومین قدم شبکه عصبی که توسط مجموعه داده آموزشی آموزش دیده شده است برای پیش بینی خروجی از داده های ورودی تستی مورد استفاده قرار می گیرد

شکل : چهار چوب سیستم تشخیص نفوذ ارائه شده

دانلود مقاله :

کد برنامه نویسی حل یک معادله ساده ریاضی در زبان متلب

در پست قبل حل یک معادله ساده ریاضی را توسط الگوریتم ژنتیک توضیح دادیم.در این پست کد پیاده سازی این مثال در زبان متلب آورده می شود.زبان متلب یک زبان بسیار قوی برای پیاده سازی مسائل علمی است که با قابلیت های زیاد کار برنامه نویسی را برای کاربر بسیار آسان می نماید.کدها دقیقا پیاده سازی همان چیزی است که در مثال قبل گفته شده است و برای درک آن نیاز به آشنایی با کدنویسی تحت زبان برنامه نیسی متلب می باشد.

global popSize;
global chromosomeLength;
global F_OBJ;
global Fitness;
global arrProbability;
global arrCumulative;
global newPop;
global population;

global xoRate;
global mutRate;
global maxTor;
maxTor=100;
popSize=6;
chromosomeLength=4;
xoRate =0.3;
mutRate = 0.4;


initalPopulation();
for maxTorIndex=1:maxTor
   
    global Fitness;
    calculateFOBJ();
    solution=find(F_OBJ==0);
    if ~(isempty(solution))
        numRuleFound=size(solution,1);
        fprintf("We Finde %d Solution in generation %d \n",numRuleFound,maxTorIndex);
        for i=1:numRuleFound
            ruleIndex=solution(i);
            disp(population(ruleIndex,:))
        end
    return;
    end
    calculateFitness();
   
    calculateprobability();
    calculateCumulative();
    rouletteWheel();
    OnePointCrossOver();
    MutateGens();
   
end
function pop=initalPopulation()
%global population;
global popSize;
global population;
x=popSize;
population(1,:)= [12,05,23,08];
population(2,:)= [02,21,18,03];
population(3,:)= [10,04,13,14];
population(4,:)= [20,01,10,06];
population(5,:)= [01,04,13,19];
population(6,:)= [20,05,17,01];
%pop=population;
end
function calculateFOBJ()
global F_OBJ;
global popSize;
global population;
for i=1:popSize
    a=population(i,1);
    b=population(i,2);
    c=population(i,3);
    d=population(i,4);
    F_OBJ(i)=abs(a+2*b+3*c+4*d-30);
end
end
 
ادامه مطلب ...