Bộ Công Thương Trường Đại Học Công Nghiệp Hà Nội

Khoa Công nghệ thông tin


Báo cáo bài tập lớn
Môn: Hệ Điều Hành Đề tài : bảo mật trong Linux
Lớp:KHMT2-K2 Giáo viên hướng dẫn Nhóm thực hiện : Thầy Nguyễn Thanh Hải :

Hà Nội - 2009

2

4. Tường lửa: Lọc IP của các gói tin Trong khi TCP wrappers được sử dụng dể giới hạn tập hợp của máy chủ, nó còn có thể thiết lập kết nối phục vụ đến một máy nào đó. Nhiều trường hợp nó có thể thâm nhập vào một hệ thống để kiểm soát các gói thông tin. Ở đây, TCP wrappers chỉ làm việc với những cấu hình đã được định sẵn inetd hoặc xinetd có một số dịch vụ là "độc lập" và được cung cấp quyền kiểm soát tính năng truy xuất dữ liệu. Ngày nay, để bảo vệ chính mình cũng như chống lại các mối de dọa tấn công từ trên mạng internet, người dùng sử dụng kĩ thuật được gọi là IP filtering. IP filtering kiểm tra nhân mỗi gói tin đuợc truyền hay nhận trên mạng và quyết định xem liệu có cho gói tin này đi qua hay không hoặc sửa lỗi nó trước khi cho nó đi qua. IP filtering thường được gọi là "firewalling", bởi vì nó lọc các packet đến hoặc đi trên máy tính của bạn mà bạn đang xây dựng một "firewall" giữa hệ thống và phần còn lại của Internet. IP filtering bảo vệ máy tính của bạn chống lại sự tấn công của virus, Trojan Horse và các lỗi ứng dụng. Ðể tạo một IP filtering, chúng ta cần biết packet nào cho phép và packet nào không được phép.Thông thường, sự chọn lựa ra một packet là dựa vào phần mô tả của packet header, bao gồm cả các thông tin ví dụ như nguồn và đích của địa chỉ IP, các kiểu giao thức (TCP,UDP...), số hiệu cổng nguồn và số hiệu cổng đích. Ðôi khi việc kiểm tra packet header không đủ khả năng để hoàn thành một nhiệm vụ, nhưng chúng ta cần kiểm tra và làm sáng tỏ dữ liệu mang theo trong giới hạn một packet. Kĩ thuật này thường được gọi là "stateful inspection". Ví dụ, chúng ta có thể cho phép nhũng nguời sử dụng đi sâu vào our network để sử dụng FTP servers bên ngoài mạng. IP filtering được thi hành bởi nhân Linux, cái mà chứa code để kiểm tra mỗi gói nhận và mỗi gói chuyển. Những quy tắc đã được định cấu hình sử dụng một user-space, công cụ cấu hình đó được chấp nhận từ những dòng lệnh đơn filter đã định sẵn, đó là việc được sử dụng các quy tắc bởi nhân.

3

Có ba thế hệ IP filtering dựa vào kernel trong Linux với cơ chế cấu hình khác nhau. Thế hệ đầu tiên được gọi là IPFW, nó cung cấp khả năng lọc cơ bản nhưng thiếu mềm dẻo, linh hoạt và không đủ cho những cấu hình phức tạp. Ngày nay IPFW ít được sử dụng. Thế hệ thứ hai của IP filtering được gọi là IP chain; cải tiến lớn trên IPFW, và vẫn thường được sử dụng. Thế hệ cuối cùng của việc filtering được gọi là netfilter/iptables. Netfilter là thành phần nhân và iptables là công cụ cấu hình không gian người dùng; những thuật ngữ đó thường được sử dụng cùng với nhau một cách liên hợp, có thể thay thế cho nhau. Netfilter không chỉ mềm dẻo hơn, dễ cấu hình hơn mà còn có khả năng mở rộng hơn. 1. Netfilter cơ bản Netfilter được thực hiện trong nhân Linux 2.4.0 và các phiên bản mới hơn. Công cụ chính cho việc thao tác và hiển thị các bảng lọc được gọi là iptables bao gồm trong tất cả các bản phân phối Linux hiện tại. Lệnh iptables cho phép cấu hình một tập hợp lớn và phức tạp các firewall rules và do đó có một lượng lớn các tùy chọn dòng lệnh. Trong đó, Iptables manager cung cấp một sự giải thích đầy đủ. Bạn hãy nhìn vào một đoạn lệnh sau: iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT Lệnh này cài một IP filtering rule mà chấp nhận các kết nối mới tới cổng TCP 22 trên hệ thống máy cục bộ. Nó sử dụng một module mở rộng được gọi là state để tăng hiệu quả theo dõi các kết nối. Một khái niệm quan trọng trong netfilter là notion of a chain, nó bao gồm một danh sách các qui tắc được áp dụng để gói khi chúng đi vào, đi ra hoặc đi ngang qua các hệ thống. Mặc định nhân định nghĩa ba chain, nhưng administrator có thể chỉ ra những chain qui tắc mới và liên kết chúng lại với các chain trước đó. Ba chain đó là: INPUT Chain này áp dụng tới các gói tin được nhận và đích tới là hệ thống máy cục bộ.
4

OUTPUT Chain này áp dụng tới các gói tin được chuyển qua bởi hệ thống máy cục bộ. FORWARD Chain này áp dụng mỗi khi một gói tin được định hướng từ một giao diện mạng tới những cái khác thông qua hệ thống. Mỗi qui tắc trong một chain cung cấp một tập hợp các nguyên tắc chỉ ra gói tin nào trùng khớp với qui tắc và một hành động được thực hiện trên những gói tin được khớp. Các hành động mà có thể được thực hiện trên một gói tin bao gồm chấp nhận gói tin, hủy gói tin hoặc chuyển gói tin sang chain khác. Một gói tin đi ngang qua mỗi qui tắc trong chain cho tới khi nó được chấp nhận, hủy hoặc chạm tới phần cuối của chain. Nếu nó chạm tới phần cuối của chain, hành động mặc định sẽ được thực hiện để quyết định "số phận" của gói tin. Hành động mặc định có thể được cấu hình chấp nhận hoặc bỏ qua tất cả các gói tin. Netfilter của Linux hỗ trợ một số lượng các tùy chọn rất hay khác mà bạn có thể làm trong việc gạo filtering rules. Nó có khả năng phát triển các extension, mở rộng cách thức netfilter hoạt động. Một vài ví dụ về điều khiển các hành động đối với những gói tin phức tạp là: Packet logging Bạn có thể tạo ra các qui tắc như là log một bản mô tả về việc khớp các gói tin. Bởi vậy nó có thể chụp lại để được phân tích sau đó. Điều này rất có ích cho việc dò tìm các cuộc tấn công và cho việc thử nghiệm một cấu hình lọc. Stateful inspection Netfilter bao gồm một tập hợp các module trợ giúp mà có thể thực hiện kiểm tra kết nối tốt hơn. Network Address Translation Network Address Translation (NAT), hay được gọi là IP masquerading (giả mạo IP), cung cấp một cách thức cho việc viết lại địa chỉ IP và số hiệu cổng của một gói tin mà chúng được chuyển qua một chain. NAT thường được sử dụng để cho phép hệ thống trên những mạng cá nhân sử dụng một kết nối tới Internet với một địa chỉ
5

IP duy nhất. NAT là một chủ đề phức tạp, bạn có thể tìm hiểu thêm về NAT trong cuốn NAT HOWTO hoặc Network Administrator Guide (của nhà xuất bản O'Reilly) Packet and byte accounting Netfilter cung cấp các bộ đếm mà cho phép bạn đo bao nhiêu băng thông mạng điều khiễn mỗi qui tắc. Một vài hệ thống tính toán IP được dựa trên những thống kê này. Sử dụng lệnh iptables: Lệnh iptables được sử dụng để tạo ra các thay đổi tới các chain netfilter và các tập hợp các rule. Bạn có thể tạo ra một chain mới, xóa các chain, liệt kê các qui tắc trong một chain, flush chain và xác định hành động mặc định cho một chain. Iptables cũng cho phép bạn chèn, thêm, xóa và thay thế các qui tắc trong một chain. Dưới đây là bảng tổng kết về các tham số của lệnh iptables hoạt động trên các chain và tổng kết các hành động trên các qui tắc riêng lẻ. Bảng 1.Các hoạt động của iptables trên các chain Tham số Mô tả -L chain Liệt kê các qui tắc trong một chain hoặc tất cả các chain -F chain Xóa các qui tắc trong một chain hoặc tất cả các chain -Z chain Đưa bộ đếm byte trở về không -P chain Thiết lập hành động mặc định trên một chain thành action action Bảng 2. Các hoạt động của iptables trên các qui tắc -A chain Gắn một qui tắc vào một chain rulespecifica tion - D chain Xóa một qui tắc với rule number từ một chain rulenum -R chain Thay thế rule number rulenum trong rulenum chain bằng rulespecification
6

rulespecifica tion -I chain Chèn một qui tắc vào một chain rulenum rulespecifica tion Mỗi qui tắc lọc bao gồm các tham số mô tả các gói tin ăn khớp với qui tắc. Sử dụng một dấu chấm than trước mỗi tham số sẽ đảo ngược chúng. Các tham số chung nhất được tổng kết trong bảng sau: Bảng 3. Các tham số của lệnh iptables Tham số Khớp -p ! Giao thức gói. Thiết lập hợp lệ là tcp, udp, protocol icmp, or all. -s ! Địa chỉ nguồn của gói, chỉ ra hostname hoặc source/m địa chỉ IP ask -d ! Địa chỉ đích của gói. Sử dụng cùng cú pháp source/m với địa chỉ nguồn ask - sport ! Cổng nguồn của gói. Chỉ ra một hằng số hiệu port cổng cho một dịch vụ - dport ! Cổng đích của gói. Sử dụng cùng cú pháp với port cổng nguồn -i ! Giao diện mạng nơi mà gói được nhận interface -o ! Địa chỉ mạng nơi mà gói được gửi Interface Một số lượng các tùy chọn quan trọng được sử dụng khi bạn tạo các tập hơp qui tắc được tổng kết trong bảng sau: Bảng 4. Những tùy chọn quan trọng của iptables
7

Tùy chọn -v -n -m module

Mô tả Hữu ích khi liệt kê các qui tắc với –L Hiển thị địa chỉ IP trong dạng số Tải iptable module ngoài với tên module

Ngoài ra, để chỉ ra các tham số khớp, mỗi qui tắc netfilter phải chỉ ra một vài hành động để lấy mỗi gói tin khớp với qui tắc. Nếu không có hành động nào được chỉ ra cho một qui tắc, gói tin và bộ đếm byte cho qui tắc đó sẽ được tăng lên và gói được chuyển sang qui tắc tiếp theo trong chain. Để chỉ ra một hành động cho một qui tắc hãy sử dụng cú pháp sau: -j target Ở đây, -d đại diện cho "jump", có nghĩa là nếu một gói tin khớp qui tắc này, processing sẽ jump tới hành động được đặt tên là target. Target có thể là một trong những: ACCEPT Cho phép gói này được chuyển hay nhận DROP Bỏ qua gói tin QUEUE Chuyển gói tin vào một không gian của người sử dụng chờ xử lý RETURN Nếu được sử dụng với một chain do người dùng định nghĩa sẽ làm gói tin được chuyển tới chain đã gọi nó. Nếu được sử dụng với một chain có sẵn, sẽ làm gói tin nhảy tới phần cuối của chain. 2. Phát triển các bộ qui tắc lọc IP Thông thường, phần khó nhất của việc thực hiện IP firewall là quyết định xem bạn thực sự muốn làm gì. Mọi người không phải ai cũng quen thuộc với các khái niệm địa chỉ, giao thức, số hiệu cổng mà họ thường nghĩ tới các khái niệm về ứng dụng và người dùng cuối. Để xây dựng các qui tắc lọc, chúng ta phải dịch những yêu cầu mức cao thành chi tiết ở mức thấp với những thao tác lọc.

8

Làm thế nào các dịch vụ mà bạn đang quản lí với IP filtering thực sự làm việc? Đầu tiên và trước tiên, cần phả biết dịch vụ sử dụng TCP hay UDP, và những số hiệu cổng nào mà nó sử dụng. File etc/services có thể thường xuyên cung cấp về những gì bạn cần biết. 3. Quản lí lọc IP và các file kịch bản Quy tắc lọc được lưu trữ và được sử dụng bởi nhân trong nhiều trường hợp. Chẳng hạn như khi hệ thống khởi động lại quy tắc lọc IP phải được cấu hình lại. Để đảm bảo rằng một cấu hình tường lửa được phục hồi khi khởi động lại hệ thống, bạn nên để các lệnh IPtables trong một file kịch bản được tự động chạy vào thời điểm hệ thống khởi động. Gói phần mềm Iptables đóng gói hai chương trình iptables-save và iptables-restore, chúng lần lượt được lưu cấu hình hiện tại của netfilter tới một file và phục hồi nó từ file đó. Mỗi bản phân phối của linux có một các quản lý cấu hình tường lửa khác nhau. Red hat(version 7.0 và sau đó). Đầu tiên cấu hình các quy tắc lọc IP của bạn sử dụng các lệnh iptables thích hợp, sau đó chạy dòng lệnh sau: /sbin/service iptables save Dòng lệnh trên làm cho các quy tắc lọc được lưu vào /etc/sysconfig/iptables, nó được tự động đọc ở thời điểm hệ thống khởi động. Debian Cài đặt quy tắc iptables như sau: 1. Chỉnh sửa file /etc/default/iptables và đặt enable_iptables_initd=true. 2. Bạn phải tự cấu hình cho iptables sử dụng các lệnh iptables. 3. Gọi file /etc/init.d/iptables save_active để lưu cấu hình bạn vừa cài đặt. SuSE Linux Để đơn giản, cấu hình chạy yast2 và chọn cấu hình tường lửa module Security&Users -> Firewall hoặc: 1. Sửa /etc/sysconfig/SuSEfirewall2.

9

2. Nếu cần thiết, vào file /etc/sysconfig/scripts/SuSEfirewall2custom và tùy chỉnh theo ý mình. 3. Khởi động tường lửa bởi lời gọi /sbin/SuSEfirewall2 start. 4. Cấu hình ví dụ với netfilter 1. Ví dụ lọc IP đơn giản Ở đây chúng ta sẽ mô tả cách sử dụng cơ bản các bộ lọc IP, tương tự như chúng ta sử dụng TCP wrappers. Để in ra màn hình các gói tin từ tất cả các máy chủ trên Internet, trừ các gói tin đích cho lệnh finger daemon. Lọc IP có thể được sử dụng để in ra màn hình rất nhiều loại khác nhau của các gói tin (ví dụ, ICMP các gói “ping”) và thường là cần thiết để bảo vệ các dịch vụ không được quản lý bởi TCP wrappers . Các qui tắc iptables không thể sử dụng tên máy chủ để xác định nguồn gốc hoặc các điểm đến của một gói tin. Bạn phải sử dụng địa chỉ IP khi xác định quy tắc. Việc quay lại tìm tên máy chủ không phải là một cách an toàn hoàn toàn để nhận dạng một gói tin. Chúng ta sử dụng các địa chỉ IP thay vì tên máy chủ bằng cách sử dụng một công cụ là nslookup. Ví dụ 1. Ipchains đơn giản: # Nạp module kết nối theo dõi nếu chúng không được biên soạn vào trong Modprobe ip conntrack Modprobe ip conntrack ftp
#Thiết lập mặc định với chính sách giảm chuỗi đầu vào Iptables –p input drop #Chấp nhận những gói tin thuộc về một kết nối có sẵn # –A INPUT được sử dụng để nối với chuỗi đầu vào

# –m state sử dụng mô-đun kiểm tra trạng thái Modprobe ip_conntrack # Chấp nhận tất cả các gói tin trở lại từ các thiết bị ghép nối trong vùng của máy chủ. ‘-i lo’ xác định việc trở lại của các thiết bị ghép nối. Iptables -A INPUT -i lo -j ACCEPT #Chấp nhận kết nối mới thu được và các gói tin thuộc kết nối hiện tại đến cổng 22 (ssh).
10

Iptables -A INPUT -m state --state NEW -m tcp -p tcp| --dport 22 -j ACCEPT # Chấp nhận kết nối mới thu được từ ftp 192.168.1.24 Iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.1/24 \ --dport 21 -j ACCEPT #Chấp nhận kết nối mới thu được từ ftp spaghetti.vpizza.com có địa chỉ IP 10.21.2.4 Iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 10.21.2.4 \ --dport 21 -j ACCEPT #Chấp nhận kết nối mới thu được từ ftp *.vpizza.com Nó có hai mạng kết nối mang 172.18.1.0 và 172.25.3.0 Iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 172.18.1/24 \ --dport 21 -j ACCEPT Iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 172.25.3/24 \ --dport 21 -j ACCEPT Các quy tắc cụ thể chấp nhận tất cả các gói tin thuộc về một kết nối có sẵn. Những module theo dõi kết nối bảo đảm các kết nối truyền dữ liệu có thể được chấp nhận. 2. Giao thức lọc IP để bảo vệ toàn bộ mạng máy tính Trường hợp một mạng lưới các máy được kết nối vào Internet thông qua một cổng của máy tính, chúng ta có thể viết các quy tắc lọc để lọc lượng truy cập giữa mạng Internet và mạng nội bộ. Ở đây, chúng ta sẽ quy định trên cả chain INPUT và FORWARD còn máy sử dụng giao diện ppp0 để giao tiếp với Internet. Ví dụ 2 Sử dụng lưới lọc đẻ bảo vệ một mạng IP #Nạp module kết nối theo dõi nếu chúng không được lập vào trong chương trình chính: modprobe ip_conntrack
11

modprobe ip_conntrack_ftp #Thiết lập mặc định về nguyên tắc đầu vào và chuỗi chuyển tiếp để Drop. iptables -P INPUT DROP iptables -P FORWARD DROP #Chấp nhận tất cả các gói tin trở lại từ các thiết bị kết nối iptables -A INPUT -i lo -j ACCEPT #Tạo các ứng dụng mới do người dùng xác định. Điều này sẽ chứa chuỗi quy định liên quan đến cả INPUT và FORWARD. Do đó phải nhóm chúng lại với nhau trên một chuỗi đơn. iptables -N allowfwdi #Chấp nhận các gói tin thuộc vào một kết nối hiện tại. #Lưu ý rằng các quy định này được đặt do người dùng xác định. iptables -A allowfwdin -m state --state ESTABLISHED,RELATED -j ACCEPT #CHẤP NHẬN yêu cầu kết nối mới từ máy tính trong mạng nội bộ.Điều này cho phép các máy trên mạng nội bộ thiết lập các kết nối vào Internet,nhưng đó không phải là phương pháp xoay vòng.Lưu ý việc sử dụng các '-i! ppp0 'để xác định các gói tin đến từ các thiết bị ghép nối khác hơn là ppp0. iptables -A allowfwdin -m state --state NEW -i ! ppp0 -j ACCEPT #Chấp nhận kết nối mới thu được đến cổng 22 (ssh). iptables -A allowfwdin -m state --state NEW -m tcp -p tcp \ --dport 22 -j ACCEPT #Chấp nhận kết nối mới thu được từ FTP 192.168.1/24 iptables -A allowfwdin -m state --state NEW -m tcp -p tcp -s 192.168.1/24 \ --dport 21 -j ACCEPT #Chấp nhận kết nối mới thu được từ FTP spagehetti.vpizza.com iptables -A allowfwdin -m state --state NEW -m tcp -p tcp -s 10.21.2.4 \
12

--dport 21 -j ACCEPT #Chấp nhận kết nối mới thu được từ FTP *.vpizza.com iptables -A allowfwdin -m state --state NEW -m tcp -p tcp -s 172.18.1/24 \ --dport 21 -j ACCEPT iptables -A allowfwdin -m state --state NEW -m tcp -p tcp -s 172.25.3/24 \ fs Hiện nay các gói tin đã thông qua việc xác người dùng phải tùy thuộc vào hành động LOG. Sử dụng các module "giới hạn" để ngăn chặn các gói tin đăng nhập quá nhanh chóng. iptables -A allowfwdin -m limit --limit 2/sec -j LOG #Đặt thao tác mặc định trên dây chuyền do người dùng định ra để DROP. iptables -A allowfwdin -j DROP # Trực tiếp nhận được tất cả các gói tin cho các đầu vào hoặc chuyển tiếp cho người sử dụng của các gói tin để xác định chuỗi. iptables -A INPUT -j allowfwdin iptables -A FORWARD -j allowfwdin #Kích hoạt tính năng định tuyến IP (theo yêu cầu của tất cả các định tuyến IP, bất kể việc sử dụng các bộ lọc IP). echo 1 >/proc/sys/net/ipv4/ip_forward Để theo dõi bất kỳ hành động nào cố gắng vi phạm an ninh, chúng ta sẽ thêm một số quy tắc ghi lại các gói tin đã bị bỏ qua.Tuy nhiên, nếu một số lượng lớn các gói tin xấu đến, thì nguyên tắc này có thể điền lên đĩa với mục đăng nhập, hoặc làm chậm các cổng ra vào để thu thập thông tin. Vì vậy, chúng ta sử dụng các module hạn chế để kiểm soát tốc độ một quy tắc hành động được thực hiện. Để xem các quy tắc đã được định cấu hình ta sử dụng danh sách tùy chọn iptables-L. Sử dụng chế độ verbose (-v) sẽ hiển thị nhiều thông tin hơn so với thông tin cơ bản đưa ra của lệnh.
13

Sign up to vote on this title
UsefulNot useful