Linux登陆失败处理功能

本文涉及的产品
运维安全中心(堡垒机),免费版 6个月
运维安全中心(堡垒机),企业双擎版|50资产|一周时长
简介: Linux登陆失败处理功能 本文要实现的功能:如果有人恶意尝试破解你的服务器密码,那么这个功能就能帮你起到一定的作用,当尝试密码错误超过设定的次数后,就会锁定该账户多长时间(自行设定),时间过后即可自行解锁,这样可以增加攻击者的成本。

Linux登陆失败处理功能

 本文要实现的功能:如果有人恶意尝试破解你的服务器密码,那么这个功能就能帮你起到一定的作用,当尝试密码错误超过设定的次数后,就会锁定该账户多长时间(自行设定),时间过后即可自行解锁,这样可以增加攻击者的成本。

   服务器系统:centos6.5(centos其他版本应该也是可以的,请自行测试)


1.备份要操作的两个配置文件

cp /etc/pam.d/sshd /etc/pam.d/sshd.bak

cp /etc/pam.d/login /etc/pam.d/login.bak


2.检查是否有pam_tally2.so模块

[root@iZ25dd99ylmZ security]# find /lib* -iname"pam_tally2.so"/lib64/security/pam_tally2.so

[root@iZ25dd99ylmZ security]# find /lib* -iname"pam_tally.so"[root@iZ25dd99ylmZ security]# cat /etc/pam.d/sshd

3.登录失败处理功能策略(服务器终端)

编辑系统/etc/pam.d/system-auth 文件,在 auth 字段所在的那一部分策 略下面添加如下策略参数:

auth required pam_tally2.so  onerr=fail  deny=3  unlock_time=40 even_deny_root root_unlock_time=30

注意添加的位置,要写在第一行,即#%PAM-1.0的下面。

以上策略表示:普通帐户和 root 的帐户登录连续 3 次失败,就统一锁定 40 秒, 40 秒后可以解锁。如果不想限制 root 帐户,可以把  even_deny_root root_unlock_time

这两个参数去掉, root_unlock_time 表示 root 帐户的 锁定时间,onerr=fail 表示连续失败,deny=3,表示 超过3 次登录失败即锁定。

注意:

用户锁定期间,无论在输入正确还是错误的密码,都将视为错误密码,并以最后一次登录为锁定起始时间,若果用户解锁后输入密码的第一次依然为错误密码,则再次重新锁定。


查看日志 tail -f /var/log/secure 可以看出下面的提示

img_6116afaa6dcb97470058e18aaf92cf6a.png


4.登录失败处理功能策略(ssh远程连接登录)

上面只是限制了从终端登陆,如果想限制ssh远程的话, 要改的是

/etc/pam.d/sshd这个文件,添加的内容跟上面一样!

 如果在操作中间出现下面这个错误:

Dec715:06:51iZ2zee7gmy40tbverl53rfZ sshd[15747]: PAM unable to dlopen(/lib64/security/pam_tally.so): /lib64/security/pam_tally.so: cannot open sharedobjectfile:No such file or directoryDec715:06:51iZ2zee7gmy40tbverl53rfZ sshd[15747]: PAM adding faulty module: /lib64/security/pam_tally.so

上面的错误意思是在/lib64/security/ 下面找不到pam_tally.so,而我进入到目录下,确实没找到这个文件,解决方法是将现有的 pam_tally2.so做个软连接到pam_tally.so

[root@iZ2zee7gmy40tbverl53rfZ ~]# cd /lib64/security/

[root@iZ2zee7gmy40tbverl53rfZ ~]#ln -s pam_tally2.so pam_tally.so

5.测试

可以故意输错密码超过三次,然后第五次输入正确密码,如果正确密码进入不了系统,说明配置生效。以上的配置是即时生效的,不用重启配置文件或系统,但是请注意多开个ssh

窗口,防止配置文件更改错误,将自己关在服务器外面。

6.解锁账户

如果密码在锁定时间内,但是又要立即进入系统,可使用下面方法解锁被锁定用户,当然这是对于root用户解锁普通用户来说的。如果root用户被锁,请等待锁定期过后在操作。


查看用户失败次数

[root@localhost ~]# pam_tally2          --------------------查看所有用户登录失败次数

[root@localhost ~]# pam_tally2 --user root      ------------指定查看登录失败的用户次数

解锁指定用户

[root@iZ25dsfp6c3dZ ~]# pam_tally2 -r -u albert  

img_51e409b11aa51c150090697429a953ed.gif

[root@iZ2zee7gmy40tbverl5Z ~]# pam_tally2 --user root

Login          Failures Latest failure    From

root                512/07/1717:05:5449.4.151.18[root@iZ2zee7gmy40tbverl5Z ~]# pam_tally2 -r -u root

Login          Failures Latest failure    From

root                512/07/1717:05:5449.4.151.18[root@iZ2zee7gmy40tbverlfZ ~]# pam_tally2 -r -u root    ###解锁之后随即失败次数归零,此时即可登录系统

Login          Failures Latest failure    From

root                0   

[root@iZ2zee7gmy40tbverlfZ ~]#

目录
相关文章
|
4月前
|
存储 网络协议 Ubuntu
【Linux开发实战指南】基于UDP协议的即时聊天室:快速构建登陆、聊天与退出功能
UDP 是一种无连接的、不可靠的传输层协议,位于IP协议之上。它提供了最基本的数据传输服务,不保证数据包的顺序、可靠到达或无重复。与TCP(传输控制协议)相比,UDP具有较低的传输延迟,因为省去了建立连接和确认接收等过程,适用于对实时性要求较高、但能容忍一定数据丢失的场景,如在线视频、语音通话、DNS查询等。 链表 链表是一种动态数据结构,用于存储一系列元素(节点),每个节点包含数据字段和指向下一个节点的引用(指针)。链表分为单向链表、双向链表和循环链表等类型。与数组相比,链表在插入和删除操作上更为高效,因为它不需要移动元素,只需修改节点间的指针即可。但访问链表中的元素不如数组直接,通常需要从
272 2
|
3月前
|
监控 安全 Linux
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
|
4月前
|
Linux 数据可视化 开发者
|
2月前
|
存储 缓存 Linux
Linux文件系统的功能规划
【9月更文挑战第12天】本文通过类比图书馆,形象地解释了文件系统的组织形式和管理方法。首先,文件系统需按块存储文件,并设有索引区方便查找。其次,热点文件应有缓存层提高效率,文件需分类存储以便管理。最后,Linux内核需记录文件使用情况,通过文件描述符区分不同文件,确保文件操作准确无误。
|
3月前
|
Linux C++ Docker
【Azure 应用服务】App Service for Linux 中实现 WebSocket 功能 (Python SocketIO)
【Azure 应用服务】App Service for Linux 中实现 WebSocket 功能 (Python SocketIO)
|
3月前
|
网络协议 安全 Linux
在Linux中,内核主要功能及作用是什么?
在Linux中,内核主要功能及作用是什么?
|
4月前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
193 1
|
4月前
|
负载均衡 Java Linux
黑马头条01,环境搭建,今日头条的介绍,今日头条的功能架构图,技术栈的说明,服务层,nacos(奶靠丝)安装,安装在Linux服务器上环境准备,
黑马头条01,环境搭建,今日头条的介绍,今日头条的功能架构图,技术栈的说明,服务层,nacos(奶靠丝)安装,安装在Linux服务器上环境准备,
|
5月前
|
Web App开发 Linux 数据处理
深入理解Linux命令pkill:功能、原理与最佳实践
**pkill命令详解:在Linux中,pkill用于按进程名终止进程,简化了通过PID管理进程的步骤。它利用正则匹配支持模糊查找,可发送不同信号如SIGTERM或SIGKILL。常用示例包括:终止指定进程名、按用户或终端终止进程,以及使用-f进行模糊匹配。注意谨慎使用,避免误杀重要进程,先发送SIGTERM,无效再用SIGKILL。了解其权限需求和配合ps命令使用,能提升系统管理效率。**
|
5月前
|
Java Linux 网络安全
Linux常用50个命令分享:功能、示例与实用技巧
Linux常用50个命令分享:功能、示例与实用技巧
下一篇
无影云桌面