Post a Reply
300 views

Iptables - Cách sử dụng cơ bản về iptables P2

  1. 7 weeks ago

    2.1 Ý nghĩa một vài tham số, tùy chọn trong câu lệnh iptables

    Tùy chọn đầy đủTùy chọn viết tắtGiá trị theo sau tùy chọnÝ nghĩa sử dụng tùy chọn
    --append-Achain_name rule_specThêm một hoặc nhiều rules tới chain đã khai báo có tên là chain_name
    --check-Cchain_name rule_specKiểm tra xem rule_spec đã khai báo có tồn tại trong chain chain_name hay không
    --delete-Dchain_name rule_spec hoặc chain_name rulenumXóa một hoặc nhiều rules từ chain chain_name
    --insert-Ichain_name [rulenum] rule_specThêm một hoặc nhiều rule vào trong chain chain_name. Mặc định rule sẽ được thêm vào vị trí đầu của chain hoặc khi rulenum có giá trị là 1.
    --replace-Rchain_name rulenum rule_specThay thế một rule trong chain chain_name. Nếu source hoặc destination của rule có chứa nhiều địa chỉ thì sẽ xảy ra lỗi. rulenum được bắt đầu từ giá trị 1.
    --list-L[chain_name]Liệt kê tất cả các rule có trong chain chain_name. Nếu chain_name không được khai báo, câu lệnh sẽ liệt kê ra rule của tất cả các chain trong table. Mặc định, câu lệnh sẽ chỉ liệt kê rule có trong table `filter`. Muốn xem các rule có trong table khác, ta cần phải kết hợp với tham số `--table`
    --list-rule-S[chain_name]In ra tất cả các rule có trong chain chain_name. Nếu không khai báochain_name, câu lệnh sẽ in ra tất cả các rule. Mục đích của câu lệnh là in ra rule_spec. Kết quả câu lệnh trả về tương tự như `iptables-save`
    --flush-F[chain_name]Xóa tất cả các rule có trong chain_name hoặc xóa tất cả trong các chain_name
    --zero-Z[chain_name] [rulenum]Đặt lại giá trị bộ đếm byte của packet trong tất cả các chains hoặc chỉ các rule có trong chain_name.
    --new-chain-Nchain_nameTạo mới một chain có tên là chain_name nếu nó chưa tồn tại
    --delete-chain-X[chain_name]Xóa tất cả các tùy chọn trong chain_name được khai báo.
    --policy-Pchain_name targetThiết lập một chính sách cho chain có tên là chain_name ứng với target khai báo trong câu lệnh. Chỉ các chain_name không phải do người dùng tạo ra mới có thể nhận được target.
    --rename-chain-Eold_chain new_chainĐặt lại tên của chain người dùng tạo ra. Trong đó old_chain là tên hiện tại của chain, old_chain là tên mới của chain sẽ được đặt.
    Tham số đầy đủTham số viết tắtGiá trị theo sau tham sốÝ nghĩa sử dụng tham số
    [!] --procol[!] -pprotocol_nameKhai báo protocol của packet mà rule sẽ kiểm tra
    [!] --source, [!] --src[!] -saddress[/mask][,...]Khai báo địa chỉ IP nguồn của packet. address có thể là một địa chỉ IP, một hostname, một địa chỉ mạng hay một dải địa chỉ IP
    [!] -destination, [!] --dst[!] -daddress[/mask][,...]Khai báo địa chỉ IP đích của packet. address có thể là một địa chỉ IP, một hostname, một địa chỉ mạng hay một dải địa chỉ IP
    --jump-jtargetKhai báo target của rule sẽ được tạo ra, những gì cần phải làm nếu packet khớp với rule. Có thể được kết hợp để sử dụng với tham số -g hay --goto
    --goto-gchainKhi sử dụng khai báo này, việc xử lý của rule sẽ được xử lý tại chain gọi tới.
    [!] --in-interface[!] -inameKhai báo tên của interface nơi mà gói tin được nhận (chỉ có trong INPUT, FORWARD, PREROUTING chain). Tên của interface có thể khai báo theo dạng name[+]. Nghĩa là nếu có dấu + thì bất cứ interface nào bắt đầu với name sẽ khớp với rule. Nếu không có dấu + thì chỉ có tên interface giống y hệt mới khớp với rule. Ví dụ name+ sẽ khớp với nameinterface, namea, nameb.
    [!] --out-interface[!] -onameKhai báo tên của interface nơi mà gói tin đi ra khỏi hệ thống (chỉ có trong OUTPUT, FORWARD, POSTROUTING chain). Tên của interface có thể khai báo theo dạng name[+]. Nghĩa là nếu có dấu + thì bất cứ interface nào bắt đầu với name sẽ khớp với rule. Nếu không có dấu + thì chỉ có tên interface giống y hệt mới khớp với rule. Ví dụ name+ sẽ khớp với nameinterface, namea, nameb.
    [!] --fragment[!] -fRule sẽ chỉ nhắm đến các gói tin bị phân mảnh. Các gói tin mà không có đích đến hay nguồn đi.
    --set-counters-cpackets bytesCho phép ta khởi tạo các bộ đếm gói tin và byte của một rule
    Tùy chọn đầy đủTùy chọn viết tắtGiá trị theo sau tùy chọnÝ nghĩa sử dụng tùy chọn
    --verbose-vTùy chọn có tác dụng liệt kê ra kết quả của câu lệnh được thực hiện. Các bộ đếm gói tin và byte cũng được liệt kê theo hậu tố K, M, G với cấp nhân 1000, 1 000 000, 1 000 000 000.
    --numeric--numericTùy chọn có tác dụng khiến kết quả trả về của câu lệnh sẽ cố gắng in ra địa chỉ IP với dạng số thay vì in ra theo hostname.
    --exact-xHiển thị chính xác giá trị của bộ đếm gói tin và byte thay vì chỉ hiển thị số được làm tròn.
    --line-numbersKhi liệt kê rule sẽ có số thứ tự kèm theo mỗi rule.
    --modprobe=commandKhi thêm mới hoặc chèn một rule vào chain. Ta sẽ sử dụng command để thêm một module cần thiết cho rule.

    2.2 Xem rules và ý nghĩa các cột trong iptables

    Để xem các rule hiện có trong iptables ta sử dụng câu lệnh sau:

     iptables --list hoặc iptables -L

    kết quả sẽ hiển thị tương tự như sau:

    iptables-cmd--list.png

    nhìn vào kết quả trên, ta có thể thấy được nội dung với các cột như sau:

    • target: Thể hiện giá trị của target bao gồm các giá trị: ACCEPT, DROP, REJECT, RETURN, LOG ...
    • prot: Quy định protocol của rule được match với rule. chúng bao gồm các protocol có trong /etc/protocols.
    • opt: Ít khi được sử dụng, nó mô tả các tùy chọn có liên quan đến IP
    • source: Chỉ ra một địa chỉ IP, subnet là nơi xuất phát của traffic hoặc có thể bất cứ đâu (anywhere).
    • destination: Chỉ ra một địa chỉ IP, subnet là đích đến của traffic hoặc có thể bất cứ đâu (anywhere).

    mỗi một dòng sau target prot opt source destination được xem là một rule trong 1 chain, và Chain INPUT (policy ACCEPT) biểu thị chain có tên là INPUT và policy của chain là ACCEPT và 1 references biểu thị số lượng chain có liên quan đến chain này. Điều này đúng cho thông tin của các chain.

    Mặc định khi sử dụng câu lệnh trên, ta chỉ có thể xem được các rule bên trong table filter. Để có thể xem được các rule trong các tables khác, ta cần sử dụng tham số -t hoặc --table để khai báo tên tables ta muốn xem rules có bên trong. Cụ thể của câu lệnh được thực hiện như sau:

     iptables -t tables_name -L

    hoặc

     iptables --table tables_name --list

    trong đó giá trị của tables_name có thể là tên của 1 trong 5 bảng của iptables.

 

or Sign Up to reply!