Ubuntu ssh登录防暴力密码破解

Ubuntu ssh登录防暴力密码破解

方案一:使用PAM锁定多次登陆失败的账户

PAM为Ubuntu自带的工具

修改如下文件:
/etc/pam.d/sshd    (远程ssh)
/etc/pam.d/login    (终端)

在第一行下即#%PAM-1.0的下面添加:
auth    required    pam_tally2.so    deny=3    unlock_time=600 even_deny_root root_unlock_time=1200
各参数解释:
even_deny_root    也限制root用户;
    
deny           设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户
    
unlock_time        设定普通用户锁定后,多少时间后解锁,单位是秒;
    
root_unlock_time      设定root用户锁定后,多少时间后解锁,单位是秒;

手动解除锁定:
查看某一用户错误登陆次数:
pam_tally –-user
例如,查看work用户的错误登陆次数:
pam_tally –-user work
清空某一用户错误登陆次数:
pam_tally –-user –-reset
例如,清空 work 用户的错误登陆次数,
pam_tally –-user work –-reset
faillog -r 命令亦可。
如果前几条没生效的话,也可以使用命令:
pam_tally2 –u tom --reset将用户的计数器重置清零(SLES 11.2下用此命令才重置成功)
查看错误登录次数:pam_tally2 –u tom 

方案二:使用脚本ban 登陆者ip地址

一、系统:Centos6.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地址,如果次数达到10次(脚本中判断次数字符长度是否大于1)则将该IP写到 /etc/hosts.deny中。
三、步骤:
1、先把始终允许的IP填入 /etc/hosts.allow ,这很重要!比如:
sshd:19.16.18.1:allow
sshd:19.16.18.2:allow
2、脚本 /usr/local/bin/secure_ssh.sh

#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.list
for i in `cat  /usr/local/bin/black.list`
do
  IP=`echo $i |awk -F= '{print $1}'`
  NUM=`echo $i|awk -F= '{print $2}'`
  if [ ${#NUM} -gt 1 ]; 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 /usr/local/bin/secure_ssh.sh

四、测试:
1、开两个终端窗口,一个ssh连上服务器,另一个用错误的密码连接服务器几次。
很快,服务器上黑名单文件里已经有记录了:

[root@ ~]# $ cat /usr/local/bin/black.list 
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 /usr/local/bin/black.list
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

最后修改:2019 年 05 月 06 日 04 : 14 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论