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日

相关文章

  • Ubuntu 20.04 安装和配置MySql5.7的详细教程

    Ubuntu 20.04 安装和配置MySQL 5.7的详细教程 MySQL是一个流行的关系型数据库管理系统,它被广泛应用于 Web 应用程序的开发中。在本教程中,我们将学习如何在 Ubuntu 20.04 上安装和配置 MySQL 5.7。 步骤 1 – 更新软件包列表 在开始安装 MySQL 5.7 之前,我们需要更新 Ubuntu 20.04 的软件包…

    database 2023年5月18日
    00
  • 用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化

    什么是Django框架中的QuerySet Django框架中的QuerySet是一种延迟执行的查询,它包含了符合查询条件的所有数据库实例。当我们在代码中对QuerySet进行一系列的操作后,Django会在最终需要用到QuerySet的时候才会将查询结果从数据库中调取。 QuerySet和数据库查询的关系 因为QuerySet是一种类似于数组的数据结构,在…

    database 2023年5月19日
    00
  • MySQL语句执行顺序和编写顺序实例解析

    MySQL语句执行顺序和编写顺序实例解析 执行顺序 MySQL中SQL语句的执行顺序通常按照如下顺序: FROM JOIN WHERE GROUP BY HAVING SELECT DISTINCT ORDER BY LIMIT 上述顺序中,FROM和JOIN界定了查询的数据集合,WHERE过滤数据,GROUP BY和HAVING对数据进行分组和过滤,SEL…

    database 2023年5月21日
    00
  • MySQL高级进阶sql语句总结大全

    MySQL高级进阶SQL语句总结大全 这篇文章主要介绍MySQL高级进阶SQL语句的总结大全,包括常用的高级SQL语句的使用方法和示例。 一、排序 1.1 ORDER BY 用法:ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], … [ASC|DESC] 示例:假设有一个student表,其中包含3个字段,…

    database 2023年5月21日
    00
  • 如何使用Python在MySQL中使用分组查询?

    在MySQL中,分组查询是一种将数据分组并对每个组执行聚合函数的查询。在Python中,可以使用MySQL连接来执行分组查询。以下是在Python中分组查询的完整攻略,包分组查询的基本语法、使用分组查询的示例以及如何在Python中使用分组查询。 分组查询的基本语法 分组查询的基本语法如下: SELECT column_name(s) FROM table_…

    python 2023年5月12日
    00
  • 如何在Python中使用MongoDB数据库?

    以下是在Python中使用MongoDB数据库的完整使用攻略。 使用MongoDB数据库的前提条件 在使用Python连接MongoDB数据库之前,确保已经安装了MongoDB数据库,并已经创建使用数据库和集合,同时需要安Python的驱动程序,例如pymongo。 步骤1:导入模块 在Python中使用pymongo模块连接MongoDB数据库。以下是导入…

    python 2023年5月12日
    00
  • MySQL 逻辑备份与恢复测试的相关总结

    MySQL 逻辑备份与恢复测试的相关总结攻略 概述 MySQL 逻辑备份是指将数据库中数据导出为标准的 SQL 脚本的过程,而恢复则是将导出的 SQL 脚本运行到 MySQL 服务器上,以便将数据库中的数据恢复到原始状态。MySQL 逻辑备份有利于数据的迁移、备份和还原。本文将总结关于 MySQL 逻辑备份与恢复测试的相关经验,并提供相应的攻略。 MySQL…

    database 2023年5月21日
    00
  • Linux怎么添加mysql系统环境变量

    这篇文章主要讲解了“Linux怎么添加mysql系统环境变量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux怎么添加mysql系统环境变量”吧! Linux添加mysql系统环境变量 昨天安装完mysql后,直接在export PATH上面一行,增加了export PATH=/usr/local/my…

    MySQL 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部