ডিডিওস ফিল্টারিংয়ের জন্য মেশিন লার্নিং প্রয়োগ করা হচ্ছে


12

ইন স্ট্যানফোর্ড এর মেশিন লার্নিং কোর্সের অ্যান্ড্রু এনজি আইটি মধ্যে এমএল প্রয়োগের উল্লেখ করেছে। কিছুক্ষণ পরে যখন আমি আমাদের সাইটে মাঝারি আকারের (প্রায় 20 কে বট) ডিডোস পেয়েছি তখন আমি সাধারণ নিউরাল নেটওয়ার্ক শ্রেণিবদ্ধ ব্যবহার করে এর বিরুদ্ধে লড়াই করার সিদ্ধান্ত নিয়েছি।

আমি প্রায় 30 মিনিটের মধ্যে এই অজগর স্ক্রিপ্টটি লিখেছি:
https://github.com/SaveTheRbtz/junk/tree/master/neural_networks_vs_ddos

এটি ব্যবহার করে pyBrain এবং 3 লাগে nginx ইনপুট হিসাবে লগ, তাদের দুটি নিউরাল নেটওয়ার্ক প্রশিক্ষণ:

  1. ভাল প্রশ্নের সাথে
  2. খারাপ লোকের সাথে

শ্রেণিবদ্ধকরণের জন্য একটি লগ

খারাপ প্রশ্ন থেকে ..

0.0.0.0 - - [20/Dec/2011:20:00:08 +0400] "POST /forum/index.php HTTP/1.1" 503 107 "http://www.mozilla-europe.org/" "-"

...এবং ভাল...

0.0.0.0 - - [20/Dec/2011:15:00:03 +0400] "GET /forum/rss.php?topic=347425 HTTP/1.0" 200 1685 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9) Gecko/2008052906 Firefox/3.0"

... এটি একটি অভিধান তৈরি করে:

['__UA___OS_U', '__UA_EMPTY', '__REQ___METHOD_POST', '__REQ___HTTP_VER_HTTP/1.0', 
'__REQ___URL___NETLOC_', '__REQ___URL___PATH_/forum/rss.php', '__REQ___URL___PATH_/forum/index.php',
'__REQ___URL___SCHEME_', '__REQ___HTTP_VER_HTTP/1.1', '__UA___VER_Firefox/3.0',
'__REFER___NETLOC_www.mozilla-europe.org', '__UA___OS_Windows', '__UA___BASE_Mozilla/5.0',
'__CODE_503', '__UA___OS_pl', '__REFER___PATH_/', '__REFER___SCHEME_http', '__NO_REFER__',
'__REQ___METHOD_GET', '__UA___OS_Windows NT 5.1', '__UA___OS_rv:1.9',
'__REQ___URL___QS_topic', '__UA___VER_Gecko/2008052906']

প্রতিটি এন্ট্রি যা আমরা আমাদের নেটওয়ার্ককে / এন্ট্রি দিয়ে প্রশিক্ষিত করি যা আমাদের শ্রেণিবদ্ধ করা প্রয়োজন ...

0.0.0.0 - - [20/Dec/2011:20:00:01 +0400] "GET /forum/viewtopic.php?t=425550 HTTP/1.1" 502 107 "-" "BTWebClient/3000(25824)"

... বৈশিষ্ট্য-ভেক্টরে রূপান্তরিত হয়:

[False, False, False, False, True, False, False, True, True, False, False, False, False, False, False, False, False, True, True, False, False, False, False]

এই সমস্ত কিছুর পরেও ডেটাসেটকে প্রশিক্ষণ এবং পরীক্ষার সেটে বিভক্ত করার মানক পথ রয়েছে, নিউরাল নেটওয়ার্কগুলি প্রশিক্ষণ দেওয়া এবং সেরাটি নির্বাচন করা। এই প্রক্রিয়াটির পরে (এটি ডেটাসেটের আকারের উপর নির্ভর করে বেশ দীর্ঘ সময় নিতে পারে) আমরা শেষ পর্যন্ত প্রশিক্ষিত নেটওয়ার্ক ব্যবহার করে লগগুলিকে শ্রেণিবদ্ধ করতে পারি।

তবে এই পদ্ধতির সাথে এখানে বেশ কয়েকটি সমস্যা রয়েছে:

  1. তদারকি করা মেশিন লার্নিং সেই ধরণের সমস্যার জন্য ভুল ভুল, কারণ বটগুলি সনাক্ত করার জন্য প্রথমে আমাকে বটগুলি সনাক্ত করতে হবে এবং সেই ডেটা দিয়ে নিউরাল নেটওয়ার্ক প্রশিক্ষণ দেওয়া উচিত।
  2. আমি ক্লায়েন্টের আচরণ কোনও অ্যাকাউন্টে নিই না। প্রতিটি ব্যবহারকারীর জন্য পৃষ্ঠা গ্রাফ থেকে পৃষ্ঠা রূপান্তর বিবেচনা করা ভাল।
  3. আমি ক্লায়েন্টদের লোকেশন কোনও অ্যাকাউন্টে নিই না। নেটওয়ার্কে থাকা একটি কম্পিউটার যদি কিছু ভাইরাস দ্বারা সংক্রামিত হয় তবে সেই নেটওয়ার্কের অন্যান্য কম্পিউটারগুলি সংক্রামিত হওয়ার আরও সম্ভাবনা রয়েছে।
  4. আমি কোনও অ্যাকাউন্টে কোনও ভূ-অবস্থান সংক্রান্ত ডেটা নিই না। অবশ্যই আপনি যদি রাশিয়ায় সাইট চালাচ্ছেন তবে ব্রাজিলের ক্লায়েন্টদের খুব কম সম্ভাবনা রয়েছে।
  5. আমি জানি না যে এই জাতীয় সমস্যা সমাধানের জন্য নিউরাল নেটওয়ার্ক এবং শ্রেণিবদ্ধকরণ ব্যবহার করার সঠিক উপায় ছিল কিনা। হতে পারে আমি কিছু অনিয়ম সনাক্তকরণ সিস্টেমের সাথে আরও ভাল ছিলাম।
  6. এমএল পদ্ধতিটি "অনলাইন" (বা তথাকথিত "স্ট্রিমিং") হওয়ার পরে এটি আরও ভাল so

সুতরাং এখানে প্রশ্নগুলি রয়েছে:
আপনি যদি কেবল ডিডোএস আক্রমণ থেকে রক্ষা করার একই সমস্যার মুখোমুখি হন তবে কেবলমাত্র বর্তমান ওয়েবসারভার লগ (যা ভাল ক্লায়েন্ট এবং বটগুলি নিয়ে থাকে) এবং historicalতিহাসিক ডেটা (আগের দিন / সপ্তাহ / মাসের লগস) দেওয়া হয়েছে বেশিরভাগ ভাল ক্লায়েন্টদের সাথে)?
আপনি কোন মেশিন লার্নিং পদ্ধতির পছন্দ করবেন।
আপনি কোন অ্যালগরিদম ব্যবহার করবেন?

উত্তর:


11

অসাধারণতা সনাক্তকরণ অ্যালগরিদম সম্পর্কে কীভাবে? আপনি যেমন অ্যান্ড্রু এনগের ক্লাসের কথা উল্লেখ করেছেন আপনি সম্ভবত এমএল-ক্লাস.অর্গ.এর "এক্সভি। অ্যানোমালি ডিটেকশন " বিভাগটি দেখতে পেয়েছেন তবে যাইহোক।

অ্যানোমালি সনাক্তকরণটি আপনার অনুরূপ পরিস্থিতিতে তদারকি করা শ্রেণিবিন্যাসের চেয়ে সেরা হবে কারণ:

  • সাধারণত আপনার খুব কম অসঙ্গতি হয় (যেমন, খুব কম "ইতিবাচক" উদাহরণ)
  • সাধারণত আপনার খুব বিভিন্ন ধরণের অসঙ্গতি হয়
  • ভবিষ্যতের অসঙ্গতিগুলি এখন পর্যন্ত আপনার মতো কিছু দেখতে পাবে না

অসাধারণ সনাক্তকরণের গুরুত্বপূর্ণ পয়েন্টটি হ'ল যা বৈশিষ্ট্যগুলি চয়ন করতে পারে। এখানে দুটি সাধারণ পরামর্শ হ'ল বৈশিষ্ট্যগুলি নির্বাচন করা

  • গাউসীয় বিতরণ (বা তাদের মতো করে বিকৃত করুন)

  • সম্ভাবনা পি ( অসাধারণ ) পি (সাধারণ) এর তুলনায় অতুলনীয় - বলুন, ব্যতিক্রমী মানগুলি খুব বড় হয়ে থাকে যখন সাধারণগুলি খুব ছোট (বা বিপরীত) হয়।

জিওলোকেশন আপনার দৃশ্যের জন্য সহায়তা করবে কিনা তা আমি নিশ্চিত নই, তবে ক্লায়েন্টের আচরণ অবশ্যই কার্যকর হবে - যদিও এটি প্রয়োগ থেকে প্রয়োগের ক্ষেত্রে আলাদা হতে পারে। আপনি দেখতে পাচ্ছেন যে জিইটি / পিওএসটিগুলির একটি অনুপাত। বা অনুরোধ গণনার প্রতিক্রিয়া আকারের একটি অনুপাত। অথবা একক পৃষ্ঠার সংখ্যা হিট। লগগুলিতে আপনার যদি এমন তথ্য থাকে - অবশ্যই আপনি আইপি ব্ল্যাকলিস্টিংয়ের পরে, পূর্ববর্তী বিশ্লেষণের জন্য ডেটা ব্যবহার করতে পারেন :)


অসঙ্গতি সনাক্তকরণের জন্য +1। আমি "সর্বশেষ 5 মিনিটের চেষ্টা করা লগইনগুলির সংখ্যা" এবং "আইপি এক্স থেকে শেষ 5 মিনিটের চেষ্টা করা লগইনের সংখ্যা" যুক্ত করব।
নিউরন

অসাধারণ সনাক্তকরণের মূল সমস্যা (এটি এমএল-ক্লাসে দেওয়া হয়েছিল) এটি হ'ল আপনি এগুলির মধ্যে জটিল সম্পর্কের সাথে প্রচুর পরিমাণে বৈশিষ্ট্যগুলির জন্য এটি ব্যবহার করতে পারবেন না - এটি অত্যন্ত গণনামূলকভাবে ব্যয়বহুল। আমার উদাহরণে আমি কল-গ্রাফ, জিওলোকেশন এবং nginxলগের অতিরিক্ত ভেরিয়েবলগুলি ছাড়াই 2 (!!) প্রশ্নের মধ্যে 23 টি বৈশিষ্ট্য পেয়েছি । এবং আমি পিসিএ ব্যবহার করতে পারি না কারণ আক্রমণকারীরা বটের আচরণ পরিবর্তন করতে পারে।
SaveTheRbtz

@ সেভ দ্য আরবিটিজ আবার "গণনামূলকভাবে ব্যয়বহুল" - আইআইআরসি, এমিল-ক্লাসে উপস্থাপিত হিসাবে অসাধারণ সনাক্তকরণটি কেবল ঘনত্বের অনুমান ছিল যাতে আপনি কেবলমাত্র আপনার বৈশিষ্ট্যগুলির সম্ভাবনাগুলি পি (এক্স 1) * .. * পি (এক্সএন) হিসাবে বহুগুণ করতে চান যা আমি বিশ্বাস করুন, ও (এন) তাই আপনি ও (লগইন) বা কিছু খুঁজছেন? কিন্তু যাই হোক, এটি একটি ন্যায্য প্রশ্ন এবং এটা আমার স্বয়ংক্রিয় বৈশিষ্ট্য নির্বাচন কথা চিন্তা করেছিলাম - তাই এ প্রশ্ন জিজ্ঞাসা machinelearning.stackexchange.com/questions/184
andreister

আরও স্পষ্ট করে বলার জন্য - আমি লগ ফাইলটির 1Mb প্রতি বৈশিষ্ট্যগুলির 100,000 পর্যন্ত কথা বলছি। পুনশ্চ. সুন্দর প্রশ্ন!
SaveTheRbtz

1

এটি একটি কঠিন সমস্যা, এখানে কয়েকটি পর্যবেক্ষণ দেওয়া হল:

  • এই কাগজটি আপনার পক্ষে কিছুটা সহায়ক হতে পারে - এটি বিপরীতমুখী বিজ্ঞাপনগুলি সনাক্ত করতে তদারক করা শেখার কৌশলগুলিতে (বহু শ্রেণির শ্রেণিবিন্যাসের প্রসঙ্গে) উপর নির্ভর করে। যেহেতু প্রতিকূল কৌশলগুলি বিকশিত হয়, তাই লেখকরা মানব বিশেষজ্ঞদের উপর নির্ভর করতে হয় যারা বিরল "অসঙ্গতিগুলি" বর্ণনা করে। তারা অন্যদের মধ্যে এসভিএম ভিত্তিক র‌্যাঙ্কিং কৌশল ব্যবহার করে।
  • যেমনটি অন্যদের দ্বারা উল্লিখিত হয়েছে, আপনি অ-তত্ত্বাবধান-লার্নিং-ভিত্তিক অসাধারণ / আউটিলার সনাক্তকরণ চেষ্টা করতে পারেন তবে এটিতে মিথ্যা-ধনাত্মক এবং মিথ্যা-নেতিবাচক অধিকারের ভারসাম্য বজায় রাখতে প্রচুর সুরের প্রয়োজন হবে require
  • বৈশিষ্ট্যগুলির একটি ভাল সেট থাকা খুব গুরুত্বপূর্ণ - পদ্ধতির পছন্দটি গৌণ (যেমন সরল কৌশল যেমন নায়েভ বেয়েস বা লজিস্টিক রিগ্রেশন প্রায়শই একটি ভাল বৈশিষ্ট্য সেট দেওয়ার জন্য যথেষ্ট)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.