intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Cài đặt và sử dụng Iptable

Chia sẻ: Tran Ngoc Son | Ngày: | Loại File: DOC | Số trang:31

245
lượt xem
98
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bảo mật là một vấn đề quan trọng hàng đầu với các hệ thống của các công ty, doanh nghiệp, các hệ thống cung cấp dịch vụ như web server, mail server, ftp server, cũng như nhiều dịch vụ khác trên mạng. Một trong những cách bảo vệ là sử dụng firewall. Báo cáo này trình bày cách chuyển một Linux server thành :

Chủ đề:
Lưu

Nội dung Text: Cài đặt và sử dụng Iptable

  1. LỜI MỞ ĐẦU I. Giới thiệu về Iptables Bảo mật là một vấn đề quan trọng hàng đầu với các hệ thống của các công ty, doanh nghiệp, các hệ thống cung cấp dịch vụ như web server, mail server, ftp server, cũng như nhiều dịch vụ khác trên mạng. Một trong những cách bảo vệ là sử dụng firewall. Báo cáo này trình bày cách chuy ển một Linux server thành : - Một firewall đồng thời cho mail server, web server, DNS server. - Một thiết bị dẫn đường (router) sẽ dùng NAT và chuyển tiếp cổng( port forwarding) để vừa bảo vệ hệ thống mạng của bạn, vừa cho phép 1 web server công khai chia sẻ địa chỉ firewall . Một trong những firewall thông dụng nhất chạy trên linux là Iptables. Ta sẽ xem qua một số chức năng của Iptables : - Tích hợp tốt với linux kernel, để cải thiện sự tin cậy và tốc độ ch ạy iptables . - Quan sát kỹ các gói dữ liệu. Điều này cho phép firewall theo dõi mỗi một kết nối thông qua nó, và dĩ nhiên là xem xét nội dung của t ừng lu ồng d ữ liệu để từ đó tiên liệu hành động kế tiếp của giao thức. Điều này rất quan trọng trong việc hổ trợ các giao thức FTP, DNS…. - Lọc gói dựa trên địa chỉ MAC và các cờ trong TCP header. Giúp ngăn chặn việc tấn công bằng cách xử dụng các gói dị dạng (malformed packets) và ngăn chặn việc truy cập từ nội bộ đến một mạng khác bất chấp IP của nó . - Ghi chép hệ thống (System log) cho phép việc điều chỉnh báo cáo . 1
  2. - Hổ trợ việc tích hợp các chương trình các chương trình Web proxy chẳng hạn như Squid. - Ngăn chặn các kiểu tấn công từ chối dịch vụ. II. Cài đặt và sử dụng Iptables 1. Cài đặt Iptables Iptables được cài đặt mặc định trong hệ thống Linux, package của iptables là iptablesversion. rpm hoặc iptables-version.tgz …, ta có thể dùng lệnh để cài đặt package này: $ rpm –ivh iptables-version.rpm đối Red Hat $ apt-get install iptables đối với Debian Hình 1. Cài đặt gói Iptables - Khởi động iptables: service iptables start - Tắt iptables: service iptables stop - Tái khởi động iptables: service iptables restart - Xác định trạng thái iptables: service iptables status 2
  3. Hình 2. Start, Restart, Stop, Status 2. Xử lý gói trong iptables Tất cả mọi gói dữ liệu đều được kiểm tra bởi iptables bằng cách dùng các bảng tuần tự xây dựng sẳn (queues). Có 3 loại bảng này gồm: Mangle: Chịu trách nhiệm thay đổi các bít chất lượng dịch vụ trong TCP header như TOS ( type of servie). TTL (Time to live) và MARK. Filter: Chịu trách nhiệm lọc gói dữ liệu. Nó gồm 3 quy tắc nhỏ (chain) để giúp bạn thiết lập các nguyên tắc lọc gói gồm: Forward chain: Lọc gói khi đi đến các server khác. Input chain: Lọc gói khi đi vào khỏi server Output chain: Lọc gói khi đi ra khỏi server 3
  4. NAT: Gồm 2 loại: Pre-routing chain: Thay đổi địa chỉ đích (Destination) của gói dữ liệu khi cần thiết . Post-routing chain: Thay đổi địa chỉ nguồn (Source) của gói dữ liệu khi cần thiết . Bảng 1: Các loại queues và chain cùng chức năng của nó. Loại Chức năng Quy tắc xử lý Chức năng của chain queues queues gói(Chain) Lọc gói Lọc gói dữ liệu đi đến các Filter FORWARD server khác kết nối trên các NIC khác của firewall Lọc gói đi đến firrewall INPUT Lọc gói đi ra khỏi firewall OUTPUT Việc thay đổi địa chỉ diễn ra NAT Network PREROUTING trước khi dẫn đường. Thay Address đổi địa chỉ đích sẽ giúp gói dữ Translation liệu phù hợp với bảng chỉ đường của firewall. Xử dụng (Biên dịch địa Destination NAT or DNAT chỉ mạng) Việc thay đổi địa chỉ diễn ra POSTROUTING sau khi dẫn đường. Xử dụng Source NAT or SNAT NAT xử dụng cho các gói OUTPUT dữ liệu xuất phát từ firewall. Ít được dùng trong môi trường SOHO (Small office – Home office) Chỉnh sữa Điều chỉnh các bit quy định Mangle PREROUTING dịch vụ trước khi dẫn đường . TCP header POSTROUTING Ít được dùng trong môi trường OUTPUT SOHO (Small office – Home office) INPUT FORWARD 4
  5. Hình 3. Tổng quan về việc lọc và xử lý gói trong iptables Hình 4. Một ví dụ về đường đi của gói dữ liệu 5
  6. Đầu tiên gói dữ liệu đến mạng A, tiếp dó được ki ểm tra bởi mangle tables: PREROUTING Chain (nếu cần). Tiếp theo là ki ểm tra gói d ữ li ệu b ởi NAT tables: PREROUTING chain để kiểm tra xem gói dữ li ệu có c ần DNAT hay không? DNAT sẽ thay đổi địa chỉ đích của gói dữ liệu. Rồi gói dữ liệu được vận chuyển đi. Nếu gói dữ liệu đi vào một mạng được bảo vệ, thì nó sẽ được lọc bởi FORWARD chain của filter tables và nếu cần gói dữ liệu s ẽ được SNAT trong FORWARD chain để thay đổi IP nguồn trước khi vào mạng B. Nếu gói dữ liệu được định hướng đi vào bên trong firewall. Nó s ẽ đ ược kiểm tra bởi INPUT chain của NAT trong mangle tables (n ếu c ần), ti ếp đó là kiểm tra trong OUTPUT chain của NAT tables để xem DNAT (DNAT sẽ thay đổi địa chỉ đích) có cần hay không và OUTPUT chain c ủa filter tables s ẽ kiểm tra gói dữ liệu nhằm phát hiện các gói dữ liệu không được phép g ửi đi. Cuối cùng trước khi gói dữ liệu được đưa ra Internet, SNAT and QoS sẽ được kiểm tra trong POSTROUTING chain . 3. Targets Targets là hành động sẽ dễn ra khi một gói dữ liệu được kiểm tra và phù hợp với một yêu cầu nào đó. Khi một targets đã đ ược nh ận d ạng, gói d ữ liệu cần nhảy (Jump) để thực hiện các xử lý tiếp theo. Bảng sau liệt kê các targets mà iptables sẽ xử dụng. Bảng 2. Miêu tả các targets mà iptables thường dùng nhất. Tùy chọn Targets Ý nghĩa Iptables ngừng xử lý gói dữ liệu đó ACCEPT và chuyển tiếp nó vào một ứng dụng cuối hoặc hệ điều hành để xử lý Iptables ngừng xử lý gói dữ liệu đó DROP và gói dữ liệu bị chặn, loại bỏ Thông tin của gói sẽ được đưa vào --log-prefix "string" iptables sẽ LOG syslog để kiểm tra, iptables tiếp tục thêm vào log message một chuỗi 6
  7. xử lý gói với quy luật kế tiếp do người dùng định nghĩa sẳn. Thông thườnglà để thông báo lý do vì sao gói bị bỏ. Tương tự như DROP, nhưng nó sẽ REJECT --reject-with qualifier trả lại cho phía người gửi một thong Than số qualifier sẽ cho biết báo rằng gói đã bị chặn và loại bỏ loại thông báo gửi trả lại phía gửi. Qualifier gồm các loại sau: icmp-port-unreachable (default) icmp-net-unreachable icmp-host-unreachable icmp-proto-unreachable icmp-net-prohibited icmp-host-prohibited tcp-reset echo-reply Dùng để thực hiện Destination DNAT --to-destination ipaddress network address translation, địa chỉ Iptables sẽ viết lại địa chỉ đích của gói dữ liệu sẽ được viết lại iptables vào địa chỉ đích của gói dữ liệu . Dùng để thực hiện Source network SNAT --to-source [- address translation, viết lại của địa ][:- chỉ nguồn của gói dữ liệu . ] Miêu tả IP và port sẽ được viết lại bởi iptables Dùng để thực hiện Source MASQUER [--to-ports [- ADE Networkaddress Translation. ]] Ghi rõ tầm các port nguồn gốc có thể ánh xạ được . 4. Các tham số chuyển mạch quan trọng của iptables: Các tham số sau sẽ cho phép iptables thực hiện các hành động sao cho phù hợp với biểu đồ xử lý gói do người dùng hoạch định sẳn. 7
  8. Bảng 3: Các tham số chuyển mạch (Switching) quan trọng của iptables . Lệnh switching quan trọng Ý nghĩa Nếu bạn không chỉ định rõ là tables nào, thì filter -t tables sẽ được áp dụng. Có 3 loại tables là filter, NAT, mangle Nhảy đến một chuổi targets nào đó khi gói dữ li ệu -j phù hợp quy luật hiện tại Nối thêm 1 quy luật nào đó cuối chuổi (chain) -A Xóa hết tất cả mọi quy luật trong bảng đã chọn -F Phù hợp với giao thức (Protocols) thông thường là -p icmp, tcp, udp và all Phù hợp với ip nguồn -s Phù hợp với ip đích -d Phù hợp điều kiện INPUT khi gói dữ liệu đi vào -i firewall Phù hợp điều kiện OUTPUT khi gói dữ liệu đi ra -o khỏi firewall Một số ví dụ làm rõ hơn về các lệnh trong iptables : iptables -A INPUT -s 0/0 -i eth0 -d 192.168.1.1 -p TCP -j ACCEPT Iptables được cấu hình cho phép “firewall “ chấp nhận các gói dữ li ệu xử dụng giao thức (protocols) là TCP, có địa chỉ nguồn bất kỳ( 0/0), đ ến card mạng eth0 và đến đích có địa chỉ IP 192.168.1.1 là địa chỉ của firewall. Bảng 4: Các điều kiện TCP và UDP thông dụng. Lệnh switching Miêu tả Điều kiện TCP port nguồn (source port). Có thể là -p tcp --sport một giá trị hoặc một chuỗi có dạng: start-port-number:end- port-number 8
  9. Điều kiện TCP port đích (Destination port) -p tcp --dport Có thể là một giá trị hoặc một chu ổi có dạng: starting-port:ending-port Dùng để nhận dạng một yêu cầu kết nối TCP mới . -p tcp –syn !—syn, nghĩa là không có yêu cầu cần kết nối mới Điều kiện UDP port đích (source port) -p udp --sport Có thể là một giá trị hoặc một chuổi có dạng: start- port-number:end-port-number Điều kiện UDP port đích (source port) -p udp --dport Có thể là một giá trị hoặc một chuổi có dạng: starting-port:ending-port Ví dụ: iptables -A FORWARD -s 0/0 -i eth0 -d 192.168.1.58 -o eth1 -p TCP \ --sport 1024:65535 --dport 80 -j ACCEPT Iptables được cấu hình cho phép firewall chấp nhận các gói dữ li ệu có giao thức Protocols là TCP, có địa chỉ nguồn là bất kỳ (0/0) đi đ ến card m ạng eth0 có địa chỉ 192.168.1.1, đi ra từ card mạng eth1, có source port từ 1024 – 65535 và port đích là 80. Bảng 5: Điều kiện ICMP Lệnh Miêu tả Thường dùng nhất là echo-reply và eho-request --icmp-type Một ví dụ về ICMP. iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT iptables được cấu hình cho phép firewall cháp nhận g ởi ICMP eho-repuests (píngs) và gửi trả lời các ICMP echo-replies. Một ví dụ khác: 9
  10. iptables -A INPUT -p icmp --icmp-type echo-request -m limit –limit 1/s -i eth0 -j ACCEPT Iptables cho phép giới hạn giá trị lớn nhất số lượng các gói phù hợp trong một giây. Có thể định thời gian theo định dạng second, minute, hour hoặc day. Hoặc xử dụng dạng viết tắt 3/s thay vì 3/second. Trong ví dụ này ICMP echo-request bị giới hạn không nhiều hơn một yêu cầu trong m ột giây. Đặc điểm này của iptables giúp ta giảm bớt các lưu lượng lớn các kết nối trong 1 thời gian nhất định . Đây chính là đặc tính của tấn công từ ch ối dịch vụ(DOS) và sâu Internet iptables -A INPUT -p tcp --syn -m limit --limit 5/s –I eth0 -j ACCEPT Bạn có thể mở rộng khả năng giới hạn của iptables để giảm thiểu kh ả năng bị tấn công bởi cá loại tấn công từ chối dịch vụ. Đây là cách phòng v ệ chóng lại kiểu tấn công SYN floot bằng cách hạn chế sự chấp nhận các phân đoạn TCP có bít SYS không nhiều hơn 5 phân đoạn trong 1 giâp. Bảng 6. Các điều kiện mở rộng thông dụng. Lệnh Ý nghĩa Nhiều port nguồn khácc nhau của TCP/UDP -m multiport --sport được phân cách bởi dấu phẩy (,). Đây là liệt kê của các port chứ không phải là một chuỗi các port. Nhiều port khác nhau của TCP/UDP được -m multiport --dport phân cách bởi dấu phẩy (,). Đây là liệt kê của các port chứ không phải là 1 chuổi các port. Không phân biệt port đích hay port nguồn Các trạng thái thông dụng nhất được dùng là: -m multiport --ports ESTABLISHED: Gói dữ liệu là một phần của kết nối đã được thiết lập bởi cả 2 hướng. NEW: Gói dữ liệu là bắt đầu của một kết nối mới RELATED: Gói dữ liệu bắt đầu 1 kết nối phụ. Thông thường đây là đặc điểm của các giao thức như FTP hoặc lỗi của ICMP . INVALID: Gói dữ liệu không thể nhận dạng được. Điều này có thể do việc thiếu tài nguyên hệ 10
  11. thống hoặc do lỗi của ICMP không trùng với một luồng dữ liệu đã có sẳn . Đây là phần mở rộng tiếp theo của ví dụ trước : iptables -A FORWARD -s 0/0 -i eth0 -d 192.168.1.58 -o eth1 -p TCP \ --sport 1024:65535 -m multiport --dport 80,443 -j ACCEPT iptables -A FORWARD -d 0/0 -o eth0 -s 192.168.1.58 -i eth1 -p TCP \ -m state --state ESTABLISHED -j ACCEPT Iptables được cấu hình cho phép firewall chấp nhận các gói dữ li ệu có giao thức (Protocols) là TCP, đến từ card mạng eth0, ip nguồn là bất kỳ, đi đến địa chỉ 192.168.1.58 qua card mạng eth1. Số port nguồn là từ 1024 đến 65535 và port đích là 80(http) và 443(https). Đến khi các gói dữ li ệu nh ận, tr ở lại từ 192.168.1.58, thay vì mở các port nguồn và đích, Chỉ cần cho phép dùng kết nối cũ đã thiết lập bằng cách dùng tham số --state ESTABLISHED. 5. Xử dụng user defined chains: Chuỗi User Defined Chains nằm trong bảng iptables. Nó giúp cho quá trình xử lý gói tốt hơn. Ví dụ: Thay vì xử dụng gói đơn được xây dựng trong chain cho tất cả giao thức, ta có thể xử dụng chain này để quyết định loại giao thức cho gói và sau đó kiểm soát việc xử lý user-defined, protocol-specific chain trong bảng filter table. Mặt khác, ta có thể thay thế 1 chuỗi “long chain” với chuỗi chính nh ư thế “stubby main chain” bởi nhiều chuỗi “stubby chain”, bằng cách chia ngắn tổng chiều dài của tất cả chain gói phải thông qua . Các lệnh giúp việc cải tiến tốc độ xử lý: iptables -A INPUT -i eth0 -d 206.229.110.2 -j fast-input-queue iptables -A OUTPUT -o eth0 -s 206.229.110.2 -j fast-output-queue 11
  12. iptables -A fast-input-queue -p icmp -j icmp-queue-in iptables -A fast-output-queue -p icmp -j icmp-queue-out iptables -A icmp-queue-out -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT iptables -A icmp-queue-in -p icmp --icmp-type echo-reply -j ACCEPT Bảng 7. Danh sách các lệnh (Queues) Chain Description Được xây dưng trong INPUT chain trong bảng iptables INPUT Được xây dựng trong OUTPUT chain trong bảng OUTPUT INPUT chain tách riêng biệt để hổ trợ cho những giao thức Fast-input-queue đặc biệt và chuyển các gói đến nhưng protocol specific chains. OUTPUT chain tách riêng biệt để hổ trợ cho những giao thức fast-output-queue đặc biệt và chuyển các gói đến nhưng protocol specific chains. Lệnh OUTPUT tách rêng cho giao thức ICMP icmp-queue-out Lệnh INPUT tách rêng cho giao thức ICMP icmp-queue-in Lưu lại những đoạn mã iptables: 6. Đoạn mã iptables được lưu tạm trong “/etc/sysconfig/iptables”.Định dạng mẫu trong file iptables cho phép giao thức ICMP.IPSec(những gói ESP và AH),thiết lập liên kết,và quay lại SSH. [root@bigboy tmp]# cat /etc/sysconfig/iptables # Generated by iptables-save v1.2.9 on Mon Nov 8 11:00:07 2004 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [144:12748] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT 12
  13. -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type 255 -j ACCEPT -A RH-Firewall-1-INPUT -p esp -j ACCEPT -A RH-Firewall-1-INPUT -p ah -j ACCEPT -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on Mon Nov 8 11:00:07 2004 [root@bigboy tmp]#. 7. Thiết lập những rule cho fedora's iptables: Trong fedora có chương trình gọi lokkit, chương trình nay f có th ể thi ết lập một rule firewall đơn giản, giúp tăng cường bảo mật. Chương trình lokkit lưu những rule fỉeưall trong file mới "/etc/sysconfig/iptables". 8. Tìm lại đoạn mã đã mất : Đoạn mã iptables được lưu trữ trong file "/etc/sysconfig/iptables".ta có thể chỉnh xửa những đoạn mã và tạo lại thành những rule mới . Ví dụ: Xuất hiện những lệnh trong iptables đã l ưu trữ ra file văn bản với tên Firewall-config: [root@bigboy tmp]# iptables-save > firewall-config [root@bigboy tmp]# cat firewall-config # Generated by iptables-save v1.2.9 on Mon Nov 8 11:00:07 2004 *filter 13
  14. :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [144:12748] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type 255 -j ACCEPT -A RH-Firewall-1-INPUT -p esp -j ACCEPT -A RH-Firewall-1-INPUT -p ah -j ACCEPT -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on Mon Nov 8 11:00:07 2004 [root@bigboy tmp]# Sau khi chỉnh xửa file Firewall-config, ta có thể tải nó lại trong rule firewall với lệnh: [root@bigboy tmp]# iptables-restore < firewall-config Ta có thể lưu tạm thời : [root@bigboy tmp]# service iptables save. 9. Những Modun Kernel cần thiết : Modun Kernel cần thiết để hoạt động một vài chương trình ứng dụng của iptables .Một số modun iptables_nat module, ip_conntrack_ftp module, + iptables_nat module cần cho một số loại NAT + ip_conntrack_ftp module cần cho việc thêm vào giao thức FTP. + ip_conntrack module giữu trạng thái liên kết với giao thức TCP 14
  15. + ip_nat_ftp module cần được tải cho máy chủ FTP sau một firewall NAT. Chú ý: file /etc/sysconfig/iptables không cập nhật những Modun tải về ,vì vậy chúng ta phải thêm vào những trạng thái đó vào file /etc/rc.local và chạy nó tại cuối mỗi lần boot lại . Những đoạn mã trong phần này bao gồm những trạng thái được lưu trong file /etc/rc.local: # File: /etc/rc.local # Module to track the state of connections modprobe ip_conntrack # Load the iptables active FTP module, requires ip_conntrack modprobe # ip_conntrack_ftp # Load iptables NAT module when required modprobe iptable_nat # Module required for active an FTP server using NAT modprobe ip_nat_ftp 10. Những đoạn mã iptable mẫu: 10.1 Cơ bản về hoạt động của hệ thống bảo vệ: Hệ điều hành Linux có cơ chế bảo vệ là các thông số kernel hệ th ống trong file hệ thống /procqua file /etc/sysctl.conf.Dùng file /etc/sysctl.conf cho các thông số kernel hỗ trợ Đây là một cấu hình mẫu: # File: /etc/sysctl.conf #-------------------------------------------------------- # Disable routing triangulation. Respond to queries out # the same interface, not another. Helps to maintain state # Also protects against IP spoofing #-------------------------------------------------------- 15
  16. net/ipv4/conf/all/rp_filter = 1 #---------------------------------------------------------- # Enable logging of packets with malformed IP addresses #---------------------------------------------------------- net/ipv4/conf/all/log_martians = 1 # Disable redirects #---------------------------------------------------------- net/ipv4/conf/all/send_redirects = 0 #---------------------------------------------------------- # Disable source routed packets #--------------------------------------------------------- net/ipv4/conf/all/accept_source_route = 0 #---------------------------------------------------------- # Disable acceptance of ICMP redirects #---------------------------------------------------------- net/ipv4/conf/all/accept_redirects = 0 #---------------------------------------------------------- # Turn on protection from Denial of Service (DOS) attacks #---------------------------------------------------------- net/ipv4/tcp_syncookies = 1 #---------------------------------------------------------- # Disable responding to ping broadcasts #---------------------------------------------------------- net/ipv4/icmp_echo_ignore_broadcasts = 1 #---------------------------------------------------------- # Enable IP routing. Required if your firewall is 16
  17. # protecting # network, NAT included #---------------------------------------------------------- net/ipv4/ip_forward = 1 10.2 Ưu điểm của sự khởi tạo iptables: Ta có thể thêm vào nhiều các ứng dụng khởi tạo cho đoạn mã, bao g ồm việc kiểm tra đường truyền internet từ những địa chỉ riêng RFC1981.Nhiều hơn những khởi tạo phức tạp bao gồm kiểm tra lỗi bởi sự tấn công x ử d ụng cờ TCP không có giá trị. Đoạn mã xử dụng nhiều "user-defined chain" Để tạo đoạn mã ngắn h ơn và nhanh hơn như những chain có thể bị truy cập lặp lại.Điều này loại b ỏ việc cần thiết lặp lại những trạng thái tương tự. Đoạn mã firewall hoàn chỉnh: #=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#==#=##### # Define networks: NOTE!! You may want to put these # "EXTERNAL" # definitions at the top of your script. #=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=# EXTERNAL_INT="eth0" # External Internet interface EXTERNAL_IP="97.158.253.25" # Internet Interface IP address #---------------------------------------------------------- # Initialize our user-defined chains #---------------------------------------------------------- iptables -N valid-src iptables -N valid-dst #---------------------------------------------------------- # Verify valid source and destination addresses for all packets 17
  18. #---------------------------------------------------------- iptables -A INPUT -i $EXTERNAL_INT -j valid-src iptables -A FORWARD -i $EXTERNAL_INT -j valid-src iptables -A OUTPUT -o $EXTERNAL_INT -j valid-dst iptables -A FORWARD -o $EXTERNAL_INT -j valid-dst #=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=# # Source and Destination Address Sanity Checks # Drop packets from networks covered in RFC 1918 # (private nets) # Drop packets from external interface IP ##=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#= iptables -A valid-src -s $10.0.0.0/8 -j DROP iptables -A valid-src -s $172.16.0.0/12 -j DROP iptables -A valid-src -s $192.168.0.0/16 -j DROP iptables -A valid-src -s $224.0.0.0/4 -j DROP iptables -A valid-src -s $240.0.0.0/5 -j DROP iptables -A valid-src -s $127.0.0.0/8 -j DROP iptables -A valid-src -s 0.0.0.0/8 -j DROP iptables -A valid-src -d 255.255.255.255 -j DROP iptables -A valid-src -s 169.254.0.0/16 -j DROP iptables -A valid-src -s $EXTERNAL_IP -j DROP iptables -A valid-dst -d $224.0.0.0/4 -j DROP 10.3 Sự cho phép máy chủ DNS truy cập đến firewal: Firewall không thể tạo yêu cầu DNS queries đến internet bởi vì internet được yêu cầu cho hàm cơ bản của firewall, nh ưng bởi vì Fedora Linux's yum RPM sẽ giúp giữ máy chủ cập nhật với trạng thái bảo vệ tốt nhất. Nh ững 18
  19. trạng thái theo sau sẽ cập nhật không chỉ cho firewall hoạt động nh ư DNS client nhưng cũng cho những firewall làm việc trong một bộ đệm hoặc có vai trò như DNS server. #----------------------------------------------------------------------------------------- # Allow outbound DNS queries from the FW and the replies too # - Interface eth0 is the internet interface # Zone transfers use TCP and not UDP. Most home networks # / websites using a single DNS server won't require TCP # statements #----------------------------------------------------------------------------------------- iptables -A OUTPUT -p udp -o eth0 --dport 53 –sport 1024:65535 -j ACCEPT iptables -A INPUT -p udp -i eth0 --sport 53 –dport 1024:65535 -j ACCEPT 10.4 Cho phép WWW và SSH truy cập vào firewall: Đoạn mã ngắn này là cho một firewall và gấp đôi cho một web server được quản lý bởi người quản trị hệ thống web server qua nh ững lớp vỏ b ảo mật (SSH). Những gói quay lại đã được dự định trước cho port 80 (WWW) và 22 (SSH) được phép. Vì vậy tạo những bước đầu tiên đ ể thíêt lập ch ế đ ộ liên kết. Ngược lại, những port trên (80 và 22) sẽ không được thiết lập chế độ bảo mật tại ngõ ra cho những gói tin chỉ được chuyển đi không quay về cho tất cả các liên kết thiết lập được phép. #--------------------------------------------------------- # Allow previously established connections # - Interface eth0 is the internet interface #--------------------------------------------------------- iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT #--------------------------------------------------------- # Allow port 80 (www) and 22 (SSH) connections to the firewall 19
  20. #--------------------------------------------------------- iptables -A INPUT -p tcp -i eth0 --dport 22 –sport 1024:65535 -m state --state NEW -j ACCEPT iptables -A INPUT -p tcp -i eth0 --dport 80 --sport 1024:65535 -m state --state NEW -j ACCEPT 10.5 Cho phép Firewall truy cập internet: Đoạn mã iptables này có thể cho phép một user trên firewall xử d ụng web browser đến giao tiếp iptables.Đường truyền giao thức HTTP xử dụng TCP port 80, HTTPS (HTPP Secure) port 443 #--------------------------------------------------------- # Allow port 80 (www) and 443 (https) connections from the # firewall #--------------------------------------------------------- iptables -A OUTPUT -j ACCEPT -m state –state NEW,ESTABLISHED,RELATED -o eth0 -p tcp -m multiport --dport 80,443 -m multiport --sport 1024:65535 #-------------------------------------------------------- # Allow previously established connections # Interface eth0 is the internet interface #--------------------------------------------------------- iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i eth0 -p tcp Nếu muốn tất cả các đường truyền từ firewall được chấp nhận, sau đó xoá: -m multiport --dport 80,443 -m multiport --sport 1024:65535 10.6 Cho phép mạng ở nhà truy cập vào firewall: Ví dụ : Eth1 chỉ được liên kết với mạng ở nhà dùng địa chỉ IP từ 192.168.1.0 . Tất cả các đường truyền này và firewall được giả xử là liên k ết 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2