SSH防止暴力破解 shell script

这是我的第一个Shell Script,写的乱乱糟糟,试验了一下,还是可用的,目前已经在我自己的WEB服务器上跑起来了!!~~

#!/bin/bash
#这个shell script 用来防止SSH暴力破解
#Auther:Aaron Guo
#Date:Jan 8 2016
#Version:1.2
# 指定该SHELL的日志文件
logfile="/var/log/blocked_ip"
# 获取现在时间,用来grep /var/log/secure. (格式:mm dd HH)
timenow=$(date ‘+%b %e %H‘)
# 如果在当前一小时内,20次连接失败,则记录
rootip=$(grep "$timenow" /var/log/secure|grep root.*because|awk ‘{print $9}‘|sort|uniq -c|sed s/[\.][a-zA-Z].*//g|awk ‘$1>20 {print $1":"$2}‘)
anyip=$(grep "$timenow" /var/log/secure|grep Invalid| awk ‘{print $10}‘|sort|uniq -c|sed s/[\.][a-zA-Z].*//g|awk ‘$1>20 {print $1":"$2}‘)

# 添加破解root密码的到iptables
for i in $rootip
do
ip=$(echo $i|awk -F: ‘{print $2}‘)
# 检查攻击者的IP在iptables存在否.
        iptables-save|grep INPUT|grep DROP|grep "$ip">/dev/null
# 如果不存在(也就是上一条命令执行错误,变量$? > 0 ),那么添加到iptables.
        if [ $? -gt 0 ]; then
                iptables -A INPUT -s "$ip" -p tcp --dport 22 -j DROP
                now=$(date ‘+%Y-%m-%d %H:%M‘)
# add to log file.
                echo -e "$now : $ip" >> $logfile
        fi
done

# 添加随便试用户名的那些到iptables.
for i  in $anyip
do
ip=$(echo $i|awk -F: ‘{print $2}‘)
# check crackers ip exist or not.
        iptables-save|grep INPUT|grep DROP|grep "$ip">/dev/null
# do not exist , add to iptables.
        if [ $? -gt 0 ]; then
                iptables -A INPUT -s "$ip" -p tcp --dport 22 -j DROP
                now=$(date ‘+%Y-%m-%d %H:%M‘)
# add to log file.
                echo -e "$now : $ip" >> $logfile
        fi
done

最后把这个脚本添加可执行(x)权限,之后添加到/etc/crontab,我设定的是每10分钟执行一次(*/10)

# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
  */10 * * *  * root    /root/blockip.sh

如有错误,欢迎指正!!

时间: 2024-10-10 08:02:38

SSH防止暴力破解 shell script的相关文章

SSH防暴力破解shell脚本

写的一个SSH的防暴力破解脚本. 原理是检测SSH连接日志,过滤登录失败的IP,超过登录次数就将其添加进hosts.deny文件中,限制其登录. 脚本如下: #! /bin/bash cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/black.txt DEFINE="10" for i in `cat  /root/bla

开源服务专题之------ssh防止暴力破解及fail2ban的使用方法

15年出现的JAVA反序列化漏洞,另一个是redis配置不当导致机器入侵.只要redis是用root启动的并且未授权的话,就可以通过set方式直接写入一个authorized_keys到系统的/root/.ssh/目录下实现免密码登陆他人的Linux服务器.从而达到入侵成功的效果.fail2ban是一款很棒的开源服务软件,可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员,很好.很实用.很强大!简单来说其功能

SSH防暴力破解的解决方法

SSH防暴力破解的解决方法: 1.禁止root用户ssh登陆: 1.1.修改PermitRootLogin项: [[email protected] ~]# vi /etc/ssh/sshd_config [[email protected] ~]# grep Root /etc/ssh/sshd_config PermitRootLogin no ### 将默认的 #PermitRootLogin yes 修改成这样的 ### # the setting of "PermitRootLogin

linux防止ssh远程暴力破解的方法和fail2ban软件的配置应用

一.修改参数来使得暴力破解变得几乎不可能 1.密码设定要足够复杂 密码的设定,尽可能要有大写字母.小写字母.特殊符号和数字,长度至少要大于8,当然越长越好,只要能记住. 2.修改默认端口号 修改sshd服务的默认端口号,可以进一步防止黑客的恶意攻击.首先介绍一个工具:nmap:nmap可以探测某个服务器的远程端口号开放列表; #nmap 192.168.1.163 StartingNmap 5.51 ( http://nmap.org ) at 2015-11-10 14:43 CST Nmap

SSH防止暴力破解--fail2ban

一.ssh密钥对无交互登录 实战1:通过密钥进行sshd服务认证 服务端:linl_S    IP:10.0.0.15 客户端:lin_C    IP:10.0.0.16 1)在客户端生成密钥对 命令:ssh-keygen 1 [[email protected]_C ~]# ssh-keygen 2 Generating public/private rsa key pair. 3 Enter file in which to save the key (/root/.ssh/id_rsa):

ssh 防御暴力破解

查看日志文件:$ sudo cat /var/log/auth.log日志大量出现:Failed password for root from 123.15.36.218 port 51252 ssh2reverse mapping checking getaddrinfo for pc0.zz.ha.cn [218.28.79.228] failed – POSSIBLE BREAK-IN ATTEMPT!Invalid user akkermans from 218.28.79.228pam

ssh防暴力破解

SSH 为 Secure Shell 的缩写, SSH 为建立在应用层和传输层基础上的安全协议. 利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题. 基于口令的安全验证: 所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器.可能会有别的服务器在冒充真正的服务器,也就是受到"中间人"这种方式的攻击. 基于秘钥的安全验证:  客户端在本地生成秘钥对,把公钥传给服务器. 当客户端访问服务器时,服务器会在用户的主目录下寻找公钥,然后跟客户端发来的公钥进行比对

SSH防暴力破解软件 Denyhosts

原理: DenyHosts 是Python语言写的一个开源程序,它会定期分析sshd服务的登陆日志,当发现某IP进行多次SSH登陆且登陆失败次数超过阈值时,会将IP记录到 /etc/hosts.deny文件,通过tcpwrapper达到自动屏蔽IP的功能. TCP wrapper: tcpwrapper 是一个为 Unix 类服务器提供防火墙服务的程序,任何以 Xinetd 管理的服务都可以通过TcpWrapper来设置防火墙,简单的说,就是针对源IP或域进行允许或拒绝访问的设置: 配置文件:

ssh放置暴力破解

查看服务器的登录日志并提取相关的信息. /var/log/secure  ###sshd会将所有信息记录(其中包括失败登录)在这里. cat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort -n| uniq -c| sort -rn 从统计中可以看出登录失败的ip及次数或登录用户,此时就可以写一个shell脚本来处理. [[email protected] tmp]# car test2.sh #bin/bash #Author:XA