Gửi Thông Điệp Yêu Thương vanbinh_bt nhắn với all: thi sao rồi mấy đồ...[Mr]-Boom nhắn với All K4: Chúc mọi người có 1 kỳ thi thật tốt !!lặng lẽ yêu nhắn với nguyễn ngọc huy: chúc mi có một kỳ thi tốt nha. vẫn nhớ mingocthongcctm05f nhắn với QNGAI: hãy sát cánh bên nhau.....hi.......trinhvh91 nhắn với TM03B: TM03B đoàn kết đi chơi cuối khóa nghenNgười vô cảm nhắn với nguyenlu: Ai vậy? T vẫn bước đi trong yêu thương mà ^^381 nhắn với neyugn: mong rằng chúng ta sẽ đi đến cái đích cuối cùng !nguyenlu nhắn với Người vô cảm: Hãy bước đi trong sự yêu thươnglenguyen_alone nhắn với Young Bin: tại sao nhok lại iu bin chứ nhỉ???hp thành công nhá!!binhcaolinh nhắn với Đen Trần: Cố gắng học chăm chỉ nhé em! Gửi Thông Điệp Yêu Thương


BẢNG GIÁ QUẢNG CÁO TẠI DIỄN ĐÀN 2MIT.ORG 2012

Hiện kết quả từ 1 tới 5 của 5

Chủ đề: [Kiến thức về iptables]Linux firewall sử dụng iptables

  1. #1
    Tham gia ngày
    May 2009
    Đến từ
    Ha Noi, Vietnam, Vietnam
    Tuổi
    21
    Bài gửi
    1,565
    Cảm ơn
    1,103
    Được cảm ơn 1,245/501 bài viết
    Blog Entries
    13
    9
    MASTER
     
     
    Số lần cộng|trừ: 5 lần

    Default [Kiến thức về iptables]Linux firewall sử dụng iptables

    Nguồn bài viết:
    - http://www.linuxhomenetworking.com/w...Using_iptables
    - Giới thiệu về iptables: Trần nhật huy


    I. GIỚI THIỆU VỀ IPTABLE:

    Bảo mật mạng là vấn đề quan trọng hàng đầu đối với một website, 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ài viết này sẽ giới thiệu đầy đủ về iptables - một firewall được sử dụng thông dụng nhất trong hệ thống Unix, Linux

    II. SỬ DỤNG iptables
    1. Khởi động iptables

    Code:
    #service iptables start 
      #service iptables stop
      #service iptables restart
    Ba câu lệnh trên dùng trong các hệ điều hành của Red Hat. Với các distro khác, các bạn thay service thành /etc/init.d/iptables
    Để cho iptables khởi động cùng máy:
    Code:
    #chkconfig iptables on
    để xem trạng thái của iptables
    Code:
    #service iptables status
    2. Xử lý gói trong Iptables
    Tất cả các gói dữ liệu đều được kiểm tra bởi iptables bằng cách dùng các loại hành động (queues). Có 3 loại gồm:
    - Mangle: Chịu trách nhiệm thay đổi các bit chất lượng dịch vụ (TOS, TTL, MARK)
    - Filter: Chịu trách nhiệm lọc gói dữ liệu: Nó bao gồm 3 quy tắc nhỏ (chain) để giúp bạn thiết lập nguyên tắc lọc gói , gồm:
    o Forward chain: Lọc gói khi đến các server khác
    o Input chain: Lọc các gói đi vào trong server
    o Output chain: Lọc các gói đi ra khỏi server
    - NAT: Gồm có hai loại
    o Pre-routing chain: Thay đổi địa chỉ đến của gói dữ liệu khi cần thiết
    o Post-routing chain: Thay đổi địa chỉ nguồn của gói dữ liệu khi cần thiết

    Các loại queues và các quy tắc xử lý gói (chain) của nó


    Để có cái nhìn tổng quát hơn về việc lọc và xử lý gói tin trong iptables, ta có thể tham khảo hình sau:


    Dưới đây là biểu đồ đường đi của gói dữ liệu:


    Nói chung, quy trình tuần tự:
    - Gói dữ liệu có cần phải sửa các bit dịch vụ hay không (mangle table PREROUTING chain)
    - Nó có cần phải thay đổi địa chỉ đích hay không (NAT table PREROUTING chain)
    - Nó đi đến mạng ngoài hay vào trong máy cục bộ firewall (Routing)
    o Nếu đi đến mạng ngoài: Nó sẽ được lọc bởi FORWARD chain filter table, và nếu cần sẽ được thay đổi địa chỉ nguồn (SNAT) trước khi vào mạng B.
    o Nếu gói dữ liệu đi vào trong máy cục bộ firewall: nó sẽ được kiểm tra bởi INPUT chain trong mangle table, và sẽ được lọc bởi filter table. Nếu qua được nó sẽ vào các chương trình bên trong của máy cục bộ firewall.
    - Khi firewall cần gởi dữ liệu ra ngoài:
    o Nó sẽ được kiểm duyệt qua OUTPUT chain
    o OUTPUT chain cũng kiểm tra xem có cần phải DNAT hay không
    o Cuối cùng trước khi gói dữ liệu đi ra ngoài, nó POSTROUTING sẽ xem có cần SNAT và sửa các thông số dịch vụ hay không (Qos, TTL..)

    3. Targets:

    Target là hành động diễn ra khi một gói dữ liệu được kiểm tra phù hợp với một yêu cầu nào đó. Khi một target đã đượ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ử dụng.


    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 sử dụng hoạch định sẵn.



    Để rõ hơn, chúng ta xét ví dụ sau:
    Code:
    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 (ACCEPT) các gói TCP đến từ interface eth0, có địa chỉ nguồn bất kỳ(0/0) và địa chỉ đích là 192.168.1.1.
    Bảng các điều kiện TCP và UDP thông dụng:


    Một ví dụ cụ thể:
    Code:
    iptables -A FORWARD -s 0/0 -I eth0 -d 192.168.1.158 -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 tiếp là TCP, đến từ card mạng eth0, có bất kỳ địa chỉ IP nguồn nào, địa chỉ đích là 192.168.1.158 đến card eth1. Số port nguồn từ 1024 đến 65535 và port đích đến là 80(HTTP).

    Bảng điều kiện ICMP


    Ví dụ cụ thể về ICMP:

    Code:
    iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
      iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
    Hai ví dụ trên cấu hình cho iptables chấp nhận gởi ICMP echo-request (ping) và gởi lại các gói icmp echo-replies.
    Ta cùng xem ví dụ khác sau:
    Code:
    iptables -A INPUT -p icmp --icmp-type icmp-request -m limit --limit  1/s -i eth0 -j ACCEPT
    Với cấu hình trên, iptables giới hạn 1 gói icmp request gởi đến trong 1 giây. Bạn có thể chỉ định thời gian theo định dạng /second, /minute, hour, hoặc /day. Hoạc sử dụng từ viết tắt như 3/s thay cho 3/second. Cấu hình này của iptables giúp chúng ta lọc bớt các lưu lượng lớn, đây là hình thức tấn công từ chối dịch vụ (DOS).

    Code:
    iptables -A INPUT -p tcp --syn -m limit --limit 5/s -i eth0 -j ACCEPT
    Ví dụ trên là cấu hình phòng vệ chống lại kiểu tấn công SYN flood bằng cách hạn chế sự chấp nhận các phân đoạn TCP có bit SYN không nhiều hơn 5 lần trong 1 giây.

    Các điều kiện mở rộng thông dụng


    Ví dụ dưới đây là mở rộng cho ví dụ trước.
    Code:
      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 tiếp (protocols) là TCP, đến từ card mạng eth0, có bất kỳ địa chỉ ip nguồn, đi đến địa chỉ 192.168.1.58 qua card mạng eth1. Số port nguồn từ 1024 đến 65535 và port đích là 80 (HTTP) hoặc 443 (HTTPS). Đến khi các gói dữ liệu được gởi trở lại từ 192.168.1.58, thay vì mở các port nguồn và đích, bạn chỉ việc cho phép dùng kết nối cũ đã thiết lập bằng cách dùng tham số -m state và --state ESTABLISHED

    5. Sử dụng user defined chains:


    Chuỗi User Defined Chain 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ì sử dụng gói đơn được xây dựng trong chain cho tất cả các giao thức, ta có thể sử dụng chain này để quyết định loại giao thức cho gói và sau đó kiểm soát việc sử lý user-defined, protocol-specific chain trong bảng filter table.
    Sáu lệnh sau giúp cải tiến tốc độ xử lý:

    Code:
    iptables -A INPUT -i eth0 -d 206.229.110.2 -j fast-input-queue
      iptables -A OUTPUT -o eth0 -s 209.229.110.2 -j fast-output-queue
      iptables -A fast-input-queue -p icmp -j icmp-queue-in
      iptables -A fast-output-out -p icmp -j icmp=queue-out
      iptables -A icmp-queue-out -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT
      iptable -A icmp-queue-in -p icmp --icmp-type echo-reply -j ACCEPT


    Sáu queue trên giúp cải thiện chức năng xử lý:


    6. Lưu lại các đoạn script iptables

    Dịch vụ iptables lưu vĩnh viễn cấu hình iptables trong tập tin /etc/sysconfig/iptables . Khi khởi động lại hệ thống, iptables sẽ đọc file cấu hình này và khôi phục lại các cấu hình trước.




    --------------------------------------------------
    Xem các chủ đề cùng chuyên mục:


    +5 EXP
    Thay đổi nội dung bởi: sunboy, 02-08-2011 lúc 09:55 PM

  2. Có tổng cộng 3 thành viên cảm ơn sunboy cho bài viết này

    chickenkon (04-01-2012), chip (02-08-2011), congthangitvn (02-08-2011)

  3. #2
    Tham gia ngày
    May 2009
    Tuổi
    21
    Bài gửi
    745
    Cảm ơn
    138
    Được cảm ơn 711/292 bài viết
    6
    MASTER
     
     
    Số lần cộng|trừ: 1 lần

    Default

    Cảm ơn sunboy đã có một bài viết ý nghĩa cho nhưng bạn nào đang học quản trị mạng. Tôi có một số góp ý để bài viết hoàn thiện sau:
    1.
    Ba câu lệnh trên dùng trong các hệ điều hành của Red Hat. Với các distro khác, các bạn thay service thành /etc/init.d/iptables

    --->nên thay bằng: "trong các dòng distro Red Hat".

    2.
    Code:
    iptables -A FORWARD -s 0/0 -I eth0 -d 192.168.1.158 -o eth1 -p TCP --sport           1024:65535 --dport  80 -j ACCEPT
    -->ko xác định tùy chọn này, phải thay bằng -i
    3.
    iptables được cấu hình cho phép firewall chấp nhận các gói dữ liệu có giao tiếp (protocols) là TCP, đến từ card mạng eth0, có bất kỳ địa chỉ ip nguồn, đi đến địa chỉ 192.168.1.58 qua card mạng eth1. Số port nguồn từ 1024 đến 65535 và port đích là 80 (HTTP) hoặc 443 (HTTPS). Đến khi các gói dữ liệu được gởi trở lại từ 192.168.1.58, thay vì mở các port nguồn và đích, bạn chỉ việc cho phép dùng kết nối cũ đã thiết lập bằng cách dùng tham số -m state và --state ESTABLISHED
    --->chỗ này có lẻ sunboy dịch chưa chính xác, iptables chỉ chịu trách nhiệm kiểm tra trạng thái gói tin, cho nên tùy chọn -m state --state ESTABLISHED
    nhằm kiểm tra xem trạng thái gói tin có phải thuộc
    ESTABLISHED thì nó sẽ cho phép gói tin được FORWARD, ngược lại DROP theo chính sách mặc định của IPTABLES
    P/S:
    ESTABLISHED, là một trong 11 trạng thái cơ bản trong sơ đồ trạng thái TCP, với trạng thái này đồng nghĩa 2 bên gửi và nhận đã thực hiện một kết nối thông qua bắt tay 3 bước.
    Chi tiết về các trạng thái này tôi sẽ mô tả chi tiết trong loạt bài sau.



    +2 EXP
    "Hãy chuẩn bị và sẵn sàng, rùi một ngày cơ hội sẽ đến với bạn"

  4. Thành viên đã cảm ơn chip trong bài viết này là :

    sunboy (02-08-2011)

  5. #3
    Tham gia ngày
    May 2009
    Đến từ
    Ha Noi, Vietnam, Vietnam
    Tuổi
    21
    Bài gửi
    1,565
    Cảm ơn
    1,103
    Được cảm ơn 1,245/501 bài viết
    Blog Entries
    13
    9
    MASTER
     
     
    Số lần cộng|trừ: 5 lần

    Default

    Cảm ơn Chip đã đóng góp ý kiến hoàn thiện.
    Mình có một chút giải thích:
    - Lỗi thứ hai chính xác như chip nói (cái này mình không cố ý, do word auto cap lock)
    - Lỗi thứ 3. Mình xin trích nguyên văn tiếng anh của nó

    Here iptables is being configured to allow the firewall to accept TCP packets to be routed when they enter on interface eth0 from any IP address destined for IP address of 192.168.1.58 that is reachable via interface eth1. The source port is in the range 1024 to 65535 and the destination ports are port 80 (www/http) and 443 (https). The return packets from 192.168.1.58 are allowed to be accepted too. Instead of stating the source and destination ports, you can simply allow packets related to established connections using the -m state and --state ESTABLISHED options.
    và văn bản dịch như thế này

    iptables được cấu hình cho phép firewall chấp nhận các gói dữ liệu có giao tiếp (protocols) là TCP, đến từ card mạng eth0, có bất kỳ địa chỉ ip nguồn, đi đến địa chỉ 192.168.1.58 qua card mạng eth1. Số port nguồn từ 1024 đến 65535 và port đích là 80 (HTTP) hoặc 443 (HTTPS). Đến khi các gói dữ liệu được gởi trở lại từ 192.168.1.58, thay vì mở các port nguồn và đích, bạn chỉ việc cho phép dùng kết nối cũ đã thiết lập bằng cách dùng tham số -m state và --state ESTABLISHED


    Cái này, theo mình tác giả viết đúng và văn bản dịch cũng không sai

    +1 EXP

  6. #4
    Tham gia ngày
    May 2009
    Tuổi
    21
    Bài gửi
    745
    Cảm ơn
    138
    Được cảm ơn 711/292 bài viết
    6
    MASTER
     
     
    Số lần cộng|trừ: 1 lần

    Default

    iptables được cấu hình cho phép firewall chấp nhận các gói dữ liệu có giao tiếp (protocols) là TCP, đến từ card mạng eth0, có bất kỳ địa chỉ ip nguồn, đi đến địa chỉ 192.168.1.58 qua card mạng eth1. Số port nguồn từ 1024 đến 65535 và port đích là 80 (HTTP) hoặc 443 (HTTPS). Đến khi các gói dữ liệu được gởi trở lại từ 192.168.1.58, thay vì mở các port nguồn và đích, bạn chỉ việc cho phép dùng kết nối cũ đã thiết lập bằng cách dùng tham số -m state và --state ESTABLISHED
    --->tại sao lại có việc mở các port nguồn port đích trên iptables ở đây? Sao lại cho phép dùng các kết nối cũ ở đây? Cậu giải thích ý nghĩa câu này xem sao.
    P/S: việc thiết lập -m state và --state ESTABLISHED không liên quan đến việc mở port và sử dụng kết nối cũ của hai bên. Với tùy chọn trên IPTABLES chỉ có nhiệm vụ theo dõi trạng thái gói tin, chứ không thể can thiệp sâu vào việc mở port hay sử dụng kết nối nào. Không tin cậu viết một câu lệnh không dùng tùy chọn trên xem thử nó có cho phép dùng lại các kết nối cũ không.

    +1 EXP
    Thay đổi nội dung bởi: chip, 02-08-2011 lúc 06:32 PM
    "Hãy chuẩn bị và sẵn sàng, rùi một ngày cơ hội sẽ đến với bạn"

  7. Thành viên đã cảm ơn chip trong bài viết này là :

    sunboy (02-08-2011)

  8. #5
    Tham gia ngày
    May 2009
    Đến từ
    Ha Noi, Vietnam, Vietnam
    Tuổi
    21
    Bài gửi
    1,565
    Cảm ơn
    1,103
    Được cảm ơn 1,245/501 bài viết
    Blog Entries
    13
    9
    MASTER
     
     
    Số lần cộng|trừ: 5 lần

    Default

    Đầy đủ là vầy:

    Ví dụ dưới đây là mở rộng cho ví dụ trước.
    Code
    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 ACCEP
    iptables được cấu hình cho phép firewall chấp nhận các gói dữ liệu có giao tiếp (protocols) là TCP, đến từ card mạng eth0, có bất kỳ địa chỉ ip nguồn, đi đến địa chỉ 192.168.1.58 qua card mạng eth1. Số port nguồn từ 1024 đến 65535 và port đích là 80 (HTTP) hoặc 443 (HTTPS). Đến khi các gói dữ liệu được gởi trở lại từ 192.168.1.58, thay vì mở các port nguồn và đích, bạn chỉ việc cho phép dùng kết nối cũ đã thiết lập bằng cách dùng tham số -m state và --state ESTABLISHED
    Cảm ơn chip đã góp ý.
    Theo mình hiểu. Ở đây, từ mở port không có nghĩa là khởi tạo, mà có nghĩa là cho phép. Thay vì cho phép TCP port nguồn và port đích (như dòng ví dụ đầu tiên) thì ta có thể dùng -m state --state ESTABLISHED
    Còn ví dụ thì như 2 dòng trên đã quá rõ, bởi dòng nhứ nhất viết theo kiểu "mở port". Dòng thứ hai viết theo kiểu "state".

    PS: Tác giả viết hai dòng lệnh trên có ý muốn so sánh để làm nổi bật lên hai cách viết, chúng ta có thể rõ ràng thấy được điểm khác nhau giữa hai dòng lệnh trên.

    Best regards!

    +1 EXP
    Thay đổi nội dung bởi: sunboy, 02-08-2011 lúc 10:23 PM

Thông tin về chủ đề này

Users Browsing this Thread

Hiện giờ đang có 1 người xem chủ đề này. (0 thành viên 1 khách)

     

Chủ đề giống nhau

  1. Hướng dẫn Giả Lập PIX Firewall với GNS3
    By do_an_2MIT in forum Video - Lab
    Trả lời: 3
    Bài mới gửi: 04-03-2012, 02:15 PM
  2. [Đồ án] An Ninh Mạng Failover Trong PIX FIREWALL
    By Ronaldo2 in forum Khoa Khoa Học Máy Tính
    Trả lời: 0
    Bài mới gửi: 10-04-2011, 12:20 PM
  3. 15 câu hỏi thú vị tìm hiểu về Firewall
    By lyvinhr00m in forum Thủ thuật Internet-Yahoo
    Trả lời: 0
    Bài mới gửi: 22-01-2011, 11:29 PM
  4. Giúp đỡ!Cách gỡ bỏ COMODO FIREWALL.
    By trungqn1 in forum Hỏi đáp - Thảo luận sử dụng phần mềm
    Trả lời: 3
    Bài mới gửi: 26-12-2010, 12:05 AM
  5. Tổng quan về Firewall
    By jinyotino in forum Video - Lab
    Trả lời: 0
    Bài mới gửi: 04-08-2009, 08:55 AM

Từ khóa cho chủ đề này

1627
Lượt xem

Share