Lêi nãi ®Çu
Chúng ta đang sống trong một thời đại mới, thời đại phát triển rực rỡ của công nghệ thông tin, đặc biệt là công nghệ máy vi tính và mạng máy tính với sự bùng nổ của hàng ngàn cuộc cách mạng lớn nhỏ. Từ khi ra đời, máy vi tính ngày càng giữ vai trò quan trọng trong các lĩnh vực khoa học kỹ thuật và cuộc sống hàng ngày của con người. Từ sự ra đời của chiếc máy tính điện tử lớn ENIAC đầu tiên năm 1945, sau đó là sự ra đời những máy vi tính của hãng IBM vào năm 1981 cho đến nay, sau hơn 20 năm, cùng với sự thay đổi về tốc độ các bộ vi xử lý và các phần mềm ứng dụng, công nghệ thông tin đã ở một bước phát triển cao, đó là số hóa tất cả những dữ liệu thông tin, đồng thời kết nối chúng lại với nhau và luân chuyển mạnh mẽ. Hiện nay, mọi loại thông tin, số liệu, hình ảnh, âm thanh đều được đưa về dạng kỹ thuật số để bất kỳ máy tính nào cũng có thể lưu trữ, xử lý cũng như chuyển tiếp với các máy tính hay thiết bị kỹ thuật số khác.
Sự ra đời của các mạng máy tính và những dịch vụ của nó đã mang lại cho con người rất nhiều những lợi ích to lớn, góp phần thúc đẩy nền kinh tế phát triển mạnh mẽ, đơn giản hóa những thủ tục lưu trữ, xử lý, trao chuyển thông tin phức tạp, liên lạc và kết nối giữa những vị trí, khoảng cách rất lớn một cách nhanh chóng, hiệu quả Và mạng máy tính đã trở thành yếu tố không thể thiếu đối với sự phát triển của nền kinh tế, chính trị cũng như văn hóa, tư tưởng của bất kỳ quốc gia hay châu lục nào. Con người đã không còn bị giới hạn bởi những khoảng cách về địa lý, có đầy đủ quyền năng hơn để sáng tạo những giá trị mới vô giá về vật chất và tinh thần, thỏa mãn những khát vọng lớn lao của chính họ và của toàn nhân loại.
Cũng chính vì vậy, nếu không có mạng máy tính, hoặc mạng máy tính không thể hoạt động như ý muốn thì hậu quả sẽ rất nghiêm trọng. Và vấn đề an toàn cho mạng máy tính cũng phải được đặt lên hàng đầu khi thiết kế, lắp đặt và đưa vào sử dụng một hệ thống mạng máy tính dù là đơn giản nhất.
Bên cạnh đó, thông tin giữ một vai trò hết sức quan trọng bởi vì nếu như thiếu thông tin, con người sẽ trở nên lạc hậu dẫn tới những hậu quả nghiêm trọng, nền kinh tế chậm phát triển. Vì lý do đó, việc lưu giữ, trao đổi và quản lý tốt nguồn tài nguyên thông tin để sử dụng đúng mục đích, không bị thất thoát đã là mục tiêu hướng tới của không chỉ một ngành, một quốc gia mà của toàn thế giới.
Trong quá trình thực tập và làm đồ án tốt nghiệp, được sự đồng ý và hướng dẫn, chỉ bảo tận tình của thầy giáo hướng dẫn Tạ Quang Đởn, cùng với sự giúp đỡ của bạn bè và công ty nơi thực tập, em đã có thêm nhiều điều kiện để tìm hiểu về mạng máy tính, về vấn đề an toàn trong mạng máy tính và về bức tường lửa. Đó cũng là đề tài mà em muốn nghiên cứu và trình bày trong đồ án tốt nghiệp này. Nội dung chính của đồ án gồm:
Phần I: Tổng quan về mạng máy tính
Phần II: Vấn đề an toàn trong mạng máy tính
Phần III: Bức tường lửa (Firewall)
Đồ án đề cập đến một vấn đề khá lớn và tương đối phức tạp, đòi hỏi nhiều thời gian và kiến thức về lý thuyết cũng như thực tế. Do thời gian nghiên cứu chưa được nhiều và trình độ bản thân còn hạn chế, nên đồ án không tránh khỏi những khiếm khuyết. Em rất mong nhận được sự hướng dẫn, chỉ bảo của các thầy, cô giáo và sự đóng góp nhiệt tình của các bạn để giúp em bổ sung vốn kiến thức và có thể tiếp tục nghiên cứu đề tài nêu trên một cách tốt hơn, hoàn chỉnh hơn.
Môc lôc
Lời nói đầu
Phần I: Tổng quan về mạng máy tính 1
Chương 1: Giới thiệu về máy tính 1
1.1. Lịch sử máy tính 1
1.1.1. Giai đoạn 1 1
1.1.2. Giai đoạn 2 2
1.1.3. Giai đoạn 3 3
1.1.4. Giai đoạn 4 4
1.2. Cấu trúc và chức năng của máy tính 5
1.2.1. Cấu trúc tổng quát của máy tính 5
1.2.2. Chức năng của máy tính 7
Chương 2: Mạng máy tính 11
2.1. Lịch sử phát triển mạng máy tính 11
2.2. Nhu cầu và mục đích của việc kết nối các máy tính thành mạng 13
2.3. Đặc trưng kỹ thuật của mạng máy tính 14
2.3.1. Đường truyền 14
2.3.2. Kỹ thuật chuyển mạch 15
2.3.3. Kiến trúc mạng 16
2.3.3.1. Hình trạng mạng 16
2.3.3.2. Giao thức mạng 17
2.3.3.4. Hệ điều hành mạng 17
2.4. Phân loại mạng máy tính 17
2.4.1. Phân loại mạng theo khoảng cách địa lý 18
2.4.1.1. Mạng toàn cầu (GAN) 18
2.4.1.2. Mạng diện rộng (WAN) 18
2.4.1.3. Mạng đô thị (MAN) 18
2.4.1.4. Mạng cục bộ (LAN) 18
2.4.2. Phân loại theo kỹ thuật chuyển mạch áp dụng trong mạng 19
2.4.2.1. Mạng chuyển mạch kênh 19
2.4.2.2. Mạng chuyển mạch thông báo 19
2.4.2.3. Mạng chuyển mạch gói 20
2.4.3. Phân loại theo hình trạng mạng 21
2.4.3.1. Mạng hình sao 21
2.4.3.2. Mạng hình vòng 22
2.4.3.3. Mạng trục tuyến tính 23
2.4.3.4. Mạng dạng cây 24
2.4.3.5. Mạng dạng vô tuyến Satellite - Vệ tinh hoặc Radio 24
2.4.3.6. Mạng kết nối hỗn hợp 25
2.4.4. Phân loại theo giao thức và hệ điều hành mạng sử dụng 25
2.4.4.1. Mạng khách-chủ (client-server) 26
2.4.4.2. Mạng ngang hàng (peer to peer) 26
2.5. Một số mạng máy tính thông dụng nhất 26
2.5.1. Mạng cục bộ (LAN) 26
2.5.2. Mạng diện rộng với kết nối LAN to LAN 27
2.5.3. Liên mạng Internet 28
2.5.4. Mạng Intranet 28
Chương 3: Chuẩn hóa mạng máy tính và mô hình OSI 29
3.1. Vấn đề chuẩn hóa mạng máy tính và các tổ chức chuẩn hóa mạng 29
3.2. Mô hình tham chiếu OSI 7 lớp 30
3.2.1. Giới thiệu về mô hình OSI 30
3.2.2. Các lớp trong mô hình OSI và chức năng của chúng 30
3.2.2.1. Lớp vật lý 30
3.2.2.2. Lớp liên kết dữ liệu 30
3.2.2.3. Lớp mạng 31
3.2.2.4. Lớp giao vận 32
3.2.2.5. Lớp phiên 32
3.2.2.6. Lớp trình diễn 32
3.2.2.7. Lớp ứng dụng 32
3.2.3. Phương thức hoạt động của mô hình OSI 33
3.2.4. Quá trình truyền dữ liệu trong mô hình OSI 33
Chương 4: TCP/IP và mạng Internet 35
4.1. Họ giao thức TCP/IP 35
4.1.1. Giới thiệu về họ giao thức TCP/IP 35
4.1.2. Giao thức IP 38
4.1.2.1. Địa chỉ IP 38
4.1.2.2. Cấu trúc gói dữ liệu IP 41
4.1.2.3. Phân mảnh và hợp nhất gói IP 44
4.1.2.4. Định tuyến IP 46
4.2. Giao thức TCP 48
4.2.1. Cấu trúc gói dữ liệu TCP 48
4.2.2. Thiết lập và kết thúc kết nối TCP 50
4.3. Internet 52
4.3.1. Lịch sử phát triển của Internet 52
4.3.2. Kiến trúc của Internet 54
4.3.3. Các dịch vụ thông tin trên Internet 55
4.3.3.1. Thư điện tử 55
4.3.3.2. Truyền file FTP 56
4.3.3.3. Truy cập từ xa (Telnet) 56
4.3.3.4. World Wide Web 57
Phần II: Vấn đề an toàn trong mạng máy tính 58
Chương 1: Khái quát về an toàn mạng 58
1.1. Các nguy cơ đe dọa hệ thống và mạng máy tính 58
1.1.1. Mô tả các nguy cơ 58
1.1.2. Các mức bảo vệ an toàn mạng 60
1.2. Phân tích các mức an toàn mạng 61
1.2.1. Quyền truy nhập (Access Right) 61
1.2.2. Đăng nhập/Mật khẩu (Login/Password) 61
1.2.3. Mã hóa dữ liệu (Data Encryption) 62
1.2.4. Bảo vệ vật lý (Physical Protect) 62
1.2.5. Bức tường lửa (Firewall) 62
Chương 2: Các biện pháp bảo vệ an toàn hệ thống 63
2.1. Quyền hạn tối thiểu (Least Privilege) 63
2.2. Bảo vệ theo chiều sâu (Defense in Depth) 63
2.3. Nút thắt (Choke Point) 63
2.4. Điểm xung yếu nhất (Weakest Link) 64
2.5. Hỏng trong an toàn (Fail-Safe Stance) 64
2.6. Sự tham gia toàn cầu 64
2.7. Kết hợp nhiều biện pháp bảo vệ 65
2.8. Đơn giản hóa 65
Chương 3: Thiết kế chính sách an ninh cho mạng máy tính 66
3.1. Chính sách an ninh cho mạng 66
3.1.1. Kế hoạch an ninh mạng 66
3.1.2. Chính sách an ninh nội bộ 67
3.2. Phương thức thiết kế 67
3.3. Thiết kế chính sách an ninh mạng 68
3.3.1. Phân tích nguy cơ mất an ninh 68
3.3.2. Xác định tài nguyên cần bảo vệ 69
3.3.3. Xác định mối đe dọa an ninh mạng 69
3.3.4. Xác định trách nhiệm của người sử dụng mạng 70
3.3.5. Kế hoạch hành động khi chính sách bị vi phạm 72
3.3.6. Xác định các lỗi an ninh 73
3.3.6.1. Lỗi điểm truy nhập 73
3.3.6.2. Lỗi cấu hình hệ thống 74
3.3.6.3. Lỗi phần mềm 74
3.3.6.4. Lỗi của người dùng nội bộ 74
3.3.6.5. Lỗi an ninh vật lý 74
3.3.6.6. Lỗi bảo mật 75
Phần III: Bức tường lửa (Firewall) 76
Chương 1: Khái niệm về bức tường lửa 76
1.1. Firewall làm được những gì 76
1.2. Firewall không làm được những gì 77
Chương 2: Những thiết kế cơ bản của Firewall 78
2.1. Dual-homed Host 78
2.2. Kiến trúc Screened Host 79
2.3. Kiến trúc Screened Subnet Host 81
2.4. Sử dụng nhiều Bastion Host 82
2.5. Kiến trúc ghép chung Router trong và Router ngoài 84
2.3. Kiến trúc ghép chung Bastion Host và Router ngoài 85
Chương 3: Các thành phần của Firewall và cơ chế hoạt động 86
3.1. Bộ lọc gói (Packet Filtering) 86
3.1.1. Nguyên lý hoạt động 86
3.1.2. Ưu điểm và hạn chế của hệ thống Firewall sử dụng bộ lọc Packet 87
3.2. Cổng ứng dụng (Application-Level Gateway) 87
3.2.1. Nguyên lý hoạt động 87
3.2.2. Ưu điểm và hạn chế 89
3.3. Cổng vòng (Circuit-Level Gateway) 89
Chương 4: Hệ thống Packet Filtering 91
4.1. Giới thiệu về Packet Filtering 91
4.2. Những chức năng của một Packet Filtering Router 92
4.3. Ưu, nhược điểm của hệ thống Packet Filtering 93
4.4. Nguyên tắc hoạt động của hệ thống Packet Filtering 96
4.4.1. Lọc các Packet dựa trên địa chỉ (address) 97
4.4.2. Lọc các Packet dựa trên số cổng (port) 99
Chương 5: Hệ thống Proxy 101
5.1. Tác dụng và chức năng của Proxy 101
5.1.1. Sự cần thiết của Proxy 102
5.1.2. Những nhược điểm của Proxy 103
5.2. Sự kết nối thông qua Proxy (Proxying) 104
5.3. Các dạng Proxy 105
5.3.1. Dạng kết nối trực tiếp 105
5.3.2. Dạng thay đổi client 106
5.4.3. Proxy vô hình 106
Kết luận
Các từ viết tắt
Tài liệu tham khảo
108 trang |
Chia sẻ: banmai | Lượt xem: 2314 | Lượt tải: 5
Bạn đang xem trước 20 trang tài liệu Mạng máy tính, vấn đề an toàn mạng và bức tường lửa, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
nhập được qua các hàng rào này) thì lưu thông của internal network bị người tấn công thấy.
Từ khuyết điểm chính của 2 kiến trúc trên ta có kiến trúc thứ 3 sau đây khắc phục được phần nào khuyết điểm trên .
2.3. Kiến trúc Screened Subnet Host
Hình 38: Sơ đồ kiến trúc Screened Subnet Host
Với kiến trúc này, hệ thống này bao gồm hai Packet–Filtering Router và một Bastion Host (hình 38). Kiến trúc này có độ an toàn cao nhất vì nó cung cấp cả mức bảo mật: Network và Application trong khi định nghĩa một mạng perimeter network. Mạng trung gian (DMZ) đóng vai trò như một mạng nhỏ, cô lập đặt giữa Internet và mạng nội bộ. Cơ bản, một DMZ được cấu hình sao cho các hệ thống trên Internet và mạng nội bộ chỉ có thể truy nhập được một số giới hạn các hệ thống trên mạng DMZ, và sự truyền trực tiếp qua mạng DMZ là không thể được.
Với những thông tin đến, Router ngoài (Exterior Router) chống lại những sự tấn công chuẩn (như giả mạo địa chỉ IP), và điều khiển truy nhập tới DMZ. Nó chỉ cho phép hệ thống bên ngoài truy nhập Bastion Host. Router trong (Interior Router) cung cấp sự bảo vệ thứ hai bằng cách điều khiển DMZ truy nhập mạng nội bộ chỉ với những truyền thông bắt đầu từ Bastion Host.
Với những thông tin đi, Router trong điều khiển mạng nội bộ truy nhập tới DMZ. Nó chỉ cho phép các hệ thống bên trong truy nhập Bastion. Quy luật Filtering trên Router ngoài yêu cầu sử dụng dịch vụ Proxy bằng cách chỉ cho phép thông tin ra bắt nguồn từ Bastion Host.
Ưu điểm:
• Kẻ tấn công cần phá vỡ ba tầng bảo vệ: Router ngoài, Bastion Host và Router trong.
• Bởi vì Router ngoài chỉ quảng bá DMZ Network tới Internet, hệ thống mạng nội bộ là không thể nhìn thấy (invisible). Chỉ có một số hệ thống đã được chọn ra trên DMZ là được biết đến bởi Internet qua routing table và
DNS information exchange ( Domain Name Server ).
• Bởi vì Router trong chỉ quảng cáo DMZ Network tới mạng nội bộ, các hệ thống trong mạng nội bộ không thể truy nhập trực tiếp vào Internet. Điều nay đảm bảo rằng những user bên trong bắt buộc phải truy nhập Internet qua dịch vụ Proxy.
Đánh giá về kiến trúc Screened Subnet Host:
Đối với những hệ thống yêu cầu cung cấp dịch vụ nhanh, an toàn cho nhiều người sử dụng đồng thời cũng như khả năng theo dõi lưu thông của mỗi người sử dụng trong hệ thống và dữ liệu trao đổi giữ các người dùng trong hệ thống cần được bảo vệ thì kiến trúc cơ bản trên phù hợp.
Để tăng độ an toàn trong internal network, kiến trúc screen subnet ở trên sử dụng thêm một mạng DMZ (DMZ hay perimeter network) để che phần nào lưu thông bên trong internal network. Tách biệt internal network với Internet.
Sử dụng 2 Screening Router : Exterior Router và Interior Router.
Áp dụng qui tắc dư thừa có thể bổ sung thêm nhiều mạng trung gian (DMZ hay perimeter network) càng tăng khả năng bảo vệ càng cao.
Ngoài ra, còn có những kiến trúc biến thể khác như: sử dụng nhiều Bastion Host, ghép chung Router trong và Router ngoài, ghép chung Bastion Host và Router ngoài.
2.4. Sử dụng nhiều Bastion Host
Do các yêu cầu về tốc độ đáp ứng (performance) và dư thừa (redundancy), cũng như tách biệt các Servers khác nhau.
Sử dụng 1 Bastion Host cung cấp những dịch vụ cho người sử dụng bên trong (internal user), như dịch vụ SNMP Server, Proxy Servers …
Sử dụng 1 Bastion Host khác cung cấp dịch vụ cho Internet hoặc những người sử dụng bên ngoài (external user) sẽ sử dụng. Như là Anonymous FTP Server mà Server này những người sử dụng bên trong (local users) không truy xuất đến.
Hình 39: Sơ đồ kiến trúc sử dụng 2 Bastion Host
Với cách này thì tốc độ đáp ứng cho những người sử dụng bên trong (local user) một phần nào đó không bị ảnh hưởng (bị làm chậm đi) bởi hoạt động của những người sử dụng bên ngoài (external users).
Cũng có thể sử dụng nhiều Bastion Host mà cung cấp cho 1 dịch vụ nào đó để tăng tốc độ đáp ứng (performance), nhưng việc này cũng khó cân bằng tải giữa các Server trừ khi đoán trước được mức độ sử dụng.
Việc sử dụng kỹ thuật dư thừa để đảm bảo tính sẵn sàng cao của hệ thống, để khi mà một Bastion Host hỏng thì có cái khác thay thế. Nhưng chỉ có một số loại dịch vụ trợ giúp dạng này: DNS Server, SMTP Server, ... có thể dùng nhiều Bastion Host làm DNS Server , SMTP Server. Khi một Bastion Host hỏng hoặc quá tải, những yêu cầu về DNS Server và SNMP sẽ được dùng qua Bastion Host khác như là một fallback system.
Sử dụng nhiều Bastion Host trong trường hợp muốn cung cấp dịch vụ cho nhiều mạng khác nhau, và loại dữ liệu cung cấp cho mỗi mạng cũng khác nhau.
Sử dụng nhiều Bastion Host cho các Server khác nhau để khi mà một Server nào đó bị đột nhập vào hay bị hỏng thì Server khác vẫn hoạt động tốt. Ví Dụ : Tách HTTP Server và FTP Server trên 2 máy riêng biệt.
2.5. Kiến trúc ghép chung Router trong (Interior Router) và Router ngoài (Exterior Router)
Sử dụng kiến trúc này thì cần tăng tốc độ của máy làm Router.
Hình 40: Sơ đồ kiến trúc ghép chung Router trong và Router ngoài
Kiến trúc này gần giống với Screened Host trong trường hợp khi mà exterior/interior Router bị đột nhập vào thì lưu thông trong mạng bên trong sẽ bị lộ ra bên ngoài nhưng tốt hơn Screened Host đó là nó cũng sử dụng thêm một mạng bên ngoài. Mạng bên ngoài sẽ chứa các Server có thể nối ra Internet mà nếu các Server này bị đột nhập thì lưu thông của mạng bên trong cũng không bị lộ ra bên ngoài. Kiến trúc này cũng gần giống với Screened Subnet nhưng mà exterior Router và interior Router được ghép chung nên nó giảm đi số lớp bảo vệ. Nói chung, kiến trúc ghép chung interior Router và exterior Router ở trung gian giữa hai kiến trúc này.
2.6. Kiến trúc ghép chung Bastion Host và Router ngoài (Exterior Router)
Kiến trúc này sử dụng cho mạng chỉ có một đường nối dùng nghi thức SLIP hoặc PPP ra Internet.
Hình 41: Sơ đồ kiến trúc ghép chung Bastion Host và Router ngoài
Kiến ghép chung Bastion Host và Router ngoài (Exterior Router) này gần giống với Screened Subnet. Nó cho tốc độ đáp ứng thường thấp nhưng mà vẫn có thể chấp nhận được do tốc độ đường truyền thấp, chức năng lọc của Router ngoài ít, chức năng lọc gói chủ yếu là Router trong.
Ch¬ng 3: C¸c thµnh phÇn cña Firewall vµ c¬ chÕ ho¹t ®éng
Một Firewall chuẩn bao gồm một hay nhiều các thành phần sau đây:
• Bộ lọc gói (Packet–Filter)
• Cổng ứng dụng (Application–level Gateway hay Proxy Server)
• Cổng mạch (Circuite level Gateway)
3.1. Bộ lọc gói (Packet Filter)
3.1.1. Nguyên lý hoạt động
Khi nói đến việc lưu thông dữ liệu giữa các mạng với nhau thông qua Firewall thì điều đó có nghĩa rằng Firewall hoạt động chặt chẽ với giao thức TCI/IP. Vì giao thức này làm việc theo thuật toán chia nhỏ các dữ liệu nhận được từ các ứng dụng trên mạng, hay nói chính xác hơn là các dịch vụ chạy trên các giao thức (Telnet, SMTP, DNS, SMNP, NFS ...) thành các gói dữ liệu (data pakets) rồi gán cho các paket này những địa chỉ để có thể nhận dạng, tái lập lại ở đích cần gửi đến, do đó các loại Firewall cũng liên quan rất nhiều đến các Packet và những con số địa chỉ của chúng.
Bộ lọc gói cho phép hay từ chối mỗi Packet mà nó nhận được. Nó kiểm tra toàn bộ đoạn dữ liệu để quyết định xem đoạn dữ liệu đó có thoả mãn một trong số các luật lệ của lọc gói hay không. Các luật lệ lọc gói này là dựa trên các thông tin ở đầu mỗi Packet (Packet Header ), dùng để cho phép truyền các Packet đó ở trên mạng. Đó là:
• Địa chỉ IP nơi xuất phát ( IP Source address)
• Địa chỉ IP nơi nhận (IP Destination address)
• Những thủ tục truyền tin (TCP, UDP, ICMP, IP tunnel)
• Cổng TCP/UDP nơi xuất phát (TCP/UDP source port)
• Cổng TCP/UDP nơi nhận (TCP/UDP destination port)
• Dạng thông báo ICMP (ICMP message type)
• Giao diện Packet đến (Incomming interface of Packet)
• Giao diện Packet đi (Outcomming interface of Packet)
Nếu luật lệ lọc gói được thoả mãn thì Packet được chuyển qua Firewall. Nếu không Packet sẽ bị bỏ đi. Nhờ vậy mà Firewall có thể ngăn cản được các kết nối vào các máy chủ hoặc mạng nào đó được xác định, hoặc khoá việc truy cập vào hệ thống mạng nội bộ từ những địa chỉ không cho phép. Hơn nữa, việc kiểm soát các cổng làm cho Firewall có khả năng chỉ cho phép một số loại kết nối nhất định vào các loại máy chủ nào đó, hoặc chỉ có những dịch vụ nào đó (Telnet, SMTP, FTP...) được phép mới chạy được trên hệ thống mạng cục bộ.
3.1.2. Ưu điểm và hạn chế của hệ thống Firewall sử dụng bộ lọc gói
Ưu điểm:
• Đa số các hệ thống Firewall đều sử dụng bộ lọc gói. Một trong những ưu điểm của phương pháp dùng bộ lọc gói là chi phí thấp vì cơ chế lọc gói đã được bao gồm trong mỗi phần mềm Router.
• Ngoài ra, bộ lọc gói là trong suốt đối với người sử dụng và các ứng dụng, vì vậy nó không yêu cầu sự huấn luyện đặc biệt nào cả.
Hạn chế:
• Việc định nghĩa các chế độ lọc gói là một việc khá phức tạp; nó đòi hỏi người quản trị mạng cần có hiểu biết chi tiết về các dịch vụ Internet, các dạng Packet Header, và các giá trị cụ thể mà họ có thể nhận trên mỗi trường. Khi đòi hỏi vể sự lọc càng lớn, các luật lệ về lọc càng trở nên dài và phức tạp, rất khó để quản lý và điều khiển.
• Do làm việc dựa trên Header của các Packet, rõ ràng là bộ lọc gói không kiểm soát được nội dung thông tin của Packet. Các Packet chuyển qua vẫn có thể mang theo những hành động với ý đồ ăn cắp thông tin hay phá hoại của kẻ xấu.
3.2. Cổng ứng dụng (Application–Level Gateway)
3.2.1. Nguyên lý hoạt động
Đây là một loại Firewall được thiết kế để tăng cường chức năng kiểm soát các loại dịch vụ, giao thức được cho phép truy cập vào hệ thống mạng. Cơ chế hoạt động của nó dựa trên cách thức gọi là Proxy Service (dịch vụ đại diện). Proxy Service là các bộ code đặc biệt cài đặt trên cổng ra (gateway) cho từng ứng dụng. Nếu người quản trị mạng không cài đặt Proxy code cho một ứng dụng nào đó, dịch vụ tương ứng sẽ không được cung cấp và do đó không thể chuyển thông tin qua Firewall. Ngoài ra, Proxy code có thể được định cấu hình để hỗ trợ chỉ một số đặc điểm trong ứng dụng mà ngưòi quản trị mạng cho là chấp nhận được trong khi từ chối những đặc điểm khác.
Một cổng ứng dụng thường được coi như là một pháo đài (Bastion Host), bởi vì nó được thiết kế đặt biệt để chống lại sự tấn công từ bên ngoài. Những biện pháp đảm bảo an ninh của một Bastion Host là:
Bastion Host luôn chạy các version an toàn (secure version) của các phần mềm hệ thống (Operating system). Các version an toàn này được thiết kế chuyên cho mục đích chống lại sự tấn công vào hệ điều hành (Operating System), cũng như là đảm bảo sự tích hợp Firewall.
Chỉ những dịch vụ mà người quản trị mạng cho là cần thiết mới được cài đặt trên Bastion Host, đơn giản chỉ vì nếu một dịch vụ không được cài đặt, nó không thể bị tấn công. Thông thường, chỉ một số giới hạn các ứng dụng cho các dịch vụ Telnet, DNS, FTP, SMTP và xác thực user là được cài đặt trên Bastion Host.
Bastion Host có thể yêu cầu nhiều mức độ xác thực khác nhau, Ví Dụ như user password hay smart card.
• Mỗi Proxy được đặt cấu hình để cho phép truy nhập chỉ một sồ các máy chủ nhất định. Điều này có nghĩa rằng bộ lệnh và đặc điểm thiết lập cho mỗi Proxy chỉ đúng với một số máy chủ trên toàn hệ thống.
• Mỗi Proxy duy trì một quyển nhật ký ghi chép lại toàn bộ chi tiết của giao thông qua nó, mỗi sự kết nối, khoảng thời gian kết nối. Nhật ký này rất có ích trong việc tìm theo dấu vết hay ngăn chặn kẻ phá hoại.
• Mỗi Proxy đều độc lập với các proxies khác trên Bastion Host. Điều này cho phép dễ dàng quá trình cài đặt một Proxy mới, hay tháo gỡ môt Proxy đang có vấn để.
Ví Dụ: Telnet Proxy
Ví Dụ một người dùng bên ngoài (gọi là Outside Client) muốn sử dụng dịch vụ Telnet để kết nối vào hệ thống mạng qua môt Bastion Host có Telnet Proxy. Quá trình xảy ra như sau:
1. Outside Client Telnets đến Bastion Host. Bastion Host kiểm tra password, nếu hợp lệ thì outside Client được phép vào giao diện của Telnet Proxy. Telnet Proxy cho phép một tập nhỏ những lệnh của Telnet, và quyết định những máy chủ nội bộ nào outside Client được phép truy nhập.
2. Outside Client chỉ ra máy chủ đích và Telnet Proxy tạo một kết nối của riêng nó tới máy chủ bên trong, và chuyển các lệnh tới máy chủ dưới sự uỷ quyền của outside Client. Outside Client thì tin rằng Telnet Proxy là máy chủ thật ở bên trong, trong khi máy chủ ở bên trong thì tin rằng Telnet Proxy là Client thật.
3.2.2. Ưu điểm và hạn chế
Ưu điểm:
• Cho phép người quản trị mạng hoàn toàn điều khiển được từng dịch vụ trên mạng, bởi vì ứng dụng Proxy hạn chế bộ lệnh và quyết định những máy chủ nào có thể truy nhập được bởi các dịch vụ.
• Cho phép người quản trị mạng hoàn toàn điều khiển được những dịch vụ nào cho phép, bởi vì sự vắng mặt của các Proxy cho các dịch vụ tương ứng có nghĩa là các dịch vụ ấy bị khoá.
• Cổng ứng dụng cho phép kiểm tra độ xác thực rất tốt, và nó có nhật ký ghi chép lại thông tin về truy nhập hệ thống.
• Luật lệ filltering (lọc) cho cổng ứng dụng là dễ dàng cấu hình và kiểm tra hơn so với bộ lọc gói.
Hạn chế:
• Yêu cầu các users biến đổi (modify) thao tác, hoặc modify phần mềm đã cài đặt trên máy Client cho truy nhập vào các dịch vụ Proxy. Ví Dụ, Telnet truy nhập qua cổng ứng dụng đòi hỏi hai bước để nối với máy chủ chứ không phải là một bước thôi. Tuy nhiên, cũng đã có một số phần mềm Client cho phép ứng dụng trên cổng ứng dụng là trong suốt, bằng cách cho phép user chỉ ra máy đích chứ không phải cổng ứng dụng trên lệnh Telnet.
3.3. Cổng vòng (Circuit–Level Gateway)
Hình 42: Kết nối qua cổng vòng(Circuit–Level Gateway)
Cổng vòng là một chức năng đặc biệt có thể thực hiện đươc bởi một cổng ứng dụng. Cổng vòng đơn giản chỉ chuyển tiếp (relay) các kết nối TCP mà không thực hiện bất kỳ một hành động xử lý hay lọc gói nào.
Hình 42 minh hoạ một hành động sử dụng nối Telnet qua cổng vòng. Cổng vòng đơn giản chuyển tiếp kết nối Telnet qua Firewall mà không thực hiện một sự kiểm tra, lọc hay điều khiển các thủ tục Telnet nào. Cổng vòng làm việc như một sợi dây, sao chép các byte giữa kết nối bên trong (inside connection) và các kết nối bên ngoài (outside connection). Tuy nhiên, vì sự kết nối này xuất hiện từ hệ thống Firewall, nó che dấu thông tin về mạng nội bộ.
Cổng vòng thường được sử dụng cho những kết nối ra ngoài, nơi mà các nhà quản trị mạng thật sự tin tưởng những người dùng bên trong. Ưu điểm lớn nhất là một Bastion Host có thể được cấu hình như là một hỗn hợp cung cấp cổng ứng dụng cho những kết nối đến, và cổng vòng cho các kết nối đi. Điều này làm cho hệ thống bức tường lửa dễ dàng sử dụng cho những người trong mạng nội bộ muốn trực tiếp truy nhập tới các dịch vụ Internet, trong khi vẫn cung cấp chức năng bức tường lửa để bảo vệ mạng nội bộ từ những sự tấn công bên ngoài.
Ch¬ng 4: HÖ thèng Packet Filtering
4.1. Giới thiệu về Packet Filtering
Firewall có thể được hiện thực ở những lớp khác nhau của Protocol stack. Hai dạng thông dụng được hiện thực là ở lớp ứng dụng bởi “Forwarding application Firewall” và ở lớp mạng bởi “Filtering Router”. Một cách tổng quát là Firewall có thể hiện thực ở bất kỳ lớp nào của Protocol stack cũng như bất kỳ bộ Protocol nào. Nhưng do Firewall thường được dùng để bảo vệ hệ thống mạng máy tính được nối vào Internet, mà nghi thức giao tiếp trên Internet là TCP/IP nên trong phần này sẽ trình bày dạng Firewall ở lớp IP.
Hình 43: Sơ đồ làm việc của Packet Filtering
Hệ thống Packet Filtering (Packet Filtering System) là một hệ thống sử dụng cách lọc (filter) các Packet vào/ra khỏi mạng để bảo vệ hệ thống mạng.
Để truyền thông tin từ mạng này sang mạng khác, thông tin cần truyền đi phải được chia nhỏ thành những gói, và những gói này được gửi đi riêng biệt. Bằng việc chia nhỏ thông tin thành từng gói mà nhiều máy có thể dùng chung một kênh truyền thông. Trong hệ thống mạng IP, những gói thông tin này được gọi là Packet. Tất cả dữ liệu truyền trên mạng IP đều ở dạng Packet.
Trong việc kết nối nhiều mạng máy tính lại với nhau, thiết bị cơ bản được dùng là Router. Router có thể là phần cứng đặc biệt chuyên biệt làm Router hoặc nó có thể là một phần mềm chạy trên những máy UNIX hoặc PC (MS–DOS, Windows, … ). Những Packet đi qua một liên mạng (mạng của nhiều mạng), thường xuất phát từ máy gửi đến Router này, Router này sẽ gửi Packet đến Router khác đến khi nào Packet đến máy đích cuối cùng.
Chức năng cơ bản của Router là nhận và gửi mỗi Packet nó nhận được. Nó phải quyết định làm thế nào để gửi Packet hướng đến máy đích cuối cùng của nó. Thông thường thì mỗi Packet không mang những thông tin giúp Router trong việc tìm đuờng, ngoại trừ địa chỉ IP của máy mà Packet sẽ đến. Thông tin trong Packet chỉ ra cho Router biết nơi nào nó sẽ đến, mà không cung cấp cho Router biết làm thế nào để đến đích. Router trao đổi thông tin với mỗi Router khác dùng giao thức định tuyến (Routing Protocol) như “Routing Information Protocol (RIP) và Open Shortest Path First (OSPF) để xây dựng bảng routing (routing table) trong bộ nhớ để tìm đường gửi Packet hướng đến nơi đến của nó. Để gửi một Packet đi, Router so sánh địa chỉ đến của Packet với những điểm vào trong routing table để xác định đường đi đến đích cho Packet. Thông thường nếu không có đường đi đến một nơi nào đó, Router sẽ dùng một con đường mặc định, thường là gửi Packet đến Router thông minh hơn hoặc gửi Packet ra Internet.
Để xác định làm thế nào để gửi Packet đến nơi đến cuối của nó, một Router thông thường chỉ dựa vào địa chỉ máy đến để gửi Packet đi. Một Packet Filtering Router còn phải thực hiện thêm một việc khác là liệu Packet này có được cho phép để gửi đi hay không? Để biết được liệu Router có thể được gửi Packet đi hay không, thường thì nó dựa vào chính sách bảo vệ đã được cấu hình trước, và thường chính sách bảo vệ này là một tập hợp các qui tắc gọi là “Filtering rules”.
4.2. Những chức năng của một Packet Filtering Router
Packet Filtering (hay việc lọc và giám sát các Packet vào và ra khỏi mạng) cho phép (hoặc không cho phép) chúng ta điều khiển trao đổi dữ liệu giữa một mạng cần được bảo vệ với Internet chủ yếu dựa trên các thông tin sau:
Địa chỉ nơi xuất phát của dữ liệu
Địa chỉ nơi dữ liệu sẽ đến
Nghi thức ở cấp ứng dụng được sử dụng để truyền dữ liệu
Hầu hết các Packet filtering Router thực hiện việc lọc các Packet không dựa trên nội dung của dữ liệu. Packet Filtering Router thường sẽ có những khả năng có dạng như sau:
Không cho phép bất cứ người nào dùng Telnet (một nghi thức cấp ứng dụng application Protocol) để login từ bên ngoài vào hệ thống mạng cần bảo vệ.
Cho phép bất cứ ai có thể gửi e–mail dùng SMTP (một nghi thức ở cấp ứng dụng) cho các user trong mạng cần bảo vệ hoặc ngược lại.
Máy có địa chỉ X có thể gửi tin tức cho chúng ta dùng một nghi thức nào đó, nhưng những máy khác không có được đặc quyền này.
Do Packet filter lọc các gói IP chủ yếu là dựa vào địa chỉ máy gửi và máy nhận cho nên nó không thể cho phép một user A nào đó được dùng dịch vụ Telnet mà user khác thì không. Packet filter cũng không có khả năng cấm việc truyền file này mà không cho phép việc truyền các file khác.
Ưu điểm chính của Packet Filtering là khả năng tác dụng toàn cục của nó. Nó cung cấp khả năng bảo vệ tương đối cho toàn mạng mà chỉ đặt ở một nơi. Một ví dụ cho thấy điều đó là việc cấm dịch vụ Telnet. Nếu chúng ta cấm dịch vụ Telnet vào bằng cách tắt tất cả các Telnet Server của chúng ta cũng chưa hẳn là chúng ta đã cấm hoàn toàn được dịch vụ Telnet từ bên ngoài vì rằng có thể có một người nào đó trong cơ quan cài đặt một máy mới (hoặc cài đặt lại máy cũ) có Telnet Server đang chạy. Nhưng mà nếu Telnet bị cấm bởi Packet Filtering Router thì máy mới được cài đặt này cũng được bảo vệ mặc dù Telnet Server ở máy đó có bật lên hay không. Nói tóm lại Packet Filtering Router có thể bảo vệ toàn mạng ở một mức nào đó một cách triệt để.
Khả năng bảo vệ mạng ở một mức độ nào đó có thể chỉ cần cung cấp bởi những Filtering Router. Nhờ Packet Filtering Router chúng ta có thể bảo vệ được việc tấn công hệ thống mạng ở dạng đánh lừa địa chỉ (address – spoofing attacks). Với dạng tấn công này, người tấn công vào hệ thống thường lấy địa chỉ máy cục bộ mà họ muốn tấn công làm địa chỉ nguồn của dữ liệu mà họ gửi đi. Chỉ có Router mới biết được những Packet loại này đến từ mạng bên ngoài (Internet) mà có địa chỉ nguồn giống những địa trong mạng mà nó bảo vệ, nên nó có thể phát hiện ra kiểu đánh lừa địa chỉ này.
4.3. Ưu, nhược điểm của hệ thống Packet Filtering
Hệ thống sử dụng Packet Filtering Router có những ưu điểm sau:
Một Filtering Router có thể bảo vệ toàn cả mạng: Một ưu điểm quan trọng nhất của Packet Filtering đó là chỉ cần ở một vị trí chiến lược mà Packet Filtering Router có thể bảo vệ toàn bộ mạng. Nếu chỉ có một Router nối mạng cần bảo vệ với Internet, thì chỉ cần một Filtering Router là có thể bảo vệ toàn bộ mạng mà không phụ thuộc vào mức độ lớn nhỏ của mạng cần bảo vệ, mặc dù khả năng bảo vệ chỉ ở một mức nào đó mà thôi (việc bảo vệ mang tính toàn cục – global)
Packet Filtering System có thể cấm hoặc cho phép một số loại dịch vụ, hay một số địa chỉ IP của một số hệ thống nào đó.
Packet Filtering có thể không ảnh hưởng đến user : Packet Filtering không cần thay đổi phần mềm Client hoặc thay đổi cấu hình máy của Client, user cũng không cần phải huấn luyện để sử dụng hệ thống Packet filering mặc dù có sự cộng tác của user thì vẫn tốt hơn, đây là tính trong suốt (tranparency) đối với user. Khi Filtering Router nhận được một Packet, xem xét và thấy nó thỏa mãn qui tắc bảo vệ, lúc đó Router sẽ forward Packet đi như những Router thông thường làm cho nên không thấy rõ sự khác biệt giữa Filtering Router và Router thông thường.
Khả năng lọc chỉ dựa trên địa chỉ IP và số port mà không dựa trên user/ application mặc dù có một số Packet Filtering system cho phép lọc dựa trên hostname nhưng không nên đặc tả các qui tắc để lọc dựa trên hostname vì như vậy hệ thống sẽ bị tấn công bằng cách khác – Ví Dụ làm tê liệt DNS Server hoặt giả DNS Server để trả lời query tên máy thành địa chỉ IP.
Hiện nay có nhiều Router cung cấp khả năng Packet Filtering: khả năng lọc gói được nhiều nhà sản xuất phần cứng cũng như phần mềm hỗ trợ trong sản phẩm của họ, những sản phẩn thương mại cũng như miễn phí trên Internet.
Mặc dù Packet Filtering có nhiều ưu điểm như ở trên nhưng nó cũng có một số nhược điểm sau:
Đối với Packet Filtering System có thể bị tấn công theo loại network denial of service attacks. Khi người tấn công biết hệ thống có Packet filter, họ sẽ cố gắng làm tê liệt hoạt động hệ thống nhờ các kỹ thuật “message flooding”, “service overloading”. Message flooding là một dạng tấn công vào hệ thống làm tê liệt hoạt động của hệ thống bằng cách gây lũ dữ liệu hệ thống bị tấn công. Người tấn công thường gửi hàng loạt các message vào hệ thống mà họ tấn công. Kết quả là hệ thống bị tấn công không còn thời gian để xử lý những yêu cầu khác, đôi lúc nó có thể làm treo hệ thống bị tấn công. Dạng tấn công điển hình của kiểu này là người tấn công cho thực hiện việc gửi hành loạt các mail–message vào hệ thống mà họ tấn công dẫn đến kết quả là mail–Server không còn vùng nhớ để lưu những mail hay thông tin khác, đây là tình trạng đĩa đầy.
Những công cụ Packet Filtering hiện hành là không hoàn thiện: Mặc dù khả năng Packet Filtering được cung cấp bởi nhiều nhà cung cấp phần cứng cũng như phần mềm nhưng những sản phẩm này vẫn chưa được hoàn thiện. Những Packet Filtering thường có một số hạn chế sau:
Việc xác định qui tắc để lọc các Packet thường khó thực hiện và cũng khó cấu hình. Vì phải thực hiện việc chuyển chính sách bảo vệ thành một tập các qui tắc lọc thường rất khó.
Khi đã được cấu hình thì việc kiểm tra các luật lệ (rules) cũng khó khăn.
Khả năng của nhiều sản phẩm Packet Filtering thường không hoàn thiện, cũng như khả năng trợ giúp cho việc hiện thực một số dạng lọc gói ở mức cao thường khó thực hiện, nhiều lúc là không thể thực hiện được.
Giống như bất kỳ những sản phẩm khác, những Packet Filtering cũng có thể có một số lỗi mà những lỗi này có thể gây ra một số kết quả không mong muốn. Những lỗi này có thể gây ra cho nó hoạt động sai, đó là nó có thể cho phép một số Packet nào đó đi qua thay vì cấm.
Một số giao thức (Protocol) không thích hợp với Packet Filtering, thậm chí đối với những sản phẩm Packet Filtering hoàn hảo, chúng ta cũng sẽ thấy rằng có một số nghi thức mà những khả năng bảo vệ của Packet Filtering không thể bảo vệ mạng được hoặc là những dịch vụ sử dụng những Protocol loại này phải bị cấm. Những Protocol điển hình cho dạng đó là các Berkley “r” command (rcp, rlogin, rdist, rsh, .. .) và những RPC–based Protocol như NFS, NIS/YP.
Một số chính sách bảo vệ không thể thực hiện được nhờ vào Packet Filtering: Qui tắc mà một Packet Filtering cho chúng ta đặc tả có thể không phù hợp với yêu cầu thực sự của chúng ta. Không có khả năng bảo vệ ở cấp application, không thể thay đổi hoạt động của một dịch vụ, không giám sát được từng chức năng trên một dịch vụ cụ thể để có thể cấm hoặc cho phép một chức năng nào đó trên dịch vụ nào đó (nói như vậy là tùy thuộc vào hiện thực của Packet Filtering System nhưng mà hầu hết các khả năng có thể làm được là như trên) Packet Filtering cũng không cho phép chúng ta cấm hoặc cho phép user này có thể được sử dụng một dịch vụ nào đó nhưng mà user khác thì không được phép.
4.4. Nguyên tắc hoạt động của hệ thống Packet Filtering
Như đã được giới thiệu ở phần trên, Packet filter là một bộ lọc gói, cung cấp khả năng lọc các IP Packet ở mức gửi Packet (Packet routing level) với kết quả là quyết định là cho qua (pass) hay từ chối (drop) đối với mỗi Packet. Kết quả của việc xử lý ở mức thấp này là tốc độ xử lý cao nhưng ít an toàn hơn application–level gateway.
Filtering Router giữ chức năng của một Router và thêm chức năng filter. Nhiệm vụ của Packet Filtering Router sẽ gửi (route) và nhận cho vào (receive) các Packet có chọn lựa giữa internal host và external host. Packet Filtering có thể thực hiện ở nhiều cấp hoặc kết hợp giữa các cấp này. Dưới đây là sơ một sơ đồ luân chuyển dữ liệu điển hình (hình 44)
Hình 44: Sơ đồ luân chuyển dữ liệu điển hình của hệ thống Packet Filtering
Các sản phẩm Packet Filtering hiện nay chỉ có thể lọc các Packet dựa trên header của Packet và thông tin Packet từ interface card nào (mỗi Packet gồm 2 phần: header và data). Tóm lại việc lọc chỉ dựa trên thông tin điều khiển. Với công nghệ hiện nay, Packet filter chưa có khả năng lọc các Packet dựa vào nội dung (not make content–based decisions).
Do Packet filter lọc các Packet dựa trên các thông tin điều khiển ở các header ở mỗi Protocol stack, nên đối với các IP Packet filter thì thông tin header được sử dụng là thông tin ở IP header và TCP header
4.4.1. Lọc các Packet dựa trên địa chỉ (address)
Dạng đơn giản nhất mà một Filtering Router có thể thực hiện là việc lọc các Packet dựa tên địa chỉ. Lọc các Packet theo dạng này cho phép chúng ta điều khiển dữ liệu dựa trên địa chỉ máy gửi và địa chỉ máy nhận Packet mà không quan tâm đến nghi thức nào đang được sử dụng. Khả năng lọc gói theo dạng này có thể được dùng để cho phép một số máy nào đó ở bên ngoài có thể trao đổi dữ liệu với một số máy nào đó ở trong mạng cần bảo vệ, hoặc cũng có thể bảo vệ được những dạng đánh lừa thông tin trong Packet (những Packet xuất phát từ Internet (bên ngoài) mà có địa chỉ máy gửi lại là địa chỉ máy ở trong mạng mạng bảo vệ.
Những rủi ro của việc lọc dựa trên địa chỉ máy gửi:
Thông tin ở mỗi Packet header có chứa địa chỉ nguồn của máy gửi Packet (không nên tin tưởng hoàn toàn vào thông tin này do việc địa chỉ máy gửi có thể bị giả mạo). Trừ khi chúng ta sử dụng những kỹ thuật chứng thực như (cryptographic authentication) giữa hai máy trao đổi dữ liệu cho nhau, chúng ta thực sự không thể biết chắc chắn rằng máy mà chúng ta đang trao đổi dữ liệu với nó thực sự chính nó hay một máy khác giả danh máy này (giống như lấy địa chỉ của một người khác để gửi thư đi). Qui tắc lọc ở trên chỉ loại trừ khả năng một máy bên ngoài giả mạo thành một máy bên trong, nó không phát hiện được việc một máy bên ngoài giả mạo địa chỉ của một máy bên ngoài khác.
Do đó, người tấn công có thể có hai dạng tấn công dựa trên việc giả mạo địa chỉ là : giả mạo địa chỉ máy gửi “source address” và “man in the middle”.
Dạng tấn công giả danh cơ bản nhất là sự giả mạo địa chỉ máy gửi (source address), người tấn công sẽ gửi dữ liệu cho chúng ta mà sử dụng địa chỉ máy gửi không phải là địa chỉ máy của họ, thường họ sẽ đoán một số địa chỉ mà hệ thống của chúng ta tin tưởng, sau đó họ sẽ sử dụng địa chỉ này như là địa chỉ máy gửi với hy vọng rằng chúng ta sẽ cho những Packet họ đã gửi đi vào mạng của chúng ta, và cũng không mong chờ những Packet kết quả trả lời từ những máy trong hệ thống mạng của chúng ta. Nếu người tấn công không quan tâm đến việc nhận những Packet trả về từ hệ thống của chúng ta, thì không cần thiết họ phải ở trong lộ trình giữa chúng ta và hệ thống bị họ giả danh, họ có thể ở bất cứ nơi đâu.
Trong thực tế, những Packet trả lời từ hệ thống của chúng ta sẽ gửi đến những máy (những máy này người tấn công vào hệ thống của chúng ta đã sử dụng địa chỉ của họ), mà những Packet sẽ không gửi đến máy của người tấn công. Tuy nhiên, nếu người tấn công có thể đoán được những đáp ứng từ hệ thống của chúng ta thì họ không cần phải nhận được những Packet này. Có khá nhiều nghi thức (Protocol) mà đối với những người tấn công hiểu biết sâu thì việc đoán những đáp ứng từ hệ thống của chúng ta không mấy khó khăn. Có nhiều dạng tấn công kiểu này có thể được thực hiện mà người tấn công không cần nhận được những Packet trả lời trực tiếp từ hệ thống của chúng ta. Một Ví Dụ cho thấy điều này là người tấn công có thể gửi cho hệ thông của chúng ta một lệnh nào đó, mà kết quả là hệ thống của chúng ta gửi cho người tấn công password file của hệ thống chúng ta. Bằng cách này thì người tấn công không cần nhận được trực tiếp những Packet trả lời từ hệ thống chúng ta.
Trong một số trường hợp, đối với nghi thức có kết nối như TCP, máy nguồn thực sự (máy mà người tấn công lấy địa chỉ để giả danh) sẽ phản hồi lại những Packet mà hệ thống của chúng ta gửi cho họ (những Packet mà hệ thống chúng ta trả lời cho những Packet của người tấn công) dẫn đến kết quả là những kết nối hiện hành giữ máy của chúng ta với máy người tấn công có thể bị reset. Dĩ nhiên là người tấn công không muốn điều này xảy ra. Người tấn công muốn thực hiện việc tấn công hoàn thành trước khi máy bị giả danh nhận được Packet mà chúng ta gửi trước khi chúng ta nhận reset Packet từ máy bị giả danh này. Người tấn công có thể có nhiều cách để thực hiện được điều này:
+ Thực hiện việc tấn công trong khi máy bị giả danh đã tắt.
+ Làm cho máy bị giả danh treo khi thực hiện tấn công.
+ Gây lũ (flooding) dữ liệu ở máy giả danh khi thực hiện tấn công.
+ Làm sai lệch thông tin về đường đi (routing) giữa máy gửi và máy nhận thực sự.
+ Tấn công vào những dịch vụ chỉ cần gửi một Packet là có thể gây tác động mà vấn đề reset không bị ảnh hưởng.
Dạng tấn công thứ hai là “man in the middle” kiểu tấn công này người tấn công cần có khả năng thực hiện đầy đủ một quá trình trao đổi dữ liệu trong khi anh ta giả danh địa chỉ của máy khác. Để thực hiện được điều này người tấn công, máy mà người tấn công sử dụng không những gửi những Packet cho hệ thống của chúng ta mà còn mong muốn nhận được những Packet trả lời từ hệ thống cuả chúng ta. Để thực hiện được điều này người tấn công phải thực hiện một trong hai việc sau:
+ Máy người tấn công ở trên đường đi giữa hệ thống chúng ta và hệ thống bị giả danh. Trường hợp dễ thực hiện nhất là ở gần máy của hệ thống chúng ta hoặc ở gần máy bị giả danh, và trường hợp gần như khó nhất là ở giữa trong lộ trình đường đi bởi vì trong mạng IP lộ trình đường đi của Packet có thể thay đổi đặc biệt là các máy ở giữa lộ trình có thể có lúc đi qua có thể không.
+ Thay đổi đường đi giữa máy gửi và máy nhận thực sự để nó đi qua máy của người tấn công. Điều này có thể thực hiện được dễ dàng hoặc khó khăn tùy theo topology của mạng và hệ thống routing của các mạng liên quan.
4.4.2. Lọc các Packet dựa trên số cổng (port)
Nguyên tắc này cũng giống như lọc gói dựa trên địa chỉ máy gửi, chỉ khác là Packet filter sẽ lọc số cổng máy gửi (port nguồn) thay vì địa chỉ của nó.
Những rủi ro của việc lọc dựa trên số port của máy gửi:
Cũng giống như trường hợp lọc theo địa chỉ nguồn (source address), việc lọc các Packet dựa theo thông tin số port nguồn (source port) cũng có những rủi ro tương tự.
Đối với các dịch vụ có cầu nối (connection – oriented) như TCP, trước khi hai network application trao đổi dữ liệu với nhau chúng phải thiết lập kết nối (connection), khi chúng đã trao đổi dữ liệu xong chúng sẽ đóng kết nối. Quá trình từ lúc thiết lập kết nối cho đến khi đóng kết nối gọi là một session, đối với những dịch vụ dạng này việc lọc các Packet có thể sử dụng thông tin thiết lập kết nối ở trong TCP flags field. Nhưng đối với những dịch vụ không có kết nối (connectionless) như UDP thì việc lọc các Packet theo dạng này có thể thực hiện được như sau:
Session filter: là trường hợp đặt biệt của Packet filters nhưng nó còn giữ thêm những thông tin trên tất cả các active session đi qua Firewall. Bộ lọc (filter) Packet sẽ dùng thông tin này để xác định Packet di chuyển theo hướng ngược lại thuộc vào connection được chấp nhận hay không. Đồng thời có thể dùng thông tin về session này để thực hiện việc theo dõi ở mức session (session –level auditing).
Dynamic Packet Filtering : Theo dõi các outgoing UDP Packet đã đi vào/ra Chỉ cho phép các incoming UDP Packet tương ứng với các outgoing UDP Packet dựa vào thông tin host và port, chỉ cho vào những UDP có cùng host và cùng port với các outgoing UDP Packet. Nhưng chỉ cho phép khoảng cách giữa outgoing UDP Packet và incoming UDP Packet ở giới hạn nào đó (tùy chọn sao cho thích hợp) (time – limited).
Mặc dù dùng phương pháp trên có thể lọc được internal host hay external host ai là người đưa ra yêu cầu (request) và ai là trả lời (reply) nhưng nó vẫn để lộ một số lỗ hở dẫn đến người tấn công (attacker) lợi dụng việc cho vào reply tương ứng để gửi vào request in tương ứng với host/port trên và nếu may mắn, anh ta có thể thành công.
Những thông tin dùng cho việc đặc tả các rule trong Packet filter là:
IP source/destination address : địa chỉ IP của máy gửi và nhận Packet.
Protocol (TCP | UDP | ICMP ): nghi thức ở trên lớp IP được sử dụng.
TCP or UDP source/destination port : dịch vụ ở cấp ứng dụng.
ICMP message type: loại ICMP message .
IP options.
Start –of– connection (ACK bit) information cho TCP packages.
Tất cả các thông tin trên là ở trong IP header và TCP| UDP header. Và thêm một thông tin quan trọng đó là Packet từ interface nào (từ Internet hay từ internal network). Một số thông tin phụ khác như thời gian truy nhập, lượng Packet trên một dịch vụ, thời điểm truy cập.
Ch¬ng 5: hÖ thèng Proxy
Proxy cung cấp cho người sử dụng truy xuất Internet với những host đơn. Những Proxy Server phục vụ những nghi thức đặc biệt hoặc một tập những nghi thức thực thi trên dual–homed host hoặc Bastion Host. Những chương trình Client của người sử dụng sẽ qua trung gian Proxy Server thay thế Server thật sự mà người sử dụng cần giao tiếp.
Proxy Server xác định những yêu cầu từ Client và quyết định đáp ứng hay không đáp ứng, nếu yêu cầu được đáp ứng, Proxy Server sẽ kết nối đến Server thật thay cho Client và tiếp tục chuyển tiếp những yêu cầu từ Client đến Server, cũng như chuyển tiếp những đáp ứng của Server trở lại Client. Vì vậy Proxy Server giống như cầu nối trung gian giữa Server thật và Client.
5.1. Tác dụng và chức năng của Proxy
Để đáp ứng được những nhu cầu của người sử dụng khi cần truy xuất đến những ứng dụng được cung cấp bởi Internet nhưng vẫn đảm bảo được an toàn cho hệ thống cục bộ, trong hầu hết những phương pháp được đưa ra để giải quyết điều này là cung cấp một host đơn truy xuất đến Internet cho tất cả người sử dụng. Tuy nhiên, phương pháp này không phải là phương pháp giải quyết thỏa mãn nhất bởi vì như vậy nó sẽ tạo cho người sử dụng cảm thấy không thoải mái. Khi truy xuất đến Internet thì họ không thể thực hiện những công việc đó một cách trực tiếp, phải log in vào dual–homed host, thực hiện tất cả những công việc ở đây, và sau đó bằng phương pháp nào đó chuyển đổi những kết quả đạt được của công việc trở lại workstation sở hữu.
Điều này trở nên rất tồi tệ ở những hệ thống với nhiều hệ điều hành khác nhau (Ví dụ trong trường hợp nếu hệ thống là Macintosh nhưng riêng dual–homed host là hệ thống Unix).
Khi dual homed host được thiết kế trên mô hình không có Proxy, điều đó sẽ khiến cho người sử dụng thêm bực bội và đáng chú ý hơn là làm giảm đi những tiện ích mà Internet cung cấp, tồi tệ hơn là chúng thường không cung cấp an toàn một cách đầy đủ, khi một máy gồm nhiều người sử dụng tất nhiên độ an toàn của nó sẽ giảm, đặc biệt khi họ cố gắng nắm bắt với vạn vật bên ngoài.
Proxy System giúp người sử dụng thoải mái hơn và an toàn cho dual–homed host, thay thế những yêu cầu của người sử dụng bằng cách gián tiếp thông qua dual–homed host. Hệ thống Proxy cho phép tất cả những tương tác nằm dưới một hình thức nào đó. Người sử dụng có cảm giác trực tiếp làm việc với Server trên Internet mà họ thật sự muốn truy xuất.
Hình 45 : Kết nối sử dụng Application–Level Gateway
Proxy Application chính là chương trình trên application–level gateway Firewall hành động trên hình thức chuyển đổi những yêu cầu người sử dụng thông qua Firewall, tiến trình này được thực hiện trình tự như sau:
Thành lập một kết nối đến Proxy application trên Firewall.
Proxy Application thu nhập thông tin về việc kết nối và yêu cầu của người sử dụng.
Sử dụng thông tin để xác định yêu cầu có được chấp nhận không, nếu chấp nhận, Proxy sẽ tạo sự kết nối khác từ Firewall đến máy đích.
Sau đó thực hiện sự giao tiếp trung gian, truyền dữ liệu qua lại giữa Client và Server.
Proxy System giải quyết được rủi ro trên hệ thống bởi tránh người sử dụng log in vào hệ thống và ép buộc thông qua phần mềm điều khiển.
5.1.1. Sự cần thiết của Proxy
Proxy cho phép người sử dụng truy xuất những dịch vụ trên Internet theo nghĩa trực tiếp. Với dual–homed host thì cần phải login vào host trước khi sử dụng bất kỳ dịch vụ nào trên Internet. Điều này thường không tiện lợi, và một số người trở nên thất vọng khi họ có cảm giác phải thông qua Firewall, với Proxy, nó giải quyết được vấn đề này. Tất nhiên nó còn có những giao thức dưới nhưng nói chung nó cũng khá tiện lợi với người sử dụng. Bởi vì Proxy cho phép người sử dụng truy xuất những dịch vụ Internet từ hệ thống cá nhân của họ, vì vậy nó không cho phép những Packet đi trực tiếp giữa hệ thống người sử dụng và Internet. Đường đi là gián tiếp thông qua dual–homed host hoặc thông qua sự kết hợp giữa Bastion Host và screening Router.
Thực tế Proxy hiểu được những nghi thức dưới, nên quá trình truy cập (logging) được thực hiện theo hướng hiệu quả đặc biệt. Ví Dụ: thay vì logging tất cả những thông tin ngang qua đường truyền, một Proxy FTP Server chỉ log những lệnh phát ra và Server đáp ứng mà nhận được. Kết quả này đơn giản và hữu dụng hơn rất nhiều.
5.1.2. Những nhược điểm của Proxy
Mặc dù những phần mềm Proxy có hiệu quả rộng rãi cho những dịch vụ lâu đời và đơn giản như FTP và Telnet, nhưng những phần mềm mới và ít được sử dụng rộng rãi thì hiếm khi tìm thấy. Thường thì đó chính là sự chậm trễ giữa thời gian xuất hiện một dịch vụ mới và Proxy cho dịch vụ đó, khoảng thời gian cơ bản phụ thuộc vào phương pháp nào để thiết kế Proxy cho dịch vụ đó, điều này cho thấy khá khó khăn khi đưa dịch vụ mới vào hệ thống. Thường để đưa dịch vụ mới vào hệ thống khi chưa có Proxy cho nó thì nên đặt bên ngoài Firewall, bởi vì nếu đặt bên trong hệ thống thì đó chính là yếu điểm.
Đôi khi cần mỗi Proxy Server khác nhau cho mỗi nghi thức, bởi vì Proxy Server phải hiểu nghi thức đó để xác định những gì được phép và không được phép. Để thực hiện nhiệm vụ như là Client đến Server thật và Server thật đến Proxy Client, sự kết hợp, cài đặt (install) và cấu hình (config) tất cả những Server khác nhau đó có thể rất khó khăn.
Những dịch vụ Proxy thường sửa đổi chương trình Client, procedure hoặc cả hai. Loại trừ một vài dịch vụ được thiết kế cho Proxying, Proxy Server yêu cầu sửa đổi với Client hoặc procedure, mỗi sự sửa đổi có những bất tiện riêng của nó, không thể luôn luôn sử dụng công cụ có sẵn với những cấu trúc hiện tại của nó.
Proxying dựa vào khả năng chèn vào Proxy Server giữa Client và Server thật mà yêu cầu những tác động tương đối thẳn thắn đối với cả hai.
Những dịch vụ Proxy không bảo vệ cho hệ thống ứng với những nghi thức kém chất lượng. Như một giải pháp an toàn, Proxying dựa vào những khả năng xác định những tác vụ ở trong nghi thức an toàn. không phải tất cả các dịch vụ đều cùng cấp theo khuynh hướng an toàn này, như nghi thức Xwindows cung cấp khá nhiều tác vụ không an toàn.
5.2. Sự kết nối thông qua Proxy (Proxying)
Những chi tiết trong việc Proxying thực hiện như thế nào khác nhau từ dịch vụ này đến dịch vụ khác, khi cài đặt (set up) Proxying, có một vài dịch vụ được thực hiện dễ dàng hoặc tự động, nhưng vài dịch vụ có sự chuyển đổi rất khó khăn. Tuy nhiên, trong hầu hết những dịch vụ, ngoài yêu cầu những phần mềm Proxy Server tương ứng, trên Client cũng phải cần những yêu cầu như sau:
Custom Client software: phần mềm loại này phải biết như thế nào để liên kết với Proxy Server thay Server thật khi người sử dụng yêu cầu và yêu cầu Proxy Server những gì Server thật kết nối đến. Nhưng phần mềm custom Client thường có hiệu quả chỉ một vài platform.
Ví Dụ: Package igateway từ Sun là một Proxy package cho FTP và Telnet, nhưng nó chỉ được sử dụng trên hệ thống Sun bởi vì nó cung cấp recompiled Sun binaries.
Hình 46: Kết nối giữa người dùng (Client) với Server qua Proxy
Mặc dù nếu phần mềm có hiệu quả cho platform tương ứng, nó cũng có thể không phải điều mà người sử dụng mong muốn, Ví Dụ: trên Macintosh có hàng chục chương trình FTP Client, một trong vài số đó thật sự có những giao diện khá ấn tượng với người sử dụng, những phần khác có những đặc điểm hữu dụng khác. Anarchie là chương trình mà nó kết hợp một archie Client và FTP Client bên trong chương trình đơn, vì vậy người sử dụng có thể tìm file với archie và dùng FTP để lấy nó, tất cả với giao diện người sử dụng thích hợp, điều này sẽ không may mắn cho chúng ta nếu muốn hỗ trợ Proxy Server.
Sử dụng những chuyển đổi Client cho Proxying không dễ dàng thuyết phục được người sử dụng. Trong hầu hết những hệ thống sử dụng Client không chuyển đổi những kết nối bên trong và một số chuyển đổi chỉ với những kết nối bên ngoài, lúc này người sử dụng chỉ cần phải sử dụng thêm những chương trình thêm vào để tạo được sự kết nối bên ngoài.
Custom user procedure: người sử dụng dùng phần mềm Client chuẩn để giao tiếp với Proxy Server và nó kết nối đến Server thật, thay thế trực tiếp Server thật.
Proxy Server được thiết kế thực thi với phần mềm Client chuẩn. Tuy nhiên, chúng yêu cầu những người sử dụng theo những custom procedure. Người sử dụng trước tiên kết nối đến Proxy Server và sau đó cung cấp cho Proxy Server tên host mà họ muốn kết nối đến. Bởi vì một vài nghi thức được thiết kế để truyền những thông tin này, người sử dụng không những phải nhớ tên của Proxy Server nhưng cũng phải nhớ những host khác mà họ muốn giao tiếp.
Như thế nào để thực hiện những công việc này, cần phải nắm được những thủ tục đặc trưng theo sau mỗi nghi thức.
5.3. Các dạng Proxy
5.3.1. Dạng kết nối trực tiếp
Phương pháp đầu tiên được sử dụng trong kỹ thuật Proxy là cho người sử dụng kết nối trực tiếp đến Firewall Proxy, sử dụng địa chỉ của Firewall và số cổng của Proxy, sau đó Proxy hỏi người sử dụng cho địa chỉ của host hướng đến, đó là một phương pháp brute force sử dụng bởi Firewall một cách dễ dàng, và đó cũng là một vài nguyên nhân tại sao nó là phương pháp ít thích hợp.
Trước tiên, yêu cầu người sử dụng biết địa chỉ của Firewall, kế tiếp nó yêu cầu người sử dụng nhập vào hai địa chỉ cho mỗi sự kết nối: Địa chỉ của Firewall và địa chỉ của đích hướng đến. Cuối cùng nó ngăn cản những ứng dụng hoặc những nguyên bản trên máy tính của người sử dụng điều đó tạo ra sự kết nối cho người sử dụng, bởi vì chúng sẽ không biết như thế nào điều khiển những yêu cầu đặc biệt cho sự truyền thông với Proxy.
5.3.2. Dạng thay đổi Client
Phương pháp kế tiếp sử dụng Proxy setup phải thêm vào những ứng dụng tại máy tính của người sử dụng. Người sử dụng thực thi những ứng dụng đặc biệt đó với việc tạo ra sự kết nối thông qua Firewall. Người sử dụng với ứng dụng đó hành động chỉ như những ứng dụng không sửa đổi. Người sử dụng cho địa chỉ của host đích hướng tới. Những ứng dụng thêm vào biết được địa chỉ Firewall từ file config cục bộ, set up sự kết nối đến ứng dụng Proxy trên Firewall, và truyền cho nó địa chỉ cung cấp bởi người sử dụng. Phương pháp này rất có hiệu quả và có khả năng che dấu người sử dụng, tuy nhiên, cần có một ứng dụng Client thêm vào cho mỗi dịch vụ mạng là một đặc tính trở ngại.
5.4.3. Proxy vô hình
Một số phương pháp phát triển gần đây cho phép truy xuất đến Proxy, trong vài hệ thống Firewall được biết như Proxy vô hình. trong mô hình này, không cần phải có những ứng dụng thêm vào với người sử dụng và không phải kết nối trực tiếp đến Firewall hoặc biết rằng Firewall có tồn tại. Sử dụng sự điều khiển đường đi cơ bản, tất cả sự kết nối đến mạng bên ngoài được chỉ đường thông qua Firewall. Như những Packet nhập vào Firewall, tự động chúng được đổi hướng đến ứng dụng Proxy đang chờ. Theo hướng này, Firewall thực hiện rất tốt trong việc giả như host đích. khi kết nối được tạo ra Firewall Proxy, Client application nghĩ rằng nó được kết nối với Server thật, nếu được phép, Proxy application sau đó thực hiện hàm Proxy chuẩn trong việc tạo kết nối thứ hai đến Server thật.
Proxy lớp ứng dụng thì đối nghịch với Proxy lớp circuit: application–level Proxy được thực thi ở lớp ứng dụng. Nó cung cấp cho từng dịch vụ riêng và interpret những dòng lệnh trong những nghi thức đó. Một circuit–level Proxy tạo nên một circuit giữa Client và Server không cần phải interpret những nghi thức này. Nói chung, application–level Proxy sử dụng modified procedure và circuit–level Proxy sử dụng modified Client. Để tạo ra kết nối Proxy, phải biết vị trí nào muốn kết nối đến. Một hybrid gateway đơn giản có thể chặn đứng kết nối, nhưng một Proxy host chỉ có thể nhận kết nối mà đề nghị với nó, và phải chỉ ra vị trí muốn kết nối. Một application–level Proxy có thể thể nhận thông tin trong từng nghi thức riêng. Một circuit–level Proxy không thể interpret theo từng nghi thức và cần phải có thông tin hồ trợ cho nó thông qua một cách nào khác. Ưu điểm của circuit–level Proxy là ở đó nó cung cấp cho hầu hết những nghi thức khác nhau, hầu như circuit–level Proxy Server cũng là những Proxy Server chung cho tất cả các dạng nghi thức, tuy nhiên không phải mọi nghi thức đều dễ dàng được điều khiển bởi circuit–level Proxy, khuyết điểm của circuit–level Proxy Server là nó điều khiển dựa vào những gì xảy ra thông qua Proxy này như là Packet filter, nó điều khiển những kết nối cơ bản dựa vào địa chỉ nguồn và địa chỉ địa chỉ đíchvà không có thể xác định những lệnh đi qua nó là an toàn hoặc những sự kiện mà nghi thức đó mong muốn, circuit–level Proxy dể dàng bị đánh lừa bởi những Server setup lại những cổng gán đến những Server khác.
Proxy chung thì đối nghịch với những Proxy chuyên biệt: mặc dù “application–level” và “circuit–level” thường được dùng, nhưng đôi khi cũng phân biệt giữa “dedicated” và “generic” Proxy Server. Một dedicated Proxy Server là Server chỉ phục vụ một nghi thức đơn, generic Proxy Server là Server phục vụ cho nhiều nghi thức. Thật ra, dedicated Proxy Server là application–level, và generic Proxy Server là circuit–level.
Intelligent Proxy Server: một Proxy Server có thể làm nhiều điều chứ không phải chỉ là sự chuyễn tiếp những yêu cầu, đó chính là một intelligent Proxy Server, Ví Dụ: cern http Proxy Server caches data, vì vậy nhiều yêu cầu data không đi ra khỏi hệ thống khi chưa có sự xử lý của Proxy Server. Proxy Server (đặc biệt là application–level Server ) có thể cung cấp logging dễ dàng và điều khiển truy xuất tốt hơn, còn circuit–level Proxy thường bị giới hạn bởi những khả năng này.
Using Proxying với những dịch vụ Internet: vì Proxy chèn vào giữa sự kết nối Client và Server, nó phải được thích ứng với từng dịch vụ riêng, đôi khi một số dịch vụ rất dễ với cách thực hiện bình thường nhưng lại rất khó khi thêm vào Proxy.
TCP cũng đối nghịch với những nghi thức khác: TCP là nghi thức connection_oriented, nên nó chỉ khó khăn trong khoảng thời gian ban đầu để tạo cầu nối sau đó nó tiếp tục sử dụng cầu nối đó để truyền thông, còn UDP thì ngược lại nên khó hơn, ICMP là low Protocol nên có thể dùng Proxy.
Unidirectional versus multidirectional connection: nó dễ dàng cho một Proxy Server chặn đứng những kết nối khởi đầu từ một Client đến Server, nhưng nó rất khó cho việc ngăn chặn kết nối ngược lại, Server có thể phải interpret hoặc sửa đổi thêm vào Protocol để tạo ra kết nối chính xác.
Ví Dụ: Normal mode FTP yêu cầu Proxy Server chặn port Client gửi đến Server, mở một kết nối từ Proxy đến Client với cổng đó và gửi một cổng khác đến Server thật. Nó không cung cấp cho Proxy Server đơn giản chỉ đọc port trên hướng đó, bởi vì có thể cổng đó đã được sử dụng, sự kiện này luôn luôn nảy sinh đối với nghi thức yêu cầu kết nối ngược lại.
Protocol sercurity: một vài dịch vụ để thực hiện Proxy cho nó có thể khá đơn giản, nhưng loại trừ vấn đề về security. Nếu một nghi thức vốn không an toàn, Proxy không thể làm điều gì khác để tăng độ an toàn cho nó. Thường nếu khó phân biệt giữa những tác vụ an toàn và không an toàn thì nên đặt dịch vụ đó trên Victim host.
User specified data: vài dịch vụ, đặc biệt “store and forward” như smtp, nntp, ..thường chính nó đã tự hổ trợ tính Proxying. Những dịch vụ này được thiết kế truyền nhận những message bởi Server và stored đến khi chúng có thể gửi được các Server tương ứng, nếu xem những header nhận của incoming Internet e_mail, những message đi từ người gửi đến người nhận thông qua các bước : Máy gửi – Outgoing mail gateway tại vị trí người gửi – Incoming mail gateway tại vị trí người nhận – Cuối cùng đến được máy nhận.