linux服务器ssh防爆破

查看爆破次数记录

# cat /var/log/secure | awk ‘/Failed/{print $(NF-3)}‘ | sort | uniq -c | awk ‘{print $2" = "$1;}‘

更改ssh默认端口

修改SSH服务器配置文件

# vim /etc/ssh/sshd_config

ssh连接时需指定连接端口,如:

ssh -p 2212 [email protected]

如果修改客户端配置文件 /etc/ssh/config_ssh

把Port改成2212,则连接ssh服务器时默认连接的端口为2212

网上的一个防爆破脚本

#!/bin/bash
#Program:
#       Use to monitor the user who try to login.
#       防止SSH用户暴力破解脚本
#
#Usage:
#       赋予可执行权限并添加到crontab
#       请先修改19行NUM对应的登录失败次数(默认100),超过此值则会添加到/etc/hosts.deny并且发送邮件
#       建议使用sendEmail发送邮件(不会被当作垃圾邮件而屏蔽) http://caspian.dotconf.net/menu/Software/SendEmail/
#       sendmail使用qq、163邮箱测试通过,默认的mail客户端发送qq邮箱会拒收需要添加白名单、163通过
#History:
#2013/10/13         Ver:1.02        By Jack
#
#

PATH=/sbin:/usr/sbin:/bin:/usr/bin:~
export PATH

#定义阀值,超出此值则添加到黑名单并发送邮件
NUM=100

#检查是否有root权限
[ $UID != 0 ] && echo -e "\e[0;31mSorry,Please run as root!\e[0m" && exit 2

#检查安全日志文件是否存在且可读
log=/var/log/secure
[ ! -e $log ] || [ ! -r $log ] && echo -e "\e[0;31mMake sure the file $log exist or can be readable!\e[0m" && exit 3

#登陆失败的IP地址列表
ssh_list=/root/logs/ssh_list
[ ! -e ${ssh_list} ] && mkdir -p `dirname ${ssh_list}`

#判断日志中是否存在ssh登录失败ip,如果没有则退出,否则添加至${ssh_list}
cat $log |grep ‘Failed‘ &>/dev/null
[ $? != 0 ] && exit 4
cat $log|awk ‘/Failed/{print $(NF-3)}‘|uniq -c|sort -nr|awk ‘{print $2"=>"$1}‘ > ${ssh_list}

#定义黑名单文件(Tcpwrappers)
deny_file=/etc/hosts.deny

#定义发送的黑名单邮件列表地址
mail_file=/root/logs/mail_file
[ ! -d `dirname ${mail_file}` ] && mkdir -p `dirname ${mail_file}`

#选择邮件发送端,如果使用sendEmail,请下载后将sendEmail.pl拷贝到/usr/bin并赋予x权限
if [ -e /usr/bin/sendEmail.pl ] && [ -x /usr/bin/sendEmail.pl ]
then
        sendmail="mailA"
elif [ -e /bin/mail ] && [ -x /bin/mail ]
then
        sendmail="mailB"
else
        sendmail="None"
fi

#关于sendEmail设置
send_user=‘[email protected]\‘ #发送者地址
smtp_user=‘xxxx‘ #登陆smyp服务器的用户名
smtp_pass=‘xxxx‘ #登陆smtp服务器用户的密码
smtp_addr=‘smtp.qq.com:25‘ #smtp地址和端口
recv_user=‘[email protected] [email protected]\‘ #接收者邮件地址

send_mailA(){
        /usr/bin/sendEmail.pl -f ${send_user} -t ${recv_user} -s ${smtp_addr} -u "SSHD WARNINGS" -m "`cat ${mail_file}`" -xu ${smtp_user} -xp ${smtp_pass} > /dev/null 2>&1
}

send_mailB(){
        /bin/mail -s "Failed sshd Login Users" ${recv_user} < ${mail_file}
}

#测试网络
test_network(){

#ping 8.8.8.8 -c2 &>/dev/null
RETVAL=$(curl -I -o /dev/null -s -w %{http_code} http://www.baidu.com/)
}

for i in `cat ${ssh_list}`
do
        COUNT=`echo $i|awk -F"=>" ‘{print $2}‘`
        IPADDR=`echo $i|awk -F"=>" ‘{print $1}‘`
        if [ ${COUNT} -ge ${NUM} ];then
           grep $IPADDR ${deny_file} 2>/dev/null
           while [ $? -ne 0 ]
           do
                echo "sshd:${IPADDR}" >> ${deny_file}
                echo "<警告>:IP为${IPADDR}的用户尝试使用SSH登陆的次数大于限定值$NUM,其尝试次数为$COUNT">>${mail_file}
           done
        fi
done 

#sleep 1

while [ -e ${mail_file} ]
do
     test_network
     [ $RETVAL -ne 200 ] && exit 5
     case $sendmail in
            mailA)send_mailA;;
            mailB)send_mailB;;
            None)exit 6
     esac
     rm -f ${mail_file}
done
  

  

时间: 2024-10-09 22:17:15

linux服务器ssh防爆破的相关文章

Mac OS X下配置远程Linux 服务器SSH密钥认证自动登录

1. 在本地机器创建公钥 打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可. ssh-keygen -t rsa -C 'your [email protected]' -t 指定密钥类型,默认即 rsa ,可以省略-C 设置注释文字,比如你的邮箱 2. 将公钥复制到ssh服务器 将前一步骤生成的公钥~/id_rsa.pub文件,复制到ssh服务器对应用户下的~/.ssh/authorized_keys文件,可以有多种方式,这里只介绍常用的三种. [适用于osx系统]使用ssh-c

Linux服务器ssh远程管理

SSH远程管理 SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登陆,远程复制等功能.SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登陆时输入的用户口令,与早期的telnet(远程管理),rsh(Remote Shell ,远程执行命令),rcp(远程复制文件)等应用相比,SSH协议提供了更好的安全性. 配置OpenSSH服务端 在RHEL 5系统中,OpenSSH服务器由openssh,openssh-server等软件包提供(默认已安装),并已将s

SSH防爆破脚本

github地址:https://github.com/demonxian3/LittleScript/blob/master/SSHprotecter.sh 使用方法: 1.给足脚本权限,chmod 755 SSHprotecter.sh 2.使用crontab周期执行,如果是每隔10分钟执行一次,vim /etc/crontab */10 * * * *   /root/SSHprotecter.sh 注意上面的脚本路径需要根据自己的情况进行修改 为啥要使用该脚本防爆破? 由于之前买了一台云

Mac下配置远程Linux 服务器SSH密钥认证自动登录

1. 在本地机器创建公钥 打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可. ssh-keygen -t rsa -C 'your [email protected]' -t 指定密钥类型,默认即 rsa ,可以省略-C 设置注释文字,比如你的邮箱 2. 将公钥复制到ssh服务器 将前一步骤生成的公钥~/id_rsa.pub文件,复制到ssh服务器对应用户下的~/.ssh/authorized_keys文件,可以有多种方式,这里只介绍常用的三种. [适用于osx系统]使用ssh-c

多台Linux服务器SSH相互访问无需密码

摘录:http://www.linuxidc.com/Linux/2013-02/79156p2.htm 一.环境配置 1.系统:CentOS release 5.6  IP:192.168.4.200  主机名:JW01 2.系统:CentOS release 5.9  IP:192.168.4.244  主机名:JW02 3.系统:CentOS release 5.3  IP:192.168.4.232  主机名:KT01 4.系统:Red Hat  release 4  IP:192.16

linux操作系统-两台linux服务器SSH免密码登录

A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), ip为192.168.100.247 ; A和B的系统都是Linux 在A上的命令 # ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码) # ssh [email protected]192.168.100.247 "mkdir .ssh;chmod 0700 .ssh" (需要输入密码, 注:必须将.ssh的权限设为700) # scp ~/.ssh/

打造坚固的安全的Linux服务器(ssh登录篇)

Nov 3 01:22:06 server sshd[11879]: Failed password for root from 123.127.5.131 port 38917 ssh2Nov 3 01:22:17 server sshd[11880]: Received disconnect from 123.127.5.131: 13: The user canceled authentication. Nov 3 03:15:08 server sshd[17524]: pam_unix

多台linux服务器ssh相互无密码访问

A服务器:10.1.11.82 B服务器:10.1.11.210 最终目的:让A服务器能无密码的访问B服务器 操作思路:让A服务器单向无密码访问B服务器,只需要在A服务器生成密钥对,将生成的公钥上传到服务器B的相关用户目录下的.ssh目录中(没有的话手动创建,注意,它的目录权限是700),并将公钥文件名称改为authorized_keys(注意,这个文件的权限应该是644),请注意.ssh目录及authorized_keys文件的权限,权限不符,会使配置无效.[用 ls -la命令查看所有目录的

Linux服务器SSH无法通过DSA证书登录的解决方法

来源:https://www.cnblogs.com/luanlengli/p/8733704.html 从openssh7.0开始,ssh-dss密钥被默认禁用. 修改服务器端的openssh设置重新开启 # vim /etc/sshd/sshd_config添加以下选项PubkeyAcceptedKeyTypes=+ssh-dss 重启sshd服务 # systemctl restart sshd # service sshd restart 原文地址:https://www.cnblogs