利用iptables屏蔽俄罗斯和土耳其的IP

技术 秋水逸冰 20974浏览 6评论

block

  自从用上了 VPS 后,发现大量的网络攻击无时无刻都存在,比如被扫描端口,被暴力破解,被猜解后台密码,被垃圾评论骚扰。一段时间以来,我发现来自俄罗斯和土耳其的 IP 攻击最多,而我的网站是中文,阅读者大多数来自中国。因此屏蔽这两个国家的 IP 段是不会使网站访问受影响,反而会减少攻击。
  那么,如何屏蔽来自俄罗斯和土耳其的 IP 呢?(请举一反三,屏蔽其他国家 IP 方法也是一样的)

  网上流传的在 IPdeny 下载俄罗斯和土耳其的 IP 地址列表全为空,因此我找到了countryipblocks(需翻,国内 IP 无法访问),选择俄罗斯和土耳其,生成 CIDR,分别复制并保存为 ru.zone 和 tr.zone。

countryipblocks

  获取了国家的所有 IP 地址后,要想屏蔽这些 IP 就很容易了,写个脚本逐行读取 ru.zone 和 tr.zone 文件并加入到 iptables 中即可。

  本地下载

  使用方法:

wget https://teddysun.net/wp-content/uploads/block_ru_tr.sh
chmod +x block_ru_tr.sh
./block_ru_tr.sh

  该脚本执行完毕后,屏蔽日志位于当前目录下的blockedip.log文件中。有8791行。

  该脚本在测试时,发现在基于 OpenVZ 的 VPS 中执行会出现“iptables: Memory allocation problem.”错误,原因是基于 OpenVZ 的 VPS 超售严重而导致内存分配不足。在基于 Xen 的 VPS 中执行则完全没有问题。

  其实还可以通过 .htaccess 规则来限制这两个国家的 IP 访问。方法如下:
  在 countryipblocks 的页面,选择 .htaccess Deny,再分别选择国家 RUSSIAN FEDERATION 和 TURKEY,点击“Creat ACL”按钮即可生成 .htaccess 规则。复制粘贴到文本文件中,上传至 wordpress 根目录下,并改名为 .htaccess,如果该文件已经存在,则需要将在线生成的 .htaccess 屏蔽 IP 规则添加至 # BEGIN WordPress 和 # END WordPress 之间即可。

  另:我还发现大量的垃圾评论的 IP 都来自福建莆田,也不知何故,难道说是这个地方的肉鸡多?

转载请注明:秋水逸冰 » 利用iptables屏蔽俄罗斯和土耳其的IP

发表我的评论
取消评论

请输入正确答案后提交评论 *超出时限。 请再次填写验证码。

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (6)

  1. 用ipset结合iptables应该会更好
    lalala6年前(2019-02-02)回复
  2. 我使用的是nginx,用的加载conf方式(deny ip;的形式),禁用了俄罗斯、乌克兰、土耳其、法国、德国、荷兰,世界一下子清净多了,之前一天访问日志有近十兆,现在只有几百K多了 我就纳闷了,这帮家伙盯着我着小博客干嘛。。。
    烟灰8年前(2017-03-07)回复
  3. 赞!收下了
    Debian.cn8年前(2017-01-22)回复
  4. 全国过半的民营医院是莆田系的。你看前几天爆出新闻,百度广告联盟的大客户,每年占其收入过半的大客户,莆田系民营医院,跟百度闹崩了。
    Joeyao Chou10年前(2015-04-02)回复
  5. iptables,好复杂,没用过
    Leniy11年前(2013-10-16)回复
  6. 学习了。。博客界面很简洁,我很喜欢。
    Ken11年前(2013-10-12)回复