安全机制(身份认证:本地登录、PAM)

Liux自带防火墙机制

查看防火墙状态:

service iptables status

 

 

 

 

一.安全机制

身份认证+访问控制(权限)+审计(日志)

身份认证:

本地登录:用户名+密码

远程(telnet)明文的方式暴露给第三方,协议本身缺陷,改进后

(telnet+ssh)即https

PAM(程序之间数据交换 认证的方式)

 

访问控制:

用什么机制保证访问控制的功能:

实验:Linux档案权限篇之一(该用户chown,改用户组chgrp,改权限chmod) - 学习日志羁旅 - 博客园 (cnblogs.com)

 

二.账户管理

1.认识系统文件

用户:

                               UID

root                          0

普通用户             500~65534(其中65534是nobody来宾)

系统用户             1~499

 

 

所有用户都可以在/etc/passwd中查看用户名

 

 口令文档 :/etc/shadow

*表示隐藏方式

  

用户组:权限相同的用户集合(多任务多用户)

GID区分

组的名字:/etc/group

 

 查看当前用户所在的组

id -a

 

 

组的口令:/etc/gshadow

 

 

2.建立与删除普通用户账户,管理组

  • useradd 命令用于建立用户帐号

                  -G<群组>  指定用户所属的附加群组

                   -g<群组>  指定用户所属的群组

                   -d<登入目录>  指定用户登入时的起始目录

                   -n  取消建立以用户名称为名的群组

                   -u<uid>  指定用户ID

 

 

添加一般用户
# useradd tt

为添加的用户指定相应的用户组
# useradd -g root tt

为新添加的用户指定home目录
# useradd -d /home/myd tt

建立用户且制定ID
# useradd caojh -u 544

 

  • userdel   删除用户

                 -r   同时删除自家目录

 

  • usermod 修改帐号
  • groupadd   增加一个新的用户组         

                    -g GID 指定新用户组的组标识号(GID)。

                   -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同

向系统中增加了一个新组group2,同时指定新组的组标识号是101
# groupadd -g 101 group2
  • groupdel   删除一个已有的用户组

  • groupmod   修改用户组的属性

                  -g GID 为用户组指定新的组标识号。

                  -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同

                  -n新用户组 将用户组的名字改为新名字

 

将组group2的组标识号修改为102
# groupmod -g 102 group2

组group2的标识号改为10000,组名修改为group3
# groupmod –g 10000 -n group3 group2

 

 

 

 

 

 

 

 

 

 

3.用户口令管理与口令时效管理

passwd  用来更改使用者的密码

  • -d 删除密码,使账号无口令
  • -f 强迫用户下次登录时必须修改口令
  • -w 口令要到期提前警告的天数
  • -k 更新只能发送在过期之后
  • -l 停止账号使用
  • -S 显示密码信息
  • -u 启用已被停止的账户
  • -x 指定口令最长存活期
  • -g 修改群组密码
  • -i 口令过期后多少天停用账户

 

chage   口令时效是系统管理员用来防止机构内不良口令的一种技术

  •  -m days: 指定用户必须改变口令所间隔的最少天数。如果值为0,口令就不会过期。
  •  -M days: 指定口令有效的最多天数。当该选项指定的天数加上-d选项指定的天数小于当前的日期时,用户在使用该帐号前就必须改变口令。
  • -d days: 指定从1970年1月1日起,口令被改变的天数
  • -I days: 指定口令过期后,帐号被锁前不活跃的天数。如果值为0,帐号在口令过期后就不会被锁。
  •  -E date: 指定帐号被锁的日期。日期格式YYYY-MM-DD。若不用日期,也可以使用自1970年1月1日后经过的天数。
  •  -W days: 指定口令过期前要警告用户的天数。
  • -l: 列出指定用户当前的口令时效信息,以确定帐号何时过期

 

 

 

 

 

 

 

 

 chage命令

两天内不能更改口令,并且口令最长的存活期为30天,并且口令过期前5天通知用户

 

三.pam认证机制

1.PAM机制

在centos 6中用户的密码权限更变模块主要涉及到PAM(Pluggable Authentication Modules)认证机制,该机制由Sun公司提供.

在Linux中,PAM是可动态配置的,本地系统管理员可以自由选择应用程序如何对用户进行身份验证

PAM应用在许多程序与服务上,比如登录程序(login、su)的PAM身份验证(口令认证、限制登录),passwd强制密码,用户进程实时管理,向用户分配系统资源等

 

2.PAM的组成

pam主要由动态库与配置文件构成

 

/etc/pam.d/目录中定义了各种程序和服务的PAM配置文件:

[root@host-10-1-1-91 pam.d]# ls
chfn         fingerprint-auth     newrole  password-auth     run_init   smartcard-auth     ssh-keycat  system-auth
chsh         fingerprint-auth-ac  other    password-auth-ac  runuser    smartcard-auth-ac  su          system-auth-ac
config-util  login                passwd   remote            runuser-l  sshd               su-l


其中system-auth文件主要负责用户登录系统的身份认证工作
password-auth配置文件也是与身份验证相关的重要配置文件,比如用户的远程登录验证(SSH登录)就通过它调用
依赖的模块文件则主要存放于/lib64/security/

[root@host-10-1-1-91 security]# ls
pam_access.so pam_echo.so pam_ftp.so pam_localuser.so pam_permit.so pam_selinux.so pam_timestamp.so pam_unix.so
pam_cap.so pam_env.so pam_group.so pam_loginuid.so pam_postgresok.so pam_sepermit.so pam_tty_audit.so pam_userdb.so
pam_chroot.so pam_exec.so pam_issue.so pam_mail.so pam_pwhistory.so pam_shells.so pam_umask.so pam_warn.so

.....

 

3.PAM模块文件内容

 

 

 

选取其中一个sshd来观察

 1.第一列:PAM的模块类型

PAM有四种模块类型,分别代表四种不同的任务,它们是:

认证管理(auth)鉴别类接口模块类型用于检查用户和密码,并分配权限;

账号管理(account)账户类接口,主要负责账户合法性检查,确认帐号是否过期,是否有权限登录系统等

会话管理(session)会话类接口。用于管理和配置用户会话。会话在用户成功认证之后启动生效

密码(password)管理口令类接口。用于用户更改密码,以及强制使用强密码配置

 

2)第二列:PAM的控制标记

  • required:若成功则带有 success (成功) 的标志,若失败则带有 failure 的标志,但不论成功或失败都会继续后续的验证流程。 由于后续的验证流程可以继续进行,因此相当有利于数据的登录 (log) ,这也是 PAM 最常使用 required 的原因。

 

  • requisite:若验证失败则立刻返回 failure 的标志,并终止后续的验证流程。若验证成功则带有 success 的标志并继续后续的验证流程。 这个项目与 required 最大的差异,就在于失败的时候还要不要继续验证下去。由于 requisite 是失败就终止, 因此失败时所产生的 PAM 信息就无法透过后续的模块来记录了。

 

  • sufficient:若验证成功则立刻回传 success 给原程序,并终止后续的验证流程;若验证失败则带有 failure 标志并继续后续的验证流程。 

 

  • optional :该模块返回的通过/失败结果忽略。当没有其他模块被引用时,标记为optional模块并且成功验证时该模块才是必须的。

 

  • includeinclude与模块结果的处理方式无关。该标志用于直接引用其他PAM模块的配置参数

 3)模块

一般保存在/lib64/security

常用模块:   

  • pam_securetty.so限制系统管理员 (root) 只能够从安全的 (secure) 终端机登陆;例如 tty1, tty2 等就是传统的终端机装置名称。那么安全的终端机配置呢? 就写在 /etc/securetty 这个文件中。你可以查阅一下该文件, 就知道为什么 root 可以从 tty1~tty7 登陆,但却无法透过 telnet 登陆 Linux 主机了!
  • pam_selinux.so:SELinux 是个针对程序来进行细部管理权限的功能。由于 SELinux 会影响到用户运行程序的权限,因此我们利用 PAM 模块,将 SELinux 暂时关闭,等到验证通过后, 再予以启动!

 

pam_console.so:当系统出现某些问题,或者是某些时刻你需要使用特殊的终端接口 (例如 RS232 之类的终端联机设备) 登陆主机时, 这个模块可以帮助处理一些文件权限的问题,让使用者可以透过特殊终端接口 (console) 顺利的登陆系统。

 

  • pam_loginuid.so验证使用者的 UID 是否合理是否是我们所需

 

  • pam_env.so用来配置环境变量的一个模块,如果你有需要额外的环境变量配置,可以参考 /etc/security/pam_env.conf 这个文件的详细说明。

 

  • pam_unix.so:auth(提示用户输入密码,并与/etc/shadow文件相比对.匹配返回0)account、password功能

 

  • pam_cracklib.so可以用来检验口令的强度,包括口令是否在字典中,口令输入几次都失败就断掉此次联机等功能。

  检验:linux检查密码的复杂性强度,centos中检查密码的复杂性和强度以及评分 互联网技术圈 互联网技术圈..._六十度灰的博客-CSDN博客

 

  (1条消息) linux中pam认证解析_学无止境-CSDN博客_linux pam

4)模块参数 

 pam_cracklib.so的相关参数:

 

注意,以上参数仅对非root用户生效,如果想对root用户生效,需要加入参数enforce_for_root

 

Linux下PAM模块学习总结 - 散尽浮华 - 博客园 (cnblogs.com)

 

4.PAM设置密码复杂度

 系统对密码的控制是有两部分组成:
     1 cracklib
      2 /etc/login.defs

 

因为centos7有默认的密码复杂度设置,所以查看下是不是7版本

 

centos6中默认是通过pam_cracklib.so模块控制:

 

大小写字母各至少一个,数字至少3个,其他至少2个

在password requisite pam_cracklib.so try_first_pass retry=3

    在其后追加如下黄框参数后,保存并退出先按esc再输入:wq

 

 

 

 

 

 

解决:

 

 

 

 

另:

 验证时若出现任何与pam_tally有关的错误则停止登录

    auth required pam_tally.so onerr=fail magic_root

 

账号验证过程中一旦发现连续5次输入密码错误,就通过pam_tally锁定此账号600秒

 

    account required pam_tally.so deny=5 lock_time=600 magic_root reset

 

 

 

 1)思考还有哪些加强linux账户安全的管理方法?

限制用户权限、禁用、锁用户,不允许切换用户等


2)比较一下linux账户跟unix账户管理的异同。

命令不同:

EG:切换到root用户

linux : su -

Unix: sudo -i

 

 

 

posted @ 2021-09-14 20:50  学习日志羁旅  阅读(1076)  评论(0编辑  收藏  举报