چند وقته برروی امنیت پروتکل BGP کار میکردم . خوب با یک مکانیزم امنیتی و کامند در IOS میخواهیم آشنا شویم. دستور زیر
neighbor Neighbor-Address ttl-security hops Hop-Count
یک مکانیزم امنیتی بسیار سبک و راحت می باشد که session ایجاد شده بین peer های BGP را از حملات CPU-utilization محافظت می کند. درIPv4 از فیلد TTL و در IPv6 از Hop Limit برای جلوگیری از این دسته حملات استفاده می شود. برای مثال می توان حملات DOS را نام برد که سعی می کند تا بخشی از شبکه را از کار بیندازد با پکت IP که در هدر آن Source,Destination جعلی وجود دارد. این مکانیزم امنیتی بدین صورت عمل می کند که پکت های دریافتی بایستی مقدار TTL آن مساوی و یا بزرگتر از مقدار تعیین شده توسط کانفیگ انجام شده برروی روتر باشد. وقتی پکت از فاصله یک Hop دریافت می شود مقدار TTL برابر ۲۵۵ و اگر فاصله 2Hop باشد مقدار این فیلد ۲۵۴ خواهد بود. در واقع در این دستور حداکثر تعداد Hop بین دو peer از eBGP را مشخص می کنیم.
این ویژگی می بایست در هر روتر درون AS کانفیگ گردد. نشست BGP تنها در برابر ترافیک Incoming محافظت می شود و تاثیری در ترافیک خروجی از روتر نخواهد داشت. وقتی این کانفیگ برروی روتر صورت گیرد BGP تنها نشست هایی را آغاز می کند و یا Alive نگه میدارد که دارای شرایط تعیین شده در کانفیگ باشد.
اگر پکتی با مقدار TTL کمتر دریافت گردد Discard خواهد شد و پیام ICMP هم ایجاد نخواهد کرد چون پاسخ به پکت جعلی نیازی نیست. برای حداکثر تاثیر این مکانیزم می بایست به شدت مقدار hop-count را کم دهیم و درواقع دقیقا همان تعداد Hop بین شبکه داخلی و خارجی قرار دهیم.
TTL Security تنها در این پروتکل نیست بلکه میتوان آن را در OSPF هم مورد استفاده قرار داد. با استفاده از دستور زیر در مد کانفیگ اینترفیس میتوان این ویژگی را برروی آن فعال نمود:
ip ospf ttl-security [hops hop-count| disable]
البته این دستور محدودیت هایی نیز دارد:
- برای iBGP پشتیبانی نمی شود.
- برای peer هایی که بصورت ebgp-multihop کافیگ شده است نمی تواند اجرا نمود. این دو کامند با هم ناسازگار هستند و برای نشست های eBGP تنها یکی از این دو بایستی کانفیگ گردد. اگر سعی کنید این دو را باهم برروی یک peer کانفیگ کنید با پیغام خطا مواجه خواهید شد.
- اگر یک روتر از شبکه مورد حمله قرار گرفته باشدو در دست نفوذگر قرار گیرد، این دستور تاثیری نخواهد داشت.
در دستور زیر Hop-Count را برای یک peer که بطور مستقیم به روترمان متصل است برابر ۲ قرار داده ایم دلیل آن این است که BGP تنها پکت های که مقدار TTL آن برابر و یا بزرگتر از ۲۵۳ یعنی ۲۵۳ و یا ۲۵۴ باشد را قبول می کند و اگر به غیر از این مقدار باشند Discard خواهد شد.
neighbor 10.1.1.1 ttl-security hops 2
خروجی زیر از کامند show ip bgp neighbors می باشد که neighbor های ۱۰.۱.۱.۱ را مشاهده می کنیم و همچنین TTL Security نیز برای آن فعال شده است و مقدار آن ۲ است که در خط ۷۷ میتوانید گزارشی از این مکانیزم امنیتی را ببینید.
Router# show ip bgp neighbors 10.1.1.1
BGP neighbor is 10.1.1.1, remote AS 100, internal link
BGP version 4, remote router ID 10.2.2.22
BGP state = Established, up for 00:59:21
Last read 00:00:21, hold time is 180, keepalive interval is 60 seconds
Neighbor capabilities:
Route refresh: advertised and received(new)
Address family IPv4 Unicast: advertised and received
Message statistics:
InQ depth is 0
OutQ depth is 0
Sent Rcvd
Opens: 2 2
Notifications: 0 0
Updates: 0 0
Keepalives: 226 227
Route Refresh: 0 0
Total: 228 229
Default minimum time between advertisement runs is 5 seconds
For address family: IPv4 Unicast
BGP table version 1, neighbor version 1/0
Output queue sizes : 0 self, 0 replicated
Index 1, Offset 0, Mask 0x2
Member of update-group 1
Sent Rcvd
Prefix activity: ---- ----
Prefixes Current: 0 0
Prefixes Total: 0 0
Implicit Withdraw: 0 0
Explicit Withdraw: 0 0
Used as bestpath: n/a 0
Used as multipath: n/a 0
Outbound Inbound
Local Policy Denied Prefixes: -------- -------
Total: 0 0
Number of NLRIs in the update sent: max 0, min 0
Connections established 2; dropped 1
Last reset 00:59:50, due to User reset
External BGP neighbor may be up to 2 hops away.
Connection state is ESTAB, I/O status: 1, unread input bytes: 0
Local host: 10.2.2.22, Local port: 179
Foreign host: 10.1.1.1, Foreign port: 11001
Enqueued packets for retransmit: 0, input: 0 mis-ordered: 0 (0 bytes)
Event Timers (current time is 0xCC28EC):
Timer Starts Wakeups Next
Retrans 63 0 0x0
TimeWait 0 0 0x0
AckHold 62 50 0x0
SendWnd 0 0 0x0
KeepAlive 0 0 0x0
GiveUp 0 0 0x0
PmtuAger 0 0 0x0
DeadWait 0 0 0x0
iss: 712702676 snduna: 712703881 sndnxt: 712703881 sndwnd: 15180
irs: 2255946817 rcvnxt: 2255948041 rcvwnd: 15161 delrcvwnd: 1223
SRTT: 300 ms, RTTO: 607 ms, RTV: 3 ms, KRTT: 0 ms
minRTT: 0 ms, maxRTT: 300 ms, ACK hold: 200 ms
Flags: passive open, nagle, gen tcbs
Datagrams (max data segment is 1460 bytes):
Rcvd: 76 (out of order: 0), with data: 63, total data bytes: 1223
Sent: 113 (retransmit: 0, fastretransmit: 0), with data: 62, total data bytes: 4
برای مطالعات بیشتر هم می تونید RFC3682 رو بخونید.
موفق باشید.

دیدگاهتان را بنویسید لغو پاسخ