Iptables với tham số -m và -p


8

Tôi có quy tắc này trong iptables của mình:

iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP

Tôi có thực sự cần "-m tcp" không? Tôi đã sử dụng "-p tcp", vậy tôi có nên sử dụng "-m tcp" để an toàn hơn không?

Câu trả lời:


9

Với -p tcptùy chọn, mô-đun tcp đã được tải và do đó nó hơi dư thừa và không bắt buộc phải sử dụng -m tcptùy chọn này và tôi không thấy bất kỳ lý do nào khiến việc sử dụng tùy chọn này sẽ giúp quy tắc an toàn hơn.

Vui lòng xem trang người dùng iptables để hiểu rõ hơn và so sánh:

Giao thức -p, --protatio [!]

Giao thức của quy tắc hoặc của gói để kiểm tra. Giao thức được chỉ định có thể là một trong các tcp, udp, icmp hoặc tất cả hoặc nó có thể là một giá trị số, đại diện cho một trong các giao thức này hoặc một giao thức khác. Tên giao thức từ / etc / giao thức cũng được cho phép. Một "!" đối số trước khi giao thức đảo ngược kiểm tra. Số không tương đương với tất cả. Tất cả giao thức sẽ khớp với tất cả các giao thức và được coi là mặc định khi tùy chọn này bị bỏ qua.

...

Phần mở rộng phù hợp

iptables có thể sử dụng các mô-đun khớp gói mở rộng. Chúng được tải theo hai cách: ngầm định, khi -p hoặc --protatio được chỉ định hoặc với các tùy chọn -m hoặc --match, theo sau là tên mô-đun phù hợp; sau đó, các tùy chọn dòng lệnh bổ sung khác nhau sẽ khả dụng, tùy thuộc vào mô-đun cụ thể. Bạn có thể chỉ định nhiều mô-đun khớp mở rộng trong một dòng và bạn có thể sử dụng các tùy chọn -h hoặc --help sau khi mô-đun được chỉ định để nhận trợ giúp cụ thể cho mô-đun đó.

Và để biết danh sách các tùy chọn có sẵn với -p tcpxem tại đây:

http://ipset.netfilter.org/iptables-extensions.man.html#lbCF

Như đã nêu ở trên, với việc sử dụng -mtùy chọn, có thể thêm các mô-đun mở rộng và sau đó có nhiều tùy chọn phù hợp hơn. Ví dụ mô-đun cpu :

CPU

[!] - số điện thoại

Kết hợp cpu xử lý gói này. cpus được đánh số từ 0 đến NR_CPUS-1 Có thể được sử dụng kết hợp với RPS (Chỉ đạo gói từ xa) hoặc các NIC đa cấp để phân tán lưu lượng mạng trên các hàng đợi khác nhau.

Thí dụ:

iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 0 -j REDIRECT --to-port 8080

iptables -t nat -A PREROUTING -p tcp --dport 80 -m cpu --cpu 1 -j REDIRECT --to-port 8081

Có sẵn kể từ Linux 2.6.36.

Danh sách đầy đủ các phần mở rộng iptables.


Câu hỏi thêm từ OP: Tôi không hiểu những gì -m phù hợp. Chuỗi nào? -m tcp phù hợp với những gì? Nó cố gắng tìm từ "tcp" ở đâu?

Trả lời: -mlà để khớp tên mô-đun và không phải chuỗi. Bằng cách sử dụng một mô-đun cụ thể, bạn có được các tùy chọn nhất định để phù hợp. Xem ví dụ mô-đun cpu ở trên. Với -m tcpmô-đun tcp được tải. Mô-đun tcp cho phép các tùy chọn nhất định: --dport, --sport, --tcp-flags, --syn, --tcp-optionsử dụng trong các quy tắc iptables. Nhưng việc sử dụng -p tcpđã kích hoạt mô-đun tcp, đó là lý do tại sao người ta vẫn có thể sử dụng các tùy chọn đó ngay cả khi không sử dụng -m tcp. Hy vọng nó sẽ xóa tất cả sự nhầm lẫn của bạn.


cảm ơn bạn rất nhiều, nhưng sẽ quan tâm để cho tôi biết những gì -m sẽ phù hợp với? Ví dụ: kết nối TCP bình thường, -m sẽ khớp với chuỗi nào? Bạn có thể cung cấp cho tôi một ví dụ về chuỗi
Samul

1
Không có gì. Như bạn có thể thấy -mtùy chọn thực sự được sử dụng để tải extension modulescung cấp tùy chọn bổ sung. Xem câu trả lời cập nhật của tôi và các liên kết ví dụ.
Kim cương

Cảm ơn! :) Một suy nghĩ cuối cùng: Tôi nghĩ rằng trong trường hợp của mình, tôi nên giữ đúng "-m"? Xem điều này: iptables -A INPUT -p tcp -m tcp --dport 9191 -j DROP Tôi sử dụng "--dport" và tôi nghĩ rằng chỉ có thể sử dụng --ddport nếu tôi sử dụng -m đúng không?
Samul

@Samul, Không hẳn. Bạn chỉ có thể sử dụng nó mà không có -m tcptùy chọn. --dportlà một phần của mô-đun tcp và sẽ chỉ hoạt động với -p tcp. Vui lòng tham khảo câu trả lời của tôi một lần nữa.
Kim cương

Bạn rất tốt bụng, cảm ơn bạn! Nhưng hãy xem: Tôi không hiểu cái gì -m khớp. Chuỗi nào? -m tcp phù hợp với những gì? Nó cố gắng tìm từ "tcp" ở đâu?
Samul
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.