在 LAMP 环境(通过 yum 安装 sshd)中设置最大登录尝试次数的最简单方法是什么?是否有软件包或简单的防火墙规则?
小智 56
我不喜欢使用任何第三方工具。因此,我结合使用了 ssh 配置和防火墙设置。使用以下解决方案,允许攻击者在 2 分钟内产生恰好 3 次错误登录,否则他将被阻止 120 秒。
1) 将以下行添加到 /etc/ssh/sshd_config
MaxAuthTries 1
Run Code Online (Sandbox Code Playgroud)
这将允许每个连接仅进行 1 次登录尝试。重新启动 ssh 服务器。
2)添加以下防火墙规则
创建一个新链
iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP
Run Code Online (Sandbox Code Playgroud)
阻止每个 IP 地址 120 秒,这会在 120 秒内建立三个以上的连接。在第四次连接尝试的情况下,请求被委托给SSHATTACK链,它负责记录可能的 ssh 攻击并最终丢弃请求。
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK
Run Code Online (Sandbox Code Playgroud)
3) 查看可能的 ssh 攻击的日志条目 /var/log/syslog
Dec 27 18:01:58 ubuntu kernel: [ 510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0
Run Code Online (Sandbox Code Playgroud)
小智 6
没有与 SSH 关联的特定包来进行此设置。但是,您可以安装 CSF,即 ConfigServer 和 Firewall。
我建议在文件中进行两个配置更改:/etc/ssh/sshd_config
限制 ssh 服务器同时处理的未经身份验证的连接的最大数量。这个值越小,脚本小子就越难通过多个连接进行并行、协调的破解尝试。编辑 sshd_config 并将 MaxStartups 从默认值“10”更改为“3:50:10”。冒号分隔的值告诉 ssh 服务器“允许 3 个用户同时尝试登录,并随机且逐渐地丢弃 3 到最多 10 次之间的连接尝试”。注意:在有大量有效 ssh 用户登录的服务器上应该增加此值。
减少断开连接之前允许成功登录的最长时间。默认值 2 分钟对于保持未经身份验证的连接尝试的时间太长(见上文);30 秒对于登录来说已经足够了:
我为此使用这些 IPTables 规则:
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl --name SSH -j DROP
Run Code Online (Sandbox Code Playgroud)
这将只允许 4 个 TCP/SYN 数据包在 5 分钟内从一个 IP 地址发送到端口 22。如果它进行更多尝试,则门将关闭,直到 5 分钟结束。
| 归档时间: |
|
| 查看次数: |
111952 次 |
| 最近记录: |