หัวข้อ:
มา Block Bittorrent กันที่ต้นเหตุกันดีกว่าเริ่มหัวข้อโดย:
jusmin ที่
12 มกราคม 2009, 01:32:46
ช่วง นี้ผมว่างก็เลย ลองไปเรื่อยๆ ครับ .. ผมก็เลยอยากจะ block bittorrent ให้ได้อย่างจริงจังครับ... แต่ผมเองก็เสียเวลาไปกับการ conplie kernel ให้ support พวก ipp2p l7-filter ipset แต่ก็เหมือนกับ เสียเวลาเปล่าๆ เพราะว่าไปเจอตอ ก็คือ bittorprent encryption .. ก็หลุดซะแล้ว.. ก็เลยลองมานั่งคิดว่าจะทำไงดีหนอ... เลยมี idea บ้าๆๆ ว่าก็เราจะ block มันแล้วนี่หน่า. ทำไมต้องยอมให้เขา download file torrent มาก่อนล่ะ....
อีกอ ย่าง.. bittorrent นั้น ถูกพัฒนามาจาก peer to peer เก่าๆ ที่ใช้ DHT (distribute hash table) ซึ่งใช้การ Flooding บน network ทำให้เปลื่อง backwidth ในการ หา peer ใน swarm bittorrent ก็เลยมี tracker คือตัวกลางเข้ามาเก็บข้อมูล ของ peer ต่างๆ ที่กำลัง load file นั้นอยู่..
ก่อน ที่จะทำการ download นั้น ตัว bittorrent client ก็ต้อง ทำการ connect ไปที่ tracker ก่อนว่า มี peer ไหนอยู่ใน swarm บ้าง.. พอเจอแล้วก็จึงเข้าไป connect โดยตรง....
ไอ้โปรแกรมพวก ipp2p l7-filter มันไปพยายามที่จะไป block หลังจาก peer ติดต่อกับ tracker แล้ว...
ผมก็เลยคิดว่า เราต้องหาทาง block ก่อนที่จะไป ติดต่อกับ tracker เพื่อให้ได้ peer list มาดีกว่า...
ตอน แรกก็กะว่าใช้ squid ช่วยดีกว่า ในการ filter kerword เพราะบางที่ใช้ transparent proxy แต่ ดูๆๆ แล้ว ถ้า tracker ไม่ไดใช้ port 80 ล่ะ.. มันก็ไร้ประโยชน์
ก็เลยไปใช้ iptable ช่วยดีก่า...
ลอง sniff data มาว่าเวลา bit client ติดต่อไปยัง tracker request อะไรบ้าง.. ก็ได้มา..ดังนี้
http://tracker.xxxx.com:1234/announce.php?passkey=176b50b80b73143c7c2c7bb081790755/&info_hash=%03s%13%ACO%DBk%F8%285%3F%89%BCP%29%00%2D%14%FD%0A&peer_id=%2DBC0070%2D%AD%AEe2%5F%B0%3C%BC%AA%3C%AC%00&port=18109&uploaded=0&downloaded=0&left=1437961276&numwant=200&compact=1&no_peer_id=1&key=3317&event=started มันมี หลาย keyword มากที่เราสามารถจะ filter ได้... ผมก็เลย เอา สัก 2-3 key มา จับ block ซะเลย... เหอๆๆๆ แบบว่าป่าเถื่อนมาก.. อิอิ
แล้วผมก็เลยลองทำดูโดยใช้ code ตามข้างล่างนี้
====================================================
iptables -I INPUT -s 0.0.0.0/0 -m string --string "torrent" --algo bm -j DROP <<<=== กะว่าจะ block ไม่ให้ download .torrent เลย.. แต่ถ้า download มาอีกทอด ก็ต้องเจอ policy ข้อต่อไป..
iptables -I INPUT -s 0.0.0.0/0 -m string --string "announce" --algo bm -j DROP <<< = ถ้าหลุดมาก็ต้องเจอ.นี่ announce อ่ะ tracker มันต้อง มีซิ.. คิดว่างั้น....
iptables -I INPUT -s 0.0.0.0/0 -m string --string "info_hash" --algo bm -j DROP <<< ==== ถ้าหลุดอีกหรอ.... มันก็ต้องมี การ ส่งค่า hash file มาแน่ๆๆ เลย.
ถ้าหลุดจากนี้อีก ก็ต้องใช้ sniffer หรือ wireshark จับดู parameter ที่ส่งมาเองนะครับ.. อิอิ
====================================================
ลอง แล้ว เด็ดมากๆๆๆ block ได้จริงๆๆ เลย.. 555 ไม่ต้องเสียเวลาไป recomplie kernel ให้เมื่อยมือ.. แต่ถ้าต้องการ block พวก p2p แบบเก่าเช่น kazza หรือพวก gnutella ก็ต้อง complie เพราะมันใช้ DHT มันไม่ได้มาต่อกับ tracker หรือเปิดเว็บ...
อีกอย่าง bittorrent encrpytion ยังไม่ได้เริ่มทำงานด้วยซ้ำ.. อิอิ
ปล. วิธี นี้จะใช้ไม่ได้กับ Tracker Less หรือ DHT นะครับ......
http://www.thaiadmin.org/board/index.php?action=printpage%3Btopic=94866.0 ฝากให้ อีกอัน.. กันเหนียว...iptables -I INPUT -s 0.0.0.0/0 -m string --string "passkey=" --algo bm -j DROP