چند وقته برروی امنیت پروتکل 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 رو بخونید.
موفق باشید.
دیدگاهتان را بنویسید لغو پاسخ