(Network Administrators (Persian

(Network Administrators (Persian

نکات مهم شبکه برای متخصصین
(Network Administrators (Persian

(Network Administrators (Persian

نکات مهم شبکه برای متخصصین

محافظت از شبکه با Unicast Reverse Path Forwarding

Unicast Reverse Path Forwarding (URPF)

معمولا زمانی که روتر شما بسته های IP  را بصورت Unicast دریافت می کند تنها چیزی را که چک می کند این است که IP مقصد آن چیست و آیا می تواند آن را forward نماید یا خیر؟

اگر بسته باید فرستاده شود روتر جدول روت های خود را چک کرده و آن را روی اینترفیس مورد نظر ارسال خواهد کرد.اما روتر شما آدرس فرستنده (source address) را بررسی نخواهد کرد چون این موضوع برای forward کردن بسته اهمیتی ندارد.

به همین دلیل ممکن است  attacker ها با spoof کردن آدرس مبدا (Source ip address)  و بسته هایی را ارسال کنند که بطور معمول توسط فایروال یا Access list ها drop  می شود.

 

نکته : البته در مواقعی که شما از multicast  استفاده می کنید چک کردن source ip address آنها بسیار مهم است.اما در این بخش فقط در مورد unicast ها صحبت خواهیم کرد.

URPF یک ویژگی امنیتی برای جلوگیری از Spoof attack  ها می باشد.هر زمان که روتر شما بسته ای را دریافت می کند این ویژگی Source ip address را با Routing table مقایسه می نماید در صورتی که نتیجه مثبت نباشد آن را Discard خواهد کرد.

URPF دو حالت دارد :

-          Strict mode

-          Loose mode

در ادامه تفاوت این دو حالت و نحوه پیکربندی آنهارا توضیح خواهیم داد :

Strict Mode:

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

-         آیا من ورودی match  شده ای برای این آدرس مبدا ( Source ip address) در جدول روت دارم یا خیر؟

-         آیا من از اینترفیس یکسان برای دریافت این   Source استفاده استفاده می کنم همچنین از کجا این بسته را دریافت کردم؟

در صورتی که بسته ورودی هردو شرط را با موفقیت پاس نماید اجازه ورود خواهد داشت در غیر اینصورت Drop خواهد شد.

این ویژگی برای پروتکل های روتینگ IGP  بسیار خوب عمل می نماید به این خاطر که آنها از کوتاهترین مسیر برای source ip address  بسته ها استفاده می کنند و اینترفیسی که شما برای رسیدن به  source ip address  استفاده می کنید یکسان خواهد بود.در شکل زیر نمایش داده شده است :

 



 

 

 

 


در این مثال R1 شبکه 1.1.1.0/24 را در جدول روتینگ خود دارد  و در آن برای رسیدن به این شبکه از اینترفیس Fastethernet0/0 استفاده خواهد کرد.ناگهان این روتر یک بسته ip با source ip address 1.1.1.1  روی هردو اینترفیس خود دریافت می کند.بسته ای که روی Fastethernet0/0 دریافت شده است قبول شده و بسته دیگری که روی اینترفیس Fastethernet0/1 دریافت گردیده Drop  خواهد شد زیرا این اینترفیسی نیست که ما برای رسیدن به این Source  از آن استفاده می کنیم.

برای پیکربندی آن به مثال زیر توجه کنید :

در این مثال ما R1 را با یک static route طوری پیکربندی خواهیم کرد که بتواند بهloopback 0   روتر R2 برسد:


R1(config)#ip route 2.2.2.2 255.255.255.255 192.168.12.2

 

R1#show ip route   
C    192.168.12.0/24 is directly connected, FastEthernet0/0
C    192.168.13.0/24 is directly connected, FastEthernet0/1
     2.0.0.0/32 is subnetted, 1 subnets
S       2.2.2.2 [1/0] via 192.168.12.2
 
اکنون روی هردو اینترفیس URPF را در حالت Strict فعال می نماییم :
 
R1(config)#interface fastEthernet 0/0
R1(config-if)#ip verify unicast source reachable-via rx
 
R1(config)#interface fastEthernet 0/1
R1(config-if)#ip verify unicast source reachable-via rx
 
شما می توانید با دستور Show فعال بودن آن روی اینترفیس را مشاهده کنید:
R1#show ip interface fastEthernet 0/0 | include verify
  IP verify source reachable-via RX
 
R1#show ip interface fastEthernet 0/1 | include verify
  IP verify source reachable-via RX

 

برای آزمایش آن ما ابتدا از R2 ، R1 را ping  خواهیم نمود که بدون مشکل انجام می شود :

 

R2#ping 192.168.12.1 source loopback 0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.1, timeout is 2 seconds:
Packet sent with a source address of 2.2.2.2 
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/8 ms
 

 

سپس loopback0 را روی R3 ساخته و به آن ip 2.2.2.2 را اختصاص می دهیم که ما می توانیم آن را spoof  نماییم:

 

R3(config)#interface loopback 0
R3(config-if)#ip address 2.2.2.2 255.255.255.255

 

و اکنون ping را از این اینترفیس انجام خواهیم داد :

 

R3#ping 192.168.13.1 source loopback 0
 
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.13.1, timeout is 2 seconds:
Packet sent with a source address of 2.2.2.2 
.....
Success rate is 0 percent (0/5)

 

مشاهده می کنید که بسته ها ارسال می شوند اما توسط R1 drop می گردد و شما می توانید آنها را با دستور زیر مشاهده نمایید:

R1#show ip interface fastEthernet 0/0 | include drops
  0 verification drops
  0 suppressed verification drops
 
R1#show ip interface fastEthernet 0/1 | include drops
  5 verification drops
  0 suppressed verification drops

در بالا می بینید که بسته های spoof  شده همگی drop شدند.

 

Loose Mode:

در این حالت روتر زمانی که یک بسته ip   را روی یک اینترفیس دریافت می کند فقط یک چیز را چک می نماید:

-         آیا من ورودی match  شده با این آدرس را در جدول روتینگ خود دارم یا خیر؟

زمانی که این شرط پاس شود بسته مجوز عبور خواهد داشت. و مهم نیست که آیا ما از این اینترفیس برای رسیدن به آن آدرس استفاده می کنیم یا خیر.این حالت زمانی مفید است که شما از چند isp وasymmetric routing استفاده می کنید.

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

uRPF  را روی  R1 در حالت loose پیکربندی کردیم و بسته ip از آدرس 1.1.1.1 روی هردو اینترفیس  دریافت می کنیم با اینکه این بسته ها را از دو اینترفیس متفاوت دریافت می کنیم اما بسته ها drop  نخواهند شد و مهم نیست که بسته از کجا آمده است.

 uRPFرا روی R1 در حالت Loose مشابه شکل پیکربندی می کنیم:

Static route روی R1 برای شبکه 2.2.2.2/32 می نویسیم :

R1(config)#ip route 2.2.2.2 255.255.255.255 192.168.12.2

سپس uRPF را در حالت Loose روی آن فعال می نماییم :

R1(config)#interface fastEthernet 0/0                 
R1(config-if)#ip verify unicast source reachable-via any 
 
R1(config)#interface fastEthernet 0/1                 
R1(config-if)#ip verify unicast source reachable-via any

پیکربندی انجام شده را توسط دستور show  مشاهده می نماییم :

R1#show ip interface fastEthernet 0/0 | include verify
  IP verify source reachable-via ANY
R1#show ip interface fastEthernet 0/1 | include verify
  IP verify source reachable-via ANY

برای اینکه مطمئن شویم این تنظیمات واقعا کار می کند debug را روی R1 فعال می نماییم :

R1#debug ip packet 
IP packet debugging is on

اکنون ping را از R2  و R3 با استفاده از 2.2.2.2 خواهیم فرستاد :

R2#ping 192.168.12.1 source loopback 0 
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.1, timeout is 2 seconds:
Packet sent with a source address of 2.2.2.2 
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/8 ms
 
R3#ping 192.168.13.1 source loopback 0 repeat 1
Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 192.168.13.1, timeout is 2 seconds:
Packet sent with a source address of 2.2.2.2 
.
Success rate is 0 percent (0/1)

Ping ها از R2 دارای ورودی صحیح می باشد  ولی ping های R3 نباید درست انجام شوند چون برای آنها Route  در Routing Table وجود ندارد اما این بسته ها توسط R1 قبول می شوند:

R1#
P: tableid=0, s=2.2.2.2 (FastEthernet0/0), d=192.168.12.1 (FastEthernet0/0), routed via RIB
IP: s=2.2.2.2 (FastEthernet0/0), d=192.168.12.1 (FastEthernet0/0), len 100, rcvd 3
 
IP: tableid=0, s=2.2.2.2 (FastEthernet0/1), d=192.168.13.1 (FastEthernet0/1), routed via RIB
IP: s=2.2.2.2 (FastEthernet0/1), d=192.168.13.1 (FastEthernet0/1), len 100, rcvd 3

روتر از هردو بسته ها را قبول می نماید حتی اگر توسط R3 spoof شده باشد.همچنین شما می توانید اینترفیس ها را برای دیدن تعداد بسته های drop  شده و قبول شده بررسی نمایید :

R1#show ip interface fastEthernet 0/0 | include drops
  0 verification drops
  0 suppressed verification drops
 
R1#show ip interface fastEthernet 0/1 | include drops
  0 verification drops
  7 suppressed verification drops

روی interface fastethernet0/0 بسته drop  شده ای وجود ندارد، و بسته ها روی اینترفیس fastethernet0/1 توقیف (suppressed) شده اند به این معنی که اینترفیس ورودی درست نیست اما ورودی صحیحی از آن در Routing Table وجود دارد.در پایین به شما نشان خواهیم داد که چه اتفاقی می افتد زمانی که R1 یک بسته ip با یک source نامشخص  دریافت می کند.

R3(config)#interface loopback 1
R3(config-if)#ip address 3.3.3.3 255.255.255.255 
R3#ping 192.168.13.1 source loopback 1 
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.13.1, timeout is 2 seconds:
Packet sent with a source address of 3.3.3.3 
.....
Success rate is 0 percent (0/5)
 
R1#show ip interface fastEthernet 0/1 | include drops
  5 verification drops
  7 suppressed verification drops

 

ما loopback جدیدی با ip  3.3.3.3 خواهیم ساخت.اگر ما از این اینترفیس در ping به عنوان source استفاده کنیم بسته ها توسط R1 drop  خواهند شد زیرا ورودی صحیحی در Routing Table  R1 برای این source وجود ندارد.


ویژگی های اضافه (Additional Feature) :

-         Logging and Exemptions : uRPF به شما اجازه می دهد که بوسیله access list مشخص نمایید که کدام source  باید چک شود و log تهیه می نماید از بسته هایی که بوسیله access list drop  می شوند.

-         Self-pinging : به روتر اجازه می دهد که بتواند بوسیله uRPF در حالت strict خودش را ping  نماید.

-         Default Route : شما می توانید uRPF را طوری پیکربندی نمایید که Source ip address هایی که غیر از Default route هستند را بررسی نماید.شما می توانید از این ویژگی زمانی استفاده کنید که می خواهید همه بسته های اینترنت قبول کنید و فقط خود را در برابر بسته های spoof  شده  در شبکه داخلی محافظت کنید.


منبع : http://networklessons.com/security/unicast-reverse-path-forwarding-urpf

 

نظرات 1 + ارسال نظر
Arshia یکشنبه 14 مهر 1392 ساعت 12:00 http://pc-iran.ir

سلام
خیلی مفید بود ممنون از اطلاع رسانیتون
یاحق

سلام ممنون از اینکه به وبلاگ من سر می زنید

امکان ثبت نظر جدید برای این مطلب وجود ندارد.