取出/var/log/secure中一小时内登录失败超过三次的IP

这篇具有很好参考价值的文章主要介绍了取出/var/log/secure中一小时内登录失败超过三次的IP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

取出/var/log/secure中一小时内登录失败超过三次的IP

前两个字段是日期,第三个字段是小时,第四个字段是IP
cat /var/log/secure | sort -i | awk -F '[ :]' '/Failed/{a[$1" "$2" "$3" "$4" "$(NF-3)]++}END{for(i in a)if(a[i]>3)print i}'
 
s="Jul 7 13:49:08"
sed -n "/$s/,$ p" /var/log/secure | awk '/Failed/{a[$(NF-3)]++}END{for(b in a){if(a[b]>2){print b}}}'
 

统计/var/log/secure日志中出现“Failed”关键词的IP地址及次数。
···
awk 是三剑客中一把利刃。

cat /var/log/secure
Jul 18 10:28:59  sshd[1377656]: Accepted password for root from 172.16.100.66 port 59750 ssh2
Jul 18 10:28:59  sshd[1377656]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jul 18 10:38:20  sshd[1416681]: Accepted password for root from 172.16.100.21 port 62366 ssh2
Jul 18 10:38:20  sshd[1416681]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jul 18 10:58:57  sshd[1502199]: Accepted password for root from 172.16.100.66 port 61038 ssh2
# 可以看到正常的一个访问日志记录,新建一个连接 故意输错密码,让日志记录一下
Jul 18 10:59:13  sshd[1503821]: Failed password for root from 172.16.100.21 port 63802 ssh2
#可以看到错误登陆时的日志记录是这样的。
那么就可以开始使用awk来实现二级标题中的需要了。

先给出命令再来解析

awk '/Failed/ {++ip[$(NF-3)]} END {for (i in ip) print i"="ip[i]}'
 

一、登录ssh失败次数统计

1)错误的打开方式

awk '/Failed password/ {print $(NF-3)}' secure |sort -n |uniq -c|sort -n |tail /var/log/secure

取出/var/log/secure中一小时内登录失败超过三次的IP,LINUX,服务器,linux,运维

2)拷贝文件,再查看失败

cp /var/log/secure .

awk '/Failed password/ {print $(NF-3)}' secure |sort -n |uniq -c|sort -n |tail

 3)直接查看失败

取出/var/log/secure中一小时内登录失败超过三次的IP,LINUX,服务器,linux,运维

$ awk '/Failed password/ {print $(NF-3)}' /var/log/secure |sort -n |uniq -c|sort -n 

4)查看最近失败的时间

less  /var/log/secure

 按G

二、对于防破解问题的处理

1)禁止密码登录方式

  vi  /etc/ssh/sshd_config

取出/var/log/secure中一小时内登录失败超过三次的IP,LINUX,服务器,linux,运维

 2)禁止失败的IP登录的方式

取出/var/log/secure中一小时内登录失败超过三次的IP,LINUX,服务器,linux,运维

 

取出/var/log/secure中一小时内登录失败超过三次的IP,LINUX,服务器,linux,运维

#
# hosts.deny    This file contains access rules which are used to
#               deny connections to network services that either use
#               the tcp_wrappers library or that have been
#               started through a tcp_wrappers-enabled xinetd.
#
#               The rules in this file can also be set up in
#               /etc/hosts.allow with a 'deny' option instead.
#
#               See 'man 5 hosts_options' and 'man 5 hosts_access'
#               for information on rule syntax.
#               See 'man tcpd' for information on tcp_wrappers
#
sshd:192.168.2.41:deny

/etc/hosts.deny

在/etc/hosts.deny文件下面

添加 sshd:192.168.2.41:deny

重启sshd

Linux 系统SSH 登录失败的内容会记录到/var/log/secure文件,通过查找关键字 Failed,可以定位到这些异常的IP地址,比如:

[root@www.cndba.cn ~]# cat /var/log/secure|grep 36.250.229.118
Jan 10 16:54:25 iZbp15upsrdbnwnq3zksepZ sshd[10813]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=103.152.101.235  user=root
Jan 10 16:54:25 iZbp15upsrdbnwnq3zksepZ sshd[10813]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Jan 10 16:54:27 iZbp15upsrdbnwnq3zksepZ sshd[10813]: Failed password for root from 103.152.101.235 port 59352 ssh2
Jan 10 16:54:27 iZbp15upsrdbnwnq3zksepZ sshd[10813]: Connection closed by 103.152.101.235 port 59352 [preauth]
Jan 10 16:54:29 iZbp15upsrdbnwnq3zksepZ sshd[10820]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=103.152.101.235  user=root
Jan 10 16:54:29 iZbp15upsrdbnwnq3zksepZ sshd[10820]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Jan 10 16:54:31 iZbp15upsrdbnwnq3zksepZ sshd[10820]: Failed password for root from 103.152.101.235 port 60970 ssh2
Jan 10 16:54:31 iZbp15upsrdbnwnq3zksepZ sshd[10820]: Connection closed by 103.152.101.235 port 60970 [preauth]
Jan 10 16:54:33 iZbp15upsrdbnwnq3zksepZ sshd[10825]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=103.152.101.235  user=root
Jan 10 16:54:33 iZbp15upsrdbnwnq3zksepZ sshd[10825]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Jan 10 16:54:35 iZbp15upsrdbnwnq3zksepZ sshd[10825]: Failed password for root from 103.152.101.235 port 34445 ssh2
Jan 10 16:54:35 iZbp15upsrdbnwnq3zksepZ sshd[10825]: Connection closed by 103.152.101.235 port 34445 [preauth]
Jan 10 16:54:37 iZbp15upsrdbnwnq3zksepZ sshd[10831]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=103.152.101.235  user=root
Jan 10 16:54:37 iZbp15upsrdbnwnq3zksepZ sshd[10831]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Jan 10 16:54:39 iZbp15upsrdbnwnq3zksepZ sshd[10831]: Failed password for root from 103.152.101.235 port 36166 ssh2
Jan 10 16:54:39 iZbp15upsrdbnwnq3zksepZ sshd[10831]: Connection closed by 103.152.101.235 port 36166 [preauth]
Jan 10 16:54:41 iZbp15upsrdbnwnq3zksepZ sshd[10836]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=103.152.101.235  user=root
Jan 10 16:54:41 iZbp15upsrdbnwnq3zksepZ sshd[10836]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Jan 10 16:54:43 iZbp15upsrdbnwnq3zksepZ sshd[10836]: Failed password for root from 103.152.101.235 port 37866 ssh2
Jan 10 16:54:43 iZbp15upsrdbnwnq3zksepZ sshd[10836]: Connection closed by 103.152.101.235 port 37866 [preauth]
Jan 10 16:54:45 iZbp15upsrdbnwnq3zksepZ sshd[10841]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=103.152.101.235  user=root
Jan 10 16:54:45 iZbp15upsrdbnwnq3zksepZ sshd[10841]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Jan 10 16:54:47 iZbp15upsrdbnwnq3zksepZ sshd[10841]: Failed password for root from 103.152.101.235 port 39832 ssh2
Jan 10 16:54:47 iZbp15upsrdbnwnq3zksepZ sshd[10841]: Connection closed by 103.152.101.235 port 39832 [preauth]
Jan 10 16:54:49 iZbp15upsrdbnwnq3zksepZ sshd[10847]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=103.152.101.235  user=root
Jan 10 16:54:49 iZbp15upsrdbnwnq3zksepZ sshd[10847]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"
Jan 10 16:54:51 iZbp15upsrdbnwnq3zksepZ sshd[10847]: Failed password for root from 103.152.101.235 port 41558 ssh2
Jan 10 16:54:52 iZbp15upsrdbnwnq3zksepZ sshd[10847]: Connection closed by 103.152.101.235 port 41558 [preauth]


比如这里,明显这个IP地址在进行SSH 扫描,不断的更换端口和用户进行暴力测试。

在Linux里面有两个相关的文件:

/etc/hosts.allow: 允许哪些IP访问主机

cat /etc/hosts.allow
sshd:19.16.18.1:allow
sshd:19.16.18.2:allow
 
/etc/hosts.deny 禁止哪些IP访问主机:

cat /etc/hosts.deny
sshd:13.7.3.6:deny
sshd:92.4.0.4:deny
sshd:94.10.4.2:deny
sshd:94.4.1.6:deny
sshd:11.64.11.5:deny
 
因此,我们只需要从/var/log/secure文件中提取IP地址,如果次数达到10次则将该IP写到 /etc/hosts.deny中,禁止这些IP访问主机。

脚本如下secure_ssh.sh:

#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /boss/config/black.list
for i in `cat  /boss/config/black.list`
do
  IP=`echo $i |awk -F= '{print $1}'`
  NUM=`echo $i|awk -F= '{print $2}'`
  echo $IP=$NUM
  if [ $NUM -gt 10 ]; then
    grep $IP /etc/hosts.deny > /dev/null
    if [ $? -gt 0 ];then
      echo "sshd:$IP:deny" >> /etc/hosts.deny
    fi
  fi
done

 
将secure_ssh.sh脚本放入cron计划任务,每1小时执行一次。

# crontab -e
0 */1 * * *  sh /usr/local/bin/secure_ssh.sh
 

1 CentOS7通过定时脚本阻断异常IP连接SSH(实测)_secure_ssh.sh-CSDN博客文章来源地址https://www.toymoban.com/news/detail-852403.html

到了这里,关于取出/var/log/secure中一小时内登录失败超过三次的IP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Starting MySQL. mysqld_safe error: log-error set to ‘/var/log/mariadb/mariadb.log‘,however file don‘

    @[TOC](Mysql 启动报错并成功解决:Starting MySQL.2023-11-16T06:24:39.857506Z mysqld_safe error: log-error set to ‘/var/log/mariadb/mariadb.log’,however file don’t exists. Create writable for user ‘mysql’. The server quit without updating PID file (/var/lib/mysql/y[FAILED]d))

    2024年02月03日
    浏览(36)
  • ubuntu22.10安装cuda出错Failed to verify gcc version. See log at /var/log/cuda-installer.log for details.

    ubuntu22.10在安装cuda,使用如下命令:     结果产生错误提示: Failed to verify gcc version. See log at /var/log/cuda-installer.log for details. 1、这是由于gcc版本不匹配的问题!一般简易解决方法是忽略,使用 --override 参数  2、或者可以变更gcc版本,   A、首先在选CUDA版本时,链接尾部可以

    2024年02月11日
    浏览(67)
  • 微信小程序-上传代码失败,提示分包大小超过限制

    开发者可通过开发者工具中的性能扫描工具提前发现代码中的可优化项: 1. 代码包不包含插件大小超过 1.5 M 【建议】小程序代码包单个包大小限制为2M。因此我们建议开发者在开发时,如果遇到单包体积大于1.5M的情况,可以采取分包的方式,把部分代码拆分到分包去,降低

    2024年02月16日
    浏览(44)
  • Nginx代理下载超过1GB的文件失败问题的解决

    项目中通过nginx代理请求后端的下载接口,超过1g的文件下载后文件损坏,并且大小只有1g Nginx Buffer 机制默认开启时根据 proxy_buffer_size 和 proxy_buffers 参数控制写入内存的大小,如果超过buffer的限制,就会通过 proxy_max_temp_file_size 参数响应其余部分写入到磁盘临时文件 。 由于

    2024年02月15日
    浏览(46)
  • Ubuntu系统下的gcc升降版本 保姆级教程 安装cuda出错Failed to verify gcc version. See log at /var/log/cuda-installer.log for details.

    在安装cuda,使用如下命令:sudo sh cuda_11.3_450.51.05_linux.run 结果产生错误提示: Failed to verify gcc version. See log at /var/log/cuda-installer.log for details. GNU 编译器集合是一系列用于语言开发的编译器和库的集合,包括: C, C++, Objective-C, Fortran, Ada, Go, and D等编程语言。很多开源项目,包括

    2024年02月12日
    浏览(45)
  • es sharding 文档数量超过最大限制,写入失败的4种解决方案

    es 插入数据的时候报错 failure in bulk execution: [0]: index [leopard_user.driver_work_detail_record], type [detail_info], id [xxx], message [ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception, reason=number of documents in the index cannot exceed 2147483519]]], 超过了2^31次方 解决方案: 方案一 重新创建一个

    2024年02月03日
    浏览(72)
  • 解决 ERROR: An error occurred while performing the step: “Building kernel modules“. See /var/log/nv

    目录 解决 ERROR: An error occurred while performing the step: \\\"Building kernel modules\\\" 1. 查看日志文件 2. 检查依赖项 3. 更新内核版本 在进行 NVIDIA 驱动程序安装时,如果出现类似以下错误提示: 那么你可能需要进行以下步骤来解决该问题: 首先,我们需要查看 ​ ​/var/log/nvidia-installer.lo

    2024年02月03日
    浏览(56)
  • 面试官问我为啥B+树一般都不超过3层?3层B+树能存多少数据?redo log与binlog的两阶段提交?

    我今天逛了一下CSDN,又发现了一条显眼的数据,大概是说 3层B+树足以容纳2000w条数据 。我当时就蒙了,3层对2000w,心想这B+树也太厉害了吧,由此勾起了我求知的欲望,我一定要搞明白他这2000w是怎么来的。 MySQL的执行流程如下图 前提: binlog本身不具备crash-safe能力 ,所以

    2024年02月11日
    浏览(39)
  • logging 模块因权限问题写入日志失败

    哈喽大家好,我是咸鱼 今天跟大家分享一个使用 Python 的 logging 模块写入日志文件时遇到的权限问题,不知道你们有没有遇到过 今天上班的时候手机短信收到了 zabbix 告警,但是发现了不对劲的地方:微信没有收到告警信息,按理说短信跟微信应该是同时收到告警信息的 咸鱼

    2024年02月07日
    浏览(37)
  • git push超过100MB大文件失败(remote: fatal: pack exceeds maximum allowed size)

    push代码的时候,有时会出现如下问题 remote: fatal: pack exceeds maximum allowed size error: failed to push some refs to ‘git.n.xiaomi.com:fuzheng1/nl2sql.git’ 解决方案: 将本地 http.postBuffer 数值调整到GitHub服务对应的单次上传大小配置 查看是否配置成功

    2024年02月06日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包