راهنمای عملی Access-list در Cisco؛ از Filtering تا Wildcard Mask

Access-list در سیسکو از آن چیزهایی است که اول ساده به نظر میرسد، ولی اگر درست فهمیده نشود بعدا در routing، NAT، VPN، QoS و حتی عیبیابی امنیت شبکه دردسر درست میکند. ACL فقط برای بستن ترافیک نیست؛ خیلی وقتها ما با ACL ترافیک را جدا میکنیم تا یک قابلیت دیگر روی همان ترافیک تصمیم بگیرد.
من معمولا ACL را با دو کاربرد اصلی توضیح میدهم: یکی filtering، یعنی اجازه دادن یا رد کردن ترافیک؛ یکی هم classification، یعنی مشخص کردن اینکه کدام ترافیک باید وارد یک policy، route-map، NAT یا ابزار کنترلی دیگر شود.
Access-list دقیقا چه کاری میکند؟
ACL یک لیست شرط است. روتر یا سوئیچ لایه ۳ از بالا به پایین خطها را میخواند و به اولین شرطی که match شود عمل میکند. بعد از match شدن یک خط، دیگر خطهای بعدی بررسی نمیشوند. همین نکته ساده، دلیل خیلی از اشتباهات عملیاتی در شبکه است.
در انتهای هر ACL هم یک deny پنهان وجود دارد. یعنی اگر ترافیکی به هیچ خطی نخورد، به صورت پیشفرض رد میشود. برای همین موقع نوشتن ACL باید دقیقا بدانیم قرار است چه چیزی را اجازه بدهیم و چه چیزی را ببندیم.
Standard ACL و Extended ACL
در Standard ACL فقط بر اساس آدرس مبدا تصمیم میگیریم. برای سناریوهای ساده خوب است، ولی وقتی میخواهیم مبدا، مقصد، پروتکل و پورت را کنترل کنیم باید سراغ Extended ACL برویم.
access-list 10 permit 192.168.10.0 0.0.0.255
access-list 10 deny any
نمونه بالا فقط شبکه 192.168.10.0/24 را match میکند. اما اگر بخواهیم مثلا فقط SSH از یک شبکه خاص به یک سرور خاص باز باشد، Extended ACL لازم داریم.
ip access-list extended SERVER-MGMT
permit tcp 192.168.10.0 0.0.0.255 host 172.16.1.10 eq 22
deny ip any host 172.16.1.10
permit ip any any
Wildcard mask را درست ببینیم
Wildcard mask برعکس subnet mask فکر میکند. هر بیت صفر یعنی همان بیت باید دقیق match شود، هر بیت یک یعنی برای آن بیت اهمیتی قائل نیستیم. برای یک شبکه /24 معمولا wildcard برابر 0.0.0.255 است.
192.168.20.0 0.0.0.255
یعنی سه octet اول باید دقیقا 192.168.20 باشد و octet آخر میتواند هر عددی باشد. اگر ACL بد نوشته شود، یا ترافیک زیادی باز میشود یا چیزی که لازم داریم بسته میشود.
ACL را کجا apply کنیم؟
نوشتن ACL کافی نیست. باید آن را روی interface و در جهت درست اعمال کنیم. جهت in یعنی قبل از routing decision روی ترافیک ورودی interface بررسی شود. جهت out یعنی بعد از تصمیم routing و قبل از خروج از interface بررسی شود.
interface GigabitEthernet0/1
ip access-group SERVER-MGMT in
برای Extended ACL معمولا بهتر است نزدیک مبدا اعمال شود، چون نمیخواهیم ترافیکی که قرار است رد شود بیدلیل داخل شبکه بچرخد. برای Standard ACL چون فقط مبدا را میشناسد، باید با احتیاط بیشتری محل اعمال را انتخاب کرد تا ترافیکهای ناخواسته قطع نشوند.
چند نکته عملیاتی
قبل از اعمال ACL روی تجهیز production، خطها را روی کاغذ یا lab مرور کنید. ترتیب خطها را جدی بگیرید. اول permitهای خاص، بعد denyهای مشخص، و در آخر اگر لازم بود permit عمومیتر.
برای عیبیابی هم از counterها کمک بگیرید. اگر counter یک خط بالا نمیرود، یا ترافیک از مسیر دیگری میرود یا شرط ACL درست نوشته نشده است.
show access-lists
show ip interface GigabitEthernet0/1
ACL ابزار پایهای است، ولی پایهای بودنش به معنی کماهمیت بودن نیست. در خیلی از شبکهها همین چند خط ACL مرز بین یک طراحی تمیز و یک تغییر پرریسک است.

امنسازی دسترسی مدیریتی FortiGate؛ اشتباهاتی که نباید انجام داد
طراحی Access Control Policy در Cisco Firepower؛ از Ruleهای باز تا Policy قابل دفاع
خدمات امنیت شبکه دقیقاً چه خروجیهایی باید داشته باشد؟
پیکربندی امن تجهیزات شبکه؛ کنترل تغییرات، دسترسی و سختسازی
Persistence در F5 چیست و چه زمانی Source Address یا Cookie بهتر است؟
هاردنینگ شبکه را از کجا شروع کنیم؟ نقشه راه اولویتبندی