iptables:阻止SSH字典攻击

作者: lesca 分类: iptables,Tutorials,Ubuntu 发布时间: 2012-05-11 09:12

Internet上的计算机难免遭受各类攻击,比如SSH字典攻击。如果你自信自己的密码足够强大,那么你也必须忍受系统日志中大量的“SSH Failed”记录。如果你习惯经常查看日志,那么这些记录会干扰你作出正确判断。Lesca尝试过各类方法,终于找到一种极为简单奏效的方法——利用iptables的recent模块:

# Prevent SSH Attack
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 --name SSH -j DROP
# Enable Normal SSH Connection
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

这条规则已经在服务器上跑了一个月,阻止了大部分攻击。它会统计一分钟内与本机22端口(SSH端口)的新建连接数,如果某IP一分钟内达到3次,就忽略之后的连接。
另外如果你的默认INPUT策略是DROP,那么我们还需要明确告诉iptables“如果一分钟内没有连续连接超过3次,那么就允许连接”。
最后提醒大家一点,“允许连接”和“阻止攻击”的顺序不能颠倒,否则等于没有过滤。iptables非常“忠诚”,它严格按照规则办事,所以你不应该假设它理解你的意图。

References:

[1] Block brute force attacks with iptables
[2] SSH Dictionary Attack Prevention with iptables

版权声明

本文出自 Lesca 技术宅,转载时请注明出处及相应链接。

本文永久链接: https://www.lesca.cn/archives/block-ssh-dictionary-attack-with-iptables.html

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

5 Comments
  • ET

    2012-05-11 at 22:20

    哈,好方法~

  • willy

    2012-05-18 at 22:31

    其实我发现大多数ssh扫描是机器人干的。所以一般把ssh的端口从默认的22改成别的端口就会防止大多数扫描了

    1. lesca

      2012-05-18 at 22:46

      确实如此。是个好方法!只是如果有普通用户可能带来不便。

      1. willy

        2012-05-18 at 23:48

        哈哈,我改了ssh默认端口以后,系统日志里面干干净净,完全没有不请自来的ssh连接了。

    2. lesca

      2012-05-21 at 10:45

      突然想到改了ssh端口后iptables防火墙又得重新设了。。