首页 > 其他分享 >系统安全及应用

系统安全及应用

时间:2022-10-31 09:35:46浏览次数:34  
标签:系统安全 passwd 用户 应用 PAM su 模块 pam

 

 

 

 

账号安全基本设施:

将非登陆用户的Shell设为 /sbin/noiogin

锁定长期不使用的账号

删除无用的账号

锁定账号密码  passwd  shadow

将用户设置成无法登录

 锁定用户

 删除账户

 锁定配置文件

 密码安全控制

 

 

chage

chage [选项] 用户名

-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。

-M:密码保持有效的最大天数。

-w:用户密码到期前,提前收到警告信息的天数。

-E:帐号到期的日期。过了这天,此帐号将不可用。

-d:上一次更改的日期。

-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。

-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

 命令历史

Shell 环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在 的风险。只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在 命令行输入明文的密码,则无意之中服务器的安全壁垒又多了一个缺口。 Bash 终端环境中,历史命令的记录条数由变量 HISTSIZE 控制,默认为 1000 条。通 过修改/etc/profile 文件中的 HISTSIZE 变量值,可以影响系统中的所有用户。例如,可以设 置最多只记录 200 条历史命令。

历史命令清除

history -c

clear

 

 切换用户

su命令即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令

切换用户的方式:

su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换

su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换

说明:root su至其他用户无须密码;非root用户切换时需要密码

注意:su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。

su 与 su-

即有 - 选项,切换用户身份更彻底;反之,只切换了一部分,这会导致某些命令运行出现问题或错误

切换用户实验

 

限制使用su命令的用户实验

 

1  以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。
2  两行都注释也是允许所有用户都能使用su命令,但root'下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam rootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码。)
3  如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令
4  如果注释第一行,开启第二行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令。

 

 PAM安全认证  二进制语言  两个不同的应用证明对接 数据库如何和我网页服务对接

API 接口,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序一种认证框架,自身不做认证。

 

type:指模块类型,即功能
control :PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关健词实现
module-path: 用来指明本模块对应的程序文件的路径名
Arguments: 用来传递给该模块的参数

 

 PAM提供了对所有服务进行认证的中央机制,适用于本地登录,远程登录,如:telnet,rlogin,fsh,ftp,点对点协议PPP,su等应用程序中,系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略;应用程序开发者通过在服务程序中使用PAM API(pam_xxxx( ))来实现对认证方法的调用;而PAM服务模块的开发者则利用PAM SPI来编写模块(主要调用函数pam_sm_xxxx( )供PAM接口库调用,将不同的认证机制加入到系统中;PAM接口库(libpam)则读取配置文件,将应用程序和相应的PAM服务模块联系起来

PAM相关文件

包名: pam

模块文件目录:/lib64/security/*.so

特定模块相关的设置文件:/etc/security/

应用程序调用PAM模块的配置文件

1主配置文件:/etc/pam.conf,默认不存在,一般不使用主配置

2为每种应用模块提供一个专用的配置文件:/etc/pam.d/APP_NAME

3注意:如/etc/pam.d存在,/etc/pam.conf将失效

 PAM工作原理

PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so

PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证

 

 

 

PAM认证过程:

1.使用者执行/usr/bin/passwd 程序,并输入密码

2.passwd开始调用PAM模块,PAM模块会搜寻passwd程序的PAM相关设置文件,这个设置文件一般是在/etc/pam.d/里边的与程序同名的文件,即PAM会搜寻/etc/pam.d/passwd此设置文件

3.经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证

4.将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)

专用配置文件/etc/pam.d/ 格式:

1.使用者执行/usr/bin/passwd 程序,并输入密码

2.passwd开始调用PAM模块,PAM模块会搜寻passwd程序的PAM相关设置文件,这个设置文件一般是在/etc/pam.d/里边的与程序同名的文件,即PAM会搜寻/etc/pam.d/passwd此设置文件

3.经由/etc/pam.d/passwd设定文件的数据,取用PAM所提供的相关模块来进行验证

4.将验证结果回传给passwd这个程序,而passwd这个程序会根据PAM回传的结果决定下一个动作(重新输入密码或者通过验证)

type:指模块类型,即功能 control :PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关健词实现 module-path: 用来指明本模块对应的程序文件的路径名 Arguments: 用来传递给该模块的参数

 

 

第三列代表PAM模块,

默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。 同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。

每一行都是一个独立的认证过程; 每一行可以区分为三个字段: 认证类型 控制类型 PAM 模块及其参数 PAM 认证类型包括四种: 认证管理(authentication management):接受用户名和密码,进而对该用户的密码进行认证; 帐户管理(account management):检查帐户是否被允许登录系统,帐号是否已经过 期,帐号的登录是否有时间段的限制等; 密码管理(password management):主要是用来修改用户的密码; 会话管理(session management):主要是提供对会话的管理和记账。 控制类型也可以称做 Control Flags,用于 PAM 验证类型的返回结果。 1)required 验证失败时仍然继续,但返回 Fail 2)requisite 验证失败则立即结束整个验证过程,返回 Fail 3)sufficient 验证成功则立即返回,不再继续,否则忽略结果并继续 4)optional 不用于验证,只是显示信息(通常用于 session 类型)

 

 

 

shell模块

功能:检查有效shell

帮助:man pam_shells

案例:不允许使用/bin/csh的用户本地登录

 

 

PAM securetty.so模块

功能:只允许root用户在/etc/securetty列出的安全终端上登陆

案例:CentOS 7 允许root在telnet登陆

 

 

标签:系统安全,passwd,用户,应用,PAM,su,模块,pam
From: https://www.cnblogs.com/123456789SI/p/16777010.html

相关文章

  • 云原生之旅 - 6)不能错过的一款 Kubernetes 应用编排管理神器 Kustomize
    前言相信经过前一篇文章的学习,大家已经对Helm有所了解,本篇文章介绍另一款工具 Kustomize,为什么Helm如此流行,还会出现Kustomize?而且Kustomize自kubectl1.14以来早已......
  • FFT在字符串匹配中的应用
    对于一类字符串匹配问题:给定长度分别为\(m,n\)的字符串\(A,B\),给出两个相同长度的字符串匹配的定义,要求找出\(A\)在\(B\)中所有匹配的位置。可能能用如下方式解......
  • 实验7:基于REST API的SDN北向应用实践
    实验7:基于RESTAPI的SDN北向应用实践一、实验目的能够编写程序调用OpenDaylightRESTAPI实现特定网络功能;能够编写程序调用RyuRESTAPI实现特定网络功能。二、实验......
  • 实验7:基于REST API的SDN北向应用实践
    一、实验目的能够编写程序调用OpenDaylightRESTAPI实现特定网络功能;能够编写程序调用RyuRESTAPI实现特定网络功能。二、实验环境下载虚拟机软件OracleVisualB......
  • Axios的相关应用
    Axios的案例应用要求利用axios实现之前利用AJAX实现的验证用户是否登录的案例鉴于这两种语法的相似性,只需要在AJAX里面的注册界面里面的script标签里面包含的代码修改为......
  • 实验7:基于REST API的SDN北向应用实践
    实验目的能够编写程序调用OpenDaylightRESTAPI实现特定网络功能;能够编写程序调用RyuRESTAPI实现特定网络功能。实验要求(一)基本要求编写Python程序,调用OpenDayl......
  • ZooKeeper应用案例
    使用ZooKeeper解决常见的分布式问题,包括leader选举、分布式队列、负载均衡等。1、leader选举基于ZooKeeper实现leader选举的基本思想是,让各个参与竞选的实例同时在ZooKeepee......
  • 实验7:基于REST API的SDN北向应用实践
    一、实验目的能够编写程序调用OpenDaylightRESTAPI实现特定网络功能;能够编写程序调用RyuRESTAPI实现特定网络功能。二、实验环境下载虚拟机软件OracleVisualBox或......
  • 快速应用开发(RAD)平台 - 20 年的演进
    ​​快速应用开发(RAD)平台-20年的演进​​​​什么是快速应用程序开发​​......
  • Python在接口测试中的应用
    1.介绍接口测试的方式有很多,可以使用的工具有jmeter,postman,soapUI等,也可以自己写代码进行接口测试(Python,java,go等等),工具的使用相对来说都比较简单,开箱即用。但如果接口中定......