Linux防止暴力破解密码脚本

 1.认识记录linux记录安全的日志
 [root@testpm ~]# cd /var/log/
 [root@testpm log]# ls | grep secure
 secure
 2.该日志的内容查看
 [root@testpm log]# tail -f secure
 #表示ssh身份验证失败
 Aug 29 23:35:03 testpm sshd[111245]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.43.199  user=root
 Aug 29 23:35:03 testpm sshd[111245]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
 #表示root用户密码输出失败
 Aug 29 23:35:04 testpm sshd[111245]: Failed password for root from 192.168.43.199 port 50602 ssh2
 #表示root用户密码输入正确
 Aug 29 23:35:44 testpm sshd[111245]: Accepted password for root from 192.168.43.199 port 50602 ssh2
 #表示给root用户打开了一个终端
 Aug 29 23:35:44 testpm sshd[111245]: pam_unix(sshd:session): session opened for user root by (uid=0)
 #从192.168.43.199端口50602:11接收到断开连接:用户已断开连接
 Aug 29 23:36:26 testpm sshd[111245]: Received disconnect from 192.168.43.199 port 50602:11: disconnected by user
 #表示断开连接
 Aug 29 23:36:26 testpm sshd[111245]: Disconnected from 192.168.43.199 port 50602
 #表示root用户关闭了会话也就是退出了终端
 Aug 29 23:36:26 testpm sshd[111245]: pam_unix(sshd:session): session closed for user root
 
 如果传了公钥通过密钥登陆提示如下:
 #表示接受root用户的密钥
 Aug 29 23:50:31 testpm sshd[13123]: Accepted publickey for root from 192.168.43.199 port 50610 ssh2: RSA SHA256:HiUg8OQ5Zydu7e2vEPHAdM3TiLiQMCXX8m0mLdFgpqA
 #表示为root用户打开会话
 Aug 29 23:50:31 testpm sshd[13123]: pam_unix(sshd:session): session opened for user root by (uid=0)
 2.编写密码输入错误三次将该ip禁止连接的脚本
 [root@testpm script]# vim ssh.sh
 #!/usr/bin/bash
 #这是一个防止破解密码的脚本,当用户输入密码错误次数大于3次时,将禁止连接服务器
 ip=`cat /var/log/secure | awk '/Failed password/ {print $11}' | sort | uniq`
 num=`awk '/Failed password/ {print $11}' /var/log/secure | awk '{ips[i]++} END{print $i, ips[i]}' | awk '{print $2}'`
 if [ $num -ge 3 ];then
         echo "sshd:$ip" >> /etc/hosts.deny
 fi
 添加到计划任务中
 [root@testpm script]# crontab -l
 * * * * * /usr/bin/bash /opt/script/ssh.sh

Linux禁止root用户远程登陆

认识sshd_congfig配置文件

 [root@testpm ~]# vim /etc/ssh/sshd_config
 
 #Port 22  #监听端口,默认监听22端口   【默认可修改】
 #AddressFamily any  #IPV4和IPV6协议家族用哪个,any表示二者均有
 #ListenAddress 0.0.0.0 #指明监控的地址,0.0.0.0表示本机的所有地址  【默认可修改】
 #ListenAddress ::  #指明监听的IPV6的所有地址格式
 
 #Protocol 2        #使用SSH第二版本,centos7默认第一版本已拒绝
 
 # HostKeys for protocol version 2  #使用第二版本发送秘钥,支持以下四种秘钥认证的存放位置
 HostKey /etc/ssh/ssh_host_rsa_key  #rsa私钥认证 【默认】
 
 #LogLevel INFO    #日志记录级别,默认为info
 #LoginGraceTime 2m   #登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
 #PermitRootLogin yes #是否允许管理员直接登录,'yes'表示允许,实际生产中建议修改为no
 #StrictModes yes  #是否让sshd去检查用户主目录或相关文件的权限数据
 #MaxAuthTries 6  #最大认证尝试次数,最多可以尝试6次输入密码超过之后断开连接
 #MaxSessions 10  #最大允许保持多少个连接。默认值是 10
 
 #PubkeyAuthentication yes  #是否开启公钥验证
 
 AuthorizedKeysFile      .ssh/authorized_keys    #公钥验证文件路径

禁止root用户远程登录

 [root@testpm ~]# vim /etc/ssh/sshd_config
 37 #LoginGraceTime 2m
 38 #PermitRootLogin yes  #默认为允许root用户远程登陆
 39 #StrictModes yes
 进行修改如下
 [root@testpm ~]# vim /etc/ssh/sshd_config
 37 #LoginGraceTime 2m
 38 PermitRootLogin no #将注释打开并将yes修改为no
 39 #StrictModes yes
 保存退出并重启sshd服务
 [root@testpm ~]# systemctl restart sshd
原文链接:,转发请注明来源!