Bài viết chuyên đề

Time-based Access List

30/12/2017 10:19:27

Bài số 5: Chuyên đề Access Control List

Chúng ta tiếp tục về chủ đề ACL trong bài viết tuần này. Trong bài viết này, chúng ta sẽ cùng trao đổi về Time – based ACL, một loại ACL đặc biệt cho phép thiết lập thời gian hoạt động của các dòng trong một ACL.

Như đã làm với các bài viết từ trước tới giờ, để nắm được vấn đề cần khảo sát một cách trực quan nhất, chúng ta cùng tìm hiểu thông qua các ví dụ lab cấu hình.

Sơ đồ:

Hình 1 – Sơ đồ bài lab ví dụ.

Mô tả:

Chúng ta sử dụng lại sơ đồ mạng quen thuộc đã dùng trong các bài viết trước để thực hiện lab khảo sát. Như đã trình bày trong các bài viết trước, sơ đồ này là một phần của một mạng doanh nghiệp mà ta sẽ triển khai giải pháp ACL . R1 và R2 là hai chi nhánh được đấu nối với nhau bởi một đường leased – line điểm điểm sử dụng subnet đấu nối là 192.168.12.0/30. Chi nhánh R1 có một mạng LAN thuộc VLAN 10 được quy hoạch IP là 192.168.10.0/24 và chi nhánh R2 có một mạng LAN thuộc VLAN 20 được quy hoạch IP là 192.168.20.0/24. Mạng công ty sử dụng giao thức định tuyến EIGRP.

Trong bài lab này, chúng ta sẽ sử dụng time – based ACL trên R1 để kiểm soát lưu lượng của các user thuộc VLAN 10 đi ra bên ngoài nhưng có gắn thêm yếu tố thời gian.

Cũng giống như trong các ví dụ trước, vì đây là một bài lab Cisco, chúng ta sử dụng thêm hai router R3 và R4 để giả lập user của VLAN 10 và server của VLAN 20. User R3 sử dụng địa chỉ IP là 192.168.10.2 và server R4 sử dụng địa chỉ IP là 192.168.20.2.

Yêu cầu:

Viết một time – based ACL trên R1 thực hiện chính sách như sau:

  • Chỉ cho phép các user thuộc VLAN 10 được lướt web ngoài giờ làm việc. Giờ làm việc của công ty là từ 08g00 đến 12g00 và 13g30 đến 17g00 các ngày trong tuần (từ thứ 2 đến thứ 6).
  • Do nhu cầu cần cấu hình tối ưu hệ thống, user 192.168.20.2 được phép truy nhập vào router R2 tại địa chỉ 192.168.12.2 để thực hiện các thao tác cấu hình. Tuy nhiên, user này chỉ được phép telnet đến R2 trong khoảng từ 00g00 đến 08g00 ngày 11/07. Hãy cấu hình time – based ACL trên R1 để đáp ứng được điều này.
  • Các user thuộc VLAN 10 đang tham gia một khóa tập huấn và cần download tài liệu về bằng FTP. Các buổi học diễn ra vào các buổi tối 2, 4, 6 hàng tuần từ 20g00 đến 22g00. Cấu hình Time – based ACL để chi cho phép các user thuộc VLAN 10 download file từ FTP server đặt tại R4 theo những khoảng thời gian đã chỉ ra ở trên. Server R4 sử dụng FTP theo phương thức Active.
  • Cấm tất cả các lưu lượng còn lại đi ra khỏi VLAN 10.

Thực hiện:

Để tiện theo dõi, chúng ta nhắc lại các thao tác cấu hình cơ bản trên router: đặt địa chỉ IP, chạy định tuyến EIGRP cho sơ đồ lab.

Cấu hình cơ bản trên các router:

Trên R1:

R1(config)#interface s0/0/0

R1(config-if)#no shutdown

R1(config-if)#ip add 192.168.12.1 255.255.255.252

R1(config-if)#exit

R1(config)#interface f0/0

R1(config-if)#no shutdown

R1(config-if)#ip add 192.168.10.1 255.255.255.0

R1(config-if)#exit

R1(config)#router eigrp 100

R1(config-router)#no auto-summary

R1(config-router)#network 0.0.0.0

Trên R2:

R2(config)#interface s0/0/0

R2(config-if)#no shutdown

R2(config-if)#ip add 192.168.12.2 255.255.255.252

R2(config-if)#exit

R2(config)#interface f0/0

R2(config-if)#no shutdown

R2(config-if)#ip add 192.168.20.1 255.255.255.0

R2(config-if)#exit

R2(config)#router eigrp 100

R2(config-router)#no auto-summary

R2(config-router)#network 0.0.0.0

Ta kiểm tra rằng R1 và R2 đã thấy các subnet của nhau trong bảng định tuyến:

R1#show ip route 192.168.20.0

Routing entry for 192.168.20.0/24

  Known via "eigrp 100", distance 90, metric 2172416, type internal

  Redistributing via eigrp 100

  Last update from 192.168.12.2 on Serial0/0/0, 00:08:38 ago

  Routing Descriptor Blocks:

  * 192.168.12.2, from 192.168.12.2, 00:08:38 ago, via Serial0/0/0

      Route metric is 2172416, traffic share count is 1

      Total delay is 20100 microseconds, minimum bandwidth is 1544 Kbit

      Reliability 255/255, minimum MTU 1500 bytes

      Loading 1/255, Hops 1

R2#sh ip route 192.168.10.0

Routing entry for 192.168.10.0/24

  Known via "eigrp 100", distance 90, metric 2172416, type internal

  Redistributing via eigrp 100

  Last update from 192.168.12.1 on Serial0/0/0, 00:09:31 ago

  Routing Descriptor Blocks:

  * 192.168.12.1, from 192.168.12.1, 00:09:31 ago, via Serial0/0/0

      Route metric is 2172416, traffic share count is 1

      Total delay is 20100 microseconds, minimum bandwidth is 1544 Kbit

      Reliability 255/255, minimum MTU 1500 bytes

      Loading 1/255, Hops 1

Các subnet đã đi được đến nhau:

R1#ping 192.168.20.1 source 192.168.10.1

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 192.168.20.1, timeout is 2 seconds:

Packet sent with a source address of 192.168.10.1

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms

Cấu hình địa chỉ IP và đảm bảo thông suốt kết nối đến “user” R3 và “server” R4:

R3(config)#int f0/0

R3(config-if)#ip add 192.168.10.2 255.255.255.0

R3(config-if)#exit

R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.10.1

R4(config)#int f0/0

R4(config-if)#ip add 192.168.20.2 255.255.255.0

R4(config-if)#exit

R4(config)#ip route 0.0.0.0 0.0.0.0 192.168.20.1

Sau khi đã cấu hình đảm bảo routing và switching đã thông suốt, chúng ta tiến hành cấu hình ACL trên router R1 để đảm bảo các yêu cầu đặt ra.

Cấu hình ACL trên router R1:

R1(config)#time-range WEB_VLAN_10

R1(config-time-range)#periodic weekdays 12:00 to 13:29

R1(config-time-range)#exit

R1(config)#time-range TELNET_VLAN_10

R1(config-time-range)#absolute start 00:00 11 July 2014 end 07:59 11 July 2014

R1(config-time-range)#exit

R1(config)#time-range FTP_VLAN_10

R1(config-time-range)#periodic Monday Wednesday Friday 20:00 to 21:59

R1(config)#ip access-list extended VLAN_10

R1(config-ext-nacl)#permit tcp any any eq 80 time-range WEB_VLAN_10

R1(config-ext-nacl)#permit tcp any any eq 443 time-range WEB_VLAN_10

R1(config-ext-nacl)#permit udp any any eq 53 time-range WEB_VLAN_10

R1(config-ext-nacl)#permit tcp host 192.168.10.2 host 192.168.12.2 eq 23 time-range TELNET_VLAN_10        

R1(config-ext-nacl)#permit tcp any any range 20 21 time-range FTP_VLAN_10

R1(config-ext-nacl)#exit

R1(config)#int f0/0

R1(config-if)#ip access-group VLAN_10 in

R1(config-if)#exit

Time – based ACL cho phép sử dụng các time – range đã cấu hình từ trước để áp lên các entry trong ACL. Điều này cho phép các entry được active chỉ trong khoảng thời gian được đề cập đến của time – range.

Có hai kiểu time – range: absolute và periodic. Như tên gọi, các entry dạng Absolute của time – range sẽ chỉ ra chính xác khoảng thời gian mà một dòng trong ACL được active, còn các Periodic entry của time – range sẽ định nghĩa các khoảng thời gian được lặp đi lặp lại mà một entry của ACL được active. Ví dụ: absolute entry chỉ ra rằng một dòng của ACL được active từ chính xác 00g00 đến 08g00 ngày 11/07/2014, periodic entry có thể chỉ ra rằng một entry của ACL có thể được active vào các ngày trong tuần từ thứ 2 đến thứ 6 từ 08g00 đến 12g00.

Để cấu hình một time – range, chúng ta sử dụng câu lệnh:

Router(config)#time-range Tên Time – range

Trong mode cấu hình của time – range, chúng ta tiếp tục khai báo các thông số thời gian bằng các từ khóa “absolute” hoặc “periodic”.

Với “absolute”, chúng ta phải khai báo thời điểm bắt đầu và thời điểm kết thúc của khoảng thời gian, định dạng của thời điểm sẽ yêu cầu khai báo là “giờ/phút” và “ngày/tháng/năm”:

R1(config-time-range)#absolute ?

  end    ending time and date

  start  starting time and date

 

R1(config-time-range)#absolute start

R1(config-time-range)#absolute start ?

  hh:mm  Starting time

 

R1(config-time-range)#absolute start 08:00 ?

  <1-31>  Day of the month

 

R1(config-time-range)#absolute start 08:00 11 ?

  MONTH  Month of the year [eg: Jan for January, Jun for June]

 

R1(config-time-range)#absolute start 08:00 11 July ?

  <1993-2035>  Year

 

R1(config-time-range)#absolute start 08:00 11 July 2014 ?

  end  ending time and date

 

 

R1(config-time-range)#absolute start 08:00 11 July 2014 end 10:59 11 July 2014

Với “periodic”, chúng ta sẽ khai báo các khoảng thời gian lặp lại theo ý muốn, có thể là bất kỳ ngày nào trong tuần được lặp đi lặp lại (Monday, Tuesday, Wednesday,…), hoặc các ngày trong tuần từ thứ 2 đến thứ 6 (Weekdays), hoặc cuối tuần (Weekend),…

R1(config-time-range)#periodic ?

  Friday     Friday

  Monday     Monday

  Saturday   Saturday

  Sunday     Sunday

  Thursday   Thursday

  Tuesday    Tuesday

  Wednesday  Wednesday

  daily      Every day of the week

  weekdays   Monday thru Friday

  weekend    Saturday and Sunday

 

R1(config-time-range)#periodic daily ?

  hh:mm  Starting time

 

R1(config-time-range)#periodic daily 08:00 ?

  to  ending day and time

 

R1(config-time-range)#periodic daily 08:00 to 11:59 ?

 

R1(config-time-range)#periodic daily 08:00 to 11:59

Có một điểm cần lưu ý khi cấu hình các khoảng thời gian trong time – range là một khoảng thời gian được chỉ ra sẽ được tính từ giây đầu tiên của phút đầu tiên đến giây cuối cùng của phút cuối cùng. Ví dụ: khoảng thời gian từ 01:00 đến 02:00 sẽ bắt đầu từ 01:00:00 đến 02:00:59, do đó, để lấy chính xác từ 01g00 đến 02g00, chúng ta phải viết time – range là 01:00 đến 01:59.

Trong bài lab ví dụ, chúng ta định nghĩa 3 time – range:

  • WEB_VLAN_10: dùng cho các entry kiểm soát dữ liệu lướt web của các user thuộc VLAN 10. Ta dùng entry permit nên ta sẽ diễn đạt time – range theo chiều ngược lại với yêu cầu: cho phép các user được lướt web ngoài giờ làm việc: từ 12g00 đến 13g29 mọi ngày trong tuần (weekdays).

R1(config)#time-range WEB_VLAN_10

R1(config-time-range)#periodic weekdays 12:00 to 13:29

Time – range này sẽ được áp vào cho 3 entry đầu tiên của ACL permit TCP port 80 (HTTP), TCP port 443 (HTTPS) và UDP port 53 (DNS) là những port phục vụ việc lướt web của user.

  • TELNET_VLAN_10: dùng cho entry kiểm soát telnet từ user 192.168.20.2 đến router R2. Căn cứ vào khoảng thời gian đã chỉ ra, ta viết một time – range dạng absolute để chỉ ra chính xác khoảng thời gian này.

R1(config)#time-range TELNET_VLAN_10

R1(config-time-range)#absolute start 00:00 11 July 2014 end 07:59 11 July 2014

  • Cuối cùng là time – range FTP_VLAN_10: quy định khoảng thời gian được phép truy nhập FTP vào server đặt tại R4 (192.168.20.2). Đây là một time – range sử dụng các entry periodic cho mọi tối 2, 4, 6 trong tuần từ 20g00 đến 22g00.

R1(config)#time-range FTP_VLAN_10

R1(config-time-range)#periodic Monday Wednesday Friday 20:00 to 21:59

Sau khi đã cấu hình xong, chúng ta thực hiện kiểm tra hoạt động của Time – based ACL .

Kiểm tra:

Đầu tiên, ta bật tính năng HTTP Server và FTP server trên router R4 (lưu ý rằng hiện Cisco đã gỡ bỏ tính năng FTP server ra khỏi các hệ điều hành hiện tại nên có thể có hoặc không có lệnh bật FTP server trên hệ điều hành mà chúng ta sử dụng):

R4(config)#ip http server

R4(config)#ftp-server enable

Ta thực hiện chỉnh lại giờ cho R1 để không khớp với bất kỳ khoảng thời gian nào trong các time – range ở trên:

R1#clock set 09:00:00 11 July 2014

Ta thực hiện thử các truy nhập từ VLAN 10:

R3#telnet 192.168.20.2 80 <- HTTP đến R4

Trying 192.168.20.2, 80 ...

% Destination unreachable; gateway or host down

 

R3#telnet 192.168.12.2 <- Telnet đến R2

Trying 192.168.12.2 ...

% Destination unreachable; gateway or host down

 

R3#telnet 192.168.20.2 21 <- FTP đến R4

Trying 192.168.20.2, 21 ...

% Destination unreachable; gateway or host down

Ta thấy, các truy nhập đều không thể thực hiện được vì nằm ngoài giờ quy định. Ta kiểm tra ACL trên R1:

R1#sh access-lists VLAN_10

Extended IP access list VLAN_10

    10 permit tcp any any eq www time-range WEB_VLAN_10 (inactive)

    20 permit tcp any any eq 443 time-range WEB_VLAN_10 (inactive)

    30 permit udp any any eq domain time-range WEB_VLAN_10 (inactive)

    40 permit tcp host 192.168.10.2 host 192.168.12.2 eq telnet time-range TELNET_VLAN_10 (inactive)

    50 permit tcp any any range ftp-data ftp time-range FTP_VLAN_10 (inactive)

Kết quả show cho thấy các entry đều đang inactive và vì vậy entry ngầm định “deny ip any any” sẽ drop tất cả các gói tin.

Ta hiệu chỉnh lại đồng hồ trên R1 cho việc lướt web:

R1#clock set 13:00:00 11 July 2014

Các dòng ACL liên quan đến việc lướt web đã được active:

R1#sh access-lists VLAN_10

Extended IP access list VLAN_10

    10 permit tcp any any eq www time-range WEB_VLAN_10 (active)

    20 permit tcp any any eq 443 time-range WEB_VLAN_10 (active)

    30 permit udp any any eq domain time-range WEB_VLAN_10 (active)

    40 permit tcp host 192.168.10.2 host 192.168.12.2 eq telnet time-range TELNET_VLAN_10 (inactive)

    50 permit tcp any any range ftp-data ftp time-range FTP_VLAN_10 (inactive)

Ta thử việc truy nhập web từ user R3 đến server R4:

R3#telnet 192.168.20.2 80

Trying 192.168.20.2, 80 ... Open

 

get

HTTP/1.1 400 Bad Request

Date: Fri, 01 Mar 2002 00:14:20 GMT

Server: cisco-IOS

Accept-Ranges: none

 

400 Bad Request

 

[Connection to 192.168.20.2 closed by foreign host]

R3#

Ta thấy rằng, khi đổi thời gian về đúng khoảng cho phép, việc truy nhập HTTP đã thành công. Ta kiểm tra ACL trên R1:

R1#sh access-lists VLAN_10

Extended IP access list VLAN_10

    10 permit tcp any any eq www time-range WEB_VLAN_10 (active) (13 matches)

    20 permit tcp any any eq 443 time-range WEB_VLAN_10 (active)

    30 permit udp any any eq domain time-range WEB_VLAN_10 (active)

    40 permit tcp host 192.168.10.2 host 192.168.12.2 eq telnet time-range TELNET_VLAN_10 (inactive)

    50 permit tcp any any range ftp-data ftp time-range FTP_VLAN_10 (inactive)

Ta thấy entry HTTP đã phát huy tác dụng và đã có gói tin match với entry này.

Ta tiếp tục kiểm tra hoạt động telnet bằng cách đổi đồng hồ về thời điểm mà telnet được cho phép:

R1#clock set 07:00:00 11 July 2014

Thực hiện telnet từ R3 (192.168.10.2) đến địa chỉ 192.168.12.2 của R2:

R3#telnet 192.168.12.2

Trying 192.168.12.2 ... Open

 

 

User Access Verification

 

Password:

R2>

Kiểm tra ACL trên R1:

R1#sh access-lists VLAN_10

Extended IP access list VLAN_10

    10 permit tcp any any eq www time-range WEB_VLAN_10 (inactive) (13 matches)

    20 permit tcp any any eq 443 time-range WEB_VLAN_10 (inactive)

    30 permit udp any any eq domain time-range WEB_VLAN_10 (inactive)

    40 permit tcp host 192.168.10.2 host 192.168.12.2 eq telnet time-range TELNET_VLAN_10 (active) (17 matches)

    50 permit tcp any any range ftp-data ftp time-range FTP_VLAN_10 (inactive)

Cuối cùng, chúng ta kiểm tra hoạt động FTP.

Đổi giờ thích hợp trên R1:

R1#clock set 21:00:00 11 July 2014

Jul 11 21:00:00.000: %SYS-6-CLOCKUPDATE: System clock has been updated from 07:08:09 UTC Fri Jul 11 2014 to 21:00:00 UTC Fri Jul 11 2014, configured from console by console.

Thực hiện truy nhập FTP đến R4 từ R3:

R3#telnet 192.168.20.2 21

Trying 192.168.20.2, 21 ... Open

220 R4 IOS-FTP server (version 1.00) ready.

Kết quả hiện thị ACL trên R1:

R1#sh access-lists VLAN_10

Extended IP access list VLAN_10

    10 permit tcp any any eq www time-range WEB_VLAN_10 (inactive) (13 matches)

    20 permit tcp any any eq 443 time-range WEB_VLAN_10 (inactive)

    30 permit udp any any eq domain time-range WEB_VLAN_10 (inactive)

    40 permit tcp host 192.168.10.2 host 192.168.12.2 eq telnet time-range TELNET_VLAN_10 (inactive) (17 matches)

    50 permit tcp any any range ftp-data ftp time-range FTP_VLAN_10 (active) (5 matches)

Như vậy, chúng ta đã hoàn tất việc cấu hình Time – based ACL trên router R1 để thực hiện được các yêu cầu đặt ra.

Bài viết về Time – based ACL đã kết thúc chuỗi bài viết về chủ đề Access Control List.

ACL là một công cụ cơ bản và được sử dụng đặc biệt nhiều của Cisco IOS. Nắm vững hoạt động và cấu hình thành thạo ACL sẽ giúp chúng ta thao tác hiệu quả hơn trên các dòng thiết bị cũng như chuẩn bị tốt hơn cho các kỳ thi chứng chỉ quốc tế của Cisco. 

TRUNG TÂM WAREN