共计 2032 个字符,预计需要花费 6 分钟才能阅读完成。
一、系统:CentOS 6.3 64 位
二、方法:读取 /var/log/secure,查找关键字 Failed,例如(注:文中的 IP 地址特意做了删减):
Sep 17 09:08:09 localhost sshd[29087]: Failed password for root from 13.7.3.6 port 44367 ssh2
Sep 17 09:08:20 localhost sshd[29087]: Failed password for root from 13.7.3.6 port 44367 ssh2
Sep 17 09:10:02 localhost sshd[29223]: Failed password for root from 13.7.3.6 port 56482 ssh2
Sep 17 09:10:14 localhost sshd[29223]: Failed password for root from 13.7.3.6 port 56482 ssh2
从这些行中提取 IP 地址,如果次数达到 5 次则将该 IP 写到 /etc/hosts.deny 中。
三、步骤:
1、先把始终允许的 IP 填入 /etc/hosts.allow,这很重要!比如:
sshd:19.16.18.1:allow
sshd:19.16.18.2:allow
2、脚本 /root/secure_ssh.sh
#! /bin/bash
cat /var/log/secure|awk ‘/Failed/{print $(NF-3)}’|sort|uniq -c|awk ‘{print $2″=”$1;}’ > /root/black.txt
DEFINE=”5″
for i in `cat /root/black.txt`
do
IP=`echo $i |awk -F= ‘{print $1}’`
NUM=`echo $i|awk -F= ‘{print $2}’`
if [$NUM -gt $DEFINE];then
grep $IP /etc/hosts.deny > /dev/null
if [$? -gt 0];then
echo “sshd:$IP:deny” >> /etc/hosts.deny
fi
fi
done
3、将 secure_ssh.sh 脚本放入 cron 计划任务,每 1 分钟执行一次。
# crontab -e
*/1 * * * * sh /root/secure_ssh.sh
四、测试:
1、开两个终端窗口,一个 ssh 连上服务器,另一个用错误的密码连接服务器几次。
很快,服务器上黑名单文件里已经有记录了:
[root@ ~]# $ cat /root/black.txt
13.26.21.27=3
再看看服务器上的 hosts.deny
[root@ ~]# cat /etc/hosts.deny
sshd:13.7.3.6:deny
sshd:92.4.0.4:deny
sshd:94.10.4.2:deny
sshd:94.4.1.6:deny
sshd:11.64.11.5:deny
2、从另一个终端窗口继续“暴力”连接服务器。
看看服务器上的黑名单文件:
[root@ ~]# cat black.txt
13.26.21.27=6
再看看服务器上的 hosts.deny
[root@ ~]# cat /etc/hosts.deny
sshd:13.7.3.6:deny
sshd:92.4.0.4:deny
sshd:94.10.4.2:deny
sshd:94.4.1.6:deny
sshd:11.64.11.5:deny
sshd:13.26.21.27:deny
IP 已经被加入到服务器的 hosts.deny,再用正确的密码连接服务器,被拒绝:
$ ssh root@myserver.mydomain.com -p 2333
ssh_exchange_identification: Connection closed by remote host
注:
1. 脚本为同事编写。
2. 服务器 sshd 端口已改为 2333,事实证明,改了端口后,暴力破解的 ssh 连接数锐减。
提高 Ubuntu 的 SSH 登陆认证速度的办法 http://www.linuxidc.com/Linux/2014-09/106810.htm
开启 SSH 服务让 Android 手机远程访问 Ubuntu 14.04 http://www.linuxidc.com/Linux/2014-09/106809.htm
如何为 Linux 系统中的 SSH 添加双重认证 http://www.linuxidc.com/Linux/2014-08/105998.htm
在 Linux 中为非 SSH 用户配置 SFTP 环境 http://www.linuxidc.com/Linux/2014-08/105865.htm
Linux 上 SSH 服务的配置和管理 http://www.linuxidc.com/Linux/2014-06/103627.htm
SSH 入门学习基础教程 http://www.linuxidc.com/Linux/2014-06/103008.htm