Centos7 如何防止SSH暴力
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。[引用](https://blog.csdn.net/qq_38162763/article/details/81543912)
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
生效
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定义引用 https://blog.csdn.net/qq_38162763/article/details/81543912
[2]: SSH暴力破解脚本参考 https://blog.csdn.net/openinfra/article/details/88872989