查看爆破次数记录

# 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 root@xxx.xxx.xxx.xxx

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

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

限制root账户登录

1.修改服务器端配置文件

# vim /etc/ssh/sshd_config

使用DenyHosts

安装:略

配置:

进入denyhosts的主配置目录
#cd /usr/share/denyhosts 复制默认配置文件和程序执行文件
#cp denyhosts.cfg-dist denyhosts.cfg
#cp daemon-control-dist daemon-control 修改程序执行文件的操作权限
#chmod 770 daemon-control
# ./daemon-control start

设置开机自启动

# ln -sf /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts
# chkconfig --add denyhosts
# chkconfig --level 2345 denyhosts on

或者写入自启动文件/etc/rc.local

# echo "/usr/share/denyhosts/daemon-control start" >> /etc/rc.local

常用配置说明

# vi denyhosts.cfg 

SECURE_LOG = /var/log/secure
#sshd日志文件,它是根据这个文件来判断的,不同的操作系统,文件名稍有不同。 HOSTS_DENY = /etc/hosts.deny  #阻止用户登陆的文件 PURGE_DENY = 5m
DAEMON_PURGE = 5m
#过多久后清除已经禁止的IP
如5m(5分钟)、5h(5小时)、5d(5天)、5w(5周)、1y(一年) BLOCK_SERVICE = sshd
#禁止的服务名,可以只限制不允许访问ssh服务,也可以选择ALL DENY_THRESHOLD_INVALID = 5  #允许无效用户失败的次数
DENY_THRESHOLD_VALID = 10   #允许普通用户登陆失败的次数
DENY_THRESHOLD_ROOT = 5   #允许root登陆失败的次数
HOSTNAME_LOOKUP=NO       #是否做域名反解
ADMIN_EMAIL =        #设置管理员邮件地址
DAEMON_PURGE = 10m       #该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间。

以后就可以通过/etc/hosts.deny文件查看阻止ip

  

网上的一个防爆破脚本

#!/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='xxxx@qq.com\' #发送者地址
smtp_user='xxxx' #登陆smyp服务器的用户名
smtp_pass='xxxx' #登陆smtp服务器用户的密码
smtp_addr='smtp.qq.com:25' #smtp地址和端口
recv_user='115466xxxx@qq.com jack_blues@163.com\' #接收者邮件地址 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
  

  

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

  1. SSH防爆破脚本

    github地址:https://github.com/demonxian3/LittleScript/blob/master/SSHprotecter.sh 使用方法: 1.给足脚本权限,chmod ...

  2. linux服务器ssh、公匙和密钥实战详解

    一..我们先建好一上haiwen用户用来,做为密码钥和SSH对像 二.修改vi /etc/ssh/sshd_config 文件,禁用ROOT远程直接登录. 三.ssh的公钥认证配置,只能用密匙才能登录 ...

  3. linux服务器SSH破解预防方法

    1.linux服务器通过配置 /etc/hosts.deny 禁止对方IP通过SSH登录我的服务器 vim /etc/hosts.deny 2.不用SSH服务的默认端口22,重新设置一个新端口,最好设 ...

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

    1. 在本地机器创建公钥 打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可. ssh-keygen -t rsa -C 'your email@domain.com' -t 指定密钥类型 ...

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

    1. 在本地机器创建公钥 打开万能的终端,执行如下命令,无视一切输出,一路欢快地回车即可. ssh-keygen -t rsa -C 'your email@domain.com' -t 指定密钥类型 ...

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

    A为本地主机(即用于控制其他主机的机器) ; B为远程主机(即被控制的机器Server), ip为192.168.100.247 ; A和B的系统都是Linux   在A上的命令 # ssh-keyg ...

  7. 设置多台机器linux服务器ssh相互无密码访问

    在每台服务器上都执行ssh-keygen -t rsa生成密钥对: $ ssh-keygen -t rsa Generating public/private rsa key pair. Enter ...

  8. Linux服务器SSH无密码访问

    1.编辑Hosts文件: [root@yqtrack-elk01 /]# vim /etc/hosts

  9. 连接到CentOS(Linux)服务器ssh、mysql缓慢

    现象: 服务器163与服务器164在同一机柜,双绞线直接连接,从办公室或者服务器163去连机服务器164的ssh.mysql均缓慢,让机房人员查了,无果.而164却正常. 最后发现两个机器/etc/r ...

随机推荐

  1. npm的packagejson文件

    一.name,npm包名name和version字段是package.json文件中最重要的字段,都是必须的字段,如果你的npm包没有指定这两个字段,将无法被安装.name和version字段被假定组 ...

  2. pandas 基本操作

    1.     一维数据结构Series a.   概念:Series 是pandas 的一维数据结构,有重要的两个属性 index 和values b.  初始化: 可以通过 python 的 Lis ...

  3. DRF分页组件

    为什么要使用分页 其实这个不说大家都知道,大家写项目的时候也是一定会用的, 我们数据库有几千万条数据,这些数据需要展示,我们不可能直接从数据库把数据全部读取出来, 这样会给内存造成特别大的压力,有可能 ...

  4. BZOJ.1115.[POI2009]石子游戏Kam(阶梯博弈)

    BZOJ 洛谷 \(Description\) 有\(n\)堆石子.除了第一堆外,每堆石子个数都不少于前一堆的石子个数.两人轮流操作,每次可以从一堆石子中拿掉任意多的石子,但要保证操作后仍然满足初始时 ...

  5. 2018 EC-Final 部分题解 (A,J)

    目录 The 2018 ICPC Asia-East Continent Final A.Exotic - Ancient City(思路 并查集) J.Philosophical - Balance ...

  6. [PA2014]Żarówki

    [PA2014]Żarówki 题目大意: 有\(n(n\le5\times10^5)\)个房间和\(n\)盏灯,你需要在每个房间里放入一盏灯.每盏灯都有一定功率\(p_i\),每间房间都需要功率不小 ...

  7. pymysql 使用twisted异步插入数据库:基于crawlspider爬取内容保存到本地mysql数据库

    本文的前提是实现了整站内容的抓取,然后把抓取的内容保存到数据库. 可以参考另一篇已经实现整站抓取的文章:Scrapy 使用CrawlSpider整站抓取文章内容实现 本文也是基于这篇文章代码基础上实现 ...

  8. vb.net播放资源文件中的音乐

    1.在自己的工程里添加一个资源文件. 2.打开添加的资源文件,资源类型选择为音频,点击添加资源把准备好的wav格式音乐文件添加进入资源文件. 3.设置资源属性和文件属性为嵌入 4.代码以及调用方法 P ...

  9. python系统编程(二)

    多次fork问题 如果在一个程序,有2次的fork函数调用,是否就会有3个进程呢? #coding=utf-8 import os import time # 注意,fork函数,只在Unix/Lin ...

  10. 11-13 js操作css样式

    1.Js操作css样式 Div.style.width=”100px”.在div标签内我们添加了一个style属性,并设定了width值.这种写法会给标签带来大量的style属性,跟实际项目是不符. ...