ACL روی اینترفیس، stateful ACL و محدودیت SSH#

مقدمه#

access-list روی اینترفیس، بسته را در جهت in یا out بررسی می‌کند. access-list که ICMP را deny کند، ping را قطع می‌کند و بقیهٔ ترافیک را با rule بعدی permit می‌کند. اگر جواب یک session از نوع TCP هم باید از جهت مخالف برگردد، reflect وضعیت session را نگه می‌دارد و فقط جواب همان session را permit می‌کند.

برای SSH همین الگو روی port 22 استفاده می‌شود: فقط source مدیر مجاز است و بقیهٔ تلاش‌ها برای همان port رد می‌شوند، بدون اینکه ping قطع شود.

مرور سناریو#

سه access-list به نوبت روی n1 آزمایش می‌شوند. DIR-ACL فقط ICMP ورودی ge3 را deny می‌کند. STF-ACL فقط TCP با port برابر 5050 از n4 به n5 را با reflect عبور می‌دهد و روی in اینترفیس ge3 و out اینترفیس ge1 اعمال می‌شود. SSH-ACL فقط port 22 را از 1.1.1.10 مجاز می‌کند. n18 با IP برابر 1.1.1.20 روی همان LAN است و باید برای port 22 رد شود.

توضیح توپولوژی#

توپولوژی سناریو

n4 با IP برابر 1.1.1.10 و n18 با IP برابر 1.1.1.20 هر دو به ge3 روتر n1 وصل‌اند. n1 از ge1 با IP برابر 200.1.2.1 به n2 با IP برابر 200.1.2.2 می‌رسد. n5 با IP برابر 2.1.1.10 پشت ge3 روتر n2 است و نقش TCP server را دارد.

پیش‌نیازها#

  • آشنایی با جهت in و out روی اینترفیس

  • امکان اجرای nc روی میزبان‌ها

  • سناریو بدون IP روی روتر بالا می‌آید؛ IPها در گام‌های زیر وارد می‌شوند

پیکربندی مرحله‌به‌مرحله#

سه access-list روی n1#

هر access-list را بسازید، اعمال کنید، آزمایش همان بخش را انجام دهید و بعد از اتمام آن بخش، اعمال قبلی را بردارید. دستورهای زیر ترتیب کامل آزمایش را دارند.

روی روتر SooDar n1:

interface ge1
 ip address 200.1.2.1/24
 no shutdown
!
interface ge3
 ip address 1.1.1.1/24
 no shutdown
!
ip route 2.1.1.0/24 200.1.2.2
!
ip access-list DIR-ACL
 10 deny icmp any any
 20 permit ip any any
!
interface ge3
 ip access-group DIR-ACL in
!
ip access-list STF-ACL
 10 permit tcp 1.1.1.10/32 2.1.1.10/32 eq 5050 reflect
 20 deny ip any any
!
interface ge3
 ip access-group STF-ACL in
!
interface ge1
 ip access-group STF-ACL out
!
ip access-list SSH-ACL
 10 permit tcp 1.1.1.10/32 any eq 22
 20 deny tcp any any eq 22
 30 permit ip any any
!
interface ge3
 ip access-group SSH-ACL in
!
show ip access-list

پیش از ساخت STF-ACL، اعمال DIR-ACL را با no ip access-group DIR-ACL in از ge3 بردارید. پیش از اعمال SSH-ACL هم STF-ACL را از ge3 و ge1 بردارید. یک اینترفیس در هر جهت یک access-list می‌پذیرد و access-list جدید جای قبلی را در همان جهت می‌گیرد. برداشتن صریح، آزمایش هر بخش را جدا می‌کند.

show ip access-list باید کلمهٔ reflect را در STF-ACL نشان دهد.

route برگشت روی n2#

روی روتر SooDar n2:

interface ge1
 ip address 200.1.2.2/24
 no shutdown
!
interface ge3
 ip address 2.1.1.1/24
 no shutdown
!
ip route 1.1.1.0/24 200.1.2.1

میزبان مدیر، سرور و میزبان غیرمجاز#

روی میزبان n4:

ip route replace default via 1.1.1.1
ping -c 3 2.1.1.10
nc -z -w 5 -vv 2.1.1.10 5050
nc -z -w 5 -vv 2.1.1.10 22

ping باید پیش از DIR-ACL موفق و هنگام اعمال آن ناموفق باشد. بعد از برداشتن DIR-ACL دوباره موفق می‌شود. زیر STF-ACL مقدار ping ناموفق است و اتصال port 5050 موفق. زیر SSH-ACL هم ping و هم اتصال port 22 از n4 موفق است.

روی میزبان n5:

ip route replace default via 2.1.1.1
nc -k -l 5050
nc -k -l 22

listener مربوط به port 5050 را پیش از آزمایش STF-ACL و listener مربوط به port 22 را پیش از آزمایش SSH-ACL اجرا کنید.

روی میزبان n18:

ip route replace default via 1.1.1.1
nc -z -w 5 -vv 2.1.1.10 22

این اتصال باید زیر SSH-ACL برقرار نشود، چون source برابر 1.1.1.20 در rule مجاز port 22 نیست.

صحت‌سنجی و تست#

  • بدون access-list، ping از n4 به 2.1.1.10 موفق است.

  • با DIR-ACL روی ورود ge3، همان ping ناموفق است و پس از برداشتن access-list دوباره موفق می‌شود.

  • با STF-ACL، ping ناموفق است و اتصال TCP از n4 به 2.1.1.10:5050 موفق است.

  • show ip access-list STF-ACL شامل reflect است.

  • با SSH-ACL، اتصال port 22 از n4 موفق و از n18 ناموفق است و ping از n4 همچنان موفق است.

جمع‌بندی#

جهت اعمال access-list به اندازهٔ خود ruleها مهم است. reflect جواب همان session را مجاز می‌کند و به معنی permit کردن بقیهٔ ترافیک نیست. محدود کردن SSH یعنی permit صریح source مدیر برای port 22 و deny بقیهٔ همان port، در حالی که ترافیک دیگر با rule پایانی عبور می‌کند.