Linux IPTable'larını kullanma, torrentleri veya herhangi bir P2P protokolünü nasıl engelleyebilirim?


17

Kurumumuzda 300'den fazla bilgisayarı internet ile farklı LAN'lara bağladık. Burada Officies LAN ve öğrenciler için İnternet Laboratuvarı bulunmaktadır. Torrentleri veya herhangi bir P2P Protokolünü Kontrol Etmek istiyoruz. Sorunumuzun önceki çözümü en çok tatmin eden KerioWinRoute 6.5.x.

Sorun şu ki, Webmin Platformunu kullanarak Ubuntu 8.04 LTS'ye geçtik.

Yanıtlar:


14

Port tabanlı P2P engelleme neredeyse% 100 bir çözüm değildir. Dikkate almak isteyebileceğiniz şey L7 filtreleme (Katman 7 filtreleme) olarak adlandırılır. Temel olarak, linux, neyin iyi ve neyin kötü olduğuna karar vermek için tüm paketler üzerinde regex tabanlı eşleştirme yapan bir uygulamaya sahiptir.

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

Bu, skype dahil her türlü şeyi engellemenize yardımcı olabilir.

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

Lütfen Dikkat: Paketleri incelemek ve filtrelemek için normal ifade eşleştirmesi, kaynak yoğunluğudur ve herhangi bir sistemi DDOS saldırılarına karşı daha savunmasız hale getirir; tercih edilen yöntem, iptables içindeki protokolü hedeflemektir.


11

Tek uygun teknik çözüm, tüm trafiğin anında SSL trafiğinin şifresini çözecek ve daha sonra geçen trafiğe katman 7 filtreleme uygulayacak bir proxy üzerinden geçmesini sağlamaktır.

Bu tür ürünler oldukça pahalıdır, çünkü genellikle paketleri sınıflandırmak için gerekli kuralları güncelleyen büyük bir mühendis ekibi vardır.

Bahsedilen ipp2p veya l7 filtresi gibi sıkıştırılan iptables modülleri ile kendinize biraz yardımcı olabilirsiniz, ancak şifrelenmiş trafiği yakalamazlar.

Her durumda, teknoloji çok nadiren sosyal sorunların çözümüdür ve p2p için kurumsal / kamu / hangi ağların kötüye kullanıldığı bir sosyal sorundur. Kullanıcılarınızla konuşmayı deneyin, kuruluşunuza uygun politikalar oluşturmasını ve bunları yaptırımlarla uygulamasını sağlayın. Deneyimlerime göre bu, kullanıcılarınızla sürekli bir teknoloji silahlanma yarışından çok daha iyi çalışıyor.


Proxy sunucuları anında SSL şifresini nasıl çözer?
David Pashley

Bazı ülkelerde SSL Proxy kullanmanın yasak olmasına dikkat edin
yarıçap

David Pashley, orada bir tane yerine sertifika yolladılar. Böylece şimdi özel olanlar, daha sonra isteği gerçek siteye yönlendiriyorlar.
yarıçap

1
Bunun bir diğer adımı, SSL proxy için güvenilir bir kök sertifika göndermek için Grup İlkesi'ni kullanmaktır, böylece güvenilir sertifikalar oluşturabilir.
Zan Lynx

1
Bu sadece çok çirkin bir çözüm ... Kullanıcılarınızla konuşun ...
Antoine Benkemoun

2

6881-6889 2710 6969 gibi yaygın izci bağlantı noktalarını engellemek iyi bir uygulamadır.

ancak bu 80 bağlantı noktasına (yani tpb.tracker.thepiratebay.org) bağlanan izleyicilere karşı yardımcı olmaz. Yani tüm engelleme, ama 80,443,22 yardımcı olmaz.

ipp2p biliyorum en iyi çözümdür. Dokümantasyon / Kullanım bölümüne bakın

L7 filtresi hakkında. Bittorrent.pat yorumunda şöyle diyor:

Bu model test edilmiştir ve iyi çalıştığına inanılmaktadır. Ancak, şifrelenen bittorrent akışlarında çalışmaz, çünkü şifrelenmiş verileri eşleştirmek (iyi) imkansızdır.

BSD sistemlerinde pf, durum veya saniyedeki bağlantı sayısına bağlı olarak eylemler uygulayabilir, böylece bittotent benzeri trafiği etiketleyebilirsiniz, çünkü hızlı bir şekilde bağlantılar oluşturur. İptables kılavuzu okuyun, o da yapabilir.



1

Basit çözüm, izin vermek istedikleriniz dışındaki tüm giden bağlantı noktalarını engellemektir.

Alternatif olarak, yaygın P2P uygulamaları için kullanılması muhtemel bağlantı noktalarının bir listesini bulabilir ve engelleyebilirsiniz. Bittorrent, aynı zamanda yükleme yapmıyorsanız yalnızca çok sınırlı bir indirmeye izin verme eğilimindedir, bu nedenle gelen bağlantıları kabul etmediğinizden de emin olmalısınız.

Kullanılan TCP bağlantı noktasına bağlı olarak yönlendiricinizde bir tür IP hesabı oluşturmayı ve sonra en çok hangi bağlantı noktasının kullanıldığını öğrenmeyi yararlı bulabilirsiniz. IPTraf bunu kontrol etmek için kullanışlı bir araçtır.

Seni uyarmalıyım, asla her şeyi durdurmayacaksın; insanlar ustaca ve uyguladığınız kısıtlamaların bir yolunu bulacaklar. Çoğu güvenlik duvarı, sıradan kullanıcıyı durduracaktır, bu da yeterli olabilir.


1

P2P'yi tamamen engelleyemezsiniz - yalnızca 80, 443, 22 "iyi" TCP bağlantı noktalarına izin vermezseniz ... Ve bu genellikle VPN ve benzeri şeyleri olan bilgisayar odaklı türler için yeterlidir.


p2p, http ve https bağlantı noktalarını sorunsuz ve çok fazla yapılandırma olmadan kullanarak çalışır
Kazimieras Aliulis

yumuşakça denir. Son birkaç yılda daha fazla p2p uygulaması ya 80 numaralı bağlantı noktasına (genellikle şifreli) doğru ilerliyor ya da açık olan bir bağlantı noktası arayan bağlantı noktalarını tarayacak. Uygulama katmanı gözetleme (belirli bir derin paket denetimi biçimi) doğrudan kullanımı yakalar, ancak trafik tünellenirse zorunlu değildir.
Scott Pack

1
@packs: Giderek daha fazla BitTorrent istemcisi, paket denetimi yapan ISS'ler nedeniyle diğer protokoller gibi tam şifreleme ve hatta kamuflaj sunuyor.
Zan Lynx

@grawity - Tam olarak, ancak VPN + proxy'nin nasıl yapılacağını bilen oldukça gelişmiş bir kullanıcı olmalılar ve bu tür insanlar muhtemelen iş yerinde Torrent için yeterince akıllı değiller.
djangofan

@packs - evet, ISS'lerin kesinlikle paket incelemesi var, ancak uTorrent şifrelemesini etkinleştirdiyse, çok sayıda açık bağlantı olması dışında trafiğin ne olduğunu söyleyemezsiniz. Tüm bildikleri için, Diablo 3 oynuyor olabilirsiniz
djangofan

1

Bittorrent ve şimdi en p2p günleri oldukça kaçınılmaz. Trafiği engellemek yerine, büyük miktarda bant genişliği kullanan istemcileri açmak için QOS kurallarını kullanın veya p2p trafiğini zaman içinde sıfıra yavaş yavaş düşürür. Protokolü engellemez, ancak p2p'ers'ı caydırır, o kadar yavaştır ki yapmaya değmez.

Tüm torrent trafiğinin kötü olmadığını, bazılarının iyi olduğunu unutmayın! :-)


1

Bit torrent tohumlama ve akran keşfi bırakmak için bu iptables yönlendirme kurallarını kullanın. Benim için çalıştılar.

#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

Eylem kuralları, karşı güzel artan sayaç vurmak.

# 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

Paylaşım için teşekkürler. Filtreleme nasıl çalışır? Dize BitTorrentURL'de bulunursa, bırakılır mı? Bu sadece ilk torrent dosyasının indirilmesini önlemek içindir, ancak torrent dosyası zaten indirildikten sonra, bittorrent trafiğini engellemez, değil mi?
Houman

0

Ultrasurf gibi popüler SSL tünelleme programları, kullanıcıların güvenlik duvarlarınızı kolayca atlamasına izin verebilir. Şifreli bittornet trafiğini engellemek için http (ler) üzerinden geçen şifreli tünelleri inceleyip engelleyebilen özel bir UTM cihazına ihtiyacınız olacaktır. Bunu yapabilen sadece bir tanesini biliyorum - Astaro, ama daha fazlası olmalı.


0

Daha önce de belirtildiği gibi ip2p kullanabilirsiniz. Ancak işleri tamamen engellemeyecek. İdeal olarak, özel olarak kullanmadığınız her bağlantı noktasını ateşlemeli ve ip2p kullanmalısınız. Mükemmel bir çözüm değil, elde edebileceğiniz en iyi çözüm.


0

Düz bağlantı noktası engellemeyi kullanamazsınız. Birkaç alternatif var. Layer7 filtresi yavaş, güvenilir değil ve bildiklerime göre artık korunmuyor.

IPP2P nDPI bu küçük yolun mantıksal sonucu olarak görünmektedir Tamam ama şimdi (PACE, ticari bir eşdeğer satmak) sponsor ipoque tarafından durduruldu OpenDPI tarafından superceded: http://www.ntop.org/products/ ndpi /

En kolay ve oldukça etkili olan David Pashley'nin önerisinin bir uzantısıdır. Tüm bağlantı noktalarını engelleyin ve yalnızca ihtiyacınız olanlara izin verin - ve ihtiyacınız olan hizmetleri proxy olarak bağlayarak bunu genişletin - örneğin bir web proxy'si ve belki de port25'e izin verilen bir dahili posta sunucusu, ancak istemciler yalnızca dahili sunucuyla konuşur. Bu şekilde, güvenlik duvarında açık bağlantı noktasına ihtiyaç duymayan istemcilere sahip olabilirsiniz. Bu, doğrudan erişime ihtiyaç duyan karmaşık ve / veya kötü yazılmış uygulamaları kullanmanız gerekiyorsa çalışmalıdır, ancak bitlere düşmeye başlayabilir.


0

Aşağıda iptables kurallarım ayarlanmıştır. Bu bir cazibe gibi çalışır. Https şeffaf kesişme proxy'si oluşturdum ve tüm trafiği bu proxy sunucusu üzerinden gönderdim.

Bu iptables kurallarını kullanarak ağı kontrol edebilirim.

  • 2086, 2087, 2095 bağlantı noktaları açık çünkü WHM cpanel ve cpanel web postası kullanıyoruz.
  • Ek web sunucusu için 8080.
  • 192.168.2.0 yerel ağdır.

IPTable kuralı:

#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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.