Lọc theo dịch vụ:

Một phần của tài liệu Internet và các dịch vụ trên internet (Trang 56 - 63)

II. một số kiểu firewall thông dụng

b.Lọc theo dịch vụ:

Song song với phơng pháp lọc bằng địa chỉ thì lọc gói còn có một hình thức khác phức tạp hơn là lọc theo dịch vụ. Để hiểu rõ bản chất của phép lọc này ta hãy tìm hiểu hai khái niệm trong TCP/IP là số hiệu giao thức (Protocol Number)

cổng (Port).

Số hiệu giao thức là một byte nằm trong word thứ 3 của header khung dữ liệu. Giá trị này đợc IP (Internet Protocol) sử dụng để xác định các giao thức trong lớp vận chuyển (Transport Layer) nhằm đảm bảo truyền dữ liệu chính xác giữa 2 lớp. Trong các hệ thống Unix, các giao thức và số hiệu tơng ứng đợc lu giữ trong file /etc/protocol nh sau:

Giao thức Số liệu Chú thích

ip 0 Internet Protocol

icmp 1 Internet Control Message Protocol igmp 2 Internet Group Multicast Protocol

ggp 3 Gateway - Gateway Protocol

tcp 6 Transmission Control Protocol

pup 12 PARC Universal Packet Protocol

udp 17 User Datagram Protocol

... ... ....

Các giao thức này đến lợt mình lại sử dụng các cổng để định nghĩa tiến trình (Process) của ứng dụng hay các dịch vụ ở lớp trên. Nh vậy cổng nguồn xác định tiến trình đã gửi gói dữ liệu đi và cổng đích là tiến trình của ứng dụng sẽ nhận gói dữ liệu. Các giá trị này là số 16-bit nằm trong word đầu tiên của header các gói TCP hay UDP. Thông thờng các cổng từ 0 đến 1023 đợc gán cho các dịch vụ server (Telnet Server, Mail Server...) còn các cổng trên 1023 đợc dùng bởi Client. Dịch vụ và cổng tơng ứng đợc lu trong file /etc/serviecs trong Unix có dạng nh sau:

Echo 7/udp Echo 7/tcp Systat 11/tcp Netstat 15/tcp ftp-data 20/tcp ftp 21/tcp telnet 23/tcp Smtp 25/tcp Time 37/tcp Time 37/udp Name 42/udp Whois 43/tcp Domain 53/tcp Domain 53/tcp Hostnames 101/tcp .... ....

Nh vậy để lọc theo dịch vụ thì thực chất là ta lọc các gói dữ liệu dựa vào số hiệu cổng nguồn và cổng đích của chúng. Ta sẽ sử dụng dịch vụ Telnet làm ví dụ vì đây là dịch vụ đợc sử dụng rộng rãi, tơng đối đơn giản và nhìn từ phía lọc gói thì Telnet này tiêu biểu cho một vài dịch vụ khác nh SMTP (Simple Mail Transfer Protocol) hay NNTP (Network News Transfer Protocol)... Telnet cho phép ngời dùng truy nhập từ xa vào một hệ thống nào đó giống nh ngời này có một thiết bị đầu cuối nối trực tiếp vào hệ thống. Chúng ta sẽ xem xét cả 2 chiều của dịch vụ này: Telnet ra ngoài và Telnet vào trong.

Dịch vụ Telnet ra ngoài:

Trong dịch vụ này, một Client (một ngời dùng) trong mạng nội bộ truy nhập vào một server ở xa. Các gói đi ra chứa đựng dòng lệnh ngời dùng gõ vào từ bàn phím và có những đặc điểm sau:

- Địa chỉ IP nguồn là địa chỉ của trạm ngời dùng trong mạng địa phơng. - Địa chỉ IP đích là địa chỉ của server trong mạng bên ngoài.

- Telnet là dịch vụ dựa trên TCP nên gói dữ liệu là loại TCP. - Cổng TCP đích là 23, là cổng mà server Telnet sử dụng. - Cổng nguồn là 1 số bất kỳ lớn hơn 1023 (tạm gọi là “Y”).

- Gói đầu tiên thiết lập liên kết có bit ACK = 0, các gói còn lại bằng 1.

Các gói đi vào của dịch vụ này chứa dữ liệu sẽ hiển thị trên màn hình của ng- ời dùng (Ví dụ, dấu nhắc “Login: “) và có đặc điểm sau:

- Địa chỉ IP đích là điạ chỉ của trạm ngời dùng trong mạng địa phơng. - Địa chỉ IP nguồn là địa chỉ của server trong mạng bên ngoài.

- Gói dữ liệu thuộc loại TCP.

- Cổng TCP nguồn là 23, là cổng của Server Telnet. - Cổng đích chính là cổng nguồn của gói đi ra (“Y”).

Mọi gói vào sẽ có bit ACK = 1 vì không có gói thiết lập liên kết.

Trong phần header của các gói vào và ra ta sẽ thấy địa chỉ nguồn và đích cũng nh cổng nguồn và đích hoán đổi cho nhau. Các phiên bản BSD của hệ điều hành Unix dành riêng cho các cổng từ 0 đến 1023 cho root dùng trong mạng nội bộ. Vì vậy các cổng này thờng dùng bởi Server chứ không phải là Client. Các hệ điều hành khác kể cả Macintos và MS-DOS (là những hệ điều hành không phân quyền sử dụng) cũng tuân theo qui tắc này. Khi một chơng trình Client cần dùng một cổng thì nó sẽ tự động đợc gán 1 cổng lớn hơn 1023.

Nh vậy để cấu hình cho phép ngời dùng sử dụng dịch vụ Telnet từ mạng địa phơng ra một server ở ngoài ta sử dụng bộ lọc nh sau:

Luật Chiều Địa chỉ Cổng

Nguồn Đích Nguồn Đích Bit ACK Loại gói Tác vụ

A Vào Server Our.net 23 >1023 =1 TCP Cho

C * * * * * * * Cấm Bộ lọc này sẽ cho phép tất cả các trạm trong Our.net Telnet đến trạm ngoài có địa chỉ là Server.

Dịch vụ Telnet vào trong: (adsbygoogle = window.adsbygoogle || []).push({});

Dịch vụ Telnet vào trong đựoc sử dụng bởi một Client ở xa móc nối vào một

Server Telnet trong mạng địa phơng. Các gói đi vào chứa đựng dòng lện ngời dùng gõ vào từ bàn phím và có những đặc điểm sau:

- Địa chỉ IP nguồn là địa chỉ của trạm ngời dùng ở xa.

- Điạ chỉ IP đích là địa chỉ của server trong mạng địa phơng. - Gói dữ liệu là loại TCP.

- Cổng TCP đích là 23, là cổng mà Server Telnet sử dụng. - Cổng nguồn là 1 số lớn bất kỳ lớn hơn 1023 (tạm gọi là “Z”).

- Gói đầu tiên thiết lập liên kết có bit ACK = 0, các gói còn lại bằng 1.

Các gói đi ra của dịch vụ này chứa dữ liệu sẽ hiển thị trên màn hình của ngời dùng với các đặc điểm sau:

- Địa chỉ IP đích là địa chỉ của trạm ngời dùng ở xa.

- Địa chỉ IP nguồn là địa chỉ của server trong mạng địa phơng. - Gói dữ liệu thuộc loại TCP.

- Cổng TCP đích là 23, là cổng của Server Telnet

- Cổng đích chính là chính là cổng nguồn của gói đi vào (“Z”). - Mọi gói vào sẽ có bit ACK = 1 vì không có gói thiết lập liên kết.

Cũng giống nh trong dịch vụ Telnet ra ngoài, các giá trị địa chỉ nguồn và đích, cổng nguồn và đích sẽ hoán đổi cho nhau trong các gói vào và ra.

Luật Chiều Địa chỉ Cổng Nguồn Đích Nguồn Đích Bit ACK Loại gói Tác vụ

A Ra Our.server Good.host 23 >1023 =1 TCP Cho B Vào Good.host Our.server >1023 23 * TCP Cho

C * * * * * * * Cấm

Với cấu hình này, tất cả các trạm Good.host ở bên ngoài sẽ đợc quyền Telnet vào trạm Our.server trong mạng địa phơng.

Những hạn chế:

Cũng nh lọc bằng địa chỉ, phép lọc theo dịch vụ cũng không tuyệt đối an toàn 100%. Nh đã trình bày ở trên, các dịch vụ chạy ở lớp ứng dụng gắn liền với các cổng sử dụng để truyền dữ liệu. Chính vì vậy lọc theo dịch vụ thực chất là lọc các giá trị cổng đích và cổng nguồn của các gói dữ liệu. Vấn đề nảy sinh là một ngời dùg có quyền root trên một trạm ở xa hoàn toàn có thể thay đổi giá trị cổng sử dụng cho các ứng dụng không theo quy định chuẩn và có thể gây hại cho mạng địa phơng ta muốn bảo vệ. Ví dụ, ta đã cấu hình cho phép Telnet ra ngoài và cho phép dữ liệu đi từ cổng 23 (là cổng chuẩn của Server Telnet) ở ngoài nhng trên thực tế cổng 23 đã bị dùng bởi một tiến trình khác ở trạm ngoài, không phải là Server Telnet. Tiến trình này hoàn toàn có thể ra lệnh cho Client telnet ở mạng địa phơng thi hành những tác vụ có hại nh xoá các file hệ thống, gửi file /etc/password (là file lu giữ các mật khẩu của hệ thống) ra ngoài...

Mặt khác ta đã ngăn chặn đợc việc kẻ tấn công sử dụng cổng Server (vì các cổng Server đợc phép truyền dữ liệu vào mạng bên trong khi có Client yêu cầu) để truy nhập vào mạng địa phơng bằng cách xét bit ACK. Trong cấu trúc

Client/Server, bao giờ Client cũng là ngời thiết lập liên kết bằng cách yêu cầu

Server trả lời và do đó tất cả các gói từ Server đến đều có bit ACK = 1. Vì vây mọi gói thiết lập liên kết từ cổng nguồng Server (có bit ACK = 0) sẽ bị loại bỏ nên kẻ tấn công không thể truy nhập vào mạng địa phơng đợc. Tuy vậy chỉ có các

gói dữ liệu trong giao thức TCP (Transmission Control Protocol) mới có bit ACK, với giao thức UDP (User Datagram Protocol) thì không có. May mắn thay, số l- ợng các dịch vụ trên INTERNET sử dụng giao thức UDP là rất ít.

Chơng V

Một phần của tài liệu Internet và các dịch vụ trên internet (Trang 56 - 63)