حسن صفری
کارشناس ICT و علاقه مند به امنیت و فایروال

آموزش امنیت روترهای سیسکو به همراه معرفی انواع حملات Data Plane

در این قسمت از بحثمون می خوایم ابتدا با تعدادی از اتک هایی که در سطح data plane routed اتفاق میآفتد آشنا بشیم و در ادامه راه های مقابله یا کاهش این تهدید را بیاموزیم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

Routed data plane attack type چیست ؟

  • IP Spoofing -1
  • Slow path-DOS -2
  • Traffic flooding -3

IP Spoofing  چیست؟

یعنی اینکه بیاییم IP خود را جعل کنیم و با آن وارد شبکه شویم این در صورتی می باشد که ما با IP اصلی خودمان اجازه ورود به آن شبکه را نداریم.خود این نوع اتک بنا بر 3 روش اهداف خود را پیش می برد:

  • 1- وارد کردن پکت هایی به شبکه با IP های موجود در شبکه .مثلا یک کلاینت به اینترنت دسترسی دارد من با spoof کردن IP آن می آیم به اینترنت دسترسی پیدا می کنم.
  • 2- Spoof کردن یک کلاینت در شبکه با استفاده از source routing.مثلا بیاییم یک مقصد خاص را spoof کنیم حال وقتی ترافیکی وارد یا خارج شود از اون مقصد می شود،ابتدا به من اتکر می رسد بعد به مقصد.
  • 3- بیاییم با وارد کردن IP های غیرمعتبر به شبکه اتک denial of service را اجرا کنیم که برای flood کردن شبکه کاربرد دارد.

Slow-path-denial of service چیست ؟

این را می دانیم که روترها بسته های خود را با استفاده از routing table و mac-address فوروارد می کنند.حال پکت هایی هستند که با cpu فوروارد می شوند.وقتی بیاییم این پکت ها را با حجم زیاد روانه شبکه کنیم علانا توانسته ایم که cpu دستگاه را درگیر و اشغال کنیم و در نهایت cpu دچار overload شده و دیوایس از کار می افتد. چه ترافیک هایی با استفاده از cpu روت می شوند؟

  • 1-ترافیک های سیگنالینگی .مثل routing ها
  • 2-ترافیک های مدیریتی.مثل telnet, SSH, remote desktop, NTP ...
  • 3-ترافیک های data plane .مثل ترافیک هایی که به NAT نیاز دارنند یا ترافیک هایی که بر اثر صفر شدن TTL ارسال می شوند.

 Traffic flooding چیست ؟

در این نوع حمله می آیند سیلی عظیم از ترافیک را وارد شبکه می کنند تا بتوانند دیوایس قربانی را دچار اختلال کنند.که گاه با آدرس ip های spoof شده این کار انجام می شود.

روش های جلوگیری از این اتک ها

  • 1. Reflexive ACL
  • 2. Time-base ACL
  • 3. Flexible packet matching
  • 4. Flexible Net-flow
  • 5. Unicast reverse path forwarding (unicast RPF)

Reflexive ACL -1 چیست ؟

وقتی می خواستیم ترافیک های شبکه ما دسترسی خاصی به جایی مثلا اینترنت داشته باشند با استفاده ازACL می آمدیم می گفتیم که ترافیک هایی که به سمت WEB میروند را Permit و بقیه را deny کن.حال در مسیر برگشت دیگر ما نمی توانیم جلوی ترافیک را بگیریم برای این منظور باید یک ACL در موقع برگشت نیز وار کنیم که این خود باعث افزایش کانفیگ و پیچیدگی آن ها می شود.و همچنین یکطرفه فیلتر کردن ترافیک باعث بروز مشکلاتی نیز می شود.به طور مثال از بیرون از شبکه به راحتی می توانیم وارد شبکه شویم. برای رفع این مشکل سراغ reflexive ACL خواهیم رفت.

RACL می گوید که ترافیک ها می توانند از بیرون به داخل شبکه بیایند ولی مشروط بر اینکه قبلا از داخل به بیرون روت شده باشند.و یا از داخل سازمان اگر دستوری وارد نشد، اجازه ورود نداشته باشند.در واقع RACL یک نسخه کوچکی از فایروال می باشد که در ACL اجرا می شود.

وب سایت توسینسو

Time-base ACL -2 چیست؟

کنترل بر اساس زمان می باشد.یعنی کنترل را می خواهیم در زمان های مشخص و خاص انجام دهیم.به عنوان مثال می خواهم کاربران من از ساعت 8:00 تا 14:00 بعدازظهر فقط اینترنت داشته باشند غیر این تایم به اینترنت دسترسی نداشته باشند.قبل از نوشتن این ACL باید اول یک time range تعریف کنیم و آن را در ACL تعریف کنیم.حال خود این time range بر دو نوع می باشد.

  •  1-periodic :به صورت متناوب و دوره ای اجرا می شود این نوع از time range.مثلا هرهفته چهارشنبه ها دسترسی به اینترنت قطع باشد.
  • 2-absolute:در زمان های خاص اجرا می شود نه به صورت دوره ای.مثلا 22بهمن 1395 دسترسی به ftp سرور قطع باشد.
Router (config) #time-range (time-range –name)
Router (config-time-range) # periodic (day of the week| hh:mm)
Router (config-time-range) #absolute [start time data][end time data]
Router (config) # access-list 101 <protocol><source><destination><time range name>

Flexible packet matching -3 چیست؟

همانند ACL می تواند ترافیک را کنترل کند با این تفاوت که این کنترل بسیا دقیق تر انجام می گیرد.یعنی می توان کنترل ترافیک را بر اساس بیت های موجود در هدر آن بسته انجام داد.برای فهم بیشتر یک مثال میزنم: فکر کنید یک ویروسی وارد سیستم شده که ما نمی توانیم جلوی آن را بنا به دلایل زیادی بگیریم.در این صورت یک نمونه از آن بسته را لود میکنیم و یک بیت از بیت های مشخص آن را پیدا می کنیم و انتخاب می کنیم حالا می گوییم که اگر بسته ای دریافت کردی که این بیت ها را داشت جلوی آن را بگیر و آن را drop کند.

برای راه اندازی FPM باید مراحل زیر را دنبال کرد:

1- باید ابتدا بسته ها را با پروتکل PHDF لود کنیم ابتدا تا کنترل ما نیز دقیق تر صورت گیرد طبق آن چیزی که بالا ذکر شد.

با استفاده از دستور زیر می آییم آن را کانفیگ می کنیم.

Router (config) # load protocol location: filename

Exam:
Router (config) # load protocol system:fpm/phdf/ip.phdf
Router (config) # load protocol system:fpm/phdf/tcp.phdf

2- با استفاده از class-map می آییم ترافیک های خودمان را جدا می کنیم.منظور ترافیک های مورد نظر می باشد.

ما دو نوع class-map داریم:

الف- Stack :فقط براساس پروتکل ها می تواند عملیات classification را اجرا کند.پروتکل هایی مثل IP-TCP-UDP و همچنین فقط در زدن دستورات از کامند match all می توانیم استفاده کنیم.

ب- Access-control :هم بر اساس پروتکل و هم بر اساس pattern های خاصی در ترافیک می تواند ترافیک را کنترل کند.

Router (config) # class-map type [stack | access-control] [match-all | match-any] class-map-name     
Router (config-cmap) # match field protocol protocol-field [eq | neq | gt | lt | range range] value next                                           next-protocol
Router (config-cmap) # match start [l2-start | l3-start] offset offset size size [eq | neq | gt | lt | range                                           range] value

3- با استفاده از Policy-map می آییم action مورد نظر را ری این ترافیک انتخاب شده انجام می دهیم که drop کند یا permit کند ویا ...

Router (config) # policy-map type access-control policy-map-name
Router (config-pmap) # class class-name
Router (config-pmap-c) # drop

4- در آخر این پالیسی هارا به اینترفیس مورد نظر apply می کنیم

Router (config) # interface type <mod/num>
Router (config-if) # service-policy type access-control [input | output] policymap-name

Flexible Net-flow -4 چیست ؟

یک ابزار مانیتورینگ می باشد یعنی می توانیم با آن بیاییم کلیه ی ترافیک های یک اینترفیس را در دست بگیریم و مشاهده کنیم.Flow به ترافیک هایی گفته می شود که هم از نظر src , dest هم از نظر شماره پورت و هم از نظر پروتکل باهم برابر باشند.حالا netflow می آید کنترل این flow ها را به عهده می گیرد.این ترافیک ها وارد نرم افزاری می شوند برای مانیتورینگ.نرم افزار های خاصی مثل manage engine مثل solar winds. Flexible netflow با netflow تفاوت های بخصوصی دارد:

  • 1- این فیچر می تواند در اندازه های بزرگ و روی اینترفیس هایی با ظرفیت و پهنای باند بالا نیز کار کند.
  • 2- از ورژن بالایی همچون ورژن9 استفاده می کند.
  • 3- در netflow ما حق این را نداشتیم که آنالیز خودمان را بر اساس ویژگی های ترافیک انجام دهیم.اما در flexible میتوانیم آنالیز ترافیک خود را بر اساس src ip dest ip src port dest port protocol انجام دهیم.
  • 4- همچنین accounting خوبی برای IP و BGP می باشد و می تواند خدمات خوبی را ارائه دهد.
  • 5- کانفیگ کردن key field و nonkey field

Key field: با flexible netflow می توانیم کاری کنیم که flow های مختلف بیایند مجزا یا تفکیک شوند.یعنی flow هایی که از یک اینترفیس وارد می شوند با flow هایی که از یک اینترفیس دیگر وارد می شوند را در قسمت های مختلف یا flow های مختلف قرار دهیم.

Nonkey field: فیلدهایی که می خواهیم در موقع خروج برای ما نمایش داده شوند. مثلا src ip را نمایش دهد یا بر اساس src ip نمایش دهد.

کاربرد های F netflow چیست؟

  • 1- مانیتورینگ شبکه
  • 2- مانیتورینگ نرم افزارها
  • 3- مانیتورینگ کاربران
  • 4- امنیت
  • 5- مانیتورینگ دیتاهای خاص

معرفی اجزای اصلی F netflow

1- net flow record:اون دو فیچر nonkey field و key field هایی که می خواهیم بر اساس آن ها flow ها شناسایی و مانیتورینگ شوند.

Router (config) # flow record flow-record-name
	To specify key fields:
Router (config-flow-record) # match [ipv4 | ipv6 | datalink | routing | flow |interface} options
	To specify nonkey fields:
Router (config-flow-record) # collect [counter | ipv4 | ipv6 | datalink | routing | flow | interface |     timestamp] options

2- net flow exporters : محل خروجی مانیتورینگ را مشخص می کند.

Router (config) # flows monitor flow-monitor-name
Router (config-flow-monitor) # record [flow-record-name | netflow | netfloworiginal] {ipv4 | ipv6}           {Original-input | original-output}

 

3- net flow sample : به دلیل زیاد بودن ترافیک در اینترفیس ها و انجام عمل مانیتورینگ باعث بالا رفتن پروسس CPU می شود برای رفع این مشکل می آیند از ترافیک نمونه برداری می کنند.به عنوان مثال می آیند از هر سه پکت دریافتی یک پکت را مانیتور می کنند.در این صورت بار ترافیکی کاسته و میزان پروسس کاهش می یابد.

Router (config) # sampler sampler-name
Router (config-sampler) # mode {deterministic | random} 1 out-of window-size

4- netflow monitoring : تمامی سه موارد بالا در این قسمت صدا زده می شوند .و خود این قسمت به اینترفیس apply می شود.

Router (config) # flows monitor flow-monitor-name
Router (config-flow-monitor) # record [flow-record-name | netflow | netfloworiginal]
{ipv4 | ipv6} {Original-input | original-output}

Application of a Flow Monitor چیست؟

حال net flow monitor را باید به یک اینترفیس معرفی کنیم.اون اینترفیسی که باید به یک ابزار مانیتورینگ بدهیم.با دستورات زیر این کار را انجام می دهیم.

Router (config-if) # ip flow monitor flow-monitor-name {sampler sampler-name} [multicast | unicast] [input | output]

Unicast Reverse Path Forwarding (Unicast RPF) -5

برای جلوگیری از اتک های IP Spoofing استفاده می شود.برای اینکه دیگر از ACL استفاده نکنیم و درگیر پیجدگی های آن نشویم از این فیچر استفاد می کینم.پیچیدگی این روش یسیار کم می باشد به طوری که می گوید اون ترافیک هایی که از بیرون می خواهند به داخل بیایند src آن را چک میکند.در صورتی می توانند ،که یک خط روت در جدول روتینگ به آن مقصد وجود داشته باشد.

به عنوان مثال اگر یک ip valid دریافت کند چون ipهای valid ما به اینترنت دسترسی ندارنند پس بنابراین اون ip دریافت شده را drop می کند.

در دو مد کاری از RPF استفاده می شود:

 Strict (normal): همین روشی که در بالا گفته شد عمل می کند.

 Loose: مثل روش بالا عمل می کند با این تفاوت که اگر در جدول روتینگ هم به اون آدرس یه روت وجود داشت باز هم آن بسته drop می شود.

 ip cef {distributed}#
ip verify unicast source reachable-via [rx | any] {access-list} #

نویسنده : حسن صفری

منبع ITPRO:

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.


حسن صفری
حسن صفری

کارشناس ICT و علاقه مند به امنیت و فایروال

حسن صفری فارغ التحصیل مقطع کارشناسی در رشته ICT با بیش از 3 سال سابقه کاری در پارک علم و فناوری دانشگاه آزاد، دارای مدارک تخصصی شبکه در حوزه ی سیسکو و پیکربندی و اجرای مباحث امنیتی، عیب یابی فایروال هایASA و اعمال HA و همچنین شرکت در مباحث علمی مربوط به شبکه، خواندن کتب، مقالات علمی لاتین و.......

نظرات