Centos7 如何防止SSH暴力

  • 1、SSH 是什么
  • 2、笔者的环境
  • 2.1 centos服务器
  • 2.2操作环境
  • 2.3ssh工具
  • 3、SSH暴力破解查看
  • 3.1 查看centos7 SSH登录日志
  • 3.2 编辑定时任务
  • 3.3 查看执行效果
  • 4、 验证多次错误被禁止SSH
  • 5 、注意点
  • 6、参考资料


1、SSH 是什么

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。[引用]()

2、笔者的环境

2.1 centos服务器

centos7 腾讯云服务器 公网IP

2.2操作环境

windows 10、家庭网络不固定IP、

2.3ssh工具

xshell6、xftp

————————————————

3、SSH暴力破解查看

3.1 查看centos7 SSH登录日志

查看登录日志文件 #vim /var/log/secure,内容做了删减

Mar 24 07:20:24 root sshd[29081]: Failed password for invalid user vnc from 104.248.227.130 
Mar 24 07:20:25 root sshd[29083]: Failed password for invalid user newscng from 125.91.105.108 
Mar 24 07:20:25 root sshd[29083]: Received disconnect from 125.91.105.108 port 33659:11: Bye Bye [preauth]
Mar 24 07:20:32 root sshd[29085]: pam_unix(sshd:auth): check pass; user unknown
Mar 24 07:20:32 root sshd[29085]: pam_unix(sshd:auth): authentication failure; rhost=182.61.14.224

3.1.1这些行中的IP地址,错误超过次数超过指定数字 /etc/hosts.deny中
3.1.2正确的也做记录写入记录文件中,方便查看有哪些IP地址登录过系统

3.2 编辑定时任务

3.2.1 vim /usr/local/bin/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="2"
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

PS:
很多同学使用windows系统通过xshell等工具,用xftp工具打开编辑,这种方式笔者试过出现写入到/root/black.txt文件变成了/root/black.txt?,导致无法写入/etc/hosts.deny,建议使用vim的方式编辑!

3.2.2 vim /usr/local/bin/secure_ssh_accepted.sh

#! /bin/bash
cat /var/log/secure*|awk '/Accepted/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' >/root/black-Accepted.txt

登录成功的IP写入 /root/black-Accepted.txt文件,登录成功关键字为 Accepted

3.2.3 加入 两个sh文件到定时任务
(1)# crontab -e

*/1 * * * * sh /usr/local/bin/secure_ssh.sh
*/1 * * * * sh /usr/local/bin/secure_ssh_accepted.sh

(2)esc -> wq

centos7开启sshd服务_IP


生效

3.3 查看执行效果

3.3.1查看登录失败IP LIST vim /root/black.txt 笔者记录如下

193.105.107.135=6
193.112.174.89=29
**193.112.19.189=11939**
193.112.219.176=30
193.112.40.170=30
193.112.44.102=6
193.112.53.50=6
193.112.59.163=355
193.112.93.2=1
193.142.146.21=11
193.148.69.157=9
193.70.39.58=6
195.12.137.210=25
195.214.223.84=2
195.223.211.242=60

此处发先一个IP地址 193.112.19.189 登录密码错误次数 11939次,好暴力!!!,

3.3.2 查看 host.deny文件 # vim /etc/hosts.deny

sshd:192.95.6.110:deny
sshd:192.99.151.33:deny
sshd:192.99.168.9:deny
sshd:192.99.245.135:deny
sshd:193.112.174.89:deny
*sshd:193.112.19.189:deny*
sshd:193.112.219.176:deny
sshd:193.112.40.170:deny
sshd:193.112.59.163:deny
sshd:193.142.146.21:deny
sshd:193.148.69.157:deny
sshd:195.12.137.210:deny

此文件已经写入到禁止SSH中,完成配置

3.3.3 查看登录成功记录 # vim /root/black-Accepted.txt

192.168.2.126=8
192.168.2.62=2
192.168.2.113=1

此处IP做了处理转换,各位同学可以查看自己的文件

4、 验证多次错误被禁止SSH

验证过程大家可以用别的机器 多次错误用户密码尝试SSH,按第二章节内容进行查看,以及看SSH的登录提示信息,此处就不再贴出内容。

5 、注意点

(1)编写shell脚本请在linux环境vim的方式,不要像笔者这样经常偷懒用xftp右键编辑.sh文件,否则会出现txt文件后面有问号
(2)错误次数建议设置大一点,否则如果是同事之间在公司网络访问同一台云服务器,可能因某些同事错误次数累加而导致被禁止SSH

6、参考资料

[1]: SSH定义引用
[2]: SSH暴力破解脚本参考