===== Cisco: Reflexive ACL =====
==== Wprowadzenie ====
**Reflexive ACL (Dynamiczne listy dostępu zwrotnego)** to rozszerzenie list ACL w Cisco IOS, które umożliwia filtrowanie ruchu **na podstawie sesji inicjowanych z wnętrza sieci**. Są one szczególnie przydatne do kontroli ruchu **przychodzącego** w sieciach, gdzie tylko **odpowiedzi na połączenia wychodzące** powinny być dozwolone.
Działa to podobnie do zasady działania **stateful firewall**: tylko pakiety należące do wcześniej zainicjowanych sesji TCP/UDP są przepuszczane w kierunku powrotnym.
==== Główne cechy ====
* Działa tylko dla protokołów opartych na sesjach: **TCP** i **UDP**.
* Tworzy tymczasowe, dynamiczne wpisy ACL na podstawie połączeń wychodzących.
* Usuwane automatycznie po zakończeniu sesji.
* Konfiguracja oparta na klasycznych ACL typu **extended**.
----
==== Przykład topologii ====
Sieć prywatna: `192.168.1.0/24`
Router Cisco z interfejsem zewnętrznym `GigabitEthernet0/0`
Sieć publiczna (np. Internet): `0.0.0.0/0`
----
==== Konfiguracja Reflexive ACL ====
===== 1. Utworzenie listy ACL z dynamicznym wpisem =====
ip access-list extended OUTBOUND
permit tcp 192.168.1.0 0.0.0.255 any reflect ALLOW_OUT
permit udp 192.168.1.0 0.0.0.255 any reflect ALLOW_OUT
* `reflect ALLOW_OUT` – tworzy dynamiczny wpis o tej nazwie dla każdego połączenia wychodzącego.
===== 2. Lista ACL dla ruchu przychodzącego =====
ip access-list extended INBOUND
evaluate ALLOW_OUT
* `evaluate` – sprawdza dynamiczne wpisy utworzone przez ACL OUTBOUND.
===== 3. Przypisanie ACL do interfejsów =====
Załóżmy:
* `GigabitEthernet0/0` to **interfejs zewnętrzny**
* `GigabitEthernet0/1` to **interfejs wewnętrzny**
interface GigabitEthernet0/1
ip access-group OUTBOUND out
interface GigabitEthernet0/0
ip access-group INBOUND in
----
==== Sprawdzanie działania ====
Sprawdź utworzone dynamiczne wpisy ACL:
show ip access-lists
Wyświetl informacje o dynamicznych sesjach:
show ip access-list cache
----
==== Zalecenia i uwagi ====
* Reflexive ACL nie obsługują ICMP (np. `ping`).
* Należy dodać inne reguły ACL dla protokołów zarządzających (np. `permit tcp any host eq 22` dla SSH).
* Przy intensywnym ruchu może być obciążeniem CPU.
* Można ograniczyć czas istnienia dynamicznych wpisów za pomocą:
ip reflexive-list timeout 300
----
==== Podsumowanie ====
Reflexive ACL to prosty sposób na ochronę sieci wewnętrznej przed nieautoryzowanym ruchem przychodzącym, przy jednoczesnym zachowaniu funkcjonalności dla ruchu wychodzącego. Idealne w scenariuszach, gdzie nie jest dostępny lub wymagany pełnoprawny firewall.
==== Przykład ====
{{.:pasted:20250530-133908.png}}
Konfiguracja FW:\\
FW#show running-config
Building configuration...
Current configuration : 1481 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname FW
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
ip cef
!
!
!
!
no ip domain lookup
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
archive
log config
hidekeys
!
!
!
!
ip tcp synwait-time 5
!
!
!
!
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
ip access-group wejscie in
duplex auto
speed auto
!
interface Serial0/0
ip address 1.0.0.2 255.255.255.0
ip access-group wyjscie out
clock rate 2000000
!
interface FastEthernet0/1
no ip address
shutdown
duplex auto
speed auto
!
interface Serial0/1
no ip address
shutdown
clock rate 2000000
!
interface Serial0/2
no ip address
shutdown
clock rate 2000000
!
interface FastEthernet1/0
no ip address
shutdown
duplex auto
speed auto
!
interface FastEthernet2/0
no ip address
shutdown
duplex auto
speed auto
!
ip forward-protocol nd
ip route 0.0.0.0 0.0.0.0 1.0.0.1
!
!
no ip http server
no ip http secure-server
!
ip access-list extended wejscie
evaluate ok
ip access-list extended wyjscie
permit ip any any reflect ok
!
no cdp log mismatch duplex
!
!
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
line aux 0
exec-timeout 0 0
privilege level 15
logging synchronous
line vty 0 4
login
!
!
end