tra-loi-cau-hoi-phat-trien-web.com

DỰ ÁN vs DROP khi sử dụng iptables

Có bất kỳ lý do tại sao tôi muốn có

iptables -A INPUT -j REJECT

thay vì

iptables -A INPUT -j DROP
93
Mike B

Theo nguyên tắc chung, hãy sử dụng DỰ ÁN khi bạn muốn đầu kia biết cổng không thể truy cập được 'sử dụng DROP cho các kết nối đến máy chủ mà bạn không muốn mọi người nhìn thấy.

Thông thường, tất cả các quy tắc cho các kết nối bên trong mạng LAN của bạn nên sử dụng DỰ ÁN. Đối với Internet, ngoại trừ nhận dạng trên một số máy chủ nhất định, các kết nối từ Internet thường bị DROPPED.

Sử dụng DROP làm cho kết nối dường như là một địa chỉ IP không được sử dụng. Máy quét có thể chọn không tiếp tục quét các địa chỉ không xuất hiện. Cho rằng NAT có thể được sử dụng để chuyển hướng kết nối trên tường lửa, sự tồn tại của một dịch vụ nổi tiếng không nhất thiết chỉ ra sự tồn tại của máy chủ trên một địa chỉ.

Danh tính nên được thông qua hoặc từ chối trên bất kỳ địa chỉ cung cấp dịch vụ SMTP. Tuy nhiên, việc sử dụng các tra cứu Nhận dạng bằng cách phục vụ SMTP đã không được sử dụng. Có các giao thức trò chuyện cũng dựa trên một dịch vụ nhận dạng làm việc.

EDIT: Khi sử dụng quy tắc DROP: - Các gói UDP sẽ bị hủy và hành vi sẽ giống như kết nối với một cổng không có tường bao không có dịch vụ. - TCP sẽ trả về ACK/RST, đó là phản hồi tương tự mà một cổng mở không có dịch vụ trên đó sẽ đáp ứng. Đang xuống.

Khi sử dụng quy tắc RE DỰ ÁN, gói ICMP được gửi cho biết cổng không khả dụng.

81
BillThor

Sự khác biệt là mục tiêu RE DỰ ÁN gửi phản hồi từ chối tới nguồn, trong khi mục tiêu DROP không gửi gì.

Điều này có thể hữu ích, ví dụ: cho các dịch vụ nhận dạng. Nếu bạn sử dụng RE DỰ ÁN thì khách hàng không cần phải đợi đến thời gian chờ.

Thông tin thêm về điều này: http://www.linuxtopia.org/Linux_Firewall_iptables/x4550.html

28
Zizzencs

Thông thường, bạn muốn bỏ qua thăm dò từ những kẻ tấn công đến một số cổng nhất định, ý tôi là bạn không muốn gửi lại 'kết nối bị từ chối'. 'Kết nối bị từ chối' có nghĩa là: 'có một máy chủ ở đây' và có thể cung cấp thêm thông tin, trong khi việc bỏ gói không đưa ra manh mối về các phiên bản phần mềm, lỗ hổng có thể hoặc thậm chí thực tế là máy chủ đang lắng nghe IP của bạn.

Trên đây là một trong những lý do chính để sử dụng DROP thay vì RE DỰ ÁN.

8
wzzrd

Tôi thấy rất nhiều câu trả lời mâu thuẫn ở đây và được cho đây là bài viết đầu tiên trong Google với các từ khóa phù hợp; đây là lời giải thích chính xác.
[.__.] Thật đơn giản:

[.__.] DROP hoàn toàn không làm gì với gói. Nó không được chuyển tiếp đến một Host, nó không được trả lời. Trang chủ của IPtables nói rằng nó làm rơi gói tin xuống sàn, tức là nó không làm gì với gói.

[.___ IPtables sẽ gửi RST/ACK trong trường hợp TCP hoặc với UDP, cổng đích ICMP không thể truy cập được.

7
Ecko

Nếu bạn đang cố gắng che giấu sự tồn tại của máy hoàn toàn, -j DROP là thích hợp. Ví dụ, bạn có thể sử dụng điều này để thực hiện một danh sách đen.

Nếu bạn đang cố gắng che giấu sự thật rằng một cổng đang mở, bạn nên bắt chước hành vi sẽ xảy ra nếu cổng không mở:

  • TCP: -p tcp -j REJECT --reject-with tcp-reset
  • UDP: -p udp -j REJECT --reject-with icmp-port-unreachable

Nếu một máy quét cổng thấy rằng một vài cổng đang bỏ các gói trong khi hầu hết đang từ chối chúng, thì nó có thể giả sử các gói bị rơi nằm trên các cổng được mở nhưng bị ẩn.

4
Raptor007

Mặc dù có rất nhiều câu trả lời đúng, chỉ hai xu của tôi:

Đây là một PoC ngắn FW.IDS-DROP-vs-RE DỰ ÁN của tôi đối với chủ đề liên quan đến các quy tắc cho hệ thống cấm (tường lửa, IDS, v.v.).

Ngắn gọn:

  • DROP có thể được sử dụng cho những kẻ xâm nhập tái phạm, nếu cấm tất cả các cổng (vì vậy có vẻ như máy chủ đã ngừng hoạt động ở phía bên xâm nhập)
  • REJECT --reject-with tcp-reset là lựa chọn tốt nhất cho việc cấm nhiều cổng, bởi vì nó dường như hoạt động như một cổng đóng thực sự
  • nếu một số cổng đang trả lời (kẻ xâm nhập biết rằng Máy chủ còn sống), DROPREJECT (không có tcp-reset) sẽ cung cấp cho kẻ xâm nhập một "tín hiệu" rằng có thứ gì đó chặn ở đó (để có thể kích thích anh ta tiếp tục "tấn công" với hy vọng cung cấp dữ liệu cần thiết vào một lúc nào đó)
0
sebres