Đề tài Tìm hiểu về tường lửa và Netfilter

Chúng ta có địa chỉ local network là 10.0.0.8/8 và firewall sử dụng 2 card mạng, kết nối với internet bằng card mạng eth0, và local network là eth1. Ta có tập lệnh cấu hình sau: 1. Chô ́ ng Syn Flooding: sudo iptables -A FORWARD -p tcp —syn -m limit —limit 1/s -j ACCEPT 2. Chô ́ ng Scan Port: sudo iptables -A FORWARD -p tcp —tcp-flags SYN,ACK,FIN,RST RST -m limit —limit 1/s -j ACCEPT 3. Chô ́ ng Ping of Death: sudo iptables -A FORWARD -p icmp —icmp-type echorequest -m limit —limit 1/s -j ACCEPT

pdf19 trang | Chia sẻ: tienthan23 | Lượt xem: 5176 | Lượt tải: 5download
Bạn đang xem nội dung tài liệu Đề tài Tìm hiểu về tường lửa và Netfilter, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Trường Đại học Bách Khoa Hà Nội Viện CNTT-TT Quản trị mạng Đề tài: Tìm hiểu về tường lửa và Netfilter Thành viên: MSSV: 1. Đậu Văn Thắng 20112678 2. Vũ Văn Hưng 20111656 Giáo viên hướng dẫn: Trần Hoàng Hải Hà Nội : 10/07/2015 Nội Dung I. Tìm hiểu về firewall .................................................................................................................................... 3 1. Giới thiệu............................................................................................................................................... 3 2. Các tính năng bảo vệ ............................................................................................................................. 3 2.1 Bảo vệ máy tính cá nhân ................................................................................................................. 3 2.2 Thiết lập phạm vi an ninh mạng ...................................................................................................... 3 3. Các hoạt động của Firewall ................................................................................................................... 3 3.1. Quản lý và kiểm soát luồng dữ liệu trên mạng .............................................................................. 3 3.2. Xác thực quyền truy cập ............................................................................................................... 4 3.3. Hoạt động như một thiết bị trung gian .......................................................................................... 5 3.4. Bảo vệ tài nguyên ........................................................................................................................... 5 3.5. Ghi nhận và báo cáo các sự kiện .................................................................................................... 5 4. Firewall mềm ......................................................................................................................................... 5 5. Firewall cứng ......................................................................................................................................... 6 6. Các loại Firewall .................................................................................................................................... 6 6.1. IP Packet Filtering – Bộ lọc gói tin .................................................................................................. 6 6.2. Circuit-Level Gateway .................................................................................................................... 8 6.3. Application Level Firewalls - Cổng ứng dụng ................................................................................. 8 7. Cấu hình Firewall ................................................................................................................................. 10 II. Tìm hiểu về Netfilter. .............................................................................................................................. 12 1. Định nghĩa. .......................................................................................................................................... 12 2. Cơ sở của Netfilter. ............................................................................................................................. 13 3. Lịch sử. ................................................................................................................................................ 14 4. Các module chính của Netfilter. .......................................................................................................... 14 4.1. Giới thiệu về Iptables. .................................................................................................................. 15 4.2. Tìm hiểu về Nat (Network address translation). .......................................................................... 16 4.3. Tìm hiểu về Connection Tracking. ................................................................................................ 17 I. Tìm hiểu về firewall 1. Giới thiệu - Firewall( Tường lửa) là rào chắn mà một số cá nhân, tổ chức, doanh nghiệp, cơ quan nhà nước lập ra nhằm ngăn chặn người dùng mạng Internet truy cập các thông tin không mong muốn hoặc/và ngăn chặn người dùng từ bên ngoài truy nhập các thông tin bảo mật nằm trong mạng nội bộ. - Là thiết bị phần cứng hoặc phần mềm hoạt động trong môi trường máy tính nối mạng để ngăn chặn một số liên lạc bị cấm bởi chính sách an ninh của cá nhân hay tổ chức 2. Các tính năng bảo vệ 2.1 Bảo vệ máy tính cá nhân - Cách gọi khác là “Tường lửa bảo vệ” nhằm bảo vệ cho máy tính cá nhân hay mạng cục bộ, tránh sự xâm nhập, tấn công từ bên ngoài 2.2 Thiết lập phạm vi an ninh mạng - Hay còn gọi là “Tường lửa ngăn chặn” thường được các nhà cung cấp dịch vụ Internet thiết lập và có nhiệm vụ ngăn chặn không cho máy tính truy cập một số trang web hay máy chủ nhất định, thường dùng với mục đích kiểm duyệt Internet. 3. Các hoạt động của Firewall 3.1. Quản lý và kiểm soát luồng dữ liệu trên mạng Việc đầu tiên và cơ bản nhất mà tất cả các firewall đều có là quản lý và kiểm soát luồn dữ liệu trên mạng, firewall kiểm tra các gói tin và giám sát các kết nối đang thực hiện và sau đó lọc các kết nối dựa trên kết quả kiểm tra gói tin và các kết nối được giám sát. – Packet inspection (kiểm tra gói tin) là quá trình chặn và xử lý dữ liệu trong một gói tin để xác định xem nó được phép hay không được phép đi qua firewall. Kiểm tra gói tin có thể dựa vào các thông tin sau: - Địa chỉ IP nguồn - Port nguồn. - Địa chỉ IP đích - Port đích - Giao thức IP - Thông tin trong header (sequence numbers, checksums, data flags, payload information) – Connections và state: Khi hai TCP/IP host muốn giao tiếp với nhau, chúng cần thiêt lập một số kết nối với nhau. Các kết nối phục vụ hai mục đích. Thứ nhất, nó dùng để xác thực bản thân các host với nhau. Friewall dùng các thông tin kết nối này để xác định kết nối nào được phép và các kết nối nào không được phép.Thứ hai, các kết nối dùng để xác định cách thức mà hai host sẽ liên lạc với nhau (dùng TCP hay dùng UDP). – Stateful Packet Inspection (giám sát gói tin theo trạng thái): Statefull packet inspection không những kiểm tra gói tin bao gồm cấu trúc, dữ liệu gói tin mà kiểm tra cả trạng thái gói tin. 3.2. Xác thực quyền truy cập - Firewall có thể xác thực quyền truy cập bằng nhiều cơ cấu xác thực khác nhau. Thứ nhất, firewall có thể yêu cầu username và password của người dùng khi người dùng truy cập (thường được biết đến như là extended authentication hoặc xauth). Sau khi firewall xác thực xong người dùng, firewall cho phép người dùng thiết lập kết nối và sau đó không hỏi username và password lại cho các lần truy cập sau (thời gian firewall hỏi lại username và password phụ thuộc vào cách cấu hình của người quản trị). Thứ hai, firewall có thể xác thực người dùng bằng certificates và public key. Thứ ba, firewall có thể dùng pre-shared keys (PSKs) để xác thực người dùng. 3.3. Hoạt động như một thiết bị trung gian Khi user thực hiện kết nối trực tiếp ra bên ngoài sẽ đối mặt với vô số nguy cơ về bảo mật như bị virus tấn công, nhiễm mã độc hại do đó việc có một thiết bị trung gian đứng ra thay mặt user bên trong để thực hiện kết nối ra bên ngoài là cần thiết để đảm bảo an toàn. Firewall được cấu hình để thực hiện chức năng này và firewall được ví như một proxy trung gian. 3.4. Bảo vệ tài nguyên Nhiệm vụ quan trọng nhất của một firewall là bảo vệ tài nguyên khỏi các mối đe dọa bảo mật. Việc bảo vệ này được thực hiện bằng cách sử dụng các quy tắc kiểm soát truy cập, kiểm tra trạng thái gói tin, dùng application proxies hoặc kết hợp tất cả để bảo vệ tài nguyên khỏi bị truy cập bất hợp pháp hay bị lạm dụng. Tuy nhiên, firewall không phải là một giải pháp toàn diện để bảo vệ tài nguyên của chúng ta. 3.5. Ghi nhận và báo cáo các sự kiện Ta có thể ghi nhận các sự kiện của firewall bằng nhiều cách nhưng hầu hết các firewall sử dụng hai phương pháp chính là syslog và proprietaty logging format. Bằng cách sử dụng một trong hai phương pháp này, chúng ta có thể dễ dàng báo cáo các sự kiện xẩy ra trong hệ thống mạng. 4. Firewall mềm - Là những firewall được cài đặt trên một hệ điều hành. Firewall mềm bao gồm các sản phẩm như SunScreen firewall, IPF, Microsoft ISA server, Check Point NG, Linux’s IPTables Firewall mềm thường đảm nhận nhiều vai trò hơn firewall cứng, nó có thể đóng vai trò như một DNS server hay một DHCP server. - Ưu điểm: việc thay đổi và nâng cấp thiết bị phần cứng là tương đối dễ dàng và nhanh chóng. - Nhược điểm: được cài đặt trên một hệ điều hành và do đó khả năng có lỗ hổng trên hệ điều hành này là có thể xẩy ra. Khi lỗ hổng được phát hiện và được cập nhật bản vá lỗi, rất có thể sau khi cập nhật bản vá lỗi cho hệ điều hành thì firewall không hoạt động bình thường như trước, do đó cần tiến hành cập nhật bản vá cho firewall từ nhà cung cấp sản phẩm firewall. - Do hệ điều hành mà firewall mềm chạy trên nó không được thiết kế tối ưu cho firewall nên firewall mềm có hiệu suất thấp hơn firewall cứng. 5. Firewall cứng – Là những firewall được tích hợp sẵn trên các phần cứng chuyên dụng, thiết kế dành riêng cho firewall. Các sản phẩm firewall cứng đáng chú ý như Cisco PIX, NetScreen firewall, SonicWall Appliaces, WatchGuard Fireboxes, Nokia firewall - Ưu điểm: ● Trong nhiều trường hợp firewall cứng cung cấp hiệu suất tốt hơn so firewall mềm vì hệ điều hành của firewall cứng được thiết kế để tối ưu cho firewall. ● Lợi ích điển hình khi sử dụng firewall cứng là hiệu suất tổng thể tốt hơn firewall mềm, tính bảo mật được nâng cao, tổng chi phí thấp hơn so với firewall mềm. - Nhược điểm: ● Firewall cứng không được linh hoạt như firewall mềm ( không thể thêm chức năng, thêm các quy tắc như trên firewall mềm) ● Khả năng tích hợp thêm các chức năng bổ sung khó khăn hơn firewall mềm, chẳng hạn như chức năng kiểm soát thư rác đối với firewall mềm chỉ cần cài đặt chức năng này như một ứng dụng còn đối với firewall cứng phải có thiết bị phần cứng hỗ trợ cho chức năng này. 6. Các loại Firewall 6.1. IP Packet Filtering – Bộ lọc gói tin - Bộ lọc gói tin cho phép hay từ chố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ó thỏa mãn một trong các số các rules hay không. Các rules này dựa trên các thông tin ở packet header bao gồm các thông tin sau: ❖ Địa chỉ IP nguồn (IP Source Address). ❖ Địa chỉ IP đích (IP Destination Address). ❖ Protocol (TCP, UDP, ICMP, IP tunnel) ❖ TCP/UDP source port ❖ TCP/UDP destination port ❖ Dạng thông báo ICMP (ICMP message type) ❖ Cổng gói tin đến (Incomming interface of packet) ❖ Cổng gói tin đi (Outcomming interface of packet) Packet filtering router Nếu rules lọc gói đượ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 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 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. Ngoài ra, 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 những dịch vụ nào đó (SSH, SMTP, FTP) được phép mới chạy được trên hệ thống mạng cục bộ. ● ưu điểm: - Phương pháp dùng bộ lọc gói có chi phí thấp vì cơ chế lọc gói đã có sẵn trong các router - Bộ lọc gói trong suốt với người sử dụng nên không yêu cầu người sử dụng phải thao tác gì ● Nhược điểm - 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. - Do làm việc dựa trên header của các packet nên bộ lọc 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 6.2. Circuit-Level Gateway Circuit Level Gateway – cổng vòng – là một chức năng đặc biệt có thể thực hiện bởi một cổng ứng dụng. Cổng vòng đơn giản chỉ là chuyển tiếp 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 sau minh họa một hành động sử dụng kết 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ên nó che dấu thông tin về mạng nội bộ. Circuit Level Gateway - Cổng vòng Cổng vòng thường được sử dụng cho những kết nối ra ngoài. Ư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 firewall dễ dàng sử dụng cho người dùng trong mạng nội bộ muốn trực tiếp truy câp tới các dịch vụ internet, trong khi vẫn cung cấp chức năng bảo vệ mạng nội bộ từ những sự tấn công bên ngoài. 6.3. Application Level Firewalls - Cổng ứng dụng Đây là một loại firewall được thiết kế dể tăng cường chức năng kiểm soát các loại dịch vụ, giao thức 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 đặ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 service 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ị cho là chấp nhận được trong khi từ chối những đặc điểm khác. Application gateway Một cổng ứng dụng thường được coi như là một 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ệ điều hành (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 độ khác nhau ví dụ như username và password hay smart card. Mỗi proxy được cài đặ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 dữ liệu mạng đi qua nó. Điều này có nghĩ là 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 đều độc lập với các proxy khác trên Bastion host. Điều này cho phép dễ dàng cài đặt một proxy mới hay tháo gỡ một proxy. Ưu điểm: – Cho phép người quản trị 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 cập bởi các dịch vụ. – Cổng ứng dụng cho phép kiểm tra độ xác thực rất tốt và nó có nhậy ký ghi chép lại thông tin về truy cập hệ thống. – Rule lọc cho cổng ứng dụng dễ dàng cấu hình và kiểm tra hơn so với bộ lọc gói. Nhược điểm: – Cần phải có sự cấu hình trên máy user để user truy cập vào các dịch vụ proxy. Ví dụ telnet 7. Cấu hình Firewall - Mô tả cho việc cấu hình Firewall trên Ubuntu B1: Tường lửa mặc định bị vô hiệu hóa. Để kích hoạt tường lửa, nhập câu lệnh sau từ cửa sổ lệnh: sudo ufw enable B2: Đặt luật cho Firewall Giả sử ta muốn cho phép lưu lượng SSH qua cổng 22. Để làm điều này, hãy sử dụng một trong số những câu lệnh sau: sudo ufw allow 22 (Cho phép cả lưu lượng UDP và TCP) sudo ufw allow 22/tcp (Chỉ cho phép lưu lượng TCP) sudo ufw allow ssh (Kiểm tra trong file /etc/services trên hệ thống để tìm cổng mà SSH yêu cầu và cho phép nó. Nhiều service phổ biến được liệt kê trong file này) - để chặn lưu lượng SSH ra mạng, gõ câu lệnh sau: sudo ufw reject out ssh Để xem tất cả những luật đã được tạo ra, ta sử dụng câu lệnh sau: sudo ufw status Để xóa một luật, thêm từ khóa delete trước luật đó. Ví dụ như, để dừng hành động chặn lưu lượng SSH ra ngoài mạng, sử dụng câu lệnh sau: sudo ufw delete reject out ssh Để đặt lại tường lửa về trạng thái mặc định, sử dụng câu lệnh: sudo ufw reset II. Tìm hiểu về Netfilter. 1. Định nghĩa. Netfilter là một khung bên trong của nhân Linux giúp cung cấp sự linh hoạt cho các hoạt động mạng khác nhau để phù hợp với các xử lý khác nhau. Netfilter có các lựa chọn như: packet filtering, network address translation, và port translation. Các phương thức của Netfilter sẽ cung cấp các hướng dẫn cho các packets đi qua mạng cũng như việc tiến hành ngăn chặn các packet trong phạm vi dễ bị ảnh hưởng trong mạng máy tính. Netfilter đại diện cho một tập các hooks trong mạng máy tính (trong lập trình hooks bao gồm một loạt các kỹ thuật sử dụng để thay đổi hoặc tăng cường hành vi của một hệ điều hành, các ứng dụng, hoặc các thành phần phần mềm khác bằng cách chặn các chức năng như cuộc gọi, tin nhắn hay các sự kiện giữa các thành phần phần mềm) do đó nó cho phép xác định các modules để đăng ký hàm “callback” với ngăn xếp kernel's network (hàm callback là hàm của người dùng được triệu gọi trong một hàm khác hay một thủ tục trong tiến trình hoạt động, một hàm viết để triệu gọi hàm callback thì đối số của nó phải là kiểu con trỏ cho phép khai báo hàm callback). Sau đây là mô hình cơ bản của một một chuỗi các hooks. Phần bên trái là nơi mà gói Packets tới: qua các kiểm tra đúng đắn đơn giản (chẳng hạn như IP checksum), chúng sẽ qua netfilter framework là hook NF_IP_PRE_ROUTING [1]. Sau đó chúng vào đoạn mã chuyển tiếp, chúng sẽ được quyết định sẽ được gắn vào interface khác hay sẽ được xử lý luôn. Đoạn mã chuyển tiếp cũng có thể tiến hành xóa packets. Nếu nó được gắn vào interface của ban đầu, netfilter framework sẽ được gọi tới hook NF_IP_LOCAL_IN [2], trước khi qua để được xử lý. Nếu nó được gắn vào một interface khác, netfilter framework sẽ gọi tới hook NF_IP_FORWARD [3]. Packet sau đó sẽ qua netfilter hook cuối cùng, hook NF_IP_POST_ROUTING [4], trước khi được đưa vào chuỗi một lần nữa. Hook NF_IP_LOCAL_OUT [5] sẽ được gọi cho packets được tạo ra tại địa phương. Ở đây bạn có thể thấy sự định tuyến sau khi hook được gọi: thực tế đoạn mã chuyển tiếp sẽ được gọi đầu tiên (để cấu hình cho IP address và một số IP options). Nếu bạn muốn thay đổi việc chuyển tiếp, bạn phải thay đổi trường ‘skb  dst’ của bạn, có thể thực hiện bởi mã NAT. 2. Cơ sở của Netfilter. Hiện tại chúng ta có một số ví dụ về netfilter cho IPv4, bạn có thể nhìn thấy khi mỗi hook được kích hoạt. Nó là bản chất của netfilter. Kernel modules có thể đăng ký để lắng nghe tại tất cả các hooks. Một module mà đăng ký một function phải xác định quyền ưu tiên của function đó với hook; sau đó khi netfilter hook được gọi từ đoạn mã networking core, mỗi module đã đăng ký sẽ được gọi trong thứ tự quyền ưu tiên, và được tự do thao tác với các packet. Module có thể nói cho netfilter thực hiện một trong năm điều sau: 1. NF_ACCEPT: tiếp tục chuyển đổi như bình thường. 2. NF_DROP: xóa packets, không tiếp tục chuyển đổi. 3. NF_STOLEN: đã lấy các gói tin và không được chuyển tiếp nữa. 4. NF_QUEUE: hàng đợi các packet (thường dùng xử lý cho userspace). 5. NF_REPEAT: gọi đến hook lần nữa. Các phần khác của netfilter (xử lý hàng đợi packet) sẽ được đề cập trong các phần sau. 3. Lịch sử. Rusty Russell bắt đầu dự án netfilter/iptables vào năm 1988. Ông cũng là tác giả của dự án trước đó là “ipchains”. Khi dự án phát triển, ông tìm thấy một team gọi là simply coreteam vào năm 1999. Phần mềm được tạo ra sử dụng “GNU Generar Public License” và vào năm 2000 nó được nhập vào phiên bản 2.3.x của Linux kernel mainline. Vào tháng 8 năm 2003 Harald Welte trở thành người điều khiển của coreteam. Vào tháng 4 năm 2004, dự án đã bị đổ vỡ do việc phân phối các phần mềm nhúng trong routers mà không tuân thủ quy tắc của GPL. Vào tháng 12 năm 2007 Patrick McHardy, người rời khỏi dự án trong những năm trước đã trở thành người điều khiển của coreteam. “Trước iptables, các gói phần mềm chủ yếu cho việc tạo ra các bức tường lửa Linux là ipchains trong Linux kernel 2.2.x và ipfwadm trong Linux kernel 2.0.x, mà lần lượt dựa trên ipfw của BSD. Cả hai ipchains và ipfwadm thay đổi mã mạng để họ có thể thao tác các gói dữ liệu, như Linux kernel thiếu một khuôn khổ gói điều khiển chung cho đến khi sự ra đời của Netfilter.” 4. Các module chính của Netfilter. Hiện nay Netfilter đưa ra 3 module chính để sử dụng là:  Iptables  Nat  Connection tracking Sau đây chúng ta sẽ cùng đi sâu vào các chức năng chính của từng module. 4.1. Giới thiệu về Iptables. Iptables là Firewall được cấu hình và hoạt động trên nền Console rất nhỏ và tiện dụng, Iptables do Netfilter Organiztion viết ra để tăng tính năng bảo mật trên hệ thống Linux. Iptables cung cấp các tính năng sau: Tích hợp tốt với kernel của Linux. Có khả năng phân tích package hiệu quả. Lọc package dựa vào MAC và một số cờ hiệu trong TCP Header. Cung cấp chi tiết các tùy chọn để ghi nhận sự kiện hệ thống. Cung cấp kỹ thuật NAT. Có khả năng ngăn chặn một số cơ chế tấn công theo kiểu DoS. Để cài đặt Iptables trong Linux ta sử dụng câu lệnh sau: Trong Ubuntu: $ apt-get install ufw Trong RedHat: $ yum install iptables Một gói tin khi vào Iptables sẽ lần lượt đi qua 3 bảng được xây dựng sẵn đó là: _ Mangle: chịu trách nhiệm thay đổi các bits chất lượng dịch vụ trong TCP header như TOS (type of service), TTL (time to live), và MARK. _ Filter: chịu trách nhiệm lọc gói dữ liệu. Nó gồm có 3 quy tắc nhỏ (chain) để giúp bạn thiết lập các nguyên tắc lọc gói: Forward chain : lọc gói khi đi đến đến các server khác. Input chain : lọc gói khi đi vào trong server. Output chain: lọc gói khi ra khỏi server. Chain gồm nhiều luật (rule) để thao tác với các gói dữ liệu. Rule có thể là ACCEPT (chấp nhận gói dữ liệu), DROP (thả gói), REJECT (loại bỏ gói) hoặc tham chiếu (reference) đến một chain khác. _ NAT: gồm có 2 loại: Pre-routing chain: thay đổi địa chỉ đến của gói dữ liệu khi cần thiết. Post-routing chain: thay đổi địa chỉ nguồn của gói dữ liệu khi cần thiết. Trong Linux ta có các mô tả về iptables command Switch như sau: Iptables command Switch Mô tả -t Chỉ định bảng cho iptables bao gồm: filter, nat, mangle tables. -j Nhảy đến một target chain khi packet phù hợp luật hiện tại -A Thêm luật mới vào cuối iptables chains. -F Xóa tất cả các luật trong bảng lựa chọn. -p Mô tả các giao thức bao gồm: icmp, tcp, udp và all. -s Chỉ định địa chỉ nguồn. -d Chỉ định địa chỉ đích. -i Chỉ định “input” interface nhận packet. -o Chỉ định “output” interface chuyển packet ra ngoài. 4.2. Tìm hiểu về Nat (Network address translation). Nat dùng để chuyển đổi địa chỉ mạng. Trong Netfilter chúng ta có 2 loại Nat chính là: Dynamic Nat: NAT động là một trong những kĩ thuật chuyển đổi địa chỉ IP NAT (Network Address Translation). Các địa chỉ IP nội bộ được chuyển sang IP NAT như sau: NAT Router đảm nhận việc chuyển dãy IP nội bộ 192.168.0.x sang dãy IP mới 203.162.2.x. Khi có gói liệu với IP nguồn là 192.168.0.200 đến router, router sẽ đổi IP nguồn thành 203.162.2.200 sau đó mới gởi ra ngoài. Quá trình này gọi là SNAT (Source- NAT, NAT nguồn). Router lưu dữ liệu trong một bảng gọi là bảng NAT động. Ngược lại, khi có một gói từ liệu từ gởi từ ngoài vào với IP đích là 203.162.2.200, router sẽ căn cứ vào bảng NAT động hiện tại để đổi địa chỉ đích 203.162.2.200 thành địa chỉ đích mới là 192.168.0.200. Quá trình này gọi là DNAT (Destination-NAT, NAT đích). Liên lạc giữa 192.168.0.200 và 203.162.2.200 là hoàn toàn trong suốt (transparent) qua NAT router. NAT router tiến hành chuyển tiếp (forward) gói dữ liệu từ 192.168.0.200 đến 203.162.2.200 và ngược lại. Đóng giả địa chỉ IP (masquerade). Đây là một kĩ thuật khác trong NAT. NAT Router chuyển dãy IP nội bộ 192.168.0.x sang một IP duy nhất là 203.162.2.4 bằng cách dùng các số hiệu cổng (port-number) khác nhau. Chẳng hạn khi có gói dữ liệu IP với nguồn 192.168.0.168:1204, đích 211.200.51.15:80 đến router, router sẽ đổi nguồn thành 203.162.2.4:26314 và lưu dữ liệu này vào một bảng gọi là bảng masquerade động. Khi có một gói dữ liệu từ ngoài vào với nguồn là 221.200.51.15:80, đích 203.162.2.4:26314 đến router, router sẽ căn cứ vào bảng masquerade động hiện tại để đổi đích từ 203.162.2.4:26314 thành 192.168.0.164:1204. Liên lạc giữa các máy trong mạng LAN với máy khác bên ngoài hoàn toàn trong suốt qua router. 4.3. Tìm hiểu về Connection Tracking. Một trong những điều quan trọng hiện tại của việc xây dựng Netfilter framework là việc theo dấu kết nối. Theo dấu kết nối cho phép kernel giữ việc theo dấu cho tất cả các kết nối logic hoặc sessions. NAT dựa vào các thông tin này để dịch các dữ liệu liên quan theo cùng một cách và iptables có thể sử dụng thông tin này để thực hiện như một tường lửa. Mỗi kết nối Netfilter xác định bởi 4 trường (layer-3 protocol, source address, destination address, layer-4 protocol, layer-4 key). Layer-4 key phụ thuộc vào phương thức vận chuyển, cho TCP/UDP nó là số cổng, cho turnels nó thể là turnel ID. Để có thể kiểm tra được tất cả các trường hợp cổng TCP, packets phải được chống phân mảnh. DEMO Netfilter. Ở đây chúng ta sẽ cùng nhau xem xét và cấu hình Iptables để thực hiện việc cài đặt network trong Ubuntu. Chúng ta sẽ sử dụng lệnh: sudo iptables –L để xem chi tiết thông tin của bảng Iptables. Nếu bảng Iptables chưa được kích hoạt nó sẽ hiển thị: Còn nếu được kích hoạt nó sẽ hiển thị thông tin các lệnh, các lựa chọn địa chỉ nguồn, và địa chỉ đích. Sau đây là một ví dụ về Iptables được kích hoạt: Sau đây chúng ta sẽ cùng nhau thực hiện một số câu lệnh để cấu hình tường lửa trong Linux. Chúng ta có địa chỉ local network là 10.0.0.8/8 và firewall sử dụng 2 card mạng, kết nối với internet bằng card mạng eth0, và local network là eth1. Ta có tập lệnh cấu hình sau: 1. Chống Syn Flooding: sudo iptables -A FORWARD -p tcp —syn -m limit —limit 1/s -j ACCEPT 2. Chống Scan Port: sudo iptables -A FORWARD -p tcp —tcp-flags SYN,ACK,FIN,RST RST -m limit —limit 1/s -j ACCEPT 3. Chống Ping of Death: sudo iptables -A FORWARD -p icmp —icmp-type echo- request -m limit —limit 1/s -j ACCEPT 4. Cho các packet đa ̃thiết lâp̣ kết nối tiếp tuc̣ đi qua firewall: sudo iptables -A FORWARD -m state —state ESTABLISHED,RELATED -j ACCEPT 5. Chống giả maọ điạ chỉ nôị bô ̣từ bên ngoài để xâm nhâp̣: sudo iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP 6. Chuyển đổi điạ chỉ từ trong maṇg nôị bô ̣ra bên ngoài (SNAT): sudo iptables -t nat -A POSTROUTING -o eth0 -j SNAT —to 203.162.0.10 7. Chuyển đổi điạ chỉ của web server từ bên ngoài vào trong maṇg nôị bô ̣(DNAT): sudo iptables -t nat -A PREROUTING -d 203.162.0.9 -p tcp —dport 80 -j DNAT —to 10.0.0.10 8. Thiết lâp̣ Transparent proxy bằng cách chuyển hướng port 80 đến server squid proxy 10.0.0.9: sudo iptables -t nat -A PREROUTING -p tcp —dport 80 -j DNAT —to 10.0.0.9:3128 9. Chỉ cho máy tính trong maṇg nôị bô ̣có điạ chỉ card maṇg 00:C7:8F:72:14 đi ra: sudo iptables -A FORWARD -m state —state NEW -m mac —mac-source 00:C7:8F:72:14 -j ACCEPT 10. Chức năng ưu tiên thông lươṇg đối với truy câp̣ web: sudo iptables -A PREROUTING -t mangle -p tcp —sport 80 -j TOS —set-tos Maximize- Throughput. Sau khi thực hiện các lệnh chúng ta sẽ sử dụng lệnh sudo iptables –L và ta có kết quả sau:

Các file đính kèm theo tài liệu này:

  • pdftim_hieu_va_cau_hinh_netfilter_0601.pdf