Article ID: 8119, created on May 10, 2013, last review on Mar 31, 2016

  • Applies to:
  • Odin Business Automation Standard 4.5
  • Plesk for Linux/Unix

问题

有时在 Parallels Panel sw-cp-server 日志文件 (/var/log/sw-cp-server/error_log) 中能够找到很多 "ssl handshake failure" 记录:

2009-06-03 22:37:08: (connections.c.299) SSL: 1 error:140780E5:SSL routines:SSL23_READ:ssl handshake failure
2009-06-03 22:46:56: (connections.c.299) SSL: 1 error:140780E5:SSL routines:SSL23_READ:ssl handshake failure
2009-06-03 22:58:49: (connections.c.299) SSL: 1 error:140780E5:SSL routines:SSL23_READ:ssl handshake failure
2009-06-03 23:19:52: (connections.c.299) SSL: 1 error:140780E5:SSL routines:SSL23_READ:ssl handshake failure
2009-06-03 23:31:44: (connections.c.299) SSL: 1 error:140780E5:SSL routines:SSL23_READ:ssl handshake failure
2009-06-03 23:41:18: (connections.c.299) SSL: 1 error:140780E5:SSL routines:SSL23_READ:ssl handshake failure
2009-06-03 23:52:36: (connections.c.299) SSL: 1 error:140780E5:SSL routines:SSL23_READ:ssl handshake failure
04.06.09 00:02:38: (connections.c.299) SSL: 1 error:140780E5:SSL routines:SSL23_READ:ssl handshake failure


此外,以下记录可能位于 系统安全日志

Jan 13 02:54:48 plesk9 sshd[9890]: Failed password for root from ::ffff:125.208.21.3 port 8880 ssh2
Jan 13 07:32:43 plesk9 sshd[11756]: Failed password for root from ::ffff:125.208.21.3 port 8880 ssh2

原因

产生此类日志项目可能的原因是通过端口 8880 对 sw-cp-server 的暴力破解攻击。此攻击最后可能会阻止服务正常运行。

解决方案

您可以通过以下当中的一个选项来解决此问题。

1. 使用防火墙规则拦截主机。

示例 1 (Linux):

有必要通过以下命令配置防火墙 (iptables) 规则:

#iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource

#iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --rttl --name SSH --rsource -j LOG --log-prefix "SSH_brute_force "

#iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --rttl --name SSH --rsource -j DROP


示例 2 (FreeBSD):

a. 创建脚本 ssh-fwscan.sh

#!/bin/sh

if ipfw show | awk '{print $1}' | grep -q 20000 ; then
            ipfw delete 20000
fi
# This catches repeated attempts for both legal and illegal users
# No check for duplicate entries is performed, since the rule
# has been deleted.

awk '/sshd/ && (/Invalid user/ || /authentication error/) {try[$(NF)]++}

END {for (h in try) if (try[h] > 5) print h}' /var/log/auth.log |
while read ip
do
ipfw -q add 20000 deny tcp from $ip to any in
done


b. 添加脚本到 cronjob:

*/10 * * * * root /operator/sshd-fwscan.sh


示例 3 (FreeBSD)

添加规则到 pf 过滤器:

pass in on $ext_if inet proto tcp from {192.168.1.0/24, 202.54.1.5/29} to $ssh_server_ip port ssh flags S/SA synproxy state


注意! 有必要更改 IP 地址 (192.168.1.0/24 and 202.54.1.5/29)。

2. 使用 tcp 封装器拦截主机。

示例:

添加以下规则到 /etc/hosts.allow 文件:

sshd: <admin IP address>/<netmask> : allow
sshd: ALL : deny

其他信息

一些其它方法可能会帮助提升操作系统的安全性来防护外来攻击,其中包括暴力破解:

- 更改 sshd daemon 端口号 22 为其它
- 仅使用基于密钥的验证
- 关闭 "root" 用户的 ssh 访问权限
- 配置 sshd daemon 监听以仅使用专属 IP

当然还有很多第三方解决方案可实现同一目的:

DenyHosts - 它会扫描日志文件并配置 tcp 封装器规则
Cryptknock - 它会打开 ssh 端口(如果需要)
BlockSshd - 它会分析日志并配置防火墙规则
SshGuard - 它会监控日志并配置防火墙。

a914db3fdc7a53ddcfd1b2db8f5a1b9c 29d1e90fd304f01e6420fbe60f66f838 56797cefb1efc9130f7c48a7d1db0f0c 400e18f6ede9f8be5575a475d2d6b0a6 caea8340e2d186a540518d08602aa065 624ca542e40215e6f1d39170d8e7ec75 70a5401e8b9354cd1d64d0346f2c4a3e

Email subscription for changes to this article