Là tốt hơn để đặt -j RE DỰA hoặc -j DROP trong iptables?


33

Có một ví dụ về các quy tắc iptables trên wiki archlinux:

# Generated by iptables-save v1.4.18 on Sun Mar 17 14:21:12 2013
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
COMMIT
# Completed on Sun Mar 17 14:21:12 2013

Vài ngày trước, bạn tôi hỏi tôi tại sao có REJECTba quy tắc cuối cùng. Anh ấy nói với tôi rằng nên có DROPthay vào đó, và anh ấy đã đề cập một vài điều về bảo mật tốt hơn trong trường hợp DROP.

Vì vậy, tôi có hai câu hỏi:

  1. Ba quy tắc làm gì?

  2. Liệu nó thực hiện bất kỳ sự khác biệt khi tôi đặt ở đó DROPtại chỗ REJECT --reject-with? Nếu có, sự khác biệt là gì?


Câu trả lời:


33

Ba quy tắc làm gì?

3 quy tắc này có vẻ khá tự giải thích:

  1. Từ chối các gói UDP đến với thông báo ICMP "cổng không thể truy cập"
  2. Từ chối các gói TCP đến với "thiết lập lại tcp"
  3. Từ chối các gói đến (của bất kỳ giao thức nào khác) với thông báo ICMP "không thể truy cập giao thức"

Nếu bạn đang tìm kiếm chi tiết hơn (về các gói UDP / TCP, ICMP), bạn cần đào sâu vào các tài liệu mạng và có lẽ man iptablescũng vậy.

Liệu nó có làm nên sự khác biệt nào khi tôi đặt DROP ở vị trí ĐỐI TƯỢNG - phản hồi không? Nếu có, ai đó có thể giải thích sự khác biệt cho tôi, tôi sẽ thực sự đánh giá cao nó.

Nó làm cho một sự khác biệt. Và trái với niềm tin phổ biến, DROPkhông cung cấp bảo mật tốt hơn REJECT. Nó gây bất tiện cho người dùng hợp pháp và thực sự không có sự bảo vệ nào khỏi những kẻ độc hại. Bài này giải thích lý do chi tiết:

http://www.chiark.greenend.org.uk/~peterb/network/drop-vs-reject

Một lý do phổ biến cho việc sử dụng DROP thay vì RE DỰNG là để tránh cung cấp thông tin về cổng nào đang mở, tuy nhiên, việc loại bỏ các gói sẽ cung cấp chính xác nhiều thông tin như từ chối.

Với RE DỰ ÁN, bạn thực hiện quét và phân loại kết quả thành "kết nối được thiết lập" và "kết nối bị từ chối".

Với DROP, bạn phân loại kết quả thành "kết nối được thiết lập" và "hết thời gian kết nối".

Máy quét tầm thường nhất sẽ sử dụng cuộc gọi "kết nối" của hệ điều hành và sẽ đợi cho đến khi một lần thử kết nối được hoàn thành trước khi bắt đầu cuộc gọi tiếp theo. Loại máy quét này sẽ bị chậm lại đáng kể bằng cách thả các gói. Tuy nhiên, nếu cuộc tấn công đặt thời gian chờ là 5 giây cho mỗi lần thử kết nối, có thể quét mọi cổng dành riêng (1..1023) trên máy chỉ trong 1,5 giờ. Quét luôn tự động và kẻ tấn công không quan tâm rằng kết quả không phải là ngay lập tức.

Một máy quét tinh vi hơn sẽ tự gửi các gói thay vì dựa vào triển khai TCP của hệ điều hành. Các máy quét như vậy là nhanh chóng, hiệu quả và thờ ơ với sự lựa chọn của DỰ ÁN hoặc DROP.

PHẦN KẾT LUẬN

DROP không cung cấp rào cản hiệu quả cho các thế lực thù địch nhưng có thể làm chậm đáng kể các ứng dụng được chạy bởi người dùng hợp pháp. DROP thường không nên được sử dụng.


@janos - bạn có thể viết thêm một chút về những gì thực sự xảy ra khi một gói đạt được một trong ba quy tắc không?
Mikhail Morfikov

3
@Kiwy - Đọc liên kết và tự mình thử. DROP không cung cấp bảo mật tốt hơn so với DỰ ÁN. Nó gây bất tiện cho người dùng hợp pháp và thực sự không có sự bảo vệ nào khỏi những kẻ độc hại. Điều này là do người dùng hợp pháp bị kết nối chậm trong khi chờ kết nối hết thời gian và các cracker chỉ cấu hình các công cụ của họ để không chờ hết thời gian. thực tế là kết nối chậm (do phải chờ một thời gian chờ) cho thấy máy chủ của bạn đang ở đó và được tường lửa.
Panther

2
Tôi không đi với kết luận đó. Từ chối tạo ra một câu trả lời ICMP có thể bằng cách phân tích. Dựa trên phân tích này, các công cụ tấn công tốt có thể lấy được HĐH đang được sử dụng. Vì vậy, trên một hệ thống mà tất cả các cổng được biết thả có thể tốt hơn. Điều này áp dụng cho các máy chủ trong một môi trường sản xuất.
Nils

1
Một tường lửa chỉ chuyển tiếp các cổng nhất định thậm chí còn tốt hơn. DROP một DỰ ÁN không giống như hoàn toàn không có dịch vụ chạy vị trí đầu tiên. Nhiều máy quét cổng đánh dấu máy chủ của bạn là mục tiêu tiềm năng cho các lần quét trong tương lai với hy vọng hạ được tường lửa của bạn nếu họ tìm thấy ĐỐI TƯỢNG hoặc DROPS ở đó, vì cả hai đều có thể được phát hiện từ bên ngoài. chiark.greenend.org.uk/~peterb/network/drop-vs-reject
Dagelf 16/07/2015

1
Lưu ý rằng văn bản được trích dẫn có thêm một đoạn, một bản cập nhật, nói rằng DROP sẽ tốt hơn nếu bạn có một cuộc tấn công DDoS, điều này tương đối hiếm, nhưng khi nó xảy ra, có lẽ bạn nên có nó ... bạn nghĩ sao?
Alexis Wilke
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.