Sử dụng Linux IPTables, Làm thế nào để chặn torrent hoặc bất kỳ giao thức P2P nào?


17

Tại tổ chức của chúng tôi, chúng tôi đã kết nối hơn 300 máy tính với các mạng LAN khác nhau với Internet. Bao gồm ở đây là LAN LAN và Phòng thí nghiệm Internet cho sinh viên. Và chúng tôi muốn kiểm soát các torrent hoặc bất kỳ giao thức P2P nào. Giải pháp trước đây cho vấn đề của chúng tôi là KerioWinRoute 6.5.x, thỏa mãn nhất.

Vấn đề là, chúng tôi đã chuyển sang Ubuntu 8.04 LTS bằng Nền tảng Webmin.

Câu trả lời:


14

Ngăn chặn P2P dựa trên cổng hầu như không phải là một giải pháp 100%. Những gì bạn có thể muốn xem xét được gọi là lọc L7 (lọc lớp 7). Về cơ bản, linux có một triển khai thực hiện regex dựa trên tất cả các gói để quyết định cái gì tốt và cái gì xấu.

http://l7-filter.sourceforge.net/

Điều này có thể giúp bạn chặn tất cả các loại công cụ, bao gồm cả skype.

http://l7-filter.sourceforge.net/prot Protocol

Xin lưu ý: Việc kết hợp Regex để kiểm tra và lọc các gói dữ liệu rất tốn tài nguyên khiến cho bất kỳ hệ thống nào cũng dễ bị tấn công DDOS hơn, phương pháp ưa thích sẽ là nhắm mục tiêu vào giao thức trong iptables.


11

Giải pháp kỹ thuật phù hợp duy nhất là để tất cả lưu lượng truy cập đi qua một proxy sẽ giải mã lưu lượng SSL một cách nhanh chóng và sau đó áp dụng lọc lớp 7 cho lưu lượng đi qua.

Những sản phẩm như vậy khá đắt vì thường có một đội ngũ kỹ sư lớn đứng sau họ cập nhật các quy tắc cần thiết để phân loại các gói.

Bạn có thể giúp mình phần nào với các mô-đun iptables sush như bộ lọc ipp2p hoặc l7 đã nói ở trên, nhưng chúng sẽ không bắt được lưu lượng được mã hóa.

Trong mọi trường hợp, công nghệ rất hiếm khi là giải pháp cho các vấn đề xã hội và việc lạm dụng od công ty / công cộng / bất kỳ mạng nào cho p2p là một vấn đề xã hội. Hãy thử nói chuyện với người dùng của bạn, yêu cầu tổ chức của bạn tạo ra các chính sách phù hợp và thực thi chúng bằng các biện pháp trừng phạt. Điều này theo kinh nghiệm của tôi hoạt động tốt hơn nhiều so với một cuộc chạy đua vũ trang công nghệ liên tục với người dùng của bạn.


Làm thế nào để các máy chủ proxy giải mã SSL một cách nhanh chóng?
David Pashley

Cẩn thận rằng việc sử dụng SSL Proxy bị cấm trong một số trường hợp
bán kính

David Pashley, họ đã gửi giấy chứng nhận thay vì trang web một. Vì vậy, bây giờ họ là riêng tư, sau đó họ chuyển tiếp yêu cầu đến trang web thực sự.
bán kính

1
Một bước khác liên quan đến đó là sử dụng Chính sách nhóm để đẩy chứng chỉ gốc đáng tin cậy cho proxy SSL để nó có thể giả mạo các certs đáng tin cậy.
Zan Lynx

1
Đó chỉ là một giải pháp thực sự xấu xí ... Nói chuyện với người dùng của bạn ...
Antoine Benkemoun

2

Đó là cách tốt để chặn các cổng theo dõi phổ biến như: 6881-6889 2710 6969

nhưng điều này sẽ không giúp chống lại các trình theo dõi được liên kết trên 80 cổng (tức là tpb.tracker.thepiratebay.org). Vì vậy, chặn tất cả, nhưng 80,443,22 sẽ không giúp đỡ.

ipp2p là giải pháp tốt nhất mà tôi biết. Xem phần Tài liệu / Sử dụng

Giới thiệu về bộ lọc l7. Trong bittorrent.pat bình luận nói:

Mô hình này đã được thử nghiệm và được cho là hoạt động tốt. Tuy nhiên, nó sẽ không hoạt động trên các luồng bittorrent được mã hóa, vì không thể khớp dữ liệu được mã hóa (tốt).

Trong các hệ thống BSD, pf có thể áp dụng các hành động tùy thuộc vào số lượng trạng thái hoặc kết nối mỗi giây, do đó bạn có thể gắn thẻ lưu lượng truy cập giống như bittotent, vì nó nhanh chóng tạo kết nối. Đọc hướng dẫn sử dụng iptables, có thể nó cũng có thể làm điều đó.



1

Giải pháp đơn giản là chặn tất cả các cổng đi trừ các cổng bạn muốn cho phép.

Ngoài ra, bạn có thể tìm thấy danh sách các cổng có khả năng được sử dụng cho các ứng dụng P2P phổ biến và chặn chúng. Bittorrent có xu hướng chỉ cho phép số lượng tải xuống rất hạn chế nếu bạn cũng không tải lên, vì vậy bạn cũng nên đảm bảo rằng bạn không chấp nhận bất kỳ kết nối đến nào.

Bạn có thể thấy hữu ích khi thiết lập một số loại kế toán IP trên bộ định tuyến của mình dựa trên cổng TCP được sử dụng và sau đó tìm ra cổng nào được sử dụng nhiều nhất. IPTraf là một công cụ hữu ích để kiểm tra điều này.

Tôi nên cảnh báo bạn rằng bạn sẽ không bao giờ dừng mọi thứ; mọi người thật khéo léo và sẽ tìm ra cách khắc phục mọi hạn chế mà bạn đưa ra. Hầu hết các tường lửa sẽ ngăn chặn người dùng thông thường, điều đó có thể là đủ.


1

Bạn không thể chặn hoàn toàn P2P - trừ khi bạn chỉ cho phép các cổng TCP "tốt" 80, 443, 22 ... Và thậm chí điều đó thường đủ cho các loại người có đầu óc máy tính có VPN và những thứ tương tự.


p2p hoạt động bằng cách sử dụng cổng http và https mà không gặp sự cố và cấu hình nhiều
Kazimieras Aliulis

softly.lt gọi nó là vuông. Trong vài năm qua, ngày càng nhiều ứng dụng p2p chuyển sang cổng 80 (thường được mã hóa) hoặc sẽ quét qua các cổng tìm kiếm một ứng dụng đang mở. Lớp ứng dụng rình mò (một hình thức kiểm tra gói sâu cụ thể) sẽ bắt được việc sử dụng trực tiếp, nhưng không nhất thiết nếu lưu lượng đang được tạo đường hầm.
Scott Pack

1
@packs: Ngày càng có nhiều khách hàng BitTorrent cung cấp mã hóa đầy đủ và thậm chí ngụy trang như các giao thức khác do các ISP thực hiện kiểm tra gói.
Zan Lynx

@grawity - Chính xác, nhưng họ sẽ cần phải là một người dùng khá tiên tiến, biết cách sử dụng VPN + proxy và những kiểu người đó có thể đủ thông minh để không làm việc với Torrent.
djangofan

@packs - vâng, các ISP chắc chắn có inpspection, nhưng nếu chúng được kích hoạt mã hóa uTorrent, bạn sẽ không thể biết lưu lượng truy cập là gì ngoại trừ việc chúng có số lượng lớn kết nối mở. Đối với tất cả những gì họ biết, bạn có thể đang chơi Diablo 3.
djangofan

1

bittorrent và hầu hết p2p ngày nay là khá lảng tránh. Thay vì chặn lưu lượng, hãy sử dụng các quy tắc QOS để bỏ đói các máy khách đang sử dụng một lượng băng thông lớn hoặc từ từ điều chỉnh lưu lượng truy cập p2p về 0 trong khoảng thời gian. Nó sẽ không chặn giao thức nhưng nó sẽ ngăn cản mọi người rằng nó chậm đến mức không đáng làm.

Hãy nhớ rằng không phải tất cả lưu lượng truy cập torrent là xấu, một số lưu lượng tốt! :-)


1

Sử dụng các quy tắc chuyển tiếp iptables này để thả hạt giống torrent và khám phá ngang hàng. Họ làm việc cho tôi.

#Block Torrent
iptables -A FORWARD -m string --algo bm --string "BitTorrent" -j DROP
iptables -A FORWARD -m string --algo bm --string "BitTorrent protocol" -j DROP
iptables -A FORWARD -m string --algo bm --string "peer_id=" -j DROP
iptables -A FORWARD -m string --algo bm --string ".torrent" -j DROP
iptables -A FORWARD -m string --algo bm --string "announce.php?passkey=" -j DROP
iptables -A FORWARD -m string --algo bm --string "torrent" -j DROP
iptables -A FORWARD -m string --algo bm --string "announce" -j DROP
iptables -A FORWARD -m string --algo bm --string "info_hash" -j DROP

Quy tắc trong hành động, nhấn truy cập tăng độc đáo.

# iptables -vL -n

Chain FORWARD (policy ACCEPT 16403 packets, 6709K bytes)
 pkts bytes target     prot opt in     out     source               destination
    8   928 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "BitTorrent" ALGO name bm TO 65535
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "BitTorrent protocol" ALGO name bm TO 65535
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "peer_id=" ALGO name bm TO 65535
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  ".torrent" ALGO name bm TO 65535
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "announce.php?passkey=" ALGO name bm TO 65535
  582 52262 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "torrent" ALGO name bm TO 65535
   10  1370 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "announce" ALGO name bm TO 65535
   31  4150 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            STRING match  "info_hash" ALGO name bm TO 65535

Cám ơn vì đã chia sẻ. Làm thế nào để lọc hoạt động? Nếu chuỗi BitTorrentđược tìm thấy trong URL, nó sẽ bị loại bỏ? Đây chỉ là để ngăn tải xuống tệp torrent ban đầu, nhưng một khi tệp torrent đã được tải xuống, điều này sẽ không chặn lưu lượng bittorrent, đúng không?
Houman

0

Các chương trình đường hầm SSL phổ biến như Ultrasurf có thể cho phép người dùng vượt qua tường lửa của bạn một cách dễ dàng. Để chặn lưu lượng bittornet được mã hóa, bạn sẽ cần một thiết bị UTM chuyên dụng có thể kiểm tra và chặn các đường hầm được mã hóa đi qua http (s). Tôi chỉ biết về một thứ có thể làm điều đó - Astaro, nhưng nên có nhiều hơn thế.


0

Bạn có thể sử dụng ip2p, như đã đề cập trước đó. Tuy nhiên, nó sẽ không chặn mọi thứ hoàn toàn. Lý tưởng nhất là bạn nên bắn tường mọi cổng bạn không sử dụng cụ thể và sử dụng ip2p. Không phải là một giải pháp hoàn hảo, nhưng tốt nhất bạn có thể nhận được.


0

Bạn không thể sử dụng chặn cổng thẳng. Có một vài lựa chọn thay thế. Bộ lọc Layer7 chậm, không đáng tin cậy và theo hiểu biết của tôi không còn được duy trì.

IPP2P vẫn ổn nhưng đã được hỗ trợ bởi OpenDPI, hiện đã bị ngừng bởi nhà tài trợ ipoque (người bán PACE, tương đương thương mại) nDPI dường như là kết luận hợp lý của con đường nhỏ này: http://www.ntop.org/products/ ndpi /

Dễ nhất và khá hiệu quả là một phần mở rộng của đề xuất của David Pashley. Chặn tất cả các cổng và chỉ cho phép những gì bạn cần - và mở rộng điều này bằng cách ủy quyền những dịch vụ bạn cần - ví dụ như với proxy web và có lẽ một máy chủ thư nội bộ được phép port25, nhưng khách hàng chỉ nói chuyện với máy chủ nội bộ. Theo cách này, bạn có thể có các máy khách không cần cổng mở trên tường lửa. Điều này sẽ hoạt động nhưng có thể bắt đầu giảm xuống bit nếu bạn cần sử dụng bất kỳ ứng dụng phức tạp và / hoặc viết xấu nào cần truy cập trực tiếp.


0

Dưới đây là quy tắc iptables của tôi được thiết lập. Công việc này như một cái duyên vậy. Tôi đã tạo một proxy chặn trong suốt https và gửi tất cả lưu lượng truy cập thông qua máy chủ proxy đó.

Sử dụng quy tắc iptables này, tôi có thể kiểm soát mạng.

  • Các cổng 2086, 2087, 2095 được mở vì chúng tôi sử dụng WHM cpanel và cpanel web mail.
  • 8080 cho máy chủ web bổ sung.
  • 192.168.2.0 là mạng cục bộ.

Quy tắc IPTables:

#Generated by iptables-save v1.4.8 on Tue Mar 10 15:03:01 2015
*nat
:PREROUTING ACCEPT [470:38063]
:POSTROUTING ACCEPT [9:651]
:OUTPUT ACCEPT [1456:91962]
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:3128
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.2.1:3127
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3127
-A POSTROUTING -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Tue Mar 10 15:03:01 2015
# Generated by iptables-save v1.4.8 on Tue Mar 10 15:03:01 2015
*filter
:INPUT ACCEPT [2106:729397]
:FORWARD ACCEPT [94:13475]
:OUTPUT ACCEPT [3252:998944]
-A INPUT -p tcp -m tcp --dport 3127 -j ACCEPT
-A FORWARD -m string --string "BitTorrent" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "BitTorrent protocol" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "peer_id=" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string ".torrent" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "announce.php?passkey=" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "torrent" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "announce" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "info_hash" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "get_peers" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "announce_peer" --algo bm --to 65535 -j DROP
-A FORWARD -m string --string "find_node" --algo bm --to 65535 -j DROP
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 8080 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 2086 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 2087 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 2095 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 192.168.2.0/24 -p udp -m udp --sport 1024:65535 --dport 1024:65535 -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Tue Mar 10 15:03:01 2015
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.