===== Cisco: Lock-and-Key (Dynamic Access Control) ===== ==== Wprowadzenie ==== **Lock-and-Key** (Dynamic Access Lists) to mechanizm bezpieczeństwa Cisco, który umożliwia **dynamiczne otwieranie dostępu przez ACL-e**, po **udanym logowaniu użytkownika przez Telnet lub SSH**. Zasada działania: - Początkowo lista ACL blokuje dostęp. - Użytkownik łączy się na router przez Telnet/SSH i podaje login. - Po uwierzytelnieniu router tymczasowo otwiera ACL (dynamicznie) dla danego IP. - Po zakończeniu sesji ACL wraca do stanu początkowego (zamknięta). ==== Krok 1: Konfiguracja użytkownika ==== Router(config)# username user1 password cisco123 ==== Krok 2: Włączenie serwera Telnet/SSH i logowania lokalnego ==== Router(config)# line vty 0 4 Router(config-line)# login local Router(config-line)# autocommand access-enable Router(config-line)# exit Polecenie `autocommand access-enable` uruchamia dynamiczny dostęp po uwierzytelnieniu. ==== Krok 3: Skonfiguruj dynamiczną ACL ==== Załóżmy, że chcemy zezwolić na dostęp **z zewnątrz** do hosta `192.168.1.10` na porcie `80` (HTTP), ale **dopiero po autoryzacji**. Router(config)# ip access-list extended LOCK_AND_KEY Router(config-ext-nacl)# deny ip any any Router(config-ext-nacl)# dynamic AUTH_ACCESS permit tcp any host 192.168.1.10 eq 80 Router(config-ext-nacl)# exit Tutaj: * `LOCK_AND_KEY` – nazwa listy ACL przypisanej do interfejsu. * `AUTH_ACCESS` – nazwa dynamicznej sesji. * Domyślnie ruch jest blokowany (`deny ip any any`), chyba że sesja zostanie dynamicznie otwarta. ==== Krok 4: Przypisanie ACL-a do interfejsu ==== Załóżmy, że interfejs zewnętrzny to `GigabitEthernet0/0`: Router(config)# interface GigabitEthernet0/0 Router(config-if)# ip access-group LOCK_AND_KEY in Router(config-if)# exit ==== Krok 5: Uwierzytelnienie użytkownika ==== Z hosta zdalnego (np. `192.0.2.50`) łączymy się do routera przez Telnet: telnet 203.0.113.1 Po zalogowaniu router wyświetli komunikat: Router> access-enable host timeout 10 To polecenie aktywuje dynamiczną regułę ACL dla tego adresu IP na 10 minut. ==== Sprawdzanie działania mechanizmu ==== Wyświetlenie aktywnych sesji: Router# show access-lists Zakończenie dynamicznego dostępu: Router> access-disable Wyświetlenie dynamicznych wpisów ACL: Router# show ip access-lists ==== Uwagi końcowe ==== * Lock-and-Key działa tylko z Telnet/SSH – nie obsługuje np. HTTP ani konsoli. * Mechanizm przydatny przy ochronie czułych zasobów przed dostępem publicznym. * Dynamiczne wpisy są tymczasowe – po wygaśnięciu sesji zostają automatycznie usunięte. * Można ograniczyć dostęp tylko dla wybranych użytkowników przez `username ... privilege` i ACL-e. ==== Przykład ==== {{.:pasted:20250529-163805.png}} test:\\ Host-B#ping 10.0.0.11 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.0.0.11, timeout is 2 seconds: UUUUU Success rate is 0 percent (0/5) Host-B#telnet 192.168.1.2 Trying 192.168.1.2 ... Open User Access Verification Username: ernie Password: [Connection to 192.168.1.2 closed by foreign host] Host-B#ping 10.0.0.11 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.0.0.11, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 60/70/92 ms Host-B# konfiguracja R1:\\ R1#show running-config Building configuration... Current configuration : 1593 bytes ! version 12.4 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname R1 ! 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 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! username ernie password 0 bert archive log config hidekeys ! ! ! ! ip tcp synwait-time 5 ! ! ! ! interface FastEthernet0/0 ip address 10.0.0.1 255.0.0.0 duplex auto speed auto ! interface Serial0/0 ip address 192.168.1.2 255.255.255.0 ip access-group 101 in 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 192.168.1.1 ! ! no ip http server no ip http secure-server ! access-list 101 permit tcp 192.168.3.0 0.0.0.255 host 192.168.1.2 eq telnet access-list 101 dynamic LETMEIN timeout 90 permit ip 192.168.3.0 0.0.0.255 10.0.0.0 0.255.255.255 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 local autocommand access-enable host timeout 2 ! ! end konfiguracja R2: R2#show running-config Building configuration... Current configuration : 1322 bytes ! version 12.4 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname R2 ! 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.3.1 255.255.255.0 duplex auto speed auto ! interface Serial0/0 ip address 192.168.1.1 255.255.255.0 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 192.168.1.2 ! ! no ip http server no ip http secure-server ! 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