配置 iptables 以阻止所有(尽可能)bittorrent 流量

配置 iptables 以阻止所有(尽可能)bittorrent 流量

大家好

这是我当前的 iptables 设置

 # Generated by iptables-save v1.4.7 on Wed Apr  9 13:50:31 2014

 *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] :LOGDROP - [0:0]

 -A INPUT -p tcp -m tcp --dport 5252 -m comment --comment "SSH_Secure Input" -j ACCEPT

 -A INPUT -p tcp -m tcp --dport 22 -m comment --comment "SSH Input" -j ACCEPT

 -A INPUT -p tcp -m tcp --dport 80 -m comment --comment "HTTP Input" -j ACCEPT

 -A INPUT -i eth0 -p tcp -m tcp --dport 443 -m comment --comment "HTTPS Input" -j ACCEPT

 -A INPUT -i tun0 -j ACCEPT

 -A INPUT -i eth0 -j ACCEPT

 -A INPUT -p icmp -m icmp --icmp-type 8 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

 -A INPUT -i lo -j ACCEPT

 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

 -A FORWARD -o tun0 -j ACCEPT

 -A FORWARD -o eth0 -j ACCEPT

 -A FORWARD -m string --string "BitTorrent" --algo bm --to 65535 -j LOGDROP

 -A FORWARD -m string --string "BitTorrent protocol" --algo bm --to 65535 -j LOGDROP

 -A FORWARD -m string --string "peer_id=" --algo bm --to 65535 -j LOGDROP

 -A FORWARD -m string --string ".torrent" --algo bm --to 65535 -j LOGDROP

 -A FORWARD -m string --string "announce.php?passkey=" --algo bm --to 65535 -j LOGDROP

 -A FORWARD -m string --string "torrent" --algo bm --to 65535 -j LOGDROP

 -A FORWARD -m string --string "announce" --algo bm --to 65535 -j LOGDROP

 -A FORWARD -m string --string "info_hash" --algo bm --to 65535 -j LOGDROP

 -A FORWARD -m string --string "get_peers" --algo bm --to 65535 -j LOGDROP

 -A FORWARD -m string --string "announce_peer" --algo bm --to 65535 -j LOGDROP

 -A FORWARD -m string --string "find_node" --algo bm --to 65535 -j LOGDROP

 -A OUTPUT -o eth0 -p tcp -m tcp --dport 443 -m comment --comment "HTTPS Input" -j ACCEPT

 -A OUTPUT -o tun0 -j ACCEPT

 -A OUTPUT -o eth0 -j ACCEPT

 -A OUTPUT -p icmp -m icmp --icmp-type 0 -m state --state RELATED,ESTABLISHED -j ACCEPT

 -A LOGDROP -j LOG --log-prefix "LOGDROP "

 -A LOGDROP -j DROP COMMIT

 # Completed on Wed Apr  9 13:50:31 2014

 # Generated by iptables-save v1.4.7 on Wed Apr  9 13:50:31 2014

 *nat :PREROUTING ACCEPT [2121:189137] 

 POSTROUTING ACCEPT [18:1030] :OUTPUT ACCEPT [18:1030]

 -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 

 COMMIT

 # Completed on Wed Apr  9 13:50:31 2014

我有一台运行 openvpn 的 centos 6 服务器,

我想要这样做的原因是,我有客户端连接,由于他们进行大量下载,并且在不需要时从不断开 VPN,所以我占用了大量带宽,因此账单金额很高

iptables 规则以“-A FORWARD -m string”和所有“log/logdrops”开头,我从一个网站获得了这些规则(其中可能有许多网站引用完全相同的规则来阻止 torrent 流量),唯一的问题是它不会阻止任何流量

我连接到了 vpn,启动了几个种子,它们的下载速度并没有减慢,就好像我没有连接到 vpn 一样……

请帮忙

答案1

这是一种不同的方法,但我成功地“保护”了我的家庭网络免受 p2p(和其他东西)的侵害 - 只允许 2 个远程端口(tcp 443+80)并使用 opendns FamilyShield DNS(208.67.222.123,208.67.220.123)来阻止很多网站,所以我在我的家庭网络中设置了一个本地 dns 解析器/缓存(dnsmasq),我可以在其中添加例外。

答案2

知识产权保护

apt-get install ipset

将此规则包含在 iptables 脚本的标头中:

# Block bittorrent (6881-6889 58251-58252,58687,6969)
# Block others P2P (1337,2760,4662,4672,8104)
# etc., etc. (any, port you want to block)

# variables
ipset=/sbin/ipset
iptables=/sbin/iptables
pathlst=/path_to/portslist.txt # your port list

$ipset -F
$ipset -N -! blockp2p bitmap:port range 0-65535
for ports in $(cat $pathlst); do
    $ipset -A blockp2p $ports
done

# block rule (For TCP / UDP and for source or destination port)
for srcdst in `echo src dst`; do
    $iptables -t mangle -A PREROUTING -m set --match-set blockp2p $srcdst -j DROP
    $iptables -A INPUT -m set --match-set blockp2p $srcdst -j DROP
    $iptables -A FORWARD -m set --match-set blockp2p $srcdst -j DROP
done

# example content of portslist.txt
1337
2760
4662
4672
8104
6969
6881
6882
6883
6884
6885
6886
6887
6888
6889
58251
58252
58687

PD:如果您想看到规则的实际作用,您必须添加规则以在 syslog 或 nflog 中记录端口阻塞

在此处输入图片描述

PD:由于 torrent 应用程序会轮换端口,因此你可以检查它们正在使用哪些端口TCP查看器并将它们添加到阻止列表中。例如:上图中未包含端口 59018-59019(但 bittorrent 无法启动下载)

来源:封锁端口

相关内容