歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 采用Linux Iptables在網絡層全面實現封堵QQ解決

采用Linux Iptables在網絡層全面實現封堵QQ解決

日期:2017/2/28 16:19:52   编辑:Linux教程

前言:
QQ即騰訊(tencet.com 或qq.com),是一種實時通訊工具。目前很多公司都想辦法對此通訊工具進行限制、控制。由於QQ生命力極強,導致各種方法都有可能漏網,除非你把大多數端口都封掉(tcp 80、433,UDP)。市面上有琳琅滿目的網絡安全產品、網絡行為產品等。都提到能否封堵QQ,但是實際還是有些差距的。方案要解決的問題:實現某些電腦能夠暢通無阻上QQ,某些電腦完全上不了QQ。

解決辦法:
采用基於電腦IP地址的控制方法,本方案采用免費Linux操作系統+Iptables組件實現網絡層封堵QQ。
基於電腦固定IP地址的管理涉及到MAC地址與IP地址的一一綁定。使得電腦管理控制到物理設備(電腦網卡)。實現MAC地址與IP地址的綁定可以通過交換機實現,路由器設備實現。如果網絡比較簡單,交換機沒有此功能,也可以通過Linux服務器網關實現,實現方法是通過ethers 和arp,詳細方法見下面。

實現步驟:
1、編寫QQ所有服務器IP或主機列表腳本(qqserverlist)
如下:
tcpconn.tencent.com
tcpconn2.tencent.com
tcpconn3.tencent.com
tcpconn4.tencent.com
tcpconn5.tencent.com
tcpconn6.tencent.com
218.17.217.106
219.133.40.0/24
218.18.95.153
218.17.209.23
218.17.217.106
218.18.95.153
218.17.209.23
219.133.49.5
219.133.49.206
61.144.238.145
219.133.63.142
sz.tencent.com
sz2.tencent.com
sz3.tencent.com
sz4.tencent.com
sz5.tencent.com
sz6.tencent.com
sz7.tencent.com
sz8.tencent.com
sz9.tencent.com
注:此文件需要不斷維護,QQ服務器主機有增加就必須增加到此列表
2、編寫允許上QQ電腦的IP列表(permitiplist)
如:貴公司網絡是采用內網192.168.1.x,下面可以作為你的參考。將允許上QQ的IP地址
增加在此列表
192.168.1.40
192.168.1.44
192.168.1.48
192.168.1.51
192.168.1.52
192.168.1.54
192.168.1.58
192.168.1.62
192.168.1.69
192.168.1.70
192.168.1.71
192.168.1.72
192.168.1.78
192.168.1.80
3、編寫啟用此功能的shell腳本(qqdeny.sh)
# qqdeny.sh
/sbin/iptables -I FORWARD -p udp --dport 8000 -j DROP
/sbin/iptables -I FORWARD -p udp --sport 4000 -j DROP
/sbin/iptables -I FORWARD -p udp --sport 4001 -j DROP
/sbin/iptables -I FORWARD -p udp --sport 4002 -j DROP
for i in `cat /opt/qq/qqserverlist`;do /sbin/iptables -I FORWARD -d $i -j DROP;done
for p in `cat /opt/qq/permitiplist`;do /sbin/iptables -I FORWARD -s $p -j ACCEPT;done
注意:符合“`”是數字“1”左邊字符。另外腳本必須具有執行權限。
4、編寫取消此功能的shell腳本(qqundeny.sh)
# qqundeny.sh
/sbin/iptables -D FORWARD -p udp --dport 8000 -j DROP
/sbin/iptables -D FORWARD -p udp --sport 4000 -j DROP
/sbin/iptables -D FORWARD -p udp --sport 4001 -j DROP
/sbin/iptables -D FORWARD -p udp --sport 4002 -j DROP
for i in `cat /opt/qq/qqserverlist`;do /sbin/iptables -D FORWARD -d $i -j DROP;done
for p in `cat /opt/qq/permitiplist`;do /sbin/iptables -D FORWARD -s $p -j ACCEPT;done
5、將腳本放在linux服務器上
Linux服務器必須安裝有Iptables組件。
將創建目錄在/opt/qq
#mkdir /opt/qq
將上面四個文件(qqserverlist permitiplist qqdeny.sh qqundeny.sh)放在/opt/qq目
錄下,讓qqdeny.sh qqundeny.sh具有執行權限
#chmod 755 qqdeny.sh
#chmod 755 qqundeny.sh
測試執行:
啟動封堵QQ
#sh qqdeny.sh
取消封堵QQ
#sh qqundeny.sh
6、讓服務器啟動時,自動啟動QQ封堵功能
將qqdeny.sh設置為啟動時自動啟動
#vi /etc/rc.d/rc.local
增加
sh /opt/qq/qqdeny.sh
通過上面6步,你將實現在linux服務器下封堵QQ,在日常維護過程中你還是需要定時
維護QQ服務器列表qqserverlist。這樣將能夠實現最簡單同時也是最有效封堵與放行QQ的方案。
下面是有關在Linux下實現網卡MAC地址與IP地址綁定。
在網絡交換機二層的情況下,可以通過arp協議得到實現。
實現步驟:
1、編寫ethers文件,然後存放在/etc/目錄下
文件格式可以是如下:
192.168.1.40 00:D0:F8:0F:4B:98
192.168.1.44 00:01:37:D2:1A:F2
192.168.1.46 00:50:8D:D3:04:FF
192.168.1.48 00:C0:4C:38:10:31
192.168.1.50 00:E0:4C:E8:55:6C
192.168.1.51 00:01:29:F1:9F:CC
192.168.1.52 00:D0:F8:0F:45:E5
192.168.1.54 00:50:BA:29:D3:7C
192.168.1.62 00:D0:F8:0F:4B:7D
192.168.1.69 00:50:BA:E4:80:1F
192.168.1.70 00:0A:EB:3D:18:20
192.168.1.73 00:50:BA:70:71:EC
備注:防止使用其它IP,可以將其余IP地址全面設置為00:00:00:00:00:00:00:00,
你可以手工追加在上面文件ethers就可以。
2、執行arp命令
#arp -f
3、讓系統自動啟動可以填加到/etc/rc.d/rc.local
#vi /etc/rc.d/rc.local
增加命令arp -f

接下來隨便介紹將Linux服務器作為NAT網關
通過上面介紹,我還覺得有些朋友還想知道怎麼把服務器當為網關,做NAT路由功能的
網關。
當然很多朋友已經掌握了此方法。我這裡做簡單的介紹。
實現步驟
1、配置路由功能IP轉發,編輯/etc/sysctl.conf
#vi /etc/sysctl.conf
修改參數net.ipv4.ip_forward = 1
下面是此文件的配置
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) for
# more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
2、編寫一個NAT腳本,然後運行就可以
下面是有關NAT腳本,如文件名為nat.sh 存放在/opt/
# work pc
/sbin/iptables -t nat -D POSTROUTING -o eth0 -s 192.168.1.40 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.40 -j MASQUERADE
/sbin/iptables -t nat -D POSTROUTING -o eth0 -s 192.168.1.42 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.42 -j MASQUERADE
/sbin/iptables -t nat -D POSTROUTING -o eth0 -s 192.168.1.44 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.44 -j MASQUERADE
/sbin/iptables -t nat -D POSTROUTING -o eth0 -s 192.168.1.46 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.46 -j MASQUERADE
/sbin/iptables -t nat -D POSTROUTING -o eth0 -s 192.168.1.48 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.48 -j MASQUERADE
/sbin/iptables -t nat -D POSTROUTING -o eth0 -s 192.168.1.50 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.50 -j MASQUERADE
注:裡面一行就刪除規則,一行是增加規則,將相關要上讓上外網的IP增加上就可以。
3、讓系統自動啟動
#vi /etc/rc.d/rc.local
增加命令sh /opt/nat.sh

小結:通過上面的實現,你將能夠配置出一台免費的網絡網關,具有封堵、放行某台電腦上外網、限制QQ上網等。
本系統在linux RedHat 7.3配置並使用過。電腦的要求不高,一般穩定的兼容機就可以信任。以上信息部分來自互聯網做過相關參考。作者自己使用配置,效果也不錯。整理後與大家分享與交流。

Copyright © Linux教程網 All Rights Reserved