[笔记] BAD PASSWORD ,linux 修改密码历程

随着人们对安全意识的逐渐提升,Linux 中的密码策略也变得越来越复杂,导致使用 passwd 改密时需要花费大量时间来应付密码策略。这里回顾一下这艰难的改密之路。

背景

先描述一下我当前的环境,由于是在测试环境中,有大量用于测试的 Linux 主机,而且是所有人共用一个环境。由于 Linux 中的安全策略,导致每隔一段时间都要修改一次密码,否则就无法登录。那么问题来了,如果我改了密码,也就意味着当别人再尝试登录这个节点的时候就必须要知道我设置的新密码是什么。大家一起共同维护一个密码本文档是一个不错的主意。但是由于是测试环境,在没有安全策略的要求下,如果不修改密码或者密码修改为原来的密码对大家是最方便的。

先介绍一种终极改密方法,这个方法要求你当前拥有 root 权限,最好是能在 root 账号下执行命令。

密码文件 /etc/shadow

Linux 中的账号密码都是存在 /etc/shadow这个文件中,格式如下:

root:$6$O.Tl3mmBnJyGT9OX$B2c0FGTOLQwNMrLjK1T8fnrRRcklh7VUhXyy3YlvHqkjeIIwoRpNeMqL8niu6zxKsmI8euCbhjvCqq.BROeZr/:19682:0:99999:7:::
# root 用户名
# $6$0******$***** 密码加盐散列结果
# 19682 最后一次修改密码的日期
# 0 至少多少天修改一次密码
# 99999 最多多少天修改一次密码

其中 root 后面以 $ 开头的一段文本就是对应的账号密码,当然不是明文,而是通过 sha-1、sha-2 之类的散列算法处理之后的结果,当然无法被还原为原来的结果。但我们可以通过手动生成这段密码文本,然后替换到对应的位置,就能够不使用 passwd 就完成改密。

我们可以使用 openssl 命令生成这段散列密码:

# 生成一段密码散列,散列明文为 123456
> openssl passwd -6 123456
$6$ZsbAR/U7DbhfuPiI$O9z7VzKD6oFQKXm3S8X22tkF200MO9BlqfHF8e.IPaXgAndWPBpeVU.9mvcj2O94.KMVs7yeK5YYnEzB3rzQR1
# -salt 指定盐值,可以不指定
# -6 指定散列类型为 sha256/sha512

上面命令执行后生成的文本就是我们的密码散列了,我们可以将这段文本替换到 /etc/shadow 文件我们想要改密的账户下,就能够完成改密了。这样就能绕过 passwd 的安全策略了。

# 首先用 lsattr 查看 /etc/shadow 文件的权限
> lsattr /etc/shadow
----i---------e------- /etc/shadow
# 如果有 i 选项的话,可以使用 chattr 命令移除改该选型
> chattr -i /etc/shadow
# 在修改密码完成后,可以将属性添加回来
> chattr +i /etc/shadow

passwd 命令遇到的问题

Password has been used already. Choose another.

遇到的最痛苦的一个安全策略了,即密码已被使用,需要设置一个新的密码。如果想绕开这个策略,Linux 旧的密码文件保存在 /etc/security/opasswd 目录下,可以通过删除改文件移除历史用过的密码(root下)

/usr/bin/rm -f /etc/security/opasswd*

BAD PASSWORD: it is based on a dictionary word

这表示你的密码是基于 Linux 的安全策略字典,这个安全策略保存在了 /etc/pam.d/system-auth 文件中,可以通过调整文件中配置策略绕过该问题。

Authentication token manipulation error

root用户或者普通用户修改密码失败 ;报的错误 密码:身份验证令牌操作错误;一般是密码文件的权限的问题,或者是该用户锁定不能修改密码,或者是根目录空间满了。

首先查看磁盘空间是否满了df -hl,如果满了,查找出占用较大的无用文件清空或删除;常用到命令:

du -lh --max-depth=1 :查看当前目录下各文件大小
du -sh:查看当前目录总的大小
du -sh * | sort -n:统计当前目录下文件大小,并按文件大小排序
du -sk file_name:查看指定的file文件大小

其次可以用lsattr命令查看存放用户和密码的文件属性lsattr /etc/passwdlsattr /etc/shadow,(i:不得任意更动文件或目录),如果有i选项,则会导致所有的用户都不能修改密码,因为没有权限允许;
可以用chattr命令将i权限撤销 chattr -i /etc/passwdchattr -i /etc/shadow,然后再修改用户密码。

chattr +i /etc/passwd
# 添加 i 选项不得任意修改文件或目录
lsattr /etc/passwd
----i---------e------- /etc/passwd
# 通过 chattr -i 移除 i 属性
chattr -i /etc/passwd

faillock 账户锁定问题解决

examplesystem login: baeldung
The account is locked due to 3 failed logins.
(10 minutes left to unlock)
Password:

在 Linux 下当账户密码输入错误次数过多时,会被认为遇到了暴力破解攻击,在公网环境下当然需要认真对待,通过安装安全组件并部署安全策略来提高安全性。但是在测试环境下安全策略只会影响开发者们的拔刀速度,因此如果有足够的权限的话测试环境下还是禁掉这个安全策略吧。

# 直接使用 faillock 命令可以查看当前被禁用的账号以及登录的 ip
> faillock
ghimi:
When                Type  Source                                           Valid
2022-06-21 18:32:16 RHOST 192.168.0.22                                         V
2022-06-21 18:32:29 RHOST 192.168.0.22                                         V
2022-06-21 18:32:41 RHOST 192.168.0.22                                         V
user:
When                Type  Source                                           Valid
2022-06-21 19:12:23 TTY   pts/0                                    V> faillock --user baeldung  --reset   
# 使用 faillock --reset 命令接触禁用                                           

其他相关的文件

文件路径说明
/etc/passwd保存了一些账户的权限信息,包括权限策略
/etc/login.defs定义了一些密码过期策略

chage -l 查看账户密码过期策略:

root:~# chage -l root
Last password change (最后一次密码修改时间)               : Mar 03, 2024
Password expires   (密码过期时间)                        : never
Password inactive   (密码失效时间)                       : never
Account expires      (账户过期时间)                      : never
Minimum number of days between password change (最少修改密码天数) : 0
Maximum number of days between password change  (最多修改密码天数): 99999
Number of days of warning before password expires  (密码过期多少天前发出告警): 7

passwd -d cina 清除账户密码

passwd -d cina
# 通过 -d 选项可以清除一个账户的密码,后续登录账户时就不需要密码了

参考资料

  • Manually generate password for /etc/shadow
  • chage Command Examples in Linux
  • Linux 修改用户密码
  • 如何设置Linux密码复杂度策略?
  • How to clear password history in Linux
  • How to set password complexity on Linux
  • man-faillock

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/791683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache Doris 2.1.1 版本正式发布!

亲爱的社区小伙伴们,Apache Doris 2.1.1 版本已于 2024 年 4 月 3 日正式发布。该版本针对 2.1.0 版本出现的问题进行较为全面的优化,提交了若干改进项以及问题修复,进一步提升了系统的性能及稳定性,欢迎大家下载体验。 立即下载&…

ctf_show笔记篇(web入门---SSRF)

ssrf简介 ssrf产生原理: 服务端存在网络请求功能/函数,例如:file_get_contens()这一类类似于curl这种函数传入的参数用户是可控的没有对用户输入做过滤导致的ssrf漏洞 ssrf利用: 用于探测内网服务以及端口探针存活主机以及开放服务探针是否存…

C语言交换二进制位的奇数偶数位

基本思路 我们要先把想要交换的数的二进制位给写出来假如交换13的二进制位,13的二进制位是 0000 0000 0000 0000 0000 0000 0000 1101然后写出偶数位的二进制数(偶数位是1的) 1010 1010 1010 1010 1010 1010 1010 1010然后写出奇数位的二进…

uniapp切换中英文

一、安装 npm install uni-i18n --save 二、创建中英文切换的文件 1.英文en.js文件 2.中文zh_CN.js文件 三、 main.js中引用 // Vue i18n 国际化 import VueI18n from /common/vue-i18n.min.js; Vue.use(VueI18n);// i18n 部分的配置,引入语言包,注意路…

Linux :进程的程序替换

目录 一、什么是程序替换 1.1程序替换的原理 1.2更改为多进程版本 二、各种exe接口 2.2execlp ​编辑 2.2execv 2.3execle、execve、execvpe 一、什么是程序替换 1.1程序替换的原理 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往…

0基础安装配置Linux-ubuntu环境

Vmtools的安装参见 0基础教你安装VM 17PRO-直接就是专业许可证版_vm17许可证-CSDN博客 在vmtools中安装ubuntu 等待安装 这时候发现没有继续按钮,我们关闭这个界面,进入系统中,先更改分辨率 点击这个三角,因为还么有安装成功&am…

【Canavs与艺术】绘制蓝白绶带大卫之星勋章

【图例】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>用Canvas绘制蓝白绶带大卫之星勋章</title><style type&quo…

蓝桥杯每日一题(筛质数、最大公约数)

3792 质数问题 用的埃氏筛法&#xff0c;st数组保存是否被筛掉&#xff0c;遍历到的st为0的节点就是质数&#xff0c;将其保存。 然后遍历所有相邻的节点得到判断是否存在条件中的质数。 #include<bits/stdc.h> using namespace std; //3792 质数问题 const int N1010…

从 MongoDB 到 PostgreSQL 的大迁移

Infisical&#xff0c;一家做密钥管理的开源商业公司&#xff0c;主要对标的是 HashiCorp Vault Infisical 在过去一年里迅速发展&#xff0c;平台现在每天处理超过 5000 万个密钥&#xff0c;将应用程序配置和私密数据发送给需要的团队、CI/CD 流水线以及服务器 / 应用程序。 …

基于JSP的农产品供销服务系统

背景 互联网的迅猛扩张彻底革新了全球各类组织的运营模式。自20世纪90年代起&#xff0c;中国的政府机关和各类企业便开始探索利用网络系统来处理管理事务。然而&#xff0c;早期的网络覆盖范围有限、用户接受度不高、互联网相关法律法规不完善以及技术开发不够成熟等因素&…

Docker基本入门操作

概述 Docker是一个开放源代码软件&#xff0c;用于自动化应用程序的部署&#xff0c;它允许开发者将应用程序打包到容器中&#xff0c;这些容器在任何地方都能被快速部署和运行。容器虚拟化了操作系统层&#xff0c;使不同的应用程序能够在相同的硬件上安全地运行&#xff0c;…

Python如何解决“滑动拼图”验证码(8)

前言 本文是该专栏的第67篇,后面会持续分享python爬虫干货知识,记得关注。 做过爬虫项目的同学,或多或少都会接触到一些需要解决验证码才能正常获取数据的平台。 在本专栏之前的文章中,笔者有详细介绍通过python来解决多种“验证码”(点选验证,图文验证,滑块验证,滑块…

汽车EDI:如何与奔驰建立EDI连接?

梅赛德斯-奔驰是世界闻名的豪华汽车品牌&#xff0c;无论是技术实力还是历史底蕴都在全球汽车主机厂中居于领先位置。奔驰拥有多种车型&#xff0c;多元化的产品布局不仅满足了不同用户画像的需求&#xff0c;也对其供应链体系有着极大的考验。 本文将为大家介绍梅赛德斯-奔驰乘…

在s390x架构机器上构建frps/frpc镜像 —— 筑梦之路

源码&#xff1a;GitHub - fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. # 克隆代码git clone https://github.com/fatedier/frp.git# 切换目录cd frp# 构建frps服务端docker build -t frps:s390x -f …

c++ 实现线程池、实现异步接口

c 实现线程池&#xff0c;下面给出测试用例 mian.cpp #include <iostream> #include <thread> #include <chrono>#include "threadpool.h" #include "callback_proxy.h"using namespace std; using namespace Demo;bool GetTimeImpl(int…

目标检测——车牌数据集

一、重要性及意义 交通安全与管理&#xff1a;车牌检测和识别技术有助于交通管理部门快速、准确地获取车辆信息&#xff0c;从而更有效地进行交通监控和执法。例如&#xff0c;在违规停车、超速行驶等交通违法行为中&#xff0c;该技术可以帮助交警迅速锁定违规车辆&#xff0…

零日攻击

简介 零日攻击&#xff0c;原名Zero-Day Attack&#xff0c;是指利用软件或系统中未被发现的安全漏洞进行的攻击。攻击者利用这些漏洞来执行恶意代码、窃取数据或控制系统&#xff0c;而系统开发者还未发布相应的补丁或安全更新来修复这些漏洞。 类型 利用已知漏洞的零日攻击…

docker安装jenkins 2024版

docker 指令安装安装 docker run -d --restartalways \ --name jenkins -uroot -p 10340:8080 \ -p 10341:50000 \ -v /home/docker/jenkins:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:lts访问…

简述vue3新特性

Vue 3 带来了许多新特性和改进&#xff0c;其中最重要的是 Composition API。但除了这个&#xff0c;Vue 3 还在模板语法、指令、组件等方面有所更新。以下是对 Vue 3 语法的详细说明&#xff1a; Composition API Vue 3 引入了 Composition API&#xff0c;这是一种新的、可…

es创建索引(mapping和setting)

1、首先定义一个索引&#xff0c;如下 PUT /person_news {"settings": {"index": {"number_of_shards": "3","number_of_replicas": "0","max_result_window": "2000000000"}},"mappin…