自动化检查网络出口和入口的端口封禁情况

2017-12-22(五) by chenjia.me

最近ISP封禁端口已经越来越普遍了,一般封禁理由都是为了所谓的安全。可惜我们在选择服务器或者自己的网络运营商很少会告知哪些端口被封禁,所以这个就需要我们自己动手测试。

原理

服务器利用iptables将所有的端口的TCP请求都转发到80端口上的Nginx服务器上。

出口端口封禁检测

所谓的出口端口,简单的来说就是你能否访问某个端口,如果运营商在ISP出口屏蔽了80和443端口,那么你就将无法打开HTTP或者HTTPs的网页。这个检测通常可以用来检测自己是否能连接其他服务器的某个特定的端口。

如果你没有服务器,我们可以是用这个网站http://portquiz.net/ 来进行测试,这个网站支持除22和25端口外的所有端口检测,比如你使用http://portquiz.net:8888/来检测是否打开,如果无法打开那就可能是你的ISP封禁了8888端口。该网站提供了测试脚本,语言是GO。 其Github地址为https://github.com/nhooyr/outPorts

入口端口封禁检测

该网站的BLOG讲述了其原理,如果我们在阿里云或者其他地方有服务器,但是不知道服务器提供商的防火墙端口封禁规则,那么我们可以利用其所述的原理在服务器上进行搭建,然后在本地修改上面说的Go语言脚本某位的网址为自己的IP/域名,然后进行测试即可。

搭建服务器步骤

  1. 安装网页服务器Nginx等,监听80端口。
  2. 修改iptabls,应用如下规则cat /etc/iptables/rules.v4
    # Generated by iptables-save v1.6.0 on Thu Dec 14 00:51:52 2017
    *nat
    :PREROUTING ACCEPT [0:0]
    :POSTROUTING ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A PREROUTING -i lo -j RETURN
    -A PREROUTING -p icmp -j RETURN
    -A PREROUTING -m state --state RELATED,ESTABLISHED -j RETURN
    -A PREROUTING -p tcp -m tcp --dport 22 -j RETURN
    -A PREROUTING -p tcp -m tcp --dport 21 -j RETURN
    -A PREROUTING -p tcp -m tcp --dport 25 -j RETURN
    -A PREROUTING -p tcp -m tcp --dport 80 -j RETURN
    -A PREROUTING -p tcp -m tcp --dport 443 -j RETURN
    -A PREROUTING -p tcp -j DNAT --to-destination :80
    COMMIT
    # Completed on Sun Aug 25 12:43:34 2013
    # Generated by iptables-save v1.4.14 on Sun Aug 25 12:43:34 2013
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
    -A INPUT -j DROP
    COMMIT
    # Completed on Thu Dec 14 00:51:52 2017
    
                                                                                                   3. 应用iptabls,客户端即可运行脚本进行测试
                                                                                                                                                                                                                              ##SDU端口封禁序号
                                                                                                                                                                                                                              > 21,25,80,135,137,138,139,443,445,8000,8080
    

Comments