Cơ chế hoạt động của CBAC
CBAC đưa ra khái niệm luật (rule). Một luật kiểm soát được tạo ra nhằm đặc tả giao thức nào bạn muốn CBAC giám sát. Khi đó, bạn có thể áp dụng luật này cho những giao tiếp cổng trên router và đặc tả hướng cho traffic cần được xem xét (in hoặc out). Chỉ những giao thức được đặc tả mới được xem xét bởi CBAC. Nếu packet bị từ chối bởi một ACL, packet này sẽ bị loại bỏ trước khi bị CBAC giám sát. Nghĩa là, một gói tin sẽ phải qua rào chặn là access-list trước. Nếu may mắn thoát khỏi vòng kiểm duyệt của ACL, gói tin sẽ bị kiểm tra bởi CBAC.
CBAC tạo ra những trạng thái mở tạm thời trong ACL ở các cổng trên router có sử dụng Cisco IOS firewall. Những trạng thái mở này được tạo ra khi những traffic đi ra từ hệ thống bên trong hệ thống mạng của bạn thông qua Cisco IOS firewall. Những trạng thái mở này vẫn cho phép traffic trên đường về mà bình thường sẽ bị chận. Nếu bạn đã từng làm việc với dynamic access list, trạng thái mở này chính là tính năng đó.
Điều này chỉ xảy ra nếu các traffic đi về là một phần của các phiên dữ liệu có nguồn gốc xuất phát từ bên trong hệ thống mạng và kích hoạt CBAC khi đi ra khỏi 1 giao tiếp cổng nào đó. Ví dụ :
Trong ví dụ trên, ACL ở hướng inbound tại cổng Fa0/1 được cấu hình chặn các traffic telnet, và không sử dụng outbound ACL tại cấu hình trên cổng Fa0/0. Khi yêu cầu kết nối Telnet từ Client đi qua Cisco IOS Firewall, CBAC tạo ra những trạng thái mở tạm thời cho inbound ACL tại cổng Fa0/1 nhằm cho phép traffic Telnet trở về cho Client.
CBAC giám sát và xem xét chỉ những kênh điều khiển trong các kết nối (không phải kênh dữ liệu). Ví dụ trong các session FTP bao gồm cả kênh điều khiển và kênh dữ liệu, tuy nhiên chỉ có kênh điều khiển bị xem xét.
CBAC giám sát những câu lệnh đặc trưng cho ứng dụng trong kênh điều khiển, nhận dạng và ngăn chặn những tấn công nhất định trong tầng ứng dụng.
Bất cứ khi nào một packet bị xem xét, một bảng trạng thái được cập nhật chứa thông tin về trạng thái của kết nối của packet. Traffic được cho phép đi trở về thông qua Cisco IOS Firewall là những packet được cấp quyền trong bảng trạng thái.
Ví dụ sau minh họa cho quá trình xem xét session passive FTP"
1. FTP client gửi ra ngoài một gói đồng bộ TCP (SYN) trên kênh điều khiển:
Client ----SYN----- --> Server
2. Firewall làm cho hợp lệ trong quy luật của mình nhằm cho phép kết nối và tạo ra trạng thái mở trong ACL:
Client <-- ----SYN ACK ----Server
3. Quá trình bắt tay thiết lập TCP thành công:
Client ----- ACK ----- --> Server
4. Khi câu lệnh ls được sử dụng, FTP client gửi câu lệnh PASV và LIST đến server
Client ----- PASV ----- --> Server
Server <-- ------ Address/port info ----- Server
Khi thấy bộ address / port trong reply cho câu lệnh PASV, firewall tạo ra trước một session và một trạng thái mở trong ACL của mình. Trạng thái mở này chỉ từ client đến server bởi vì client sẽ cố gắng kết nối đến server để tạo ra kênh dữ liệu như đặc tả trong Passive FTP.
5. FTP client gửi thông điệp SYN cho kết nối dữ liệu này:
Client ----- SYN DAT ----- --> server
6. Khi nhìn thấy gói đồng bộ SYN, firewall tạo ra những trạng thái mở cho phép thông điệp SYN ACK đáp ứng từ server:
Client --> -----SYN ACK ------ Server
Tạo ra những trạng thái mở có thể mất từ 5 đến 10 giây. Ít nhất 3 gói được trao đổi lẫn nhau giữa client và server khi người sử dụng dùng câu lệnh ls:
- PASV
- Đáp ứng đến PASV với thông tin địa chỉ /port
- Thông điệp SYN với địa chỉ/port mới.
Vấn đề CBAC xử lý các session UDP
Không giống với các sesion TCP, các session UDP không thiết lập kết nối trước khi truyền dữ liệu. Đặc tính này của các session UDP làm cho việc nhận dạng các packet cùng session trở nên khó hơn. Trong những trường hợp này, CBAC sử dụng các địa chỉ IP nguồn và đích và port ứng dụng và packet có được nhận dạng hay không ngay khi một packet UDP tương tự để xác định packet có cùng một session cụ thể nào không. "Ngay khi" có nghĩa là trong khoảng thời gian UDP idle được cấu hình trước.
Các dòng trong ACL
Cisco IOS phiên bản 12.3(4)T trở đi cung cấp một tính năng mới gọi là bỏ qua việc kiểm tra đối với ACL (ACL bypassing). Trước khi có tính năng này, một packet có thể bị kiểm tra qua 3 ACL: một dành cho input ACL, một dành cho output ACL, và một cho session kiểm soát. Khi tính năng bỏ qua việc kiểm tra đối với ACL được sử dụng, nó bỏ qua nhu cầu cần thiết cho các ACL input và output động. Bởi vì mỗi lần CBAC tạo ra một ACL động cho một session nào đó, điều này có nghĩa rằng những packet co trùng đúng với ACL thuộc về một phần của các session có sẵn, do đó được cho phép. Tính năng bỏ qua việc kiểm tra đối với ACL mặc định được thực hiện.
Các ACL động được tạo ra tạm thời không được lưu vào nvram.
Xử lý các session không hoàn tất (half-open)
Một session không hoàn tất là session được mở chỉ theo một hướng. Đối với traffic TCP, điều này có nghĩa là session không hoàn tất quá trình bắt tay 3 bước. Đối với traffic UDP, điều này có nghĩa là traffic trả về không nhận dạng.
CBAC có thể đánh giá tỷ lệ và số lượng những session không hoàn tất vài lần một phút. Nếu các giá trị thu thập được lớn hơn ngưỡng giá trị cho phép, firewall sẽ tự động xoá các session này, Quá trình xóa này có thể tiếp tục cho đến khi giá trị này trở lại giá trị thấp hơn giá trị ngưỡng được đặt ra.
Bạn có thể cài đặt giá trị ngưỡng cho số lượng và tỷ lệ các session không hoàn tất bằng cách dùng các câu lệnh max-incomplete high, max-incomplete low, one-minute high, và one-minute low.
Các hạn chế của CBAC
- Nếu bạn cấu hình lại ACL của mình khi bạn cấu hình CBAC, nên biết rằng nếu ACL của bạn khóa traffic TFTP vào một cổng, bạn sẽ không thể thực hiện netboot qua cổng này.
- CBAC hoạt động cho các gói IP và một số lượng nhỏ các gói trong giao thức ICMP. Chỉ có TCP, UDP và các packet ICMP phổ biến nhất được giám sát. Các traffc IP khác, như là các quảng bá giao thức tìm đường không thể bị xem xét bằng CBAC mà thay vào đó nên bị lọc bằng extended ACL.
- Việc xem xét H.323v2 và giao thức Real Time Streaming Protocol (RTSP) chỉ hỗ trợ cho các ứng dụng multimedia client/server: Cisco IP/TV, RealNetworks RealAudio G2 Player, và Apple QuickTime 4.
Các giao thức hỗ trợ:
Bạn có thể cấu hình CBAC để xem xét tất cả các session TCP và UDP. Bạn cũng có thể cấu hình CBAC xem xét chi tiết các giao thức ở tầng ứng dụng như sau:
- Các session TCP, không cần quan tâm giao thức ở tầng ứng dụng là gì
- Các session UDP, không cần quan tâm giao thức ở tầng ứng dụng là gì
- FTP
- SMTP
- SQL*NET
- TFTP
- Các câu lệnh trong UNIX R (rlogin, rexec, rsh)
- RPC (Sun RPC, không phải là DCE RPC hoặc Microsoft RPC)
- HTTP (Chặn Java)
- Microsoft NetShow
- RealAudio
- StreamWorks
- VDOLive
- CU-SeeMe
- H.323
- RTSP
CBAC đưa ra khái niệm luật (rule). Một luật kiểm soát được tạo ra nhằm đặc tả giao thức nào bạn muốn CBAC giám sát. Khi đó, bạn có thể áp dụng luật này cho những giao tiếp cổng trên router và đặc tả hướng cho traffic cần được xem xét (in hoặc out). Chỉ những giao thức được đặc tả mới được xem xét bởi CBAC. Nếu packet bị từ chối bởi một ACL, packet này sẽ bị loại bỏ trước khi bị CBAC giám sát. Nghĩa là, một gói tin sẽ phải qua rào chặn là access-list trước. Nếu may mắn thoát khỏi vòng kiểm duyệt của ACL, gói tin sẽ bị kiểm tra bởi CBAC.
CBAC tạo ra những trạng thái mở tạm thời trong ACL ở các cổng trên router có sử dụng Cisco IOS firewall. Những trạng thái mở này được tạo ra khi những traffic đi ra từ hệ thống bên trong hệ thống mạng của bạn thông qua Cisco IOS firewall. Những trạng thái mở này vẫn cho phép traffic trên đường về mà bình thường sẽ bị chận. Nếu bạn đã từng làm việc với dynamic access list, trạng thái mở này chính là tính năng đó.
Điều này chỉ xảy ra nếu các traffic đi về là một phần của các phiên dữ liệu có nguồn gốc xuất phát từ bên trong hệ thống mạng và kích hoạt CBAC khi đi ra khỏi 1 giao tiếp cổng nào đó. Ví dụ :
Trong ví dụ trên, ACL ở hướng inbound tại cổng Fa0/1 được cấu hình chặn các traffic telnet, và không sử dụng outbound ACL tại cấu hình trên cổng Fa0/0. Khi yêu cầu kết nối Telnet từ Client đi qua Cisco IOS Firewall, CBAC tạo ra những trạng thái mở tạm thời cho inbound ACL tại cổng Fa0/1 nhằm cho phép traffic Telnet trở về cho Client.
CBAC giám sát và xem xét chỉ những kênh điều khiển trong các kết nối (không phải kênh dữ liệu). Ví dụ trong các session FTP bao gồm cả kênh điều khiển và kênh dữ liệu, tuy nhiên chỉ có kênh điều khiển bị xem xét.
CBAC giám sát những câu lệnh đặc trưng cho ứng dụng trong kênh điều khiển, nhận dạng và ngăn chặn những tấn công nhất định trong tầng ứng dụng.
Bất cứ khi nào một packet bị xem xét, một bảng trạng thái được cập nhật chứa thông tin về trạng thái của kết nối của packet. Traffic được cho phép đi trở về thông qua Cisco IOS Firewall là những packet được cấp quyền trong bảng trạng thái.
Ví dụ sau minh họa cho quá trình xem xét session passive FTP"
1. FTP client gửi ra ngoài một gói đồng bộ TCP (SYN) trên kênh điều khiển:
Client ----SYN----- --> Server
2. Firewall làm cho hợp lệ trong quy luật của mình nhằm cho phép kết nối và tạo ra trạng thái mở trong ACL:
Client <-- ----SYN ACK ----Server
3. Quá trình bắt tay thiết lập TCP thành công:
Client ----- ACK ----- --> Server
4. Khi câu lệnh ls được sử dụng, FTP client gửi câu lệnh PASV và LIST đến server
Client ----- PASV ----- --> Server
Server <-- ------ Address/port info ----- Server
Khi thấy bộ address / port trong reply cho câu lệnh PASV, firewall tạo ra trước một session và một trạng thái mở trong ACL của mình. Trạng thái mở này chỉ từ client đến server bởi vì client sẽ cố gắng kết nối đến server để tạo ra kênh dữ liệu như đặc tả trong Passive FTP.
5. FTP client gửi thông điệp SYN cho kết nối dữ liệu này:
Client ----- SYN DAT ----- --> server
6. Khi nhìn thấy gói đồng bộ SYN, firewall tạo ra những trạng thái mở cho phép thông điệp SYN ACK đáp ứng từ server:
Client --> -----SYN ACK ------ Server
Tạo ra những trạng thái mở có thể mất từ 5 đến 10 giây. Ít nhất 3 gói được trao đổi lẫn nhau giữa client và server khi người sử dụng dùng câu lệnh ls:
- PASV
- Đáp ứng đến PASV với thông tin địa chỉ /port
- Thông điệp SYN với địa chỉ/port mới.
Vấn đề CBAC xử lý các session UDP
Không giống với các sesion TCP, các session UDP không thiết lập kết nối trước khi truyền dữ liệu. Đặc tính này của các session UDP làm cho việc nhận dạng các packet cùng session trở nên khó hơn. Trong những trường hợp này, CBAC sử dụng các địa chỉ IP nguồn và đích và port ứng dụng và packet có được nhận dạng hay không ngay khi một packet UDP tương tự để xác định packet có cùng một session cụ thể nào không. "Ngay khi" có nghĩa là trong khoảng thời gian UDP idle được cấu hình trước.
Các dòng trong ACL
Cisco IOS phiên bản 12.3(4)T trở đi cung cấp một tính năng mới gọi là bỏ qua việc kiểm tra đối với ACL (ACL bypassing). Trước khi có tính năng này, một packet có thể bị kiểm tra qua 3 ACL: một dành cho input ACL, một dành cho output ACL, và một cho session kiểm soát. Khi tính năng bỏ qua việc kiểm tra đối với ACL được sử dụng, nó bỏ qua nhu cầu cần thiết cho các ACL input và output động. Bởi vì mỗi lần CBAC tạo ra một ACL động cho một session nào đó, điều này có nghĩa rằng những packet co trùng đúng với ACL thuộc về một phần của các session có sẵn, do đó được cho phép. Tính năng bỏ qua việc kiểm tra đối với ACL mặc định được thực hiện.
Các ACL động được tạo ra tạm thời không được lưu vào nvram.
Xử lý các session không hoàn tất (half-open)
Một session không hoàn tất là session được mở chỉ theo một hướng. Đối với traffic TCP, điều này có nghĩa là session không hoàn tất quá trình bắt tay 3 bước. Đối với traffic UDP, điều này có nghĩa là traffic trả về không nhận dạng.
CBAC có thể đánh giá tỷ lệ và số lượng những session không hoàn tất vài lần một phút. Nếu các giá trị thu thập được lớn hơn ngưỡng giá trị cho phép, firewall sẽ tự động xoá các session này, Quá trình xóa này có thể tiếp tục cho đến khi giá trị này trở lại giá trị thấp hơn giá trị ngưỡng được đặt ra.
Bạn có thể cài đặt giá trị ngưỡng cho số lượng và tỷ lệ các session không hoàn tất bằng cách dùng các câu lệnh max-incomplete high, max-incomplete low, one-minute high, và one-minute low.
Các hạn chế của CBAC
- Nếu bạn cấu hình lại ACL của mình khi bạn cấu hình CBAC, nên biết rằng nếu ACL của bạn khóa traffic TFTP vào một cổng, bạn sẽ không thể thực hiện netboot qua cổng này.
- CBAC hoạt động cho các gói IP và một số lượng nhỏ các gói trong giao thức ICMP. Chỉ có TCP, UDP và các packet ICMP phổ biến nhất được giám sát. Các traffc IP khác, như là các quảng bá giao thức tìm đường không thể bị xem xét bằng CBAC mà thay vào đó nên bị lọc bằng extended ACL.
- Việc xem xét H.323v2 và giao thức Real Time Streaming Protocol (RTSP) chỉ hỗ trợ cho các ứng dụng multimedia client/server: Cisco IP/TV, RealNetworks RealAudio G2 Player, và Apple QuickTime 4.
Các giao thức hỗ trợ:
Bạn có thể cấu hình CBAC để xem xét tất cả các session TCP và UDP. Bạn cũng có thể cấu hình CBAC xem xét chi tiết các giao thức ở tầng ứng dụng như sau:
- Các session TCP, không cần quan tâm giao thức ở tầng ứng dụng là gì
- Các session UDP, không cần quan tâm giao thức ở tầng ứng dụng là gì
- FTP
- SMTP
- SQL*NET
- TFTP
- Các câu lệnh trong UNIX R (rlogin, rexec, rsh)
- RPC (Sun RPC, không phải là DCE RPC hoặc Microsoft RPC)
- HTTP (Chặn Java)
- Microsoft NetShow
- RealAudio
- StreamWorks
- VDOLive
- CU-SeeMe
- H.323
- RTSP