阻止来自特定国家的SSH访问

我发现这个方便的脚本在线,并希望修改它只阻止SSH访问,但我不知道什么关于iptables,我害怕我杀了我的系统,因为我没有物理访问它。

http://ipinfodb.com/ip_country_block_iptables.php

我应该改变什么才能放下端口22?

知道黑客可以使用代理等,这不会是我唯一的安全。 这个原因只是为了减less我从中国获得的有关自动攻击的fail2ban电子邮件的数量:)

谢谢Maciej

你需要在你的发行版中的这个相当于这个:

 $ apt-cache显示xtables-addons-common
包:xtables-addons-common
描述-en:扩展目标和匹配iptables [工具,库]
  Xtables-addons为iptables提供了额外的模块,不存在于
 内核,是patch-o-matic的inheritance者。
 扩展包括像TEE,TARPIT,CHAOS或类似的模块的新目标
  geoip和帐户。

您对geoip模块感兴趣。 然后添加一些规则到你的iptables

检查HOWTO中的第四点。

示例规则的简单演练:

 # iptables -A INPUT -m geoip --src-cc A1,A2 -j DROP 

以上命令在使用geoip模块的INPUT链中添加一条规则,以匹配源自特定国家(由其ISO 3661代码标识)的连接。 在这种情况下, A1和A2代表:

  A1 => "Anonymous Proxy" , A2 => "Satellite Provider" , 

该命令使用否定( ! )来反转匹配,导致所有不是来自指定国家(本例中为CA)的stream量被丢弃:

 # iptables -A INPUT -m geoip ! --src-cc CA -j DROP 

最后一个例子展示了如何创build一个自定义链来分析你的sshd服务器的stream量:

 # iptables -N SSH_GEOIP # iptables -A SSH_GEOIP -m geoip --src-cc CA # iptables -A SSH_GEOIP -m geoip --src-cc DE # iptables -A SSH_GEOIP -m geoip --src-cc US # iptables -A SSH_GEOIP -m geoip --src-cc JP # iptables -A SSH_GEOIP -m geoip --src-cc FR # iptables -A SSH_GEOIP -m geoip ! --src-cc CA,DE,US,JP,FR # iptables -A INPUT -p tcp --dport 22 -j SSH_GEOIP