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


Câu trả lời:


79

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ỉ.

Nhận dạng phải được thông qua hoặc từ chối trên bất kỳ địa chỉ nào 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ụ. - Các gói TCP sẽ trả về một ACK / RST giống như phản hồi mà một cổng mở không có dịch vụ trên đó sẽ đáp ứng. Một số bộ định tuyến sẽ phản hồi và ACK / RST thay mặt cho các máy chủ ngừng hoạt độ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.


5
Đây không phải là sự thật. Ngay cả khi quy tắc nói "DROP", hệ thống vẫn sẽ trả lời gói đến với TCP SYN / ACK như thể nó đang mở. Để thực sự thả một gói, hệ thống cần trả lời bằng TCP RST / ACK - không có quy tắc tường lửa. Như vậy, thiết lập tường lửa tốt nhất là một trong đó chỉ các cổng được chọn được chuyển tiếp. Quy tắc DROP của bạn sẽ quảng cáo tường lửa của bạn và máy quét cổng sẽ biết rằng bạn đang tường lửa một cái gì đó và tiếp tục cản trở bạn với hy vọng hạ được tường lửa của bạn.
Dagelf

2
Quan điểm của tôi là, có thể phát hiện được từ bên ngoài cho dù bạn có tường lửa gì hay không vì thực tế là ngăn xếp TCP của bạn hoạt động khác khi bạn DROP so với khi bạn không có dịch vụ chạy ở nơi đầu tiên!
Dagelf

2
Không làm thay đổi thực tế là có các botnet tận dụng sự khác biệt và theo dõi các cổng của bạn.
Dagelf

1
bất cứ điều gì bạn làm, hãy kiên định nếu kẻ tấn công chọn một số cổng không được sử dụng và cố gắng kết nối, anh ta sẽ nhận được phản hồi tương tự như khi anh ta chọn một số bạn đang cố tình chặn. đưa ra một phản ứng khác nhau nói với anh ta rằng có một cái gì đó ở đó. ví dụ: anh ta có thể sử dụng purtnumber cung cấp phản hồi khác nhau để xác định máy chủ cơ sở dữ liệu nào bạn đang sử dụng, anh ta có thể điều chỉnh SQL SQL cho máy chủ đó ...
user313114

5
@ Bạn đang nhận được thông tin mà DROP gửi phản hồi ở đâu? Đó là tin tức lớn và chạy ngược lại mọi thứ tôi đã quan sát và được kể. Bạn có một liên kết đến các tài liệu mô tả hành vi này?
Điểm_Under

27

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 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


2
Mục tiêu DROP không gửi gì cả. Kiểm tra nhận xét của tôi về câu trả lời được chấp nhận và tự nghiên cứu chủ đề nếu bạn quan tâm đến các chi tiết!
Dagelf

8

Thông thường, bạn muốn bỏ qua các đầu dò từ những kẻ tấn công đến một số cổng nhất định, điều đó có nghĩa 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ì DỰ ÁN.


6
Không có các quy tắc iptables, một cổng đóng mặc định là ĐỐI TƯỢNG. Nếu bạn DROP mỗi cổng thì đó là một giải pháp thay thế tốt (máy chủ của bạn xuất hiện) nhưng nếu bạn chỉ DROP các cổng cụ thể thì bạn thực sự cung cấp cho họ nhiều thông tin hơn so với DỰ ÁN. Nếu ai đó sử dụng đầu dò chăn như nmap, các cổng cụ thể thả gói sẽ xuất hiện dưới dạng "được lọc", điều đó có nghĩa là họ biết bạn có dịch vụ mà bạn đang ẩn.
Raptor007

7

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 không làm gì cả với gói. Nó không được chuyển tiếp đến một máy chủ lưu trữ, 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.

ĐỐI TƯỢNG khác với DROP rằng nó sẽ gửi lại một gói, nhưng câu trả lời là nếu một máy chủ được đặt trên IP, nhưng không có cổng ở trạng thái nghe. 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.


2
+1 từ tôi, nhưng câu trả lời không thực sự không đồng ý. Tất cả họ đều đồng ý, theo như tôi thấy, ngoại trừ Dagelf - người sai.
MadHatter

Được rồi, đây là một mẹo nhỏ cho bạn sau đó: thực hiện một "nmap localhost". Bây giờ, chọn bất kỳ cổng nào không "mở" ... và thêm quy tắc "không làm gì", ví dụ: "iptables -I INPUT -p tcp --dport 888 -j DROP". Bây giờ "nmap localhost" một lần nữa. Bạn thấy gì? ...
Dagelf

4

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 DROPthì phù 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.


Điều gì sẽ xảy ra nếu bạn mở một vài cổng (tức là 22, 25, 53, 80, 443) và sau đó DROP mọi thứ khác? Bây giờ liệu tôi có chạy MySQL, PostgreSQL, SQLite hay Cassandra không ... máy quét không thể biết được, phải không?
Alexis Wilke

@AlexisWilke Trong trường hợp đó, thông tin bổ sung duy nhất bạn cung cấp cho trình quét cổng là bạn có một số loại tường lửa được áp dụng với chính sách DROP mặc định.
Raptor007

0

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 FW.IDS-DROP-vs-RE DỰ ÁN ngắ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 ở một điểm nào đó)

-5

Có, sử dụng DROP là vô nghĩa. Sử dụng DỰ ÁN.

Ngay cả khi quy tắc nói "DROP", hệ thống vẫn trả lời một SYN đến với TCP RST / ACK - đây là hành vi mặc định cho các cổng không có dịch vụ đang chạy. (tcpdump et al không đăng nhập này.)

Nếu một dịch vụ đang chạy, thì SYN được đáp ứng với TCP SYN / ACK.

Vì DROP không phản hồi như bình thường với TCP SYN / ACK, nhưng với RST / ACK thay vào đó, quy tắc DROP của bạn sẽ quảng cáo tường lửa của bạn và trình quét cổng sẽ biết rằng bạn đang tường lửa một cái gì đó và có thể tiếp tục cản trở bạn với hy vọng bắt tường lửa của bạn xuống.

Đây là nmap có thể báo cáo "đã lọc" thay vì "đóng" chẳng hạn:

$ nmap localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2018-03-14 00:21 SAST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000060s latency).
Not shown: 986 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
53/tcp   open  domain
80/tcp   open  http

Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds

$ iptables -I INPUT -p tcp --dport 1111 -j DROP
$ nmap localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2018-03-14 00:21 SAST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000060s latency).
Not shown: 986 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
53/tcp   open  domain
80/tcp   open  http
1111/tcp filtered lmsocialserver

Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds

$ iptables -D INPUT 1

Như vậy, thiết lập tường lửa "vô hình" duy nhất là một thiết bị trong đó một thiết bị chuyên dụng nằm giữa các thiết bị của bạn và chỉ chuyển tiếp có chọn lọc các cổng.

Nếu bạn thực sự muốn gây rối với các máy quét cơ bản, bạn có thể kết nối TcIT tcp, đặt Cửa sổ TCP thành 0 để không có dữ liệu nào được chuyển sau khi mở kết nối, bỏ qua các yêu cầu đóng kết nối, nghĩa là máy quét phải chờ cho thời gian chờ kết nối xảy ra, nếu nó muốn chắc chắn. Nhưng thật tầm thường khi một kẻ tấn công phát hiện ra điều này và khiến thời gian chờ của anh ta rất ngắn.

Tất cả mọi thứ được xem xét, có lẽ bạn tốt nhất chỉ nên sử dụng RE DỰ ÁN - hoặc đặt một thiết bị chuyển tiếp cổng chuyên dụng giữa máy chủ của bạn và internet.

Hoặc chỉ chạy các dịch vụ trên các máy phải đối mặt với internet mà không yêu cầu tường lửa.

Nói chung, DỰ ÁN là tốt nhất cho các máy chủ web, vì bất kỳ dịch vụ nào đang cố truy cập vào nó (có thể thường xuyên hơn không, bạn) sẽ nhanh chóng nhận được phản hồi và người dùng hoặc các dịch vụ khác sẽ không phải chờ đợi nếu có sự cố ngừng mạng.


5
Câu trả lời này không chính xác. Có thể dễ dàng hiển thị với tcpdump rằng quy tắc DROP sẽ dẫn đến hệ thống không gửi BẤT K answer câu trả lời nào - như người ta mong đợi. Và tuyên bố của bạn "Để thực sự làm rơi gói tin, hệ thống cần trả lời bằng TCP RST / ACK" không có nghĩa gì vì trả lời bất cứ điều gì rõ ràng không phải là "thực sự làm rơi gói". Nếu bạn "thực sự làm rơi" một gói, bạn chỉ không trả lời và đây thực sự là hiệu ứng của quy tắc DROP.
Juliane Holzt

3
Bạn có thể cung cấp một nguồn cho cáo buộc DROPsẽ đưa ra một SYN/ACK? Tôi chưa bao giờ thấy điều này trên máy của tôi.
motobói

2
@Dagelf Bài viết của bạn có ghi "DROP (còn gọi là DENY, BLACKHOLE) Cấm một gói tin đi qua. Không gửi phản hồi."
JeanT

Nó không gửi phản hồi bình thường, nhưng nó sẽ gửi một phản hồi như đã giải thích, bất kể.
Dagelf

3
Tài liệu bạn liên kết để nói " DROP ... Không gửi phản hồi " và không, theo như tôi có thể thấy, hỗ trợ cho yêu cầu của bạn DROPtrả về a SYN/ACK. Tôi cũng vậy, chưa bao giờ thấy hành vi này dưới bất kỳ phiên bản nào iptables. Nếu bạn có một nguồn hỗ trợ cho yêu cầu của mình, sẽ hữu ích nhất khi xem nó; chắc chắn, các gói tin tôi vừa hoàn thành không hỗ trợ yêu cầu của bạn.
MadHatter
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.