热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

在Linux中从隐藏密码迁移至tcb

文章标题:在Linux中从隐藏密码迁移至tcb。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

    隐藏密码作为Linux产品的既定事实标准已经有好多年了,md5密码的使用亦是如此。但是,使用传统的隐藏密码方法也有不足之处,甚至md5也不像以前那么安全了。

    隐藏密码文件的一个缺点就是,任意一个需要查询个别隐藏密码(如您的密码)的应用程序也可以看到其他人的隐藏密码,这也就意味着任意一个可以读取隐藏文件的恶意工具都能够获得别人的隐藏密码。

    除了隐藏,还有一个叫做tcb的可供选择的办法,它由Openwall Project编写,可以从tcb主页上获取。迁移到tcb虽然需要做一些工作,但是相当直接。因为只有Openwall GNU/*/Linux、ALT Linux、和Annvix 直接支持tcb。要为您选择的流通产品获得tcb支持,您必须重新编辑几个程序,打上补丁。

    从tcb站点上,您可以下载tcb程序,并将它和相关的pam_tcb和nss_tcb库一起进行编辑。您还需要打上支持crypt_blowfish的glibc补丁(像SUSE一样的有些产品可能已经可以支持blowfish密码,就不需要再打补丁了)。

    也许您还想为shadow-utils组打上补丁;取决于您的产品所采用的shadow-utils的版本,您可以从Openwall CVS为shadow-utils 4.0.4.1或从Annvix SVN储存库为4.0.12获得所需的补丁。像adduser、chage等这样的工具中的Shadow-utils需要被打上补丁,提供tcb支持。在tcb页面上有可以打glibc补丁的最新crypt_blowfish的链接。

    一旦这些先决条件都满足了,且tcb编译和安装以后,只需简单地将/etc/pam.d/*文件中的所有调用都替换为pam_unix.so和/或pam_pwdb.so就行了。然后就可以像列表A中那样使用pam_tcb.so了。

列表A

auth

required

pam_env.so

auth

required

pam_tcb.so shadow fork nullok prefix=$2a$ count=8

 

 

 

account

required

pam_tcb.so shadow fork

password

required

pam_passwdqc.so min=disabled,12,8,6,5 max=40 passphrase=3 match=4 similar=deny random=42 enforce=everyone retry=3

password

required

pam_tcb.so use_authtok shadow write_to=tcb fork nullok prefix=$2a$ count=8

session

required

pam_limits.so

session

required

pam_tcb.so

    如果您希望继续使用md5密码,而不是blowfish密码,将prefix=$2a$ count=8一条从密码行移除,同时,您还需要修改/etc/nsswitch.conf,让隐藏行改读:

shadow:     tcb nisplus nis

    passwd程序需要sgid隐藏,而不是suid根,并且/etc/login.defs中要包括USE_TCB yes。这些完成以后,您就可以执行/sbin/tcb_convert程序,将隐藏文件转换成为适当的单一用户文件了,这些文件将储存在/etc/tcb/中。做完这些之后,移除/etc/shadow和/etc/shadow-文件,然后您的系统就可以使用tcb了。

    获得tcb支持可能需要花点功夫,但遗憾的是更多的产品没有提供支持,它们既没有本地支持也没有通过插件来支持。使用tcb,连同blowfish密码一起,会为您的Linux产品提供一个安全得多的密码系统。


推荐阅读
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • Java源代码安全审计(二):使用Fortify-sca工具进行maven项目安全审计
    本文介绍了使用Fortify-sca工具对maven项目进行安全审计的过程。作者通过对Fortify的研究和实践,记录了解决问题的学习过程。文章详细介绍了maven项目的处理流程,包括clean、build、Analyze和Report。在安装mvn后,作者遇到了一些错误,并通过Google和Stack Overflow等资源找到了解决方法。作者分享了将一段代码添加到pom.xml中的经验,并成功进行了mvn install。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
author-avatar
亲眼耳闻目睹42
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有