Ubuntu IPTables只允许1个国家/地区


10

因此,我一直在网上寻找一个脚本,该脚本将把所有流量都丢弃到除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

Answers:


7

您将需要添加对地理位置的iptables支持。为此,您必须按照以下步骤操作:

# apt-get install xtables-addons-common
# mkdir /usr/share/xt_geoip
# apt-get install libtext-csv-xs-perl unzip
# /usr/lib/xtables-addons/xt_geoip_dl
# /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

这将使您可以执行以下操作:

iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

这将阻止任何去往中国(CN)的流量。规则的复杂程度由您决定,基本上不需要脚本,只需写下要应用的规则,然后使用即可,iptables-save这样每次重新启动时都会加载它们。


谢谢!我还有另一个问题,我在上面更新了我的问题以反映它。您是否会知道答案呢?
奥斯汀·克雷格尔

该规则将起作用,但是您必须更改它的方向,现在它已经存在OUTPUT,您需要将其设置为INPUT而不使用--dst-cc--src-cc而是使用。但是,如果问题是它是否应该与任何其他现有iptables规则结合使用,答案是肯定的。
nKn 2015年

xt_geoip_dl命令不再起作用,它需要一个不再存在的zip
Martijn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.