因此,我一直在网上寻找一个脚本,该脚本将把所有流量都丢弃到除http(80)和https(443)端口之外的所有端口上,然后只允许来自国家x的所有其他端口上的流量(案例国家x是美国)。
我不想添加每个国家/地区的所有IP,我只想允许我国的IP,然后阻止来自外界的几乎所有其他流量。我国以外的任何人都不能访问ssh,ftp,smtp等。除了我自己。如果这种情况改变了,我将在接近时为其添加一个特殊情况。
边注
我必须注意,我确实找到了一个问题,其中包含一个使用ip表按国家/地区禁止ip的脚本,但这是我必须要做的很多额外插入操作。
标记为最佳答案的脚本将阻止来自这些IP的所有流量。我只想阻止对除80和443之外的所有端口的访问。
更新资料
遵循以下规则,
iptables -A OUTPUT -m geoip --dst-cc CN -j DROP
我可以修改它并做类似的事情吗
iptables -A OUTPUT -m geoip --dst-cc CN --dport 80 -j ACCEPT
iptables -A OUTPUT -m geoip --dst-cc CN --dport 443 -j ACCEPT
iptables -A OUTPUT -m geoip --dst-cc CN -j DROP
我认为这将允许来自中国的ips访问端口80和443,其余的将被丢弃。这个假设是正确的吗?如果没有,为什么不呢?
更新2
经过一番混乱后,我发现我的Ubuntu版本不喜欢该--dport
属性。因此,除了使用那些运行Ubuntu 14+的人(至少,我在某些计算机上仅安装了Ubuntu 14.04、14.10和15.04的东西)外,还必须使用-p PORT_NUMBER_OR_NAME
所以看起来像
iptables -A OUTPUT -m geoip --dst-cc CN -p 443 -j ACCEPT
或对于传入流量,
iptables -A INPUT -m geoip --src-cc CN -p 443 -j ACCEPT