Cấu hình Router Cisco thành Firewall sử dụng CBAC (Context-Based Access Control)

Thảo luận trong 'Basic Network' bắt đầu bởi khoaTGM, 22/8/17.

  1. khoaTGM

    khoaTGM Member

    Context Based Access Control (CBAC) là một tính năng được tích hợp trên IOS của Router Cisco cho phép biến router thành một tường lửa đơn giản thực hiện được một số chính sách về lọc dữ liệu đi ngang qua router.
    CBAC – Context Based Access Control cung cấp cho IOS của router một cơ chế stateful firewall. CBAC định nghĩa một inspection rule, trong đó mọi giao thức được chỉ ra trong inspection rule sẽ được phép đi qua router firewall. Đi qua có nghĩa là đi được từ trong ra ngoài và dữ liệu trả về đi được từ ngoài vào trong cho một flow cụ thể nào đó. Để làm được điều này, CBAC theo dõi mọi luồng dữ liệu của giao thức được chỉ ra trong inspection rule và tạo ra ảnh phản xạ của flow này trong một By – pass access – list đặc biệt được cài vào đường trung chuyển dữ liệu theo chiều ngược lại để cho phép trả về. Do đó, dù có một ACL tường minh được gán trên cổng
    router chặn dữ liệu từ ngoài vào trong, dữ liệu trả về của flow được inspect vẫn có thể đi vào được bên trong.

    CBAC gồm hai thành phần như sau:

    • Inspection rule: Chỉ định các giao thức được cho phép đi qua firewall khi có khởi tạo từ bên trong đi ra bên ngoài. Inspection rule này phải được áp lên một cổng nào đó trên lộ trình của các flow theo chiều khởi tạo (từ trong ra ngoài). Câu lệnh cấu hình khai báo inspection rule:

    o Khai báo rule:

    R(config)# ip inspect name Tên_rule Protocol …

    o Áp rule lên cổng:

    R(config-if)# ip inspect name Tên_rule {in|out}

    • Một ACL chặn tất cả các loại traffic theo chiều ngược lại (từ out về in). ACL này sẽ được bypasss bởi các gói trả về của các giao thức được chỉ ra trong inspection rule.

    • Giống như với outbound access – list, CBAC không có tác dụng với dữ liệu xuất phát từ chính router và vì thế không tạo ra ảnh phản xạ cho các luồng dữ liệu này dẫn đến dữ liệu loại này trả về không được. Để khắc phục, ta phải tạo thêm các entry trả về tương ứng trên access – list inbound ở phía cổng vào. Trong câu lab này của chúng ta, một entry ACL đã được thêm vào để cho phép lưu lượng RIP được đi vào trên cổng F0/0 của R2.

    Trong bài viết này, chúng ta sẽ cùng tìm hiểu về loại IOS Firewall này. Dưới đây là bài lab ví dụ.

    Sơ đồ

    upload_2017-8-22_11-4-40.jpeg

    Sơ đồ bài lab ví dụ.

    • Trong bài lab này, chúng ta sẽ cấu hình R2 thành một firewall thực thi một số rule lên các lưu lượng trao đổi giữa R1 và R3 mà đi ngang qua R2.

    Thực hiện

    Bước 1: Cấu hình ban đầu

    • Đặt địa chỉ IP trên các cổng của các router theo quy hoạch IP được chỉ ra trên hình.
    • Chạy một hình thức định tuyến bất kỳ đảm bảo mọi địa chỉ trên sơ đồ thấy nhau.

    Cấu hình

    Trên R1:

    R1(config)#interface loopback 0
    R1(config-if)#ip address 172.16.1.1 255.255.255.0
    R1(config-if)#exit
    R1(config)#interface f0/0
    R1(config-if)#no shutdown
    R1(config-if)#ip address 172.16.12.1 255.255.255.0
    R1(config-if)#exit
    R1(config)#router rip
    R1(config-router)#version 2
    R1(config-router)#network 172.16.0.0
    R1(config-router)#exit


    Trên R2:

    R2(config)#interface loopback 0
    R2(config-if)#ip address 172.16.2.1 255.255.255.0
    R2(config-if)#exit
    R2(config)#interface f0/0
    R2(config-if)#no shutdown
    R2(config-if)#ip address 172.16.12.2 255.255.255.0
    R2(config-if)#exit
    R2(config)#interface f0/1
    R2(config-if)#no shutdown
    R2(config-if)#ip address 172.16.23.2 255.255.255.0
    R2(config-if)#exit
    R2(config)#router rip
    R2(config-router)#version 2
    R2(config-router)#network 172.16.0.0

    R2(config-router)#exit

    Trên R3:

    R3(config)#interface loopback 0
    R3(config-if)#ip address 172.16.3.1 255.255.255.0
    R3(config-if)#exit
    R3(config)#interface f0/1
    R3(config-if)#no shutdown
    R3(config-if)#ip address 172.16.23.3 255.255.255.0
    R3(config-if)#exit
    R3(config)#router rip
    R3(config-router)#version 2
    R3(config-router)#network 172.16.0.0
    R3(config-router)#exit


    Kiểm tra

    Ta kiểm tra rằng định tuyến đã hội tụ trên các router:

    R1#show ip route rip
    172.16.0.0/24 is subnetted, 5 subnets
    R 172.16.23.0 [120/1] via 172.16.12.2, 00:00:19, FastEthernet0/0
    R 172.16.2.0 [120/1] via 172.16.12.2, 00:00:19, FastEthernet0/0
    R 172.16.3.0 [120/2] via 172.16.12.2, 00:00:19, FastEthernet0/0


    R2#show ip route rip
    172.16.0.0/24 is subnetted, 5 subnets
    R 172.16.1.0 [120/1] via 172.16.12.1, 00:00:10, FastEthernet0/0
    R 172.16.3.0 [120/1] via 172.16.23.3, 00:00:02, FastEthernet0/1


    R3#show ip route rip
    172.16.0.0/24 is subnetted, 5 subnets
    R 172.16.12.0 [120/1] via 172.16.23.2, 00:00:18, FastEthernet0/1
    R 172.16.1.0 [120/2] via 172.16.23.2, 00:00:18, FastEthernet0/1
    R 172.16.2.0 [12 0/1] via 172.16.23.2, 00:00:18, FastEthernet0/1


    Bước 2: Cấu hình CBAC

    • Cấu hình R2 thành một CBAC firewall. Cổng F0/1 của R2 đóng vai trò là cổng đấu nối vào mạng bên trong cần được bảo vệ và cổng F0/0 của R2 đóng vai trò là cổng đấu nối đi ra mạng bên ngoài (R1 là router bên ngoài, R3 là router bên trong).
    • R2 thực hiện chính sách chặn dữ liệu như sau:
    o Mọi lưu lượng xuất phát từ phía mạng bên ngoài đi vào mạng bên trong đều bị cấm.
    o Các host ở mạng bên trong có thể đi ra bên ngoài bằng ICMP, TFTP, Telnet và SSH.
    o Khi thực hiện cấu hình chính sách trên, đảm bảo rằng định tuyến vẫn hoạt động bình thường.

    Cấu hình

    Trên R2:

    !Khai báo inspection rule có tên là INSPECT cho các giao thức được yêu cầu
    R2(config)#ip inspect name INSPECT icmp
    R2(config)#ip inspect name INSPECT tftp
    R2(config)#ip inspect name INSPECT telnet
    R2(config)#ip inspect name INSPECT ssh


    Khai báo ACL chặn mọi lưu lượng từ bên ngoài đi vào bên trong, ACL cần phải cho qua RIP để hoạt động định tuyến diễn ra bình thường

    R2(config)#ip access-list extended INBOUND
    R2(config-ext-nacl)#permit udp any any eq 520
    R2(config-ext-nacl)#deny ip any any
    R2(config-ext-nacl)#exit


    Áp Inspection rule và ACL lên cổng F0/0
    R2(config)#interface f0/0
    R2(config-if)#ip inspect INSPECT out
    R2(config-if)#ip access-group INBOUND in
    R2(config-if)#exit


    Kiểm tra

    Ta kiểm tra các inspection rule đã cấu hình trên R2:

    R2#show ip inspect config
    Session audit trail is disabled
    Session alert is enabled
    one-minute (sampling period) thresholds are [unlimited : unlimited] connections
    max-incomplete sessions thresholds are [unlimited : unlimited]
    max-incomplete tcp connections per host is unlimited. Block-time 0 minute.
    tcp synwait-time is 30 sec -- tcp finwait-time is 5 sec
    tcp idle-time is 3600 sec -- udp idle-time is 30 sec
    tcp reassembly queue length 16; timeout 5 sec; memory-limit 1024 kilo bytes
    dns-timeout is 5 sec
    Inspection Rule Configuration
    Inspection name INSPECT
    icmp alert is on audit-trail is off timeout 10
    tftp alert is on audit-trail is off timeout 30
    telnet alert is on audit-trail is off timeout 3600
    ssh alert is on audit-trail is off timeout 30


    R2#show ip inspect interfaces

    Interface Configuration
    Interface FastEthernet0/0
    Inbound inspection rule is not set
    Outgoing inspection rule is INSPECT
    icmp alert is on audit-trail is off timeout 10
    tftp alert is on audit-trail is off timeout 30
    telnet alert is on audit-trail is off timeout 3600
    ssh alert is on audit-trail is off timeout 30
    Inbound access list is INBOUND
    Outgoing access list is not set


    Ta kiểm tra rằng R2 vẫn chạy định tuyến bình thường với R1:

    R2#show ip protocol
    Routing Protocol is "rip"
    Outgoing update filter list for all interfaces is not set
    Incoming update filter list for all interfaces is not set
    Sending updates every 30 seconds, next due in 22 seconds
    Invalid after 180 seconds, hold down 180, flushed after 240
    Redistributing: rip
    Default version control: send version 2, receive version 2
    Interface Send Recv Triggered RIP Key-chain
    FastEthernet0/0 2 2
    FastEthernet0/1 2 2
    Loopback0 2 2
    Automatic network summarization is in effect
    Maximum path: 4
    Routing for Networks:
    172.16.0.0
    Routing Information Sources:
    Gateway Distance Last Update
    172.16.23.3 120 00:00:15
    172.16.12.1 120 00:00:01
    Distance: (default is 120)


    Bên trong ping ra được bên ngoài nhưng bên ngoài không ping được bên trong:

    R3#ping 172.16.1.1
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds:
    !!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 56/74/100 ms


    R1#ping 172.16.3.1
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 172.16.3.1, timeout is 2 seconds:
    U.U.U
    Success rate is 0 percent (0/5)


    Ta cấu hình Telnet và SSH trên R1 và R3 để kiểm tra hoạt động Telnet và SSH ngang qua Firewall:

    R1-3(config)#username cisco password cisco
    R1-3(config)#ip domain-name examplelab.com
    R1-3(config)#crypto key generate rsa


    The name for the keys will be: R1-3.examplelab.com
    Choose the size of the key modulus in the range of 360 to 2048 for your

    General Purpose Keys. Choosing a key modulus greater than 512 may take a few minutes.
    How many bits in the modulus [512]: 1024 % Generating 1024 bit RSA keys, keys will be non-exportable...[OK]
    *Mar 1 00:02:44.779: %SSH-5-ENABLED: SSH 1.99 has been enabled

    R1-3(config)#line vty 0 4
    R1-3(config-line)#login local
    R1-3(config-line)#transport input telnet ssh
    R1-3(config-line)#exit


    Từ bên trong telnet được ra bên ngoài:

    R3#telnet 172.16.1.1
    Trying 172.16.1.1 ... Open
    User Access Verification
    Username: cisco
    Password: <- Nhập password là “cisco”
    R1>


    Từ bên ngoài không telnet được vào bên trong:

    R1#telnet 172.16.3.1
    Trying 172.16.3.1 ...
    % Destination unreachable; gateway or host down


    Từ bên trong SSH được ra bên ngoài:

    R3#ssh -l cisco 172.16.1.1
    Password: <- Nhập password là “cisco”
    R1>


    Từ bên ngoài không SSH được vào bên trong:

    R1#ssh -l cisco 172.16.3.1
    % Destination unreachable; gateway or host down


    Thực hiện cấu hình bật TFTP server trên các router R1 và R3 để kiểm tra hoạt động TFTP ngang qua firewall:

    R1(config)#tftp-server system:running-config alias R1_config
    R3(config)#tftp-server system:running-config alias R3_config


    Ở bên trong có thể download file từ bên ngoài bằng TFTP:

    R3#copy tftp://172.16.1.1/R1_config null:
    Accessing tftp://172.16.1.1/R1_config...
    Loading R1_config from 172.16.1.1 (via FastEthernet0/1): !
    [OK - 1117 bytes]
    1117 bytes copied in 4.312 secs (259 bytes/sec)


    Bên ngoài không thể truy nhập TFTP vào bên trong:

    R1#copy tftp://172.16.3.1/R3_config null:
    Accessing tftp://172.16.3.1/R3_config...
    %Error opening tftp://172.16.3.1/R3_config (Timed out)


    Đến đây, chúng ta đã hoàn tất cấu hình và kiểm tra hoạt động của CBAC trên bộ định tuyến Cisco Router.


    Chúc các bạn thành công !

    Bài viết liên quan:
    Cấu hình tường lửa trên Router Cisco với ZBF
     
  2. khoaTGM

    khoaTGM Member

    Cấu hình Bộ định tuyến Cisco Router với Chức năng Tường lửa – CBAC (Context-Based Access Control)

    Đối với chức năng tường lửa ngân sách thấp, bộ định tuyến Cisco có phiên bản IOS thích hợp có thể hoạt động như một tường lửa mạng cung cấp khả năng kiểm tra giao thức trạng thái bằng cách sử dụng tính năng Kiểm soát truy cập dựa trên ngữ cảnh (CBAC). Nhiều người sử dụng Danh sách kiểm soát truy cập(ACL) thông thường trên bộ định tuyến Cisco để lọc và bảo vệ lưu lượng. Tuy nhiên, một ACL bình thường chỉ là một cơ chế lọc gói tĩnh và không có gì khác.

    Với cấu hình CBAC, bộ định tuyến hoạt động giống như một bức tường lửa. Nghĩa là, nó kiểm tra các giao thức và phiên và giữ trạng thái của kết nối trong bộ nhớ. Điều này có nghĩa là một gói tin gửi đi (từ bên trong mạng ra bên ngoài) được kiểm tra và trạng thái kết nối của phiên được lưu trong bộ nhớ. Gói trả lời thuộc về kết nối đi ban đầu được phép đi qua bộ định tuyến / tường lửa và đến hệ thống nội bộ nơi khởi tạo kết nối. Chức năng trạng thái này đạt được nhờ cơ chế CBAC của Tường lửa IOS bằng cách mở các holes tạm thời trên Danh sách truy cập để cho phép các gói trả lời.

    Một ACL bình thường kiểm tra lưu lượng lên đến lớp truyền tải. Mặt khác, CBAC kiểm tra lưu lượng đến lớp ứng dụng để tìm hiểu về trạng thái của phiên và áp dụng tính năng lọc tường lửa trên ứng dụng cụ thể. Các giao thức được CBAC hỗ trợ để kiểm tra như sau:

    Giao thức CUSeeMe, ftp, h323, http, rcmd, realaudio, rpc, smtp, sqlnet, streamworks, tcp, tftp, udp, vdolive. CBAC cũng giúp bảo vệ chống lại các cuộc tấn công DoS như SYN- floods hoặc các cuộc tấn công phân mảnh.

    CBAC được áp dụng trong hoặc ngoài trên một giao diện bộ định tuyến cụ thể. CBAC áp dụng “Inbound” trên một giao diện kiểm tra lưu lượng truy cập vào giao diện và CBAC áp dụng “Outbound” trên một giao diện kiểm tra lưu lượng ra khỏi giao diện. CBAC hợp tác với ACL được áp dụng trên cùng một giao diện để cung cấp chức năng trạng thái tường lửa mà chúng tôi đã mô tả ở trên. Hãy xem một ví dụ đơn giản bên dưới.
    [​IMG]
    Trong hình trên, giả sử rằng có một ACL gửi đến được áp dụng trên S0 trên bộ định tuyến. ACL được cấu hình để chặn lưu lượng Telnet bắt đầu từ bên ngoài. Cũng giả định rằng có một quy tắc CBAC được áp dụng “hướng đi” trên S0. Người dùng nội bộ (User1) khởi tạo phiên Telnet từ bên trong ra bên ngoài. Khi yêu cầu kết nối cho phiên Telnet của User1 đi qua tường lửa, CBAC sẽ kiểm tra lưu lượng Telnet khi thoát khỏi giao diện S0 và tạo một lỗ mở tạm thời trong danh sách truy cập đến tại S0 để cho phép trả lại lưu lượng Telnet cho phiên Telnet của User1. (Nếu cùng một danh sách truy cập được áp dụng cho cả S0 và S1, thì cách mở giống nhau sẽ xuất hiện ở cả hai giao diện.)

    Lưu ý: CBAC kiểm tra lưu lượng đi từ một giao diện, sẽ tạo các lỗ mở tạm thời trên Danh sách truy cập được áp dụng Inbound trên giao diện. Điều này là cần thiết để cho phép các gói trả về đi qua ACL.

    Hãy xem một ví dụ cấu hình bên dưới để có cái nhìn rõ hơn.

    Cấu hình:

    Tham khảo sơ đồ bên dưới:
    [​IMG]
    Có một bộ định tuyến Cisco Router biên giới kết nối mạng LAN nội bộ 192.168.1.0/24 với Internet. Có một địa chỉ IP công cộng(public) tĩnh 50.50.50.1 trên giao diện Serial0 / 0. Ngoài ra, có một phân đoạn DMZ (giao diện FE0 / 0) lưu trữ Máy chủ Web DMZ 10.1.1.1. Chúng ta chỉ muốn cho phép truy cập từ Internet tới Máy chủ Web. Sử dụng NAT tĩnh để ẩn địa chỉ riêng của máy chủ Web đằng sau địa chỉ công cộng(public). Ngoài ra, sử dụng PAT trên giao diện S0 / 0 cho tất cả các giao tiếp ra ngoài từ mạng LAN nội bộ đến internet.

    Hãy xem cấu hình bên dưới:

    ! Create the outbound CBAC inspection rules
    ip inspect name CBAC-IN-OUT tcp
    ip inspect name CBAC-IN-OUT ftp
    ip inspect name CBAC-IN-OUT h323
    ip inspect name CBAC-IN-OUT rcmd
    ip inspect name CBAC-IN-OUT http
    ip inspect name CBAC-IN-OUT netshow
    ip inspect name CBAC-IN-OUT realaudio
    ip inspect name CBAC-IN-OUT rtsp
    ip inspect name CBAC-IN-OUT sqlnet
    ip inspect name CBAC-IN-OUT streamworks
    ip inspect name CBAC-IN-OUT tftp
    ip inspect name CBAC-IN-OUT udp
    ip inspect name CBAC-IN-OUT vdolive

    ! Create the inbound CBAC to inspect inbound HTTP
    ip inspect name CBAC-OUT-IN http

    ! DMZ interface
    interface FastEthernet0/0
    ip address 10.1.1.254 255.255.255.0
    ip nat inside
    full-duplex
    no cdp enable
    !
    ! Internal LAN interface
    interface FastEthernet0/1
    ip address 192.168.1.254 255.255.255.0
    ip nat inside
    full-duplex
    no cdp enable
    !

    ! External Internet Interface
    ! Notice that we apply an inbound ACL and CBAC rules for both in and out inspection

    interface Serial0/0
    description CONNECTED TO INTERNET
    bandwidth 1024
    ip address 50.50.50.1 255.255.255.252
    ip access-group FIREWALL in
    ip nat outside
    ip inspect CBAC-OUT-IN in
    ip inspect CBAC-IN-OUT out

    ip nat inside source list 122 interface Serial0/0 overload
    ip nat inside source static tcp 10.1.1.1 80 50.50.50.1 80 extendable no-alias
    ip classless
    ip route 0.0.0.0 0.0.0.0 50.50.50.2

    ! This ACL will be used by the CBAC out rule to open temporary holes for return traffic
    ip access-list extended FIREWALL
    permit icmp any any echo-reply
    permit tcp any host 50.50.50.1 eq 80
    deny ip any any log

    access-list 122 permit ip 192.168.1.0 0.0.0.255 any

    Trên đây là cấu hình hoàn chỉnh theo sơ đồ để biến Cisco Router thành Firewall cơ bản với tính năng CBAC.

    Cám ơn các bạn đã theo dõi bài viết.

    Bài viết liên quan: Cấu hình tường lửa trên Router Cisco với ZBF
     

trang này