更多文章请移步:www.yanjun.pro

最近发现有人经常尝试使用SSH登录我的服务器,但是由于种种原因,只有自己想办法来阻止非法访问,最简单的方法就是通过系统自带的黑名单机制,将登录失败次数达到设定值的主机IP加入黑名单,以此来防止非法登录。

解决思路

创建一个定时任务,定时执行脚本文件,以此来检查登录失败主机列表,并将达到登录失败次数的主机IP地址加入到黑名单

【2021-08-09 】 经过一段时间的观察,使用现有的脚本虽然能防止非法 SSH 访问,但是在阻止访问后,一方面在系统安全日志中会记录每一条访问记录,这样会导致日志中大量记录非法访问的主机的 IP 地址,将其他的信息淹没在无用的信息中,不便于查询其他日志记录;另一方面,在将非法主机写入文件后,如果该主机继续访问,那么 sshd 服务还得去查询记录文件,来一条查一次,这样会导致 sshd 服务异常繁忙,可能会影响到正常业务访问。

为了解决以上问题,现将脚本进行了优化,在原有脚本的基础上,添加了系统防火墙联动机制(仅限于使用 firewalld 防火墙,其他如:Ubuntu的UFW防火墙请参考本脚本自行修改),将登录失败次数超过限定次数的主机 IP 地址,一方面写入 hosts.deny 文件外,同时将该 IP 地址添加到防火墙策略中,将其的数据包在到达主机时,直接丢弃,这样就不需要再通过 sshd 服务处理,一方面可以减轻 sshd 服务的压力;另一方面,因为不需要 sshd 服务的干预,所以也就没有相关日志的记录,不会将其他信息覆盖。

脚本文件

最新脚本文件:ssh_login_failed_host_deny_v0.2.sh

#!/usr/bin/bash
# -*- coding:UTF-8 -*-
#
#########################################################
#                                                       #
#    file name: ssh_login_failed_host_deny              #
#  description: 将SSH多次登录失败的IP加入黑名单           #
#       author: oldyan                                  #
#      version: 0.1                                     #
#         date: 2021-04-19                              #
#                                                       #
########################################################## 通过lastb获取登录失败的IP及登录失败的次数
lastb | awk '{print $3}' | grep ^[0-9] | sort | uniq -c | awk '{print $1"\t"$2}' > /tmp/host_list
list=`cat /tmp/host_list`
line=`wc -l /tmp/host_list | awk '{print $1}'`
count=1# 如果/tmp/host_list中有数据,循环至少需要执行一次
while [[ "$line" -ge "$count" ]]; doip_add=`echo $list | awk '{FS="\t"} {print $2}'`num=`echo $list | awk  '{FS="\t"} {print $1}'`
#   登录失败达到5次就将该IP写入文件if [[ "$num" -ge 5 ]]; thengrep "$ip_add" /etc/hosts.deny &> /dev/nullif [[ "$?" -gt 0 ]]; then
# --------> 此处添加当前系统时间,请根据实际情况定义日期格式echo "# $(date +%F' '%H:%M:%S)" >> /etc/hosts.denyecho "sshd:$ip_add" >> /etc/hosts.denyfifilet count+=1
#   删除已经写入文件的IPsed -i '1d' /tmp/host_list
#   修改$list变量list=`cat /tmp/host_list`
done
# 清空临时文件
echo '' > /tmp/host_list
exit 0

创建定时任务

[root@localhost ~]# crontab -e
# 每分钟执行一次
* * * * * /hone/user/ssh_login_failed_host_deny.sh

将SSH多次登录失败的IP加入黑名单相关推荐

  1. Linux-----Ubuntu通过shell脚本将SSH多次登录失败的IP自动加入黑名单

    一:与登录相关文件介绍 ubuntu三个文件日志介绍: 1:/var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记录系统启动时间: 2:/v ...

  2. Linux 服务器自动拉黑ssh登录失败的IP

    最近有的人很闲,在网上到处攻击,今天一看一晚上失败登录517个 查了一下资料发现/etc/hosts.deny这个文件是存放ssh登录黑名单的文件 而lastb可以查看登录失败的记录 下面配置参考了h ...

  3. pam配置SSH用户连续登录失败锁定设置

    SSH用户连续登录失败锁定设置 系统是openeuler系统,不知道在其他linux系统中是否也是这样. ssh用户锁定pam配置: /etc/pam.d/sshd使用了password-auth 更 ...

  4. gogs 导致 ssh 钥匙对登录失败的问题

    自从装了 gogs 后, 登录服务器出现了一个奇怪的问题. 原来可以用钥匙对登录, 现在要输入密码了. 检查配置文件 /etc/ssh/sshd_config 发现问题: # The default ...

  5. ssh 免密登录失败

    前言 近期遇到个ssh的问题,使用ssh key免密登录,帮小时前都是正常的,突然使用的时候就需要输入密码了,错误信息如下 Permission denied, please try again.Pe ...

  6. 记一次ssh免密登录失败的debug经历

    1. 问题 设置ssh免密登陆时,发现有一些机器正常登陆,有一些机器提示错误信息:public-key authentication with the server for user gzsun fa ...

  7. shell实现将登录失败次数超过5次ip拉入黑名单,以防暴力破解

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.服务器环境配置准备 二.环境配置 1.禁用firewalld 2.关闭selinux 3.安装.启用iptable ...

  8. 手把手教你封杀恶意登录服务器的ip

    转载来源:https://blog.csdn.net/weixin_42313749/article/details/117593636?spm=1001.2014.3001.5502 文章目录 如何 ...

  9. 6步教你封杀恶意登录服务器的ip

    文章目录 如何快速将恶意IP 加入防火墙黑名单 前言 需求描述 实验步骤 总结 如何快速将恶意IP 加入防火墙黑名单 前言 经常我们的服务器在深夜,往往会遭到Nmap 扫描,然后有很多ip 试探登录连 ...

最新文章

  1. ubuntu18.04 VirtualBox 开启虚拟机出错 Kernel driver not installed (rc=-1908)
  2. RabbitMQ服务客户端的的业务逻辑
  3. linux 查看最近用户,Linux下查看用户列表
  4. 几种机器学习平台的对比和选择
  5. Servlet3.0
  6. struts2文件下载及文件名中文问题
  7. 《Fortran 95 程序设计》阅读笔记三
  8. CAD的dwg格式转换为PDF
  9. android英雄无敌 中文版下载地址,英雄无敌3手机版
  10. 【超超超easy】5分钟:自制酷炫猫咪词云图,会点鼠标即可。
  11. Task5 | 结构方程 | “老年病”与身份的关系
  12. java集合之TreeMap 构造器 方法 比较器
  13. WEB相关:Windows下打造完美的服务器平台
  14. oracle 根据sid psid,windows 获取当前用户的sid
  15. 正则表达式的字符串匹配
  16. 扬帆牧哲:跨境电商还有未来吗?
  17. lodash 之 Chain
  18. aac转化为mp3格式的三种详细步骤
  19. 四种使用quad积分函数的方法
  20. Qt设计师类setupUi报内存错误可能原因

热门文章

  1. Arduino使用手指测心跳模块
  2. 使用gstreamer,rtsp拉流,保存图像, jeston,使用硬件加速nvdec/nvenc
  3. kafka.common.InconsistentClusterIdException: The Cluster ID doesn‘t match stored clusterId Some()
  4. 短信接口抓包_[实战] 实现抢票小工具amp;短信通知提醒
  5. Titan图形数据库的应用实例讲解
  6. Bili视频弹幕播放器后台源码
  7. CS231n笔记-CNN网络结构
  8. 今日干货:mac视频剪辑软件推荐
  9. 2021巢湖第一中学高考成绩查询,2021年巢湖高中学校排名及录取分数线排名
  10. 产品管理——产品PM你必须掌握的用户体验五大层