在Linux服务器上重复的失败登录尝试可能表明有人企图闯入帐户,或者仅仅意味着有人忘了密码或输错密码。本文介绍了如何检查失败的登录尝试并检查系统的设置,查看何时锁住帐户以处理问题。

您要了解的第一件事是如何检查登录是否失败。以下命令在Ubuntu和相关系统上使用的/var/log/auth.log文件中查找登录失败的迹象。有人尝试使用错误或拼错的密码登录时,失败的登录将显示以下行:

$ sudo grep "Failed password" /var/log/auth.log | head -3
Nov 17 15:08:39 localhost sshd[621893]: Failed password for nemo from 192.168.0.7 port 8132 ssh2
Nov 17 15:09:13 localhost sshd[621893]: Failed password for nemo from 192.168.0.7 port 8132 ssh2

您可以使用这样的命令按帐户汇总失败登录的情况:

$ sudo grep "Failed password" /var/log/auth.log | grep -v COMMAND | awk '{print $9}' | sort | uniq -c 22 nemo 1 shs 2 times:

该命令按用户名(grep输出的第9列)汇总失败的登录。它避免了查看含有“COMMAND”一词的行,跳过含有“Failed passwords”短语的查询(比如运行上面运行的命令的人)。“times:”字符串表明重复尝试的次数比报告的次数还多。这些来自含有“消息重复5次:”的行,快速连续多次输错密码后,这些行可能被添加到日志文件中。

您可能要检查的另一个方面是失败的登录尝试来自何处。为此,如本例所示,将您关注的字段从第九个更改为第十一个:

$ sudo grep "Failed password" /var/log/auth.log | grep -v COMMAND | awk '{print $11}' | sort | uniq -c 23 192.168.0.7

比如说,如果您发现多个用户的失败登录来自单单一个系统,这可能特别可疑。

在RHEL、Centos和相关系统中,您可以在/var/log/secure文件中找到与失败登录有关的消息。您可以使用与上述基本相同的查询来计数。只需更改文件名,如下所示:

$ sudo grep "Failed password" /var/log/secure | awk '{print $9}' | sort | uniq -c 6 nemo

核查/etc/pam.d/password-auth和/etc/pam.d/system-auth文件中的设置。添加这样的行将强制执行您的设置。

检查faillog

您可能关注过faillog命令,但是该命令查看的/var/log/faillog文件如今似乎在许多系统上并没有使用。如果您使用faillog -a命令,会得到类似如下所示的在时间列中列出12/31/69的输出,很明显该文件并未使用。

$ faillog -a
Login       Failures Maximum Latest                On root            0        0   12/31/69 19:00:00 -0500
daemon          0        0   12/31/69 19:00:00 -0500
bin             0        0   12/31/69 19:00:00 -0500
sys             0        0   12/31/69 19:00:00 -0500

显示的日期和时间可以追溯到Unix的开始(01/01/70)――可能针对本地时区进行了更正。如果您运行下面显示的命令,可以证实文件不是空的,但不包含实际数据:

$ ls -l /var/log/faillog
-rw-r--r-- 1 root root 32576 Nov 12 12:12 /var/log/faillog
$ od -bc /var/log/faillog
0000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
0077500

如果faillog文件确实在使用中,您应该会看到最近的活动,并不提及1969错误提示。
如何回应?
失败登录的原因有很多。可能是您的一个用户在大写锁定键开启的情况下试图登录,却没有注意到。也许用户最近更改了密码,却忘了更改密码这回事,尝试使用旧密码。也许用户在尝试在其他系统上使用的密码。如果您在运行查询时经常出现某个特定的帐户,应调查一下。然而,偶尔失败的登录尝试很常见。
检查设置
要查看系统如何经过设置来处理失败的登录,请检查/etc/pam.d/common-auth文件。它用于带有Linux可插拔身份验证模块(PAM)的系统。该文件中的两个设置控制着暂时锁定帐户之前允许多少次失败的登录尝试以及锁住该帐户多长时间。
六次失败的登录尝试后,这样一行将使PAM锁住帐户。锁住时间将持续五分钟(300秒)。

auth required pam_tally2.so deny=6 unlock_time=300

原文标题:Monitoring failed login attempts on Linux
作者:Sandra Henry-Stocker
51CTO:https://os.51cto.com/art/202012/633259.htm

Linux查看最近登录成功/失败的用户信息

https://www.jianshu.com/p/da0f0086ecae
最近登录失败的2个用户记录 并显示完整主机名

# lastb  -a

最近登录成功的2个用户记录
用户、终端、时间、在线时长** still logged in代表当前在线

[root@server06 ~]# last  -2
chen pts/1        ip-10-0-7-27.ap- Tue May 19 16:45   still logged in
case pts/2        ip-10-0-7-27.ap- Tue May 19 10:22 - 10:24  (00:01)

Linux w命令用于显示目前登入系统的用户信息
-f  开启或关闭显示用户从何处登入系统。
-h  不显示各栏位的标题信息列。
-i  显示实例IP地址
-s  使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。

显示当前用户,不显示登录位置

用户  终端  登陆主机名  登陆时间  限制时间  tty进程CPU使用率  当前进程CPU使用率  运行命令
[root@server06 ~]# w18:02:14 up 1 day, 11:02,  5 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    ip-10-0-7-27.ap- 16:47    1.00s  0.07s  0.00s w
root     pts/1    ip-10-0-7-27.ap- 16:53    49:57   0.00s  0.00s -bash
case     pts/2    ip-10-0-5-16.ap- 16:49    1:08m  0.00s  0.00s ping www.baidu.com
root     pts/3    ip-10-0-5-16.ap- 16:50    1:11m  0.00s  0.00s -bash
centos   pts/4    ip-10-0-7-27.ap- 16:54    1:08m  0.00s  0.00s -bash

显示IP地址

[root@server06 ~]# w -i18:05:01 up 1 day, 11:04,  5 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.7.27        16:47    5.00s  0.07s  0.00s w -i
root     pts/1    10.0.7.27        16:53    52:44   0.00s  0.00s -bash
case     pts/2    10.0.5.16        16:49    1:10m  0.00s  0.00s ping www.baidu.com
root     pts/3    10.0.7.27        16:50    1:14m  0.00s  0.00s -bash
centos   pts/4    10.0.5.16        16:54    1:10m  0.00s  0.00s -bash

显示centos登陆信息

[root@server06 ~]# last centos -5
centos   pts/4        ip-10-0-7-27.ap- Wed May 20 16:54   still logged in
centos   pts/4        ip-10-0-6-211.ap Fri May  8 12:34 - 13:20  (00:45)
centos   pts/1        ip-10-0-6-211.ap Wed May  6 11:46 - 13:20 (2+01:33)
centos   pts/1        ip-10-0-7-27.ap- Wed May  6 11:12 - 11:13  (00:01)
centos   pts/1        ip-10-0-7-27.ap- Wed May  6 09:39 - 09:41  (00:01)





参考链接 :

监测 Linux 上失败的登录尝试方法分享 :https://mp.weixin.qq.com/s/c3qG0W9lW__rnypjGzui0Q

Linux查看最近登录成功/失败的用户信息 : https://www.jianshu.com/p/da0f0086ecae

监测 Linux 上失败的登录尝试方法分享相关推荐

  1. linux脚本登录启动失败,在Linux上检查用户登录成功与失败的shell脚本

    在Linux上检查用户登录成功与失败的shell脚本 Linux管理员的典型任务之一是检查Linux系统中成功和失败的登录尝试. 手动验证它们非常困难,因为" /var/log/secure ...

  2. 在linux上获得线程id的方法

    From: http://www.linuxidc.com/Linux/2014-01/94723.htm 我使用了第二种方法,很方便: #define gettid() syscall(__NR_g ...

  3. php 运行外部程序_PHP在linux上执行外部命令的方法

    目录: 一.PHP中调用外部命令介绍 二.关于安全问题 三.关于超时问题 四.关于PHP运行linux环境中命令出现的问题 一.PHP中调用外部命令介绍 在PHP中调用外部命令,可以用,1>调用 ...

  4. linux怎样禁止他人远程,linux禁止用户远程登录的方法

    linux禁止用户远程登录的方法: 1.在新添加一个新用户的时候就指定这个用户不能远程登录 useradd  -s /sbin/nologin zgsj        //这里就是创建了一个不能远程登 ...

  5. linux18.04循环登陆,在Ubuntu 18.04 Bionic Beaver Linux上启用自动登录

    目的 目标是在Ubuntu 18.04 Bionic Beaver Linux上启用自动登录 操作系统和软件版本 操作系统: - Ubuntu 18.04 Bionic Beaver Linux 软件 ...

  6. linux mysql命令行导入_在linux中导入sql文件的方法分享(使用命令行转移mysql数据库)...

    因导出sql文件 在你原来的网站服务商处利用phpmyadmin导出数据库为sql文件,这个步骤大家都会,不赘述. 上传sql文件 前面说过了,我们没有在云主机上安装ftp,怎么上传呢? 打开ftp客 ...

  7. linux下次登录强制更改密码,如何强制用户在Linux上的下次登录时更改密码

    当你使用默认密码创建用户时,你必须强制用户在下一次登录时更改密码. 当你在一个组织中工作时,此选项是强制性的.因为老员工可能知道默认密码,他们可能会也可能不会尝试不当行为. 这是安全投诉之一,所以,确 ...

  8. 教你如何在 Linux 上为 SSH 登录设置电子邮件提醒

    在本文中介绍如何在Linux系统上为ssh登录设置电子邮件提醒.以接收有关对root用户的未经授权或非法登录访问的警报. .bashrc文件是做什么的? .bashrc文件是一个脚本,每当以交互方式启 ...

  9. linux上听FM程序,安装和使用Odio在Linux上收听FM收音机的方法

    Linux平台上有一些很棒的无线电应用程序可用于在Linux上收听FM Radio(收音机),本文介绍Odio,包括安装和使用它来收听FM收音机的方法. 启用S​​nap支持和安装Odio 由于Sna ...

最新文章

  1. Python语言学习 (七)1.1
  2. Hibernate映射配置方法
  3. 配置服务器文件,服务器配置文件
  4. Google排名第一的编程语言,死磕它这两点,小白也能学的会!不信你看!
  5. 复合选择器-后代选择器(HTML、CSS)
  6. android常见的限制符和屏幕适配
  7. 关于KNX/IP 网关协议报文解析以及几个注意事项
  8. JavaScript核心Web APIs
  9. 26.什么是梯度爆炸
  10. jndi weblogic mysql_在WebLogic新建针对Oracle数据库的JNDI数据源
  11. 在Xcode 中如何打包测试版 给测试工程师使用
  12. 一周技术思考(第21期)-人们说脏话的频率是衡量代码质量的唯一标准
  13. AD10 网络表添加
  14. StarUML——一款在MAC上的UML软件
  15. halfstone 原理_逻辑分析仪原理及其参数介绍
  16. 选择计算机还是医学专业排名,最好找工作的十大专业,医学仅第二
  17. 表格列宽width手动设置不生效,内联也没用
  18. 简单的用户登陆界面c程序
  19. 架构师眼中的文化:组织不扁平,3天后信息衰减到20%
  20. uniapp打包H5空白页面或者刷新404问题

热门文章

  1. 从零开始刷Leetcode——数组(1.26)
  2. AI还原历史真相,背后的原理竟然这么简单!
  3. 有效ip地址_计算机等级考试详解:用IP地址及域名访问web网站的正确说法
  4. python读取文件路径中有中文_转 python 读取中文文件名/中文路径
  5. java设置绝对布局_浅谈Java绝对布局 原创
  6. Ubuntu gerrit 安装配置
  7. [HTML5]使用Box2dWeb模拟射箭效果并添加能量槽
  8. android 应用创建桌面快捷方式
  9. 开发过程中常用的 dos 命令
  10. OpenGL常见函数功能查询