Linux登录验证机制、SSH Bruteforce Login学习

From:http://www.cnblogs.com/LittleHann/p/3662161.html?utm_source=tuicool

本文希望侧重学习一些SSH登录过程中所涉及到的验证机制、以及在暴力穷举中我们应该使用的方法

相关学习资料

目录

Linux中的登录验证机制

谈及”登录验证”这个概念,小瀚觉得应该要在不同的场景下进行具体讨论,Linux中的登录验证机制可以分为以下几类:

1. 系统级的登录验证:

系统级的登录指的是我们登录Linux系统时显示的那个login: 提示,要登录tty终端,我们就必须通过这个登录。这是一个系统级的登录验证(和windows下的winLogin.exe是一个概念)

linux系统里管理用户及密码的两个重要的文件

/etc/passwd包含各个用户的信息,linux平台包含七个字段,各个字段间用冒号隔开,分别是:

测试代码: passwd.c

/etc/shadow包含用户的密码信息,在linux中包含九项内容,分别是:

测试代码: shadow.c

关于Linux的系统级login登录验证的原理学习,请参阅”相关资料中给出的链接”

2. 第三方应用程序登录验证机制

对于Linux上的很多应用程序(windows上也一样),应用程序可以自己维护一套身份认证信息库是很普遍的,这种密码验证机制的方式、加密的算法、存储的方式很大程度上取决于开发软件的程序员的想法。同时,第三方应用也可以以系统中的核心密码文件(/etc/passwd、/etc/shadow)作为身份信息库,这样,用户在登录的时候,需要输入的就是Linux系统本身的账户密码。总体来说,有一下几种身份验证方式

1) 将账户信息保存在磁盘的xx.ini配置文件中(加密方式可选)

2) 将账户信息保存在本地、或者远程的数据库中(在mysql中建立相应的库、表)

3) 利用Linux自身固有的账户密码文件作为身份信息库(/etc/passwd、/etc/shadow)(实现方式请参阅1)

3. PAM身份验证

PAM(插入式验证模块(Pluggable Authentication Module,PAM))
简单来说,就是提供了一组身份验证、密码验证的统一抽象接口,应用程序员可以使用这些API接口来实现与安全性相关的功能,例如:

相对于传统的应用系统各自生成自己独立的身份验证机制,使用PAM架构,安全性、兼容性、可扩展性都更好,因为PAM机制将多个低级别验证模式继承到高级别API中,该API将允许以独立于底层验证模式的方式编写验证模块。我们知道,既然PAM的目标是可扩展性、封装底层实现细节,则它的整体表现基本上会表现为可插拔的模块的形式,即PAM提供一个承上启下的基础环境,向下针对不同的密码存储、验证方式分别进行了模块实现,向上暴露出的API接口则针对每一种具体的应用封装了一个API模块,当某一个应用要使用PAM的时候,只需要动态地加载这个模块即可。

PAM中的动态验证配置信息保存在/etc/pam.d 或 /etc/pam.conf中

PAM 模块的基本流程

显示 PAM 如何处理配置文件的流程图

PAM模块的结构(例如/etc/pam.d/passwd)
PAM 模块是按模块类型归类的。任何给定的模块至少要实现四种模块类型功能之一:

之前说过,PAM的整体架构是一个承上启下的架构,在上层是针对不同的应用系统提供不同的动态加载模块,在/etc/pam.d/xxx中可以对它们进行配置。而在下层,PAM需要封装对密码验证、身份验证、访问控制等功能的代码模块
PAM将提供不同的功能,例如单点登录验证、访问控制等。每个功能的实现都是由不同的模块处理的。下面是一些主要模块:

4. 基于网络的中心式身份验证

基于网络的中心式身份验证常常表现为一个中心服务器(中心式的网状结构),上面保存了所有账户的身份信息,应用程序在验证待登录用户的身份时,直接将原始请求发送到中心服务器进行集中式验证,然后根据验证结果决定此用户是否能登录。

集中式身份认证的技术主要有以下几种:

SSH中的登录验证机制

在基本了解了Linux下的登录身份验证后,我们接下来学习一下SSH中都有哪些身份验证机制。这里所指的SSH都是指在Linux、Unix上普遍使用的openSSH开源软件

SSH的配置文件所在位置:

/etc/ssh/sshd_config

我们根据它的配置文件来学习SSH中的身份登录验证机制

0x1: PasswordAuthentication

0x2: ChallengeResponseAuthentication

0x3: RSAAuthentication、PubkeyAuthentication

0x4: KerberosAuthentication

0x5: GSSAPIAuthentication

0x6: UsePAM

关于SSH的这几种密码验证机制,我在本地实验的时候总结了一下它们的顺序

SSH Bruteforce Login的相关方法

SSH的暴力破解,或者说所有系统的暴力破解都有两个思考方向:

1. 穷举

2. 算法攻击

接下来希望解决的问题

  1. 暂无评论

return top