Chương 2: LINUX FIREWALL IPTABLES2.1 Tổng quan về Iptables Iptables là một cấu trúc bảng trừu tượng, trong đó định nghĩa những luật và lệnh như là một thành phần của nền Netfilter frame
Trang 1
Trang 2
Trang 3
MỤC LỤC
LỜI MỞ ĐẦU 9
LỜI CẢM ƠN 11
Chương I: TỔNG QUAN VỀ FIREWALL 12
1.1 Firewall là gì? 12
1.2 Chức năng của Firewall 13
1.3 Cấu trúc của Firewall 13
1.4 Các thành phần của Firewall 13
1.4.1 Bộ lọc packet (Packet – filtering router) 14
1.4.2 Cổng ứng dụng (application-level getway) 15
1.4.3 Cổng mạch (circuit-Level Gateway) 17
1.5 Những hạn chế của firewall 18
Chương 2: LINUX FIREWALL IPTABLES 19
2.1 Tổng quan về Iptables 19
2.2 Tính năng của Iptables 19
2.2.1 Bảng filter 20
2.2.2 Bảng NAT 22
2.2.3 Bảng mangle 24
2.3 Cú pháp cơ bản của iptables 26
2.3.1 Các lệnh (command) của iptables 27
2.3.2 Các điều kiện trong luật 30
Trang 42.3.2.1 Nhóm các điều kiện chung 31
2.3.2.2 Nhóm các điều kiện ẩn 32
2.3.2.3 Nhóm các điều kiện hiện 34
2.4 Các hành động trong luật 36
2.4.1 User-defined-chain 36
2.4.2 DROP 37
2.4.3 REJECT 37
2.4.4 RETURN 37
2.4.5 SNAT 37
2.4.6 MASQUERADE 38
2.4.7 DNAT 39
2.5 Cách cơ bản để thiết lập một luật trong iptables 40
2.6 Cấu hình firewall iptables 42
2.6.1 Định nghĩa các biến đại diện 43
2.6.2 Xóa luật hiện tại 43
2.6.3 Đặt lại chính sách mặc định và ngắt firewall 44
2.6.4 Cho phép interface lookback 44
2.6.5 Xác định lựa chọn chính sách mặc định 45
2.6.6 Kiểm tra nhanh tính hợp lệ của gói tin 45
2.6.7 Sử dụng kêt nối có trạng thái để giảm xét luật 46
2.6.8 Ngăn giả mạo địa chỉ 46
Trang 52.6.9 Cấu hình cho phép một số dịch vụ TCP thông dụng 47
2.6.9.1 Email 47
2.6.9.2 Telnet 48
2.6.9.3 SSH 49
2.6.9.4 FTP 50
2.6.9.5 Dịch vụ Web 51
Chương 3: HỆ THỐNG PHÁT HIỆN XÂM NHẬP 53
3.1 Tổng quan về hệ thống phát hiện xâm nhập – IDS 53
3.1.1 Sự cần thiết của tìm kiếm và phát hiện xâm nhập 53
3.1.1.1 Xâm nhập mạng là gì? 53
3.1.1.2 Phát hiện xâm nhập mạng là gì? 54
3.1.2 Một số khái niệm cơ bản trong hệ thống phát hiện xâm nhập 54
3.1.2.1 Hệ thống phát hiện xâm nhập (IDS) 54
3.1.2.2 Network IDS – NIDS 54
3.1.2.3 Host IDS – HIDS 55
3.1.2.4 Các dấu hiệu (Signatures) 55
3.1.2.5 Sensor 55
3.1.3 Chức năng của IDS 56
3.1.3.1 Các ứng dụng cơ bản của IDS 56
3.1.3.2 Các tính năng chính của IDS 56
3.1.4 Phân loại 56
Trang 63.1.4.1 Theo tiêu chí phương pháp phát hiện 56
3.1.4.2 Theo tiêu chí môi trường vận hành của IDS 58
3.1.4.3 Theo tiêu chí cách phản ứng của IDS 58
3.1.5 Kiến trúc IDS 58
3.1.5.1 Cơ sở hạ tầng của IDS 59
3.1.5.2 Cấu trúc của IDS 61
3.1.6 Cách thức làm việc của IDS 63
3.1.6.1 Nework-Based IDS (NIDS) 63
3.1.6.2 Host Based IDS (HIDS) 66
3.1.6.3 Hệ thống phát hiện xâm nhập phân tán (DIDS) 69
3.1.6.4 Stack-based IDS 69
3.1.7 Một số phương pháp phát hiện xâm nhập của IDS 70
3.1.7.1 Phương pháp bắt gói tin (Packet Sniffing) 70
3.1.7.2 Phân tích nhật ký (Log Parsing) 70
3.1.7.3 Giám sát các cuộc gọi hệ thống (System Call Monitoring) 70
3.1.7.4 Giám sát hệ thống file (Filesystem Watching) 71
3.1.8 IDS làm gì khi phát hiện ra một xâm nhập? 71
3.1.8.1 Phản ứng thụ động (Passive Response) 71
3.1.8.2 Phản ứng chủ động (Active Response) 71
3.2 Cấu hình và cài đặt hệ thống phát hiện xâm nhập với Snort IDS Software 72
Trang 73.2.1 Giới thiệu về Snort 72
3.2.1.1 Sơ đồi khối của một hệ thống IDS sử dụng Snort 73
3.2.1.2 Các module thành phần bên trong Snort 74
3.2.1.2.1 Packet Decoder (Bộ phận giải mã gói) 75
3.2.1.2.2 Preprocessors (Bộ phận xử lý trước) 75
3.2.1.2.3 Detection Engine (Bộ phận phát hiện) 76
3.2.1.2.4 Module ghi nhật ký và cảnh báo (Logging and Alert System) 77
3.2.1.2.5 Các module Output 77
3.2.1.3 Các chế độ hoạt động của Snort 77
3.2.2 Cài đặt Snort 80
3.2.2.1 Cài đặt một số công cụ phát triển 80
3.2.2.2 Cài đặt Snort 81
3.2.2.3 Cài đặt BASE and ABOdb 87
3.2.2.4 Cài đặt Barnyard2 91
3.2.3 Snort rule 92
3.2.3.1 Các thành phần chính 93
3.2.3.1.1 Rule Header 93
3.2.3.1.2 Rules Option 94
3.2.3.2 Ví dụ về Snort rule 94
Chương 4: MÔ HÌNH THỬ NGHIỆM 96
Trang 84.1 Môi trường thử nghiệm 96
4.2 Mô hình thử nghiệm 96
4.3 Mô hình 1: Bảo vệ hệ thống có dịch vụ và chia sẻ internet 98
4.3.1 Yêu cầu và cấu hình Firewal 99
4.3.2 Sử dụng Snort theo dõi lưu lượng mạng 100
4.4 Mô hình 2: Phòng thủ và bảo vệ hệ thống với Snort IDS và Iptables 102 4.4.1 Tạo tấn công từ chối dịch vụ (DOS) 103
4.4.2 Kiểm tra và phân tích các dấu hiệu nhận được 104
4.4.3 Ngăn chặn tấn công và phòng thủ hệ thống 108
Chương 5: TỔNG KẾT 112
6.1 Kết quả đạt được 112
6.2 Những hạn chế 113
6.3 Hướng nghiên cứu 113
TÀI LIỆU THAM KHẢO 114
Trang 9LỜI MỞ ĐẦU
Mạng Internet ra đời đã mang lại rất nhiều lợi ích cho con người Tuy nhiên, bên cạnh những ưu điểm nó còn tồn tại rất nhiều nhược điểm, điểm yếu mà khó có thể khắc phục được Một trong những yếu điểm của nó chính là bài toán về
an ninh, an toàn và bảo mật trên mạng Internet Sự mở rộng về mặt địa lý cũng như các ứng dụng trên mạng Internet chính là sự mở rộng cửa hơn đối với kẻ tấn công mạng Nguy cơ mạng bị tấn công nằm ở tất cả các quốc gia có kết nối Internet, hơn nữa các thủ đoạn tấn công mạng ngày càng tinh vi Bài toán an ninh,
an toàn mạng và tấn công mạng luôn đi song hành Khi có kiểu tấn công mới thì giải pháp an ninh, an toàn cần phải nâng cấp, cải tiến ngay tức thời để chống lại tấn công này Khi công cụ tấn công không còn hiệu quả, kẻ tấn công lại nghĩ ra phương kế khác để vượt qua hệ thống bảo vệ Có thể nói rằng cuộc đua giữa an ninh, an toàn mạng và kẻ tấn công là cuộc chiến đầy phức tạp và không có hồi kết
Ở Việt Nam, chưa có lúc nào mà các cuộc tấn công mạng và các Website bị tấn công lại rầm rộ như những năm gần đây, đặc biệt vào những ngày đầu tháng 6 năm 2011, theo thống kê có khoảng hơn 1.500 website Việt Nam bị tấn công Chúng ta có thể nhìn thấy các Website của Việt Nam bị tấn công được liệt kê trên các trang web của nước ngoài Website bị tấn công rất đa dạng, từ ngành giáo dục đào tạo, các trang thông tin của các tỉnh, cho tới các doanh nghiệp kinh doanh trên mạng
Giải pháp an ninh, an toàn được biết đến nhiều là các hệ thống bức tưởng lửa (firewall) Firewall thường hoạt động như bộ lọc gói tin mạng (lọc địa chỉ, cổng, dịch vụ ), nó giải quyết một số vấn đề cơ bản cho bài toán an ninh, an toàn mạng Tuy nhiên, thực tiễn hiện nay đòi hỏi một giải pháp phức tạp và thông minh
để kết hợp với firewall để bảo vệ hệ thống mạng của chúng ta một cách hiệu quả hơn Một giải pháp như vậy hiện đang được triển khai ở thực tế là các hệ phát hiện xâm nhập (IDS – Intrusion Detection System)
Trong một vài năm trở lại đây, vấn đề an ninh mạng mới được quan tâm nhiều ở Việt Nam Chúng ta đã tổ chức một số hội nghị về an toàn thông tin mang tầm cỡ quốc gia như VN Security Trước đây, do điều kiện chủ quan cũng như
Trang 10khách quan chúng ta chưa coi trọng nhiều về vấn đề an toàn mạng Sau khi các mạng của các cơ quan, doanh nghiệp bị tấn công ảnh hưởng nhiều đến thương hiệu, kinh tế thì chúng ta mới bắt đầu chú ý tới an toàn và bảo mật mạng Có thể nói Việt Nam đã đi sau so với các quốc gia trên thế giới, điều này cũng dễ hiểu bởi vì trong một thời gian khá dài chúng ta chỉ nghĩ tới việc triển khai các hệ thống thông tin và ứng dụng công nghệ thông tin Và bây giờ là thời điểm để chúng ta nhìn nhận sâu hơn về các bài toán an ninh, an toàn và bảo mật mạng
Với phạm vi kiến thức đã tích lũy, học hỏi được trong suốt 4 năm học đại Đại học Nha Trang, cùng với xu hướng phát triển hiện nay tôi đã đi vào tìm hiểu và nghiên cứu một hệ thống an ninh bảo mật mạng gồm firewall kết hợp với hệ thống phát hiện xâm nhập để bảo vệ hệ thống mạng của doanh nghiệp trên nền tảng hệ điều hành Linux
Mang tính thực tế và bắt nhịp với công nghệ mới, đồ án này sẽ giúp tôi có thêm kinh nghiệm, hiểu biết rõ một hệ điều hành tương đối mới so với mọi người cũng như có thêm kiến thức về hệ thống firewall và dễ dàng thích nghi vào công việc sau khi ra trường
Trong quá trình tìm hiểu và làm báo cáo, do còn thiếu nhiều kinh nghiệm thực
tế nên không tránh khỏi những sai sót Rất mong các thầy cô và các bạn góp ý để đề
tài được hoàn thiện hơn Em xin chân thành cảm ơn!
Trang 11LỜI CẢM ƠN
Để hoàn thành bài luận tốt nghiệp “Kết hợp Firewall và hệ thống phát hiện xâm nhập (IDS) để bảo vệ hệ thống mạng của doanh nghiệp trên nền tảng hệ điều hành Linux”, lời đầu tiên tôi xin bày tỏ sự cám ơn tới ThS Ngô Văn Công,
người đã giúp tôi lựa chọn đề tài, truyền đạt kinh nghiệm, đưa ra những nhận xét quý giá và trực tiếp hướng dẫn tôi trong suốt quá trình hoàn thành luận văn tốt nghiệp
Tôi xin chân thành cám ơn các thầy cô trong khoa Công nghệ thông tin - trường Đại học Nha Trang đã truyền đạt kiến thức cho tôi trong suốt khoảng thời gian 4 năm học tập tại trường
Trong quá trình hoàn thành luận văn tốt nghiệp, tôi đã nhận được rất nhiều sự giúp đỡ, động viên từ bạn bè Tôi xin gửi lời cám ơn tới những người bạn luôn bên cạnh tôi để chia sẻ những kinh nghiệm trong học tập cũng như cuộc sống
Cuối cùng tôi kính chúc quý thầy, cô dồi dào sức khỏe và thành công trong sự nghiệp cao quý của mình
Nha Trang, tháng 6 năm 2011 Sinh viên thực hiện
La Hoài Bão
Trang 12Chương I: TỔNG QUAN VỀ FIREWALL
1.1 Firewall là gì?
Thuật ngữ Firewall có nguồn gốc từ một kỹ thuật thiết kế trong xây dựng để ngăn chặn, hạn chế hỏa hoạn Trong công nghệ mạng thông tin, Firewall là một kỹ thuật được tích hợp vào hệ thống mạng để chống sự truy cập trái phép, nhằm bảo vệ các nguồn thông tin nội bộ và hạn chế sự xâm nhập không mong muốn vào hệ thống Cũng có thể hiểu Firewall là một cơ chế để bảo vệ mạng tin tưởng (Trusted network) khỏi các mạng không tin tưởng (Untrusted network)
Thông thường Firewall được đặt giữa mạng bên trong (Intranet) của một công
ty, tổ chức, hay một quốc gia, và Internet Vai trò chính là bảo mật thông tin, ngăn chặn sự truy nhập không mong muốn từ bên ngoài (Internet) và cấm truy nhập từ bên trong (Intranet) tới một số địa chỉ nhất định trên Internet
Trong trường lợp lý tưởng, một Firewall cần phải cung cấp sự tách biệt về mặt vật lý giữa các mạng với nhau Ngày nay, sự tách biệt đó đã trở nên mờ dần bởi việc
sử dụng những mạng ảo Sự ảo hóa giúp phân chia các mạng ở mức logic, điều này không được khuyến khích trong xây dựng một hệ thống Firewall
Với vai trò là một hệ thống bảo mật, Firewall tạo một bức tường bao quanh máy tính hoặc một mạng với Internet Bức tường đó quyết định những luồng thông tin nào được phép trong một máy tính hay trong một mạng cục bộ Firewall giúp bảo
vệ máy tính hay một mạng khỏi hackers, viruses, và những hoạt động mang tính nguy hiểm
Trang 131.2 Chức năng của Firewall
Chức năng chính của Firewall là kiểm soát luồng thông tin từ giữa Intranet và Internet Thiết lập cơ chế điều khiển dòng thông tin giữa mạng bên trong (Intranet)
và mạng Internet Cụ thể là:
Firewall quyết định những dịch vụ nào ở bên trong được phép truy cập từ bên ngoài và ngược lại những dịch vụ bên ngoài nào được phép truy cập từ bên trong
Tất cả việc trao đổi thông tin giữa trong và ngoài đều được thực hiện thông qua Firewall
Chỉ có những trao đổi nào thõa mãn chính sách an ninh của Firewall mới được phép lưu thông qua Firewall
1.3 Cấu trúc của Firewall
Firewall bao gồm:
Một hoặc nhiều hệ thống máy chủ kết nối với các bộ định tuyến (router) hoặc có chức năng router
Các phần mềm quản lí an ninh chạy trên hệ thống máy chủ Thông thường là các
hệ quản trị xác thực (Authentication), cấp quyền (Authorization) và kế toán (Accounting)
1.4 Các thành phần của Firewall
Firewall chuẩn bao gồm một hay nhiều các thành phần sau đây:
Bộ lọc packet (Packet – filtering router)
Cổng ứng dụng (Application – level gateway hay proxy server)
Cổng mạch (Circuite level gateway)
Trang 141.4.1 Bộ lọc packet (Packet – filtering router)
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, SNMP, NFS ) thành các gói dữ liệu (data packets) rồi gán cho các packet 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
n h i ều đ ến cá c packet v à những con số địa chỉ của chúng
Bộ lọc packet 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 packet hay không Các luật lệ lọc packet 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 nguồn (IP Source address)
Địa chỉ IP đích (IP Destination address)
Những thủ tục truyền tin (TCP, UDP, ICMP, IP tunnel)
Cổng TCP/UDP nguồn (TCP/UDP source port)
Cổng TCP/UDP đích (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ọc packet được thỏa 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 chặ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 khóa 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
Trang 15kiể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ộ
Ưu điểm:
Đa số các hệ thống firewall đều sử dụng bộ lọc packet Một trong những
ưu điểm của phương pháp dùng bộ lọc packet là chi phí thấp vì cơ chế lọc packet đã được bao gồm trong mỗi phần mềm router Ngoài ra, bộ lọc packet 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ả
Nhược điểm:
Việc định nghĩa các chế độ lọc package là một việc khá phức tạp, đò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ể 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 packet 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
1.4.2 Cổng ứng dụng (application-level getway)
Đâ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 Proxy service là các
bộ code đặc biệt cài trên 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
Trang 16ra, proxy code có thể được 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
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ế đặc 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 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 phần mềm hệ thống, 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 cấu hình để cho phép truy cậ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 đề
Trang 17và kiểm tra hơn so với bộ lọc packet
Nhược điểm:
Yêu cầu các users thay đổi thao tác, hoặc thay đổi phần mềm đã cài đặt trên máy client cho truy nhập vào các dịch vụ proxy Chẳng hạn, 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
1.4.3 Cổng mạch (circuit-Level Gateway)
Cổng mạch là Firewall với 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 packet nào
Cổng mạch làm việc như một sợi dây, sao chép các byte giữa các 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 mạch thường được sử dụng cho những kết nối ra ngoài, nơi mà các
Trang 18quả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ư 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 mạch cho những kết nối đi Điều này làm cho hệ thống 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 cuộc tấn công bên ngoài
1.5 Những hạn chế của firewall
Firewall không đủ thông minh như con người để có thể đọc hiểu từng loại thông tin và phân tích nội dung tốt hay xấu của nó Firewall chỉ có thể ngăn chặn sự xâm nhập của những nguồn thông tin không mong muốn nhưng phải xác định rõ các thông số địa chỉ
Firewall không thể ngăn chặn cuộc tấn công nếu cuộc tấn công này không “đi qua” nó Một cách cụ thể, firewall không thể chống lại một cuộc tấn công từ một đường dial-up, hoặc sự rò rỉ thông tin do dữ liệu bị sao chép bất hợp pháp lên đĩa mềm
Firewall cũng không thể chống lại các cuộc tấn công bằng dữ liệu Khi có một
số chương trình được chuyển theo thư điện tử, vượt qua firewall vào trong mạng được bảo vệ và bắt đầu hoạt động ở đây
Một số ví dụ là các virus máy tính Firewall không thể làm nhiệm vụ rà quét virus trên các dữ liệu được chuyển qua nó, do tốc độ làm việc, sự xuất hiện liên tục của các virus mới và do có rất nhiều cách để mã hóa dữ liệu, thoát khỏi khả năng kiểm soát của firewall Tuy nhiên, firewal vẫn là giải pháp hữu hiệu được áp dụng
Trang 19Chương 2: LINUX FIREWALL IPTABLES
2.1 Tổng quan về Iptables
Iptables là một cấu trúc bảng trừu tượng, trong đó định nghĩa những luật và lệnh như là một thành phần của nền Netfilter framework giúp dễ dàng thực hiện ánh xạ địa chỉ (NAT), lọc gói (packet filtering) và xẻ gói (packet mangling) trong Linux 2.4 và những hệ điều hành tương lai NAT là một quá trình chuyển đổi một địa chỉ
IP thành một địa chỉ IP khác Lọc gói là cho phép hoặc ngăn chặn một gói tin tại một giao tiếp mạng (network interface) nào đó dựa trên địa chỉ nguồn, địa chỉ đích,
số hiệu cổng, giao thức sử dụng Xẻ gói là quá khả năng cho phép thay đổi, chỉnh sửa gói tin trước hoặc sau khi định tuyến
Iptables và Netfilter là sản phẩm thừa kế từ ipchains và ipfwadm trong những phiên bản Linux cũ Netfilter và iptables thường phối hợp với nhau thành một thể thống nhất là netfilter/iptables và được đề cập đến trong Linux 2.4 và những phiên bản về sau
2.2 Tính năng của Iptables
Khi một gói tin đầu tiên tới firewall, phần cứng sẽ tiếp nhận nó và sau đó chuyển đến trình điều khiển thiết bị tương ứng trong nhân hệ điều hành Sau đó, gói tin sẽ bắt đầu đi qua một loạt các bước trong nhân hệ điều hành, trước khi nó được gởi tới ứng dụng cục bộ hoặc là được chuyển tiếp đến máy tính khác hay chịu tác động nào đó của nhân hệ điều hành
Một mặt mạnh của iptables là ở chỗ nhiều bảng có thể được sử dụng để quyết định “số phận” của một gói tin nào đó, phụ thuộc vào kiểu của gói tin đang được kiểm tra và hành động sẽ được thực hiện trên gói tin đó
Iptables sử dụng khái niệm mỗi bảng luật riêng biệt cho mỗi loại chức năng để
Trang 20xử lý gói tin Những bảng luật này được cài đặt như là những module chức năng tách rời Có ba module chính là bảng filter, bảng nat và một bảng xử lý gói đặc biệt
là mangle Mỗi một trong ba bảng này đều có những module mở rộng riêng biệt gắn kết với nó
Mỗi một bảng có chứa các chuỗi luật mặc định thực hiện các tác vụ cần thiết dựa trên mục đích của bảng Tuy nhiên, người dùng cũng được phép định nghĩa những chuỗi luật mới trong các bảng
FORWARD được áp dụng trên tất cả các gói tin sẽ đi qua firewall (các gói tin không được phát sinh trên máy firewall và có đích đến ngoài máy firewall)
OUTPUT được áp dụng trên tất cả các gói tin được phát sinh từ các tiến trình cục bộ
Giúp đỡ
Hướng mục tiêu (target disposition) (ACCEPT hoặc DROP)
Kiểm tra được các trường trong header gói tin, hướng gói tin đi ra hay vào, phân mảnh gói tin
Luồng các gói tin đi trong netfilter như sau Gói tin sau khi qua chức năng định tuyến sẽ được quyết định là đi đến chain INPUT hay chain FORWARD
Trang 21Nếu gói tin được chuyển đến chain INPUT sẽ tiếp tục xử lý và chuyển tiếp đến chain OUTPUT Ngược lại nếu gói tin được chuyển qua chain FORWARD thì
sẽ thì gói tin sẽ chỉ được lọc ở chain này
Hình 2.1: Luồng gói tin trong bảng filter
Bảng filter có hai loại tính năng mở rộng là đích đến (target) và hợp (match) Tính năng hợp có thể hỗ trợ hợp những điều kiện sau:
Trạng thái kết nối hiện tại
Danh sách cổng (hỗ trợ hợp lệ nhiều cổng)
Địa chỉ MAC
Loại địa chỉ (unicast, multicast, broadcast), đoạn địa chỉ IP
Loại gói tin ICMP
Độ dài của gói tin
Thời gian gói tin đến
Sau một lượng gói tin nào đó
Người, nhóm gửi gói tin
Trang 22Những hành động thực có trong bảng này gồm:
Hành động DNAT (Destination Network Address Translation) được sử dụng trong trường hợp ta có một địa chỉ IP chung và muốn chuyển hướng các truy nhập vào firewall tới một số máy khác (ví dụ trên một DMZ) Nói cách khác, ta thay đổi địa chỉ đích của gói tin và dẫn đường cho nó tới máy tính khác
Hành động SNAT (Source Network Address Translation) được sử dụng
để thay đổi địa chỉ nguồn của các gói tin Một ví dụ của việc sử dụng hành động này là khi ta biết địa chỉ IP ngoài, nhưng cần thay thế địa chỉ
IP của mạng cục bộ bằng địa chỉ của firewall Với hành động này, firewall sẽ tự động SNAT và De-SNAT các gói tin, do vậy tạo cho nó có khả năng thực hiện kết nối từ LAN tới Internet
Hành động MASQUERADE được sử dụng theo đúng như cách thức SNAT thực hiện, nhưng hành động này thực hiện tính toán ít hơn Lý do
là mỗi khi hành động MASQUERADE bắt gặp một gói tin, nó kiểm tra
Trang 23một cách tự động địa chỉ IP để dùng thay vì thực hiện các thao tác như SNAT làm – chỉ sử dụng địa chỉ IP được cấu hình đơn (tĩnh) Hành động MASQUERADE thực hiện tốt với các địa chỉ IP động
Iptables hỗ trợ ánh xạ địa chỉ nguồn (SNAT) và ánh xạ địa chỉ đích (DNAT) Bảng nat cho phép ta thay đổi địa chỉ nguồn, đích, cổng của gói tin Bảng nat có ba chain được xây dựng sẵn:
Chain PREROUTING được sử dụng để chuyển đổi địa chỉ các gói tin ngay sau khi đi vào firewall
Chain OUTPUT được sử dụng để thay đổi địa chỉ các gói tin được phát sinh cục bộ (trên firewall) trước khi chúng bắt đầu qua bước quyết định dẫn đường
Chain POSTROUTING được sử dụng để thay đổi địa chỉ gói tin trước khi chúng ra khỏi firewall
Hình 2.2: Sơ đồ duyệt gói trong iptables có đi qua NAT
Trang 242.2.3 Bảng mangle
Bảng này được sử dụng để thay đổi thông tin của gói tin Ta có thể thay đổi nội dung gói tin và phần header của gói tin đó Bảng này gồm có 5 chuỗi luật được xây dựng sẵn: PREROUTING, POSTROUTING, OUTPUT, INPUT và FORWARD
PREROUTING được sử dụng để thay đổi gói tin khi chúng vừa vào firewall và trước khi chúng qua bước quyết định dẫn đường
POSTROUTING được sử dụng để thay đổi thông tin gói tin ngay sau khi tất cả các quyết định dẫn đường đã được thực hiện
INPUT được sử dụng để thay đổi thông tin gói tin sau khi chúng đã được dẫn tới bản thân máy cục bộ, nhưng trước khi được gởi tới tiến trình ứng dụng
FORWARD được sử dụng để thay đổi thông tin gói tin sau khi chúng đã sang bước quyết định dẫn đường đầu tiên, nhưng trước khi chúng chịu tác động của bước quyết định dẫn đường cuối cùng
OUTPUT được sử dụng để thay đổi thông tin của các gói tin được phát sinh cục bộ trước khi chúng được chuyển sang bước quyết định dẫn đường
Chú ý là không sử dụng bảng này để thực hiện lọc gói tin và cũng không thực hiện chuyển đổi địa chỉ NAT hay Masquerading trong bảng này
Các hành động có thể được sử dụng trong bảng mangle gồm:
Hành động ToS được sử dụng để thiết lập và/hoặc thay đổi trường Type
of Service trong header của gói tin Hành động này có thể được sử dụng
để thiết lập các chính sách trên mạng về cách thức xử lý gói tin Chú ý rằng thực tế hành động này không được sử dụng trên Internet, và phần lớn các router không quan tâm đến giá trị trong trường này và đôi khi
Trang 25chúng thực hiện sai trên thông tin chúng nhận được
Hành động TTL được sử dụng để thay đổi trường TTL (Time To Live) của gói tin
Hành động MARK được sử dụng để gán các giá trị mark đặc biệt cho gói tin Những mark này sau đó có thể được nhận diện bởi các chương trình iproute để thực hiện dẫn đường khác nhau trên gói phụ thuộc vào mark
mà chúng có
Đường đi của một gói tin trong netfilter/iptables như sau:
Hình 2.3: Sơ đồ duyệt gói tin trong Netfilter đầy đủ
Trang 262.3 Cú pháp cơ bản của iptables
Lệnh trong iptables cần phải theo một cấu trúc nhất định Nhiều khi thứ tự của những tùy chọn cũng có thể làm cho câu lệnh trở thành đúng hoặc sai Các dòng luật trong Firewall được duyệt từ trên xuống vì thế đôi khi một lệnh cho phép gói tin với một điều kiện nào đó đi sau một luật với điều kiện tương tự nhưng lại từ chối thì Firewall sẽ từ chối gói tin đó
Cấu trúc lệnh của iptables bắt đầu từ iptables sau đó là một hoặc nhiều tùy chọn, chain, tập điệu kiện hợp và cuối cùng là target Nói một cách rõ hơn, cấu trúc lệnh iptables như sau:
Trong đó:
lệnh Trong trường hợp không chỉ ra tên bảng, mặc định iptables sẽ thực hiện các lệnh trên bảng filter
dụ thêm hay xóa một luật trong chuỗi luật nào
đó
Chain có thể là INPUT, OUTPUT, FORWARD của bảng filter hoặc cũng có thể
là chain do ta tự định nghĩa
Đồng thời, chain của các bảng nat hay mangle
iptables <t table> <command> <chain> <matching criterria> <j target>
Trang 27điều_kiện_1 giá_trị_1 điều_kiện_2 giá_trị_2
… điều_kiện_N giá_trị_N
gói tin khi gói tin đó đáp ứng được luật (match) chỉ ra
Bảng 2.1: Các tùy chọn của cấu trúc lệnh
2.3.1 Các lệnh (command) của iptables
Các lệnh được sử dụng để thông báo cho iptables thực hiện một tác vụ xác định Chỉ cho phép sử dụng một lệnh trên một dòng lệnh của iptables Ngoại trừ lệnh –h, tất cả các lệnh đều phải được viết hoa Một số lệnh của iptables đòi hỏi phải có các đối số đi kèm
Thứ tự của các luật là rất quan trọng khi xác định một gói tin nào đó có đáp ứng được luật này hay luật khác không Do vậy, khi bổ sung một luật vào chuỗi luật, cần đảm bảo rằng nó không tác động tới các luật khác trong chuỗi luật đó
Một số lệnh cơ bản của iptables:
Trang 28được kiểm tra sau cùng
Ví dụ: iptables –A INPUT …
I | insert
<chain>
Chèn một luật vào trong chuỗi luật tại một vị trí xác định nào đó (theo số thứ tự được chỉ ra)
Nếu không chỉ ra vị trí muốn chèn vào, iptables
sẽ đặt luật mới vào đầu danh sách các luật trong chuỗi luật đó
Ví dụ: iptables –I INPUT 1 –dport 80 – j ACCEPT
xử lý theo chính sách mặc định Chính sách mặc định thường được sử dụng là ACCEPT hay REJECT
Ví dụ: iptables –P INPUT DROP
Xóa toàn bộ các luật thuộc chuỗi luật được chỉ
ra Nếu trong lệnh này không chỉ ra tên của
Trang 29chuỗi luật, tất cả các luật trong mọi chuỗi luật đều bị xóa
Ví dụ: iptables –N allowed
X | delete
chain
[<chain>]
Xóa bỏ một chuỗi luật người dùng định nghĩa
Để lệnh này làm việc, phải không có luật nào tham chiếu tới chuỗi luật bị xóa Lệnh này không được sử dụng để xóa chuỗi luật được xây dựng sẵn Nếu lệnh này được sử dụng mà không có bất kỳ lựa chọn nào, tất cả các chuỗi luật người dùng định nghĩa đều bị xóa
Ví dụ: iptables –X allowed
Z | zero Thực hiện gán về 0 giá trị đếm số byte và gói
tin trong chuỗi luật được chỉ ra hoặc trong tất
cả các chuỗi luật
Ví dụ: iptables –Z INPUT
L | list
[<chain>]
Liệt kê tất cả các luật trong chuỗi luật được chỉ
ra Sử dụng –n để hiển thị kết quả dưới dạng số
Trang 30Bảng 2.2: Một số lệnh cơ bản của iptables
Những tùy chọn của lệnh liệt kê –L:
OPTION DESCRIPTION
L n |
numeric
Liệt kê địa chỉ IP và số hiệu cổng ở dạng số thay vì
sử dụng tên đại diện
L v |
verbose
Liệt kê và hiển thị thêm một số thông tin cho từng luật chẳng hạng như bộ đếm dung lượng byte và số gói tin đã hợp với luật, những tùy chọn của luật và những card mạng áp dụng luật
Liệt kê vị trí của luật trong chain
Bảng 2.3: Các tùy chọn của lệnh liệt kê –L
2.3.2 Các điều kiện trong luật
Để xây dựng một luật của iptables, ta cần chỉ ra các điều kiện kiểm tra gói tin và sau đó phải chỉ ra các hành động xử lý gói tin đó khi thông tin của gói tin đáp ứng được điều kiện chỉ ra Trong phần này, ta khảo sát một số điều kiện cơ bản thường được sử dụng trong bảng filter và NAT Iptables sẽ chỉ thực hiện kiểm tra gói tin dựa vào các điều kiện được chỉ ra
Những điều kiện kiểm tra gói tin được chia thành các nhóm: nhóm các điều
Trang 31kiện chung, nhóm các điều kiện ẩn, nhóm các điều kiện hiện
2.3.2.1 Nhóm các điều kiện chung
Nhóm các điều kiện chung có thể được sử dụng trong tất cả các luật Nhóm điều kiện chung luôn luôn có hiệu lực, không xét đến giao thức gói tin, không xét đến các điều kiện mở rộng Không có tham số đặc biệt nào cần phải có khi
sử dụng những điều kiện này
Các điều kiện chung:
dụ như 1 có nghĩa là giao thức ICMP Các giá trị của điều kiện –p cũng có thể là một danh sách các giao thức, được phân cách nhau bởi dấu “,” Giá trị ALL đại diện cho mọi giao thức
Ví dụ: iptables –A INPUT –p tcp,udp
Ví dụ: iptables –A INPUT -s 192.168.1.1/27
d |
destination |
Điều kiện này được sử dụng để kiểm tra địa chỉ đích (dest-addr) của các gói tin Giá trị của điều
Trang 32Ví dụ: iptables –A INPUT –I eth0
Ví dụ: iptables –A FORWARD –o eth0
Bảng 2.4: Các điều kiện chung của luật
2.3.2.2 Nhóm các điều kiện ẩn
Các điều kiện ẩn được thực hiện, công nhận và được nạp một cách hoàn toàn tự động Hiện có 3 điều kiện ẩn áp dụng cho ba giao thức: điều kiện kiểm tra gói TCP, kiểm tra gói UDP và kiểm tra gói ICMP
Trang 33Nếu không chỉ ra lệnh này, iptables sẽ không kiểm tra cổng nguồn của gói tin Giá trị của source-port có thể là cổng hoặc tên dịch vụ (tên dịch vụ hợp lệ là tên các dịch vụ được khai báo trong tập tin /etc/service), cũng có thể là một dãy các cổng được cách nhau bởi dấu
có chỉ ra điều kiện –p tcp hoặc –p udp
Cú pháp của điều kiện này giống như
Điều kiện này chỉ hợp lệ khi trong luật
có chỉ ra điều kiện –p icmp Điều kiện icmp-type được sử dụng để kiểm tra
Trang 34các gói tin dựa trên kiểu giao thức ICMP của gói tin Các kiểu, của giao thức ICMP có thể được chỉ ra ở định dạng số hoặc định dạng tên
Ví dụ: iptables –A INPUT –p icmp icmp-type 8
một yêu cầu kết nối
Bảng 2.5: Nhóm các điều kiện ẩn
2.3.2.3 Nhóm các điều kiện hiện
Những điều kiện hiện là những điều kiện phải được nạp một cách đặc biệt với sự lựa chọn –m Sự khác nhau giữa các điều kiện hiện và điều kiện ẩn là ở chỗ các điều kiện ẩn sẽ tự động được nạp khi kiểm tra thuộc tính của các gói tin, trong khi các điều kiện hiện sẽ không bao giờ được nạp một cách tự động –
nó để cho người quản trị tự phát hiện và kích hoạt các điều kiện hiện
Các điều kiện hiện:
có chỉ ra điều kiện –p tcp hoặc –p udp
và điều kiện –m multiport Điều kiện source-port và điều kiện sport không
sử dụng cùng nhau trong một luật Chúng tương tự nhau nhưng giá trị của điều kiện này là một danh sách (list tối
đa 15 phần tử), các cổng được phân
Trang 35cách nhau bởi dấu “,”
Ví dụ: iptables –A INPUT –p tcp –m multiport source-port 22,53,80,110
destinationport
list
Điều kiện destination-port tương tự như điều kiện dport, nhưng giá trị của nó là một danh sách các cổng Cú pháp và điều kiện sử dụng của điều kiện này tương tự như điều kiện source-port
Ví dụ: iptables –A INPUT –p tcp –m multiport destination-port 22,53,80,110
tra gói tin dựa vào cả địa chỉ nguồn lẫn địa chỉ đích của gói tin Cú pháp điều kiện giống như source-port
Ví dụ: iptables –A INPUT –p tcp –m multiport port 22,53,80,110
macsource mac_addr Điều kiện này được dùng để kiểm tra
các gói tin dựa trên địa chỉ MAC nguồn của chúng Địa chỉ MAC, mac_add, phải được ghi ở định dạng: XX:XX:XX:XX:XX:XX Điều kiện –mac-source chỉ hợp lệ trong các chuỗi PREROUTING, FORWARD và INPUT, đồng thời trong luật phải chỉ
Trang 36ra điều kiện –m mac
Ví dụ: iptables –A INPUT –m mac mac-source 00:00:00:00:00:01
Bảng 2.6: Nhóm các điều kiện hiện
Các giá trị của điều kiện có thể được lấy “nghịch đảo” bằng cách sử dụng ký
tự “!” đứng sau điều kiện Ví dụ, nếu ta khai báo điều kiện sau –p ! icmp, iptables sẽ kiểm tra các gói tin không làm việc theo giao thức ICMP
2.4 Các hành động trong luật
Sau khi đã chỉ ra các điều kiện kiểm tra gói tin, bước cuối cùng của công việc thiết lập luật trong iptables là chỉ ra các hành động xử lý gói tin khi thông tin của gói tin đáp ứng được các điều kiện chỉ ra trong luật Tên của hành động
xử lý gói tin phải được đặt sau tham số -j trong luật Dưới đây là một số hành động xử lý gói tin cơ bản:
Ví dụ: iptables –A INPUT –p tcp –j tcp_packet ACCEPT
Ngay sau khi gói tin đáp ứng được các điều kiện trong một luật và hành động xử lý gói này là ACCEPT, gói tin được chấp nhận và không phải bị kiểm tra thêm qua các luật khác trong chuỗi luật hiện hành hay bị kiểm tra bởi các
Trang 37chuỗi luật khác trong cùng bảng Tuy nhiên, một gói tin được chấp nhận trong một chuỗi luật vẫn có thể phải đi qua các chuỗi luật khác trong các bảng khác
và có thể bị loại bỏ ở những bảng đó Để sử dụng hành động này, cần chỉ ra –j ACCEPT trong luật
2.4.2 DROP
Hành động DROP sẽ loại bỏ cái gói tin ngay lập tức Chú ý rằng hành động
có thể gây ra một số tác động ngoài ý muốn, do nó có thể bỏ lại những socket không dùng trên máy Do vậy, giải pháp tốt hơn là sử dụng hành động REJECT, đặc biệt là khi muốn ngăn chặn việc quét cổng
2.4.3 REJECT
Hành động REJECT hoạt động tương tự như hành động DROP, nhưng nó gửi thông báo lỗi cho máy gửi gói tin bị loại bỏ Hành động này chỉ được phép khai báo trong các chuỗi luật INPUT, FORWARD và OUTPUT
2.4.4 RETURN
Khi một gói tin “gặp” hành động RETURN, iptables sẽ ngừng kiểm tra gói tin trong chuỗi luật hiện hành Nếu chuỗi luật hiện hành là con của chuỗi luật khác, gói tin sẽ tiếp tục được kiểm tra bởi các luật trong chuỗi luật cha nếu không có hành động nào khác được thực hiện Nếu chuỗi luật là chuỗi luật chính, ví dụ INPUT, gói sẽ chịu tác động của hành động mặc định của chuỗi luật đó
2.4.5 SNAT
Hành động SNAT được sử dụng để thực hiện chuyển đổi địa chỉ mạng nguồn (Source Network Address Translation), có nghĩa là thay đổi địa chỉ IP nguồn trong header của gói tin Hành động này thường được áp dụng khi có
Trang 38nhiều máy tính sử dụng chung một kết nối Internet
Hành động SNAT chỉ hợp lệ khi được đặt trong chuỗi luật POSTROUTING của bảng NAT Chỉ có gói đầu tiên trong một kết nối là được thay đổi bởi hành động SNAT, và sau đó tất cả các gói kế tiếp sử dụng cùng kết nối sẽ cũng được đổi địa chỉ nguồn Thêm nữa, các luật khởi nạp trong chuỗi luật POSTROUTING sẽ được áp dụng tới tất cả các gói tin trong cùng dòng dữ liệu
Hành động SNAT được sử dụng cùng với lựa chọn to-source Lựa chọn này được dùng để xác định địa chỉ IP và cổng mà gói tin sẽ sử dụng Lựa chọn
sẽ thực hiện thay thế địa chỉ IP nguồn trong header của gói tin bằng một trong những địa chỉ IP được chỉ ra Nếu muốn cân bằng giữa các địa chỉ IP, ta có thể
sử dụng một dãy địa chỉ IP, sử dụng ký tự “-” để phân cách Các dòng dữ liệu sẽ
sử dụng các địa chỉ trong dải này một cách ngẫu nhiên; các gói tin của cùng một dòng dữ liệu sẽ sử dụng cùng một địa chỉ IP Trong SNAT, ta cũng có thể chỉ ra một dãy các cổng được sử dụng để thay đổi cổng nguồn của gói tin Các cổng nguồn chỉ hợp lệ khi điều kiện –p tcp hay –p udp được chỉ ra trong luật
Ví dụ: iptables –t nat –A POSTROUTING –p tcp –o eth0 –j SNAT source 194.236.50.155-194.236.50.160:1024-32000
to-2.4.6 MASQUERADE
Hành động MASQUARADE được sử dụng cơ bản như hành động SNAT, nhưng nó không đòi hỏi phải sử dụng lựa chọn to-source Hành động MASQUERADE được sử dụng để làm việc với các kết nối sử dụng địa chỉ IP động như các kết nối quay số (dial-up) hay DHCP Điều này có nghĩa là chỉ sử dụng hành động MASQUERADE với các kết nối IP được gán địa chỉ động Nếu ta có kết nối IP tĩnh, nên sử dụng hành động SNAT
Khi thực hiện MASQUERADE một kết nối, có nghĩa là sử dụng địa chỉ IP
Trang 39của một giao tiếp mạng thay địa chỉ IP nguồn trong header của gói tin Hành động MASQUERADE cũng tác động tới các kết nối bị “bỏ quên” khi một giao tiếp mạng tắt (nếu sử dụng NAT thì sẽ bị mất dữ liệu trong trường hợp này)
Hành động MASQUERADE vẫn có thể được sử dụng thay thế cho SNAT ngay cả khi sử dụng địa chỉ IP tĩnh, tuy nhiên việc sử dụng như thế không có lợi
do nó phải thực hiện thêm nhiều xử lý và có thể có mâu thuẫn trong tương lai
Chú ý hành động MASQUERADE chỉ hợp lệ khi được đặt trong chuỗi luật POSTROUTING của bảng NAT
Hành động MASQUERADE có thể sử dụng cùng với lựa chọn to-ports Lựa chọn này được sử dụng để gán lại cổng nguồn cho các gói tin đi ra Ta có thể chỉ ra một cổng hay một dãy các cổng, được phân cách nhau bởi ký tự “-” Lựa chọn này chỉ hợp lệ nếu trong luật có chỉ ra điều kiện –p tcp hay –p udp
Ví dụ: iptables –t nat –A POSTROUTING –p tcp –j MASQUERADE ports 1024-31000
to-2.4.7 DNAT
Hành động DNAT được sử dụng để thực hiện chuyển đổi địa chỉ mạng đích (Destination Network Address Translation) có nghĩa là nó được sử dụng để ghi lại địa chỉ IP Destination trong header của một gói tin Nếu một gói tin thỏa đều kiện của luật và chịu tác động của hành động DNAT, gói tin và tất cả các gói tin theo sau trong cùng dòng dữ liệu sẽ được chuyển đổi địa chỉ IP đích trong header của chúng và sau đó được dẫn đường tới giao tiếp mạng, máy hay mạng được yêu cầu Hành động này có thể rất hữu dụng, ví dụ như trong trường hợp
ta có một máy chủ web nằm trong LAN không có địa chỉ thật Ta có thể thông báo cho firewall chuyển tiếp tất cả các gói tin đi vào cổng HTTP của bản thân
nó (có địa chỉ thật) tới máy chủ web trong LAN
Trang 40Hành động DNAT chỉ có thể được sử dụng trong các chuỗi luật PREROUTING và OUTPUT trong bảng NAT
Lựa chọn to-destination được sử dụng cùng với DNAT để thông báo cho DNAT biết địa chỉ IP sẽ được sử dụng thay thế cho địa chỉ đích đến trong header của gói tin Ta có thể chỉ ra một dãy các địa chỉ đích, phân cách nhau bởi
ký tự “-”, mỗi dòng dữ liệu sẽ sử dụng ngẫu nhiên một địa chỉ trong dãy địa chỉ được chỉ ra Tất cả các gói tin trong cùng một dòng dữ liệu sẽ sử dụng cùng một địa chỉ IP Ta cũng có thể bổ sung thêm một cổng hay dãy các cổng muốn chuyển hướng gói tin tới những cổng đó Để thêm cổng, khai báo thêm :port vào địa chỉ mà ta muốn DNAT các gói tin; lựa chọn này chỉ hợp lệ nếu trong luật có chỉ ra điều kiện –p tcp hay –p udp
Ví dụ: iptables –t nat –A PREROUTING –p tcp –d 15.45.23.67 dport 80 –j DNAT to-destination 192.168.1.1-192.168.1.10
Khi sử dụng DNAT, các máy trong mạng cục bộ có thể không truy nhập được máy dịch vụ do vấn đề dẫn đường Do vậy, giải pháp đơn giản cho vấn đề này là sử dụng hành động SNAT cho tất cả các gói đi vào firewall
Ví dụ: iptables –t nat –A POSTROUTING –p tcp –dst $HTTP_IP dport 80 –j SNAT to-source $LAN_IP
Ngoài những điều kiện, hành động nêu trên, iptables còn có rất nhiều điều kiện và hành động khác nữa; để biết chi tiết về chúng, ta có thể tham khảo qua lệnh man
2.5 Cách cơ bản để thiết lập một luật trong iptables
Trong iptables chia ra thành các bảng (tables); trong mỗi bản sẽ chia ra thành nhiều chuỗi (chains) để xử lý packet tùy theo tình huống (hướng đi của packets); trong mỗi chain sẽ có các luật (rules) mà tôi sẽ cấu hình để xử lý các