linux尝试登录失败后锁定用户账户的两种方法

在Linux中,有时候出于安全考虑需要在一定的登陆尝试次数失败后锁定用户账户来防止恶意攻击和暴力破解等行为。以下是两种常用的锁定用户账户的方法:

方法一:使用pam_tally2

1. 安装pam_tally2

pam_tally2是一个账户锁定模块,提供了一种在用户尝试次数达到限制后锁定账户的方式。

要使用pam_tally2,需要先安装它。在Debian系列的Linux中,使用以下命令进行安装:

sudo apt-get update && sudo apt-get install libpam-tally2

2. 配置pam_tally2

在配置pam_tally2之前,需要注意以下几点:

  • pam_tally2需要进行权限配置,只会对有权限的用户有效。
  • pam_tally2只会在用户认证过程中计数。

编辑/etc/pam.d/common-auth文件,在文件末尾添加以下行:

auth required pam_tally2.so deny=5 unlock_time=120 fail_interval=10

这里解释一下各个参数的含义:

  • deny:表示达到锁定阈值后deny用户,默认为0代表禁止登录。
  • unlock_time:表示锁定的时长,在此时间内无法登录,默认为0代表需要管理员手动解锁。
  • fail_interval:表示认证尝试失败的时间间隔,单位为秒,默认为0代表不启用此功能。

3. 测试pam_tally2

在配置修改完成后,需要重新启动ssh服务,将修改的内容生效:

sudo systemctl restart ssh

之后,可以进行测试,使用错误的密码进行多次尝试,在5次失败后,会自动锁定账户,并提示:

login: user
Password:
Password:
Password:
Password:
Password:
Account locked due to 5 failed login attempts; please contact your system administrator

在120秒后即可自动解锁。

方法二:使用fail2ban

fail2ban是一个基于日志的安全应用程序。它监控系统日志,发现恶意行为后自动加入防火墙规则或锁定账户。

以下是在Debian系列的Linux中使用fail2ban来锁定账户的方法:

1. 安装fail2ban

使用以下命令进行安装:

sudo apt-get update && apt-get install fail2ban

2. 配置fail2ban

fail2ban的配置文件是/etc/fail2ban/jail.local。通过修改此文件,可以修改规则和行为。

在文件末尾添加以下规则:

[ssh]
maxretry = 5
bantime = 120

这里解释一下各个参数的含义:

  • maxretry:表示达到锁定阈值后锁定用户。
  • bantime:表示锁定的时长,单位为秒。

3. 测试fail2ban

在配置文件修改完毕后,需要重新启动fail2ban服务:

sudo systemctl restart fail2ban

之后,可以进行测试,使用错误的密码进行尝试,在5次失败后,会自动锁定账户并加入防火墙规则。在120秒后,规则会自动解除。

参考示例:

在Debian系列的Linux中,可以通过以下方式查看fail2ban的防火墙规则:

sudo iptables -L

可以发现,在5次失败后,系统自动加入了以下规则:

Chain fail2ban-ssh (1 references)
target     prot opt source               destination         
REJECT     all  --  45.118.134.133       anywhere             reject-with icmp-port-unreachable
RETURN     all  --  anywhere             anywhere

其中,45.118.134.133为攻击者的IP地址。这样,攻击者从此IP地址进行访问将会被拒绝。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:linux尝试登录失败后锁定用户账户的两种方法 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • mysql高级、索引

    1.视图 # 引子 select * from emp left join dep on emp.dep_id = dep.id union select * from emp right join dep on emp.dep_id = dep.id; create view temp(emp_id,emp_name,salary,dep_id,dep_i…

    MySQL 2023年4月12日
    00
  • MongoDB索引使用注意事项

    在使用MongoDB数据库时,索引是提高查询性能的重要工具。以下是MongoDB索引使用的注意事项。 选择合适的索引类型 MongoDB支持多种类型的索引,包括单字段、组合、文本、地理位置等类型。在选择索引类型时,需要根据具体的查询需求和数据类型进行选择,避免过分依赖索引导致性能下降。 考虑索引的大小和内存占用 索引的大小和内存占用都会对查询性能有影响。索引…

    MongoDB 2023年3月14日
    00
  • SQL Server序列SEQUENCE用法介绍

    SQL Server序列SEQUENCE用法介绍 序列SEQUENCE是什么? 序列SEQUENCE是SQL Server 2012及以上版本引入的一种新对象,可以生成不重复的数字序列,用于生成主键或其他需要连续数字的场景。 如何创建序列SEQUENCE? 可以使用以下语法创建序列SEQUENCE: CREATE SEQUENCE [schema_name …

    database 2023年5月21日
    00
  • 使用Redis实现用户积分排行榜的教程

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/129.html?1455808528 排行榜功能是一个很普遍的需求。使用 Redis 中有序集合的特性来实现排行榜是又好又快的选择。 一般排行榜都是有实效性的,比如“用户积分榜”。如果没有实效性一直按照总榜来排,可能榜首总是几个老用户…

    Redis 2023年4月13日
    00
  • docker-compose 安装 mysql:5.7.31

        目录 一.新建一个启动服务的目录 二.新建文件docker-compose.yml 三.新建角本文件 init-mysql.sh 四.实使化目录和配置文件 启动服务 登陆mysql 其它操作   参考文档: 一.新建一个启动服务的目录 mkdir /usr/local/docker/mysql cd /usr/local/docker/mysql 二…

    MySQL 2023年4月13日
    00
  • 关于mysql中时间日期类型和字符串类型的选择

    首先,需要了解MySQL中的时间日期和字符串类型分别是什么。 时间日期类型包括: DATE: 日期类型,允许的范围为’1000-01-01’到’9999-12-31’。 TIME: 时间类型,以’HH:MM:SS’的格式存储,范围为’-838:59:59’到’838:59:59’。 DATETIME: 日期和时间类型,以’YYYY-MM-DD HH:MM:S…

    database 2023年5月22日
    00
  • SQL 统计字符出现的次数

    下面是关于SQL统计字符出现次数的完整攻略,包括两条实例。 统计某个字符在字符串中出现的次数 可以使用MySQL中的内置函数LENGTH,REPLACE和LENGTH。 比如,我们要统计字符串hello中字符l出现的次数,可以使用以下的MySQL语句: SELECT LENGTH(‘hello’) – LENGTH(REPLACE(‘hello’, ‘l’,…

    database 2023年3月27日
    00
  • 教你如何在windows与linux系统中设置MySQL数据库名、表名大小写敏感

    在Windows系统中设置MySQL数据库名、表名大小写敏感 在 Windows 系统中,MySQL 的数据库名和表名默认是不区分大小写的。但是,在一些特殊场景下,需要设置 MySQL 数据库名、表名大小写敏感。下面是具体的操作流程: 打开 MySQL 的配置文件 my.ini; 找到 [mysqld] 部分,添加以下两行配置: lower_case_tab…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部