Menggunakan Linux IPTables, Bagaimana cara memblokir torrent atau protokol P2P?

17

Di institusi kami, kami telah menghubungkan 300+ komputer ke LAN yang berbeda dengan Internet. Termasuk di sini adalah Officies LAN, dan Laboratorium Internet untuk siswa. Dan kami ingin Mengontrol Torrent atau Protokol P2P apa pun. Solusi sebelumnya untuk masalah kami adalah KerioWinRoute 6.5.x, yang paling memuaskan.

Masalahnya adalah, kami telah bermigrasi ke Ubuntu 8.04 LTS menggunakan Webmin Platform.

Nathaniel Varona
sumber

Jawaban:

14

Pemblokiran P2P berbasis port bukanlah solusi yang 100%. Apa yang mungkin ingin Anda pertimbangkan disebut pemfilteran L7 (pemfilteran Lapisan 7). Pada dasarnya, linux memiliki implementasi pencocokan berbasis regex pada semua paket untuk memutuskan apa yang baik dan apa yang buruk.

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

Ini dapat membantu Anda memblokir semua jenis barang, termasuk skype.

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

Harap Catatan: Pencocokan Regex untuk memeriksa dan memfilter paket adalah sumber daya yang intensif sehingga sistem apa pun yang jauh lebih rentan terhadap serangan DDOS, metode yang disukai adalah dengan menargetkan protokol dalam iptables.

Karolis T.
sumber
11

Satu-satunya solusi teknis yang tepat adalah memiliki semua lalu lintas melalui proxy yang akan mendekripsi lalu lintas SSL dengan cepat dan kemudian menerapkan pemfilteran lapisan 7 pada lalu lintas yang lewat.

Produk seperti itu cukup mahal karena biasanya ada tim insinyur besar di belakang mereka memperbarui aturan yang diperlukan untuk mengklasifikasikan paket.

Anda dapat sedikit membantu diri Anda sendiri dengan modul iptables sush sebagai ipp2p atau l7-filter sebelumnya, tetapi mereka tidak akan menangkap lalu lintas terenkripsi.

Bagaimanapun, teknologi sangat jarang menjadi solusi untuk masalah sosial, dan penyalahgunaan perusahaan / publik / jaringan apa pun untuk p2p adalah masalah sosial. Cobalah berbicara dengan pengguna Anda, dapatkan organisasi Anda untuk membuat kebijakan yang sesuai dan menegakkan mereka dengan sanksi. Ini dalam pengalaman saya bekerja jauh lebih baik daripada perlombaan senjata teknologi konstan dengan pengguna Anda.

Aleksandar Ivanisevic
sumber
Bagaimana cara server proxy mendekripsi SSL saat itu juga?
David Pashley
Berhati-hatilah bahwa menggunakan Proxy SSL dilarang di beberapa negara
radius
David Pashley, mereka mengirim sertifikat bukan situs satu. Sehingga mereka sekarang menjadi pribadi, kemudian mereka meneruskan permintaan ke situs yang sebenarnya.
radius
1
Satu langkah lain yang terlibat di dalamnya adalah menggunakan Kebijakan Grup untuk mendorong sertifikat root tepercaya untuk proksi SSL sehingga dapat memalsukan sertifikat tepercaya.
Zan Lynx
1
Itu hanya solusi yang benar-benar jelek ... Bicaralah dengan pengguna Anda ...
Antoine Benkemoun
2

Ini praktik yang baik untuk memblokir port pelacak umum seperti: 6881-6889 2710 6969

tetapi ini tidak akan membantu melawan pelacak yang terikat pada port 80 (yaitu tpb.tracker.thepiratebay.org). Jadi memblokir semua, tetapi 80.443.22 tidak akan membantu.

ipp2p adalah solusi terbaik yang saya tahu. Lihat bagian Dokumentasi / Penggunaan

Tentang l7-filter. Dalam bittorrent.pat komentar mengatakan:

Pola ini telah diuji dan diyakini bekerja dengan baik. Namun, itu tidak akan bekerja pada aliran bittorrent yang dienkripsi, karena tidak mungkin untuk mencocokkan data terenkripsi (yang baik).

Dalam sistem BSD, pf dapat menerapkan tindakan tergantung pada jumlah status atau koneksi per detik, sehingga Anda dapat menandai lalu lintas yang mirip-bittotent, karena itu akan secara cepat menghasilkan koneksi. Baca iptables manual, mungkin bisa juga melakukannya.

SaveTheRbtz
sumber
1

Ada modul bernama IPP2P yang dapat mendeteksi & memblokir protokol P2P: http://www.ipp2p.org/

radius
sumber
1
Situs web ini tidak ada lagi.
Achilles
1

Solusi sederhana adalah memblokir semua port keluar kecuali yang ingin Anda izinkan.

Atau, Anda dapat menemukan daftar port yang kemungkinan akan digunakan untuk aplikasi P2P umum dan memblokirnya. Bittorrent cenderung hanya mengizinkan jumlah unduhan yang sangat terbatas jika Anda juga tidak mengunggah, jadi Anda juga harus memastikan bahwa Anda tidak menerima koneksi yang masuk.

Anda mungkin merasa berguna untuk mengatur semacam akuntansi IP pada router Anda berdasarkan port TCP yang digunakan, dan kemudian mencari tahu port mana yang paling banyak digunakan. IPTraf adalah alat yang berguna untuk memeriksa ini.

Saya harus memperingatkan Anda bahwa Anda tidak akan pernah menghentikan semuanya; orang-orang cerdik dan akan menemukan jalan keluar dari segala pembatasan yang Anda lakukan. Sebagian besar firewall akan menghentikan pengguna biasa, yang mungkin cukup.

David Pashley
sumber
1

Anda tidak dapat memblokir P2P sepenuhnya - kecuali Anda hanya mengizinkan port TCP "bagus" 80, 443, 22 ... Dan bahkan itu biasanya cukup untuk jenis komputer yang memiliki VPN dan hal-hal serupa.

pengguna1686
sumber
P2P bekerja menggunakan http dan https port tanpa masalah dan banyak konfigurasi
Kazimieras Aliulis
dengan lembut. Aku menyebutnya dengan jujur. Selama beberapa tahun terakhir semakin banyak aplikasi p2p yang bergerak menuju port 80 (sering dienkripsi), atau akan memindai melalui port mencari yang terbuka. Pengintipan lapisan aplikasi (bentuk khusus dari inspeksi paket mendalam) akan menangkap penggunaan langsung, tetapi tidak harus jika lalu lintas sedang disalurkan.
Scott Pack
1
@packs: Semakin banyak klien BitTorrent menawarkan enkripsi penuh dan bahkan kamuflase sebagai protokol lain karena ISP melakukan inspeksi paket.
Zan Lynx
@ kegembiraan - Tepat, tetapi mereka harus menjadi pengguna yang cukup mahir, mengetahui cara VPN + proksi, dan orang-orang seperti itu mungkin cukup pintar untuk tidak bekerja di Torrent.
djangofan
@packs - yeah, ISP tentu memiliki paket inpspection, tetapi jika mereka mengaktifkan enkripsi uTorrent, Anda tidak akan dapat mengetahui lalu lintas apa kecuali bahwa mereka memiliki sejumlah besar koneksi yang terbuka. Sejauh yang mereka tahu, Anda mungkin bermain Diablo 3.
Djangofan
1

bittorrent dan sebagian besar P2P sekarang ini cukup menghindar. Alih-alih memblokir lalu lintas, gunakan aturan QOS untuk membuat klien kelaparan yang menggunakan bandwidth dalam jumlah besar, atau perlahan-lahan mengurangi lalu lintas p2p ke nol seiring waktu. Itu tidak akan memblokir protokol tetapi akan mencegah p2p'ers bahwa itu sangat lambat tidak layak dilakukan.

Ingat tidak semua lalu lintas torrent buruk, sebagian bagus! :-)

Unix Janitor
sumber
1

Gunakan aturan penerusan iptables ini untuk menjatuhkan seeding bit torrent dan penemuan rekan. Mereka bekerja untuk saya.

#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

Aturan dalam aksi, hit counter bertambah baik.

# 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
Giancarlo D
sumber
Terima kasih telah berbagi. Bagaimana cara kerja penyaringan? Jika string BitTorrentditemukan di URL, itu akan dijatuhkan? Ini hanya untuk mencegah mengunduh file torrent awal, tetapi begitu file torrent sudah diunduh, ini tidak akan memblokir lalu lintas bittorrent, benar?
Houman
0

Program tunneling SSL populer seperti Ultrasurf dapat membuat pengguna mem-bypass firewall Anda dengan mudah. Untuk memblokir lalu lintas bittornet terenkripsi Anda akan memerlukan perangkat UTM khusus yang dapat memeriksa dan memblokir terowongan terenkripsi pergi melalui http (s). Saya hanya tahu satu yang bisa melakukan itu - Astaro, tetapi harus ada lebih banyak.

Taras Chuhay
sumber
0

Anda dapat menggunakan ip2p, seperti yang disebutkan sebelumnya. Namun itu tidak akan memblokir semuanya. Idealnya, Anda harus mem-fire walling setiap port yang tidak Anda gunakan secara spesifik, dan menggunakan ip2p. Bukan solusi yang sempurna, tetapi kemungkinan terbaik yang Anda dapatkan.

Cian
sumber
0

Anda tidak dapat menggunakan pemblokiran port langsung. Ada beberapa alternatif. Filter Layer7 lambat, tidak bisa diandalkan, dan setahu saya tidak lagi terpelihara.

IPP2P ok tetapi digantikan oleh OpenDPI, yang sekarang telah dihentikan oleh sponsor ipoque (yang menjual PACE, setara komersial) nDPI tampaknya menjadi kesimpulan logis dari jalan kecil ini: http://www.ntop.org/products/ ndpi /

Paling mudah, dan cukup efektif adalah perpanjangan dari saran David Pashley. Blokir semua port dan hanya izinkan apa yang Anda butuhkan - dan perluas ini dengan mem-proxy layanan yang Anda butuhkan - misalnya dengan proxy web, dan mungkin server mail internal yang diizinkan port25, tetapi klien hanya berbicara dengan server internal. Dengan cara ini Anda dapat memiliki klien yang tidak memerlukan port terbuka di firewall sama sekali. Ini seharusnya bekerja tetapi dapat mulai hancur jika Anda perlu menggunakan aplikasi yang rumit dan / atau ditulis dengan buruk yang memerlukan akses langsung.

Tom Newton
sumber
0

Di bawah ini adalah aturan iptables saya yang ditetapkan. Ini bekerja seperti pesona. Saya telah membuat proxy intersepsi transparan https dan mengirim semua lalu lintas melalui server proxy itu.

Menggunakan aturan iptables ini, saya dapat mengontrol jaringan.

  • Port 2086, 2087, 2095 terbuka karena kami menggunakan WHM cpanel dan cpanel web mail.
  • 8080 untuk server web tambahan.
  • 192.168.2.0 adalah jaringan lokal.

Aturan 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
Dinoosh
sumber