iptables nhiều cờ -d không được phép


7

Tôi đang cố gắng đăng nhập tất cả các kết nối ra bên ngoài của mình vào một tệp bằng iptables.

Đây là quy tắc của tôi:

-A OUTPUT ! -o lo ! --destination 127.0.0.1  -m state --state NEW -j LOG --log-prefix "new_connection " --log-level 7

Tuy nhiên, nếu tôi thêm một đích IP khác (multicast) để quy tắc của tôi trở thành thế này:

-A OUTPUT ! -o lo ! --destination 127.0.0.1 ! --destination 239.192.0.0 -m state --state NEW -j LOG --log-prefix "new_connection " --log-level 7

Tôi nhận được lỗi sau đây:

multiple -d flags not allowed

Câu hỏi của tôi không phải là lỗi có nghĩa là gì, mà là làm thế nào tôi có thể loại trừ nhiều địa chỉ IP trong quy tắc của mình? Hai điều kiện

! --destination 127.0.0.1

! --destination 239.192.0.0

là loại trừ lẫn nhau nên có hai quy tắc sẽ thực sự giống như không có chúng (chỉ tệ hơn, vì tôi sẽ nhận được gần gấp đôi nhật ký)

Vì vậy, có một toán tử "và"?

Câu trả lời:


9

Đối với các vấn đề thuộc loại này, bạn có thể xác định chuỗi mới và nhảy giữa chúng. Ví dụ, bạn có thể thêm một chuỗi LOGGINGvà ở đầu chuỗi này khớp với các gói bạn không muốn đăng nhập bằng một hành động RETURN:

$ iptables -N LOGGING
$ iptables -A LOGGING -d 127.0.0.0/8 -j RETURN
$ iptables -A LOGGING -d 239.192.0.0/16 -j RETURN
$ iptables -A LOGGING -j LOG 
$ iptables -A OUTPUT -j LOGGING

Bằng cách này, tất cả các gói đi qua OUTPUTchuỗi trước tiên sẽ đi qua LOGGINGchuỗi và mọi thứ không được 127.0.0.0/8239.192.0.0/16sẽ được ghi lại, sau đó kiểm soát sẽ quay trở lại OUTPUT.


3

Có, nhưng nó không hoạt động theo cách bạn muốn. Từ trang người đàn ông:

Nhiều địa chỉ có thể được chỉ định, nhưng điều này sẽ mở rộng thành nhiều quy tắc (khi thêm bằng -A) hoặc sẽ khiến nhiều quy tắc bị xóa (với -D).

Cách để làm điều này là thêm các quy tắc sớm hơn trong chuỗi để chuyển hướng lưu lượng truy cập mà bạn không muốn đăng nhập hoặc sửa đổi, ví dụ:

-A OUTPUT -o lo -j ACCEPT
-A OUTPUT --destination 239.192.0.0 -j ACCEPT
-A OUTPUT  -m state --state NEW -j LOG --log-prefix "new_connection " --log-level 7

Có thể chấp nhận 2 câu trả lời. Cuối cùng, tôi quyết định cho Andreas điểm danh tiếng. Cảm ơn, mặc dù, và có một upvote!
Tom Macdonald

1
Tôi cũng nghĩ về câu trả lời này, nhưng cách tiếp cận chuỗi có lợi thế là bạn không suy diễn ra các quy tắc bổ sung tiềm năng sau khi đăng nhập (có thể bạn muốn lọc thêm và có ACCEPTmột số địa chỉ có thể gây rối với điều này).
Andreas Wiese

2
Cảm ơn! Câu trả lời của Andreas là sạch hơn, vì vậy sự chấp nhận là rất xứng đáng.
Mikel

1

Bạn có thể sử dụng các giá trị được phân tách bằng dấu phẩy với -dhoặc -sđể đặt nhiều IP. (Xem thảo luận tại http://www.gossamer-threads.com/lists/gentoo/user/210361 )

Ví dụ: lệnh

sudo iptables -A OUTPUT -d 192.168.235.43,192.168.235.46 -j DROP

lọc lưu lượng đến hai máy chủ.


3
Câu trả lời hay nhất, nhưng hãy nhớ rằng không hoạt động với '!'.
Nigel Horne
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.