AIDE和用户授权和PAM

网友投稿 243 2022-11-08

AIDE和用户授权和PAM

aide

[root@centos7 aide]#cat /etc/aide.conf #定义了文件要被监控的属性 # Example configuration file for AIDE. @@define DBDIR /var/lib/aide @@define LOGDIR /var/log/aide #日志目录 # The location of the database to be read. database=file:@@{DBDIR}/aide.db.gz # The location of the database to be written. #database_out=sql:host:port:database:login_name:passwd:table #database_out=file:aide.db.new database_out=file:@@{DBDIR}/aide.db.new.gz # Whether to gzip the output to database. gzip_dbout=yes # Default. verbose=5 report_url=file:@@{LOGDIR}/aide.log report_url=stdout #report_url=stderr #NOT IMPLEMENTED report_url=mailto:root@foo.com #NOT IMPLEMENTED report_url=syslog:LOG_AUTH # These are the default rules. # #p: permissions #i: inode: #n: number of links #u: user #g: group #s: size #b: block count #m: mtime #a: atime #c: ctime #S: check for growing size #acl: Access Control Lists #selinux SELinux security context #xattrs: Extended file attributes #md5: md5 checksum #sha1: sha1 checksum #sha256: sha256 checksum #sha512: sha512 checksum #rmd160: rmd160 checksum #tiger: tiger checksum #haval: haval checksum (MHASH only) #gost: gost checksum (MHASH only) #crc32: crc32 checksum (MHASH only) #whirlpool: whirlpool checksum (MHASH only) FIPSR = p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha256 #R: p+i+n+u+g+s+m+c+acl+selinux+xattrs+md5 #L: p+i+n+u+g+acl+selinux+xattrs #E: Empty group #>: Growing logfile p+u+g+i+n+S+acl+selinux+xattrs # You can create custom rules like this. # With MHASH... # ALLXTRAHASHES = sha1+rmd160+sha256+sha512+whirlpool+tiger+haval+gost+crc32 ALLXTRAHASHES = sha1+rmd160+sha256+sha512+tiger # Everything but access time (Ie. all changes) EVERYTHING = R+ALLXTRAHASHES # Sane, with one good hash. # NORMAL = sha256 NORMAL = sha256 # For directories, don't bother doing hashes. DIR = p+i+n+u+g+acl+selinux+xattrs # Access control only. PERMS = p+u+g+acl+selinux+xattrs # Access + inode changes + file type. STATIC = p+u+g+acl+selinux+xattrs+i+n+b+c+ftype # Logfiles only check access w/o xattrs. LOG = p+u+g+n+acl+selinux+ftype # Content + file type. CONTENT = sha256+ftype # Extended content + file type + access. CONTENT_EX = sha256+ftype+p+u+g+n+acl+selinux+xattrs # Some files get updated automatically, so the inode/ctime/mtime change # but we want to know when the data inside them changes. DATAONLY = p+n+u+g+s+acl+selinux+xattrs+sha256 TEST=p+u+g+sha512+s #将监控的属性定义为一个别名 /data TEST #代表/date 文件夹要监控的属性 !/data/f3 #排除/data 文件夹里面的f3 文件

rpm -V 只能找是 rpm 安装包的文件

第一步: [root@centos7 data]#rpm -q aide aide-0.15.1-13.el7.x86_64

编写配置文件:vim /etc/aide.conf

监控哪些文件,哪些属性,排除哪些

第二步:-i 初始化数据库

第三步:修改名字

第四步:检查文件 -C 检查文件是否发生变化

-u 更新数据库

当一个者进入了你的系统并且种植了,通常会想办法来隐蔽这个(除了自身的一些隐

蔽特性外,他会尽量给你检查系统的过程设置障碍),通常***者会修改一些文件,比如管理员通常用

ps aux来查看系统进程,那么***者很可能用自己经过修改的ps程序来替换掉你系统上的ps程序,以

使用ps命令查不到正在运行的程序。如果者发现管理员正在运行crontab作业,也有可能替换

掉crontab程序等等。所以由此可以看出对于系统文件或是关键文件的检查是很必要的。目前就系统完

整性检查的工具用的比较多的有两款:Tripwire和AIDE,前者是一款商业软件,后者是一款免费的但功

能也很强大的工具

AIDE(Advanced Intrusion Detection Environment高级检测环境)是一个检测工具,主要用途

是检查文件的完整性,审计计算机上的那些文件被更改过了

AIDE能够构造一个指定文件的数据库,它使用aide.conf作为其配置文件。AIDE数据库能够保存文件的

各种属性,包括:权限(permission)、索引节点序号(inode number)、所属用户(user)、所属用户组

(group)、文件大小、最后修改时间(mtime)、创建时间(ctime)、最后访问时间(atime)、增加的大小以

及连接数。AIDE还能够使用下列算法:sha1、md5、rmd160、tiger,以密文形式建立每个文件的校

验码或散列号

这个数据库不应该保存那些经常变动的文件信息,例如:日志文件、邮件、/proc文件系统、用户起始

目录以及临时目录

安装 AIDE

yum install aide -y

配置文件指定对哪些文件进行检测

​ vim /etc/aide.conf

配置范例:

#定义监控项权限+索引节点+链接数+用户+组+大小+最后一次修改时间+创建时间+md5校验值 R=p+i+n+u+g+s+m+c+md5 NORMAL = R+rmd60+sha256 /data/test.txt R /bin/ps R+a /usr/bin/crontab R+a /etc   PERMS !/etc/mtab   #“!”表示忽略这个文件的检查

初始化默认的AIDE的库:

/usr/local/bin/aide -i | --init

生成检查数据库(建议初始数据库存放到安全的地方)

cd /var/lib/aide mv aide.db.new.gz aide.db.gz

检测

/usr/local/bin/aide -C | --check

更新数据库,就是当你认为数据库是自己手动更新的 不是***更新的时候,

aide -u | --update

=======================================================================================================

sudo 实现授权

sudo 即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如

halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性

在最早之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先

告知超级用户的密码。sudo于1980年前后推出,sudo使一般用户不需要知道超级用户的密码即可获得

权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信

息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为

“sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自

己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运

行。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。

由于不需要超级用户的密码,部分Unix系统甚至利用sudo使一般用户取代超级用户作为管理帐号,例

如Ubuntu、Mac OS X等。

sudo特性:

sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系

管理员

sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志

服务器

sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得

了一张存活期为5分钟的票

sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。

它所存放的位置默认是在/etc/sudoers,属性必须为0440

包:sudo

配置文件:/etc/sudo.conf

授权规则配置文件:

/etc/sudoers /etc/sudoers.d #检查指定配置文件语法。可以写在一个指定的文件夹里面 visudo -f /etc/sudoers.d/test

检查语法

/usr/sbin/visudo

#检查语法 visudo -c [root@yum.repos.d]#visudo -c /etc/sudoers: parsed OK visudo 等价于 vi /etc/sudoers 但是visudo 自带语法功能

执行visudo带颜色

[root@C8-20 aide]# cat /etc/profile.d/env.sh export EDITOR=vim

sudo命令

ls -l /usr/bin/sudo [root@centos7 aide]#ls -l /usr/bin/sudo ---s--x--x. 1 root root 130720 Nov 21 2015 /usr/bin/sudo sudo –i –u wang 切换身份 #不指定的默认是root sudo [-u user] COMMAND -V 显示版本信息等配置信息 -u user 默认为root -l,ll 列出用户在主机上可用的和被禁止的命令 -v 再延长密码有效期限5分钟,更新时间戳 -k 清除时间戳(1970-01-01),下次需要重新输密码 -K 与-k类似,还要删除时间戳文件 -b 在后台执行指令 -p 改变询问密码的提示符号 示例:-p "password on %h for user %p: "

sudo 授权规则配置

配置文件格式说明:/etc/sudoers, /etc/sudoers.d/

配置文件中支持使用通配符 glob

? 任意单一字符 * 匹配任意长度字符 [wxc] 匹配其中一个字符 [!wxc] 除了这三个字符的其它字符 \x 转义 [[alpha]] 字母

/bin/ls [[alpha]]*

配置文件规则有两类

1、别名定义:不是必须的

2、授权规则:必须的

sudoers 授权规则格式:

用户 登入主机=(代表用户) 命令 user host=(runas) command

root ALL=(ALL) ALL wang 10.0.0.8=(root) /bin/cat /etc/shadow #表示wang在10.0.0.8 的主机上能像root用户一样看 shadow表 #授权代表root 看shadow [root@C8-20 dropbear-2019.78]# grep 'wang' /etc/sudoers wang 10.0.0.20=(root) /bin/cat /etc/shadow [root@C8-20 dropbear-2019.78]# su - wang Last login: Thu Jul 22 23:28:51 CST 2021 on pts/0 [wang@C8-20 ~]$ sudo cat /etc/shadow [sudo] password for wang: #第一次输一下密码 #授权代表mage 看shadow [root@C8-20 dropbear-2019.78]# setfacl -m u:mage:r /etc/shadow [root@C8-20 dropbear-2019.78]# grep 'wang' /etc/sudoers #wang 10.0.0.20=(root) /bin/cat /etc/shadow wang 10.0.0.20=(mage) /bin/cat /etc/shadow [root@C8-20 dropbear-2019.78]# su - wang Last login: Thu Jul 22 23:31:31 CST 2021 on pts/1 [wang@C8-20 ~]$ sudo -u mage /bin/cat /etc/shadow

user: 运行命令者的身份 host: 通过哪些主机 (runas):以哪个用户的身份 command: 运行哪些命令

授权编辑规则文件的工具:/usr/bin/sudoedit

执行授权命令:/usr/bin/sudo

时间戳文件:/var/db/sudo

日志文件:/var/log/secure

包:sudo

配置文件:/etc/sudo.conf

授权规则配置文件:

/etc/sudoers

/etc/sudoers.d

安全编辑授权规则文件和语法检查工具

/usr/sbin/visudo

范例

#检查语法 visudo -c visudo 等价vi /etc/sudoers #检查指定配置文件语法 visudo -f /etc/sudoers.d/test

sudoers的别名

User和runas: username #uid %group_name %#gid user_alias|runas_alias host: ip或hostname network(/netmask) host_alias command: command name directory sudoedit Cmnd_Alias

sudo别名有四种类型:

User_Alias Runas_Alias Host_Alias Cmnd_Alias

别名格式:

[A-Z]([A-Z][0-9]_)*

别名定义:

Alias_Type NAME1 = item1,item2,item3 : NAME2 = item4, item5

Ubutun的授权

Ubutun里面的所有用户加sudo 就有所有的权限,是因为他加入了sudo 组

root@ubuntu-10:~# su - wang wang@ubuntu-10:~$ sudo /bin/cat /etc/shadow [sudo] password for wang: root:$6$vBbLv7bs$lv0Zy20kEGgN1WZblwOZw1yeyTtVPineqh0F4EF9QxfIVWFbaeuAT3qbp77cLPDQ7vxWf9uzNfSUbr0VvySZx/:18781:0:99999:7::: daemon:*:18484:0:99999:7::: bin:*:18484:0:99999:7::: sys:*:18484:0:99999:7::: wang@ubuntu:~$ sudo cat /etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d

wang@ubuntu-10:~$ id uid=1000(wang) gid=1000(wang) groups=1000(wang),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lxd),113(lpadmin),114(sambashare) #因为wang 属于sudo 组,所以有所有的权限

同理:wang 加入到wheel组就有所有的权限了

[root@C8-20 ~]# groupmems -l -g wheel [root@C8-20 ~]# groupmems -a wang -g wheel [root@C8-20 ~]# su - wang [wang@C8-20 ~]$ sudo useradd test [sudo] password for wang: Sorry, try again. [sudo] password for wang: [wang@C8-20 ~]$ id test uid=1002(test) gid=1002(test) groups=1002(test)

[root@centos7 mail]#getent group

修改文件 使得visudo带颜色

#打开以后颜色是五颜六色的 [root@centos7 dropbear-2019.78]#vim /etc/profile.d/env.sh PS1="\[\e[1;31m\][\u@\h \W]\\[\e[0m\]\\$" export EDITOR=vim

案例1:

Student ALL=(ALL)   ALL %wheel   ALL=(ALL)   ALL

案例2:

student ALL=(root)   /sbin/pidof,/sbin/ifconfig %wheel ALL=(ALL) NOPASSWD: ALL

案例3:别名

User_Alias NETADMIN= netuser1,netuser2 Cmnd_Alias NETCMD = /usr/sbin/ip NETADMIN ALL=(root) NETCMD

案例4:

User_Alias SYSADER=wang,mage,%admins User_Alias DISKADER=tom Host_Alias SERS=magedu.com,172.16.0.0/24 Runas_Alias OP=root Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk   SYSADER SERS=   SYDCMD,DSKCMD DISKADER ALL=(OP) DSKCMD

案例5:

User_Alias ADMINUSER = adminuser1,adminuser2 Cmnd_Alias ADMINCMD = /usr/sbin/useradd,/usr/sbin/usermod, /usr/bin/passwd [a-zA-Z]*, !/usr/bin/passwd root ADMINUSER ALL=(root) NOPASSWD:ADMINCMD,PASSWD:/usr/sbin/userdel #执行哪一个要输口令

案例6:

Defaults:wang runas_default=tom #默认值不指定的话是tom wang ALL=(tom,jerry) ALL

案例7:授权wang无法创建户

wang 192.168.1.6,192.168.1.8=(root) /usr/sbin/,!/usr/sbin/useradd

案例8:如何解决? 这样授权有安全风险

wang   ALL=(ALL) /bin/cat /var/log/messages* ============================================================================================= sudo 通配符匹配引发安全漏洞 wang ALL=(root) /bin/cat /var/log/messages期望授权允许用户wang,查看 /var/log/目录下的messages开头的文件。 安全威胁:sudo cat /var/log/messages /etc/shadow,结果可以查看shadow文件,在glob中代表任意长度任意字符,包括空格、/等。

在后面加了一个!/bin/cat /var/log/messages

案例9:授权一个用户可以修改更改sudo的规则文件,即可以执行 visudo 命令

vim /etc/sudoers/test Wang ALL=(ALL) sudoedit wang 可以执行下面命令 sudoedit /etc/sudoers sudoedit /etc/sudoers.d/test

案例10:修改验证密码间隔为2分钟

[root@centos8 ~]#vim /etc/sudoers Defaults   env_reset , timestamp_timeout=2 [root@centos8 ~]#sudo -V ...... Authentication timestamp timeout: 2.0 minutes......

范例11:ubuntu 默认用户具有sudo权限

root@ubuntu1804:~# grep %sudo /etc/sudoers %sudo ALL=(ALL:ALL) ALL root@ubuntu1804:~# id wang uid=1000(wang) gid=1000(wang) groups=1000(wang),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lxd),113(lpa dmin),114(sambashare) #默认的用户wang 属于此sudo组,所以wang有所有权限

范例12: 修改ubuntu的visudo的默认编辑器

root@ubuntu1804:~# export EDITOR=vim root@ubuntu1804:~# visudo

范例:删除时间戳文件

[root@centos8 ~]#su - wang Last login: Mon May 25 10:28:14 CST 2020 on pts/1 [wang@centos8 ~]$sudo -K [wang@centos8 ~]$exit logout [root@centos8 ~]#ll /run/sudo/ts total 4 -rw------- 1 root mage 112 May 25 10:11 mage

范例:修改sudo 提示符格式

[wang@centos8 ~]$sudo cat /var/log/messages [sudo] password for wang: [wang@centos8 ~]$sudo -p "password on %h for user %p: " cat /var/log/messages password on centos8 for user wang: ====================================================================== 默认的提示符 [root@C8-38-DNS-Server~]#su - wang Last login: Fri Jul 23 06:18:26 CST 2021 on pts/0 [wang@C8-38-DNS-Server~]$sudo cat /var/log/message We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for wang: 修改后的提示符: [root@C8-38-DNS-Server~]#su - wang Last login: Thu Jul 22 16:08:51 CST 2021 from ::ffff:10.0.0.20 on pts/1 [wang@C8-38-DNS-Server~]$sudo -p "password on %h for user %p:" cat /var/log/message We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. password on C8-38-DNS-Server for user wang: sudo: 3 incorrect password attempts [wang@C8-38-DNS-Server~]$

sudo命令

ls -l /usr/bin/sudo sudo –i –u wang 切换身份 sudo [-u user] COMMAND -V 显示版本信息等配置信息 -u user 默认为root -l,ll 列出用户在主机上可用的和被禁止的命令 -v 再延长密码有效期限5分钟,更新时间戳 -k 清除时间戳(1970-01-01),下次需要重新输密码 -K 与-k类似,还要删除时间戳文件 -b 在后台执行指令 -p 改变询问密码的提示符号 示例:-p "password on %h for user %p: "

PAM认证机制

认证库:文本文件,MySQL,NIS,LDAP等

PAM:Pluggable Authentication Modules,插件式的验证模块,Sun公司于1995 年开发的一种与认

证相关的通用框架机制。PAM 只关注如何为服务验证用户的 API,通过提供一些动态链接库和一套统一

的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服

务配置不同的认证方式而无需更改服务程序一种认证框架,自身不做认证

PAM提供了对所有服务进行认证的中央机制,适用于本地登录,远程登录,如:telnet,rlogin,fsh,ftp,点

对点协议PPP,su等应用程序中,系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略;

应用程序开发者通过在服务程序中使用PAM API(pam_xxxx( ))来实现对认证方法的调用;而PAM服务模

块的开发者则利用PAM SPI来编写模块(主要调用函数pam_sm_xxxx( )供PAM接口库调用,将不同的认

证机制加入到系统中;PAM接口库(libpam)则读取配置文件,将应用程序和相应的PAM服务模块联

系起来

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

[root@C8-38-DNS-Server~]#ls /lib64/security/ pam_access.so pam_faildelay.so pam_listfile.so pam_pwhistory.so pam_stress.so pam_unix_session.so pam_cap.so pam_faillock.so pam_localuser.so pam_pwquality.so pam_succeed_if.so pam_unix.so pam_chroot.so pam_filter pam_loginuid.so pam_rhosts.so pam_systemd.so pam_userdb.so pam_console.so pam_filter.so pam_mail.so pam_rootok.so pam_time.so pam_user_map.so pam_cracklib.so pam_ftp.so pam_mkhomedir.so pam_securetty.so pam_timestamp.so pam_warn.so pam_debug.so pam_group.so pam_motd.so pam_selinux_permit.so pam_tty_audit.so pam_wheel.so pam_deny.so pam_issue.so pam_namespace.so pam_selinux.so pam_umask.so pam_xauth.so pam_echo.so pam_keyinit.so pam_nologin.so pam_sepermit.so pam_unix_acct.so pam_env.so pam_lastlog.so pam_permit.so pam_shells.so pam_unix_auth.so pam_exec.so pam_limits.so pam_postgresok.so pam_sss.so pam_unix_passwd.so

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

[root@C8-38-DNS-Server~]#ls /etc/security/ access.conf console.handlers faillock.conf limits.d namespace.init pwquality.conf time.conf chroot.conf console.perms group.conf namespace.conf opasswd pwquality.conf.d user_map.conf console.apps console.perms.d limits.conf namespace.d pam_env.conf sepermit.conf

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

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

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

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

范例:查看程序是否支持PAM

[root@centos8 ~]#ldd `which sshd` |grep libpam #调用了pam接口 libpam.so.0 => /lib64/libpam.so.0 (0x00007fea8e70d000) [root@centos8 ~]#ldd `which passwd` |grep pam libpam.so.0 => /lib64/libpam.so.0 (0x00007f045b805000) libpam_misc.so.0 => /lib64/libpam_misc.so.0 (0x00007f045b601000)

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回传的结果决定下一个动作(重新输入 密码或者通过验证)

PAM 配置文件格式说明

通用配置文件/etc/pam.conf格式

application type control module-path arguments

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

type control module-path arguments

application:指服务名,如:telnet、login、ftp等,服务名字“OTHER”代表所有没有在该文件中明确 配置的其它服务 type:指模块类型,即功能 control :PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关健词实现 module-path: 用来指明本模块对应的程序文件的路径名 Arguments: 用来传递给该模块的参数

模块类型(module-type)

Auth 账号的认证和授权

Account 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例如:root用户只能从控制台登录)

Password 用户修改密码时密码复杂度检查机制等功能

Session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等

-type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用

[root@centos7 mail]#vim /etc/pam.d/su #%PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. #auth required pam_wheel.so use_uid auth substack system-auth auth include postlogin account sufficient pam_succeed_if.so uid = 0 use_uid quiet #模块后面接参数 account include system-auth password include system-auth session include system-auth session include postlogin [root@C8-38-DNS-Server~]#vim /etc/pam.d/sshd #%PAM-1.0 auth substack password-auth auth include postlogin account required pam_sepermit.so account required pam_nologin.so account include password-auth password include password-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session required pam_loginuid.so # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open env_params session required pam_namespace.so session optional pam_keyinit.so force revoke session optional pam_motd.so session include password-auth session include postlogin

Control:

required :一票否决,表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败

结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕,=再将失败结果返回

给应用程序,即为必要条件

requisite :一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执

行同一type内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件

sufficient :一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其

它模块,但如果本模块返回失败可忽略,即为充分条件,优先于前面的required和requisite

optional :表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略

include: 调用其他的配置文件中定义的配置信息

[root@centos7 pam.d]#pwd /etc/pam.d [root@centos7 pam.d]#ls atd fingerprint-auth password-auth ppp smartcard-auth-ac sudo systemd-user chfn fingerprint-auth-ac password-auth-ac remote smtp sudo-i vlock chsh login polkit-1 runuser smtp.postfix su-l config-util other postlogin runuser-l sshd system-auth crond passwd postlogin-ac smartcard-auth su system-auth-ac [root@centos7 pam.d]#cat su #%PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. #auth required pam_wheel.so use_uid auth substack system-auth auth include postlogin account sufficient pam_succeed_if.so uid = 0 use_uid quiet account include system-auth password include system-auth session include system-auth session include postlogin session optional pam_xauth.so

module-path:

模块文件所在绝对路径:

模块文件所在相对路径:/lib64/security目录下的模块可使用相对路径,如:pam_shells.so、

pam_limits.so

有些模块有自已的专有配置文件,在/etc/security/*.conf目 录下

Arguments

debug :该模块应当用syslog( )将调试信息写入到系统日志文件中

no_warn :表明该模块不应把警告信息发送给应用程序

use_first_pass :该模块不能提示用户输入密码,只能从前一个模块得到输入密码

try_first_pass :该模块首先用前一个模块从用户得到密码,如果该密码验证不通过,再提示用户

输入新密码

use_mapped_pass 该模块不能提示用户输入密码,而是使用映射过的密码

expose_account 允许该模块显示用户的帐号名等信息,一般只能在安全的环境下使用,因为泄漏

用户名会对安全造成一定程度的威胁

注意:修改PAM配置文件将马上生效

建议:编辑pam规则时,保持至少打开一个root会话,以防止root身份验证错误

[root@centos7 pam.d]#ls /lib64/security pam_access.so pam_filter pam_mkhomedir.so pam_selinux.so pam_unix_auth.so pam_cap.so pam_filter.so pam_motd.so pam_sepermit.so pam_unix_passwd.so pam_chroot.so pam_ftp.so pam_namespace.so pam_shells.so pam_unix_session.so pam_console.so pam_group.so pam_nologin.so pam_stress.so pam_unix.so pam_cracklib.so pam_issue.so pam_permit.so pam_succeed_if.so pam_userdb.so pam_debug.so pam_keyinit.so pam_postgresok.so pam_systemd.so pam_warn.so pam_deny.so pam_lastlog.so pam_pwhistory.so pam_tally2.so pam_wheel.so pam_echo.so pam_limits.so pam_pwquality.so pam_time.so pam_xauth.so pam_env.so pam_listfile.so pam_rhosts.so pam_timestamp.so pam_exec.so pam_localuser.so pam_rootok.so pam_tty_audit.so pam_faildelay.so pam_loginuid.so pam_securetty.so pam_umask.so pam_faillock.so pam_mail.so pam_selinux_permit.so pam_unix_acct.so [root@centos7 pam.d]#ls /etc/pam.d/ atd fingerprint-auth-ac polkit-1 runuser-l su systemd-user chfn login postlogin smartcard-auth sudo vlock chsh other postlogin-ac smartcard-auth-ac sudo-i config-util passwd ppp smtp su-l crond password-auth remote smtp.postfix system-auth fingerprint-auth password-auth-ac runuser sshd system-auth-ac

PAM模块帮助

官方在线文档:-qd pam

man –k pam

man 模块名 如:man 8 rootok

pam_shells 模块

功能:检查有效shell

帮助:man pam_shells

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

[root@centos8 ~]#yum -y install csh [root@C8-38-DNS-Server~]#cat /etc/shells #安装csh以后自动的添加 /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/csh /bin/tcsh /usr/bin/csh /usr/bin/tcsh [root@C8-38-DNS-Serverpam.d]#cd /etc/pam.d/ [root@C8-38-DNS-Serverpam.d]#ls config-util login password-auth remote smartcard-auth sshd sudo system-auth vmtoolsd crond other polkit-1 runuser smtp sssd-shadowutils sudo-i systemd-user fingerprint-auth passwd postlogin runuser-l smtp.postfix su su-l vlock [root@C8-38-DNS-Serverpam.d]#grep pam_shells * vmtoolsd:auth required pam_shells.so vmtoolsd:account required pam_shells.so [root@C8-38-DNS-Serverpam.d]#vim su #%PAM-1.0 auth required pam_shells.so auth required pam_env.so auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. #auth required pam_wheel.so use_uid auth substack system-auth auth include postlogin account required pam_shells.so account sufficient pam_succeed_if.so uid = 0 use_uid quiet account include system-auth password include system-auth session include system-auth session include postlogin session optional pam_xauth.so [root@C8-38-DNS-Serverpam.d]#usermod -s /bin/csh mage 修改shell类型 [root@C8-38-DNS-Serverpam.d]#getent passwd mage mage:x:1001:1001::/home/mage:/bin/csh [root@C8-38-DNS-Serverpam.d]#cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash #/bin/csh /bin/tcsh #/usr/bin/csh /usr/bin/tcsh [root@C8-38-DNS-Serverpam.d]#su - mage #无法登录 Password: su: Authentication failure #日志 [root@C8-38-DNS-Serverpam.d]#tail /var/log/secure -n1 Jul 23 07:31:14 C8-38-DNS-Server usermod[2247]: change user 'mage' shell from '/bin/bash' to '/bin/csh'

pam_securetty.so模块

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

案例:CentOS7 允许root在telnet登陆

注意:CentOS8没有调用此模块,所以默认允许root远程登录telnet

[root@c7-137-mariadb-bak ~]# grep pam_securetty /etc/pam.d/* /etc/pam.d/login:auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so /etc/pam.d/remote:auth required pam_securetty.so [root@C8-38-DNS-Serverpam.d]#grep pam_securetty /etc/pam.d/* [root@c7-137-mariadb-bak ~]# grep remote /etc/pam.d/* /etc/pam.d/sshd:# Used with polkit to reauthorize users in remote sessions /etc/pam.d/sshd:# Used with polkit to reauthorize users in remote sessions [root@c7-137-mariadb-bak ~]# cat /etc/securetty console vc/1 vc/2 vc/3 vc/4 vc/5 vc/6 vc/7 vc/8 vc/9 vc/10 vc/11 tty1 tty2 tty3 tty4 tty5 tty6 tty7 tty8 tty9 tty10 tty11 ttyS0 ttysclp0 sclp_line0 3270/tty1 hvc0 hvc1 hvc2 hvc3 hvc4 hvc5 hvc6 hvc7 hvsi0 hvsi1 hvsi2 xvc0 [root@c7-137-mariadb-bak ~]# yum install telnet-server -y [root@c7-137-mariadb-bak ~]# systemctl start telnet.socket [root@C8-38-DNS-Server~]#telnet 10.0.0.137 Trying 10.0.0.137... Connected to 10.0.0.137. Escape character is '^]'. Kernel 3.10.0-327.el7.x86_64 on an x86_64 c7-137-mariadb-bak login: wang #wang可以登录 Last login: Wed Jul 14 07:26:31 on pts/0 [wang@c7-137-mariadb-bak ~]$ exit logout Connection closed by foreign host. [root@C8-38-DNS-Server~]#telnet 10.0.0.137 Trying 10.0.0.137... Connected to 10.0.0.137. Escape character is '^]'. Kernel 3.10.0-327.el7.x86_64 on an x86_64 c7-137-mariadb-bak login: root #但是root却无法登录 Password: Password: Login incorrect c7-137-mariadb-bak login: #日志报错 [root@c7-137-mariadb-bak ~]# tail -n1 /var/log/secure Jul 23 17:05:50 c7-137-mariadb-bak login: FAILED LOGIN 1 FROM ::ffff:10.0.0.38 FOR root, Authentication failure #解决root用户无法远程Telnet 服务 方法一:添加此三项 [root@c7-137-mariadb-bak ~]# tail /etc/securetty -n3 pts/1 pts/2 pts/0 [root@C8-38-DNS-Server~]#telnet 10.0.0.137 Trying 10.0.0.137... Connected to 10.0.0.137. Escape character is '^]'. Kernel 3.10.0-327.el7.x86_64 on an x86_64 c7-137-mariadb-bak login: root Password: Last failed login: Fri Jul 23 17:05:50 CST 2021 from ::ffff:10.0.0.38 on pts/1 There was 1 failed login attempt since the last successful login. Last login: Fri Jul 23 16:57:42 from 10.0.0.1 [root@c7-137-mariadb-bak ~]# [root@c7-137-mariadb-bak ~]# tty /dev/pts/1 或者方法二 #禁用此模块 [root@c7-137-mariadb-bak ~]# grep 'pam_securetty.so' /etc/pam.d/remote #auth required pam_securetty.so

CentOS8上实现pam_securetty.so模块禁止root远程登录telnet服务

#默认CentOS8 允许root远程telnet登录 [root@centos7 ~]#telnet 10.0.0.8 Trying 10.0.0.8... Connected to 10.0.0.8. Escape character is '^]'. Kernel 4.18.0-147.el8.x86_64 on an x86_64 centos8 login: root Password: Last login: Mon May 25 11:51:08 from 10.0.0.1 [root@centos8 ~]# #修改配置不允许root远程telnet登录 #添加此模块 [root@C8-38-DNS-Server~]#grep 'pam_securetty.so' /etc/pam.d/remote auth       required     pam_securetty.so [root@centos7 ~]#scp /etc/securetty 10.0.0.8:/etc #测试 [root@centos7 ~]#telnet 10.0.0.8 Trying 10.0.0.8... Connected to 10.0.0.8. Escape character is '^]'. Kernel 4.18.0-147.el8.x86_64 on an x86_64 centos8 login: wang Password: Last login: Mon May 25 12:06:21 from ::ffff:10.0.0.6 [wang@centos8 ~]$exit logout Connection closed by foreign host. [root@centos7 ~]#telnet 10.0.0.8 Trying 10.0.0.8... Connected to 10.0.0.8. Escape character is '^]'. Kernel 4.18.0-147.el8.x86_64 on an x86_64 centos8 login: root Password: Login incorrect centos8 login:

pam_nologin.so 模块

功能:如果/etc/nologin文件存在,将导致非root用户不能登陆,当该用户登陆时,会显示/etc/nologin文 件内容,并拒绝登陆 [root@C8-38-DNS-Serverpam.d]#cd /etc/pam.d/ [root@C8-38-DNS-Serverpam.d]#grep nologin * login:account required pam_nologin.so remote:account required pam_nologin.so sshd:account required pam_nologin.so [root@C8-38-DNS-Serverpam.d]#touch /etc/nologin [root@c7-137-mariadb-bak ~]# ssh mage@10.0.0.38 mage@10.0.0.38's password: Connection closed by 10.0.0.38 #日志 [root@C8-38-DNS-Serverpam.d]#tail -n0 -f /var/log/secure Jul 23 08:45:26 C8-38-DNS-Server sshd[2874]: Failed password for mage from 10.0.0.137 port 57774 ssh2 Jul 23 08:45:26 C8-38-DNS-Server sshd[2874]: fatal: Access denied for user mage by PAM account configuration [preauth] #su 可以登录是因为su没有调用模块 [root@C8-38-DNS-Serverpam.d]#su - mage Last login: Fri Jul 23 08:22:32 CST 2021 from ::ffff:10.0.0.137 on pts/2 Last failed login: Fri Jul 23 08:46:50 CST 2021 from 10.0.0.137 on ssh:notty There were 4 failed login attempts since the last successful login. [mage@C8-38-DNS-Server ~]$ #现在让su 也无法登录。阻止普通用户的登录,系统维护期间禁止普通用户登录 [root@C8-38-DNS-Serverpam.d]#grep 'pam_nologin.so' su account required pam_nologin.so [root@C8-38-DNS-Serverpam.d]#su - mage su: Authentication failure [root@C8-38-DNS-Serverpam.d]#su mage su: Authentication failure [root@C8-38-DNS-Serverpam.d]#echo nologin deny login > /etc/nologin [root@C8-38-DNS-Serverpam.d]#su mage nologin deny login su: Authentication failure

pam_limits.so模块

[root@C8-38-DNS-Serverpam.d]#grep pam_limits * fingerprint-auth:session required pam_limits.so password-auth:session required pam_limits.so runuser:session required pam_limits.so smartcard-auth:session required pam_limits.so system-auth:session required pam_limits.so [root@C8-38-DNS-Serverpam.d]# [root@C8-38-DNS-Serverpam.d]#pwd /etc/pam.d [root@C8-38-DNS-Serverpam.d]#cat system-auth #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authselect is run. auth required pam_env.so auth sufficient pam_unix.so try_first_pass nullok auth required pam_deny.so account required pam_unix.so password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= password sufficient pam_unix.so try_first_pass use_authtok nullok sha512 shadow password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so

功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用

内存空间

修改限制的实现方式:

(1) ulimit命令,立即生效,但无法保存

-n   每个进程最多的打开的文件描述符个数 -u   最大用户进程数 -S   使用 soft(软)资源限制 -H   使用 hard(硬)资源限制 [root@C8-38-DNS-Serverpam.d]#ulimit -a core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 3025 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 3025 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited #临时修改,当前终端有效 [root@C8-38-DNS-Serverpam.d]#ulimit -n 102300 [root@C8-38-DNS-Serverpam.d]#ulimit -a |grep 102300 open files (-n) 102300 #最多打开的文件个数: [root@C8-38-DNS-Serverpam.d]#ulimit -n 1048576 2^20 [root@C8-38-DNS-Serverpam.d]#ulimit -n 1048577 -bash: ulimit: open files: cannot modify limit: Operation not permitted

(2) 配置文件:

/etc/security/limits.conf /etc/security/limits.d/*.conf [root@C8-38-DNS-Serverpam.d]#grep 'mage' /etc/security/limits.conf #限制打开的进程数 mage nproc 5 [root@C8-38-DNS-Serverpam.d]#pgrep -lu mage [root@C8-38-DNS-Serverpam.d]#grep 'maxlogins' /etc/security/limits.conf # - maxlogins - max number of logins for this user #@student - maxlogins 4 mage - maxlogins 2 #限制mage最多准许登录的次数为2次 [root@C8-38-DNS-Serverpam.d]#tail -n5 /etc/security/limits.conf # End of file mage - nproc 5 mage - maxlogins 2 wang - nofile 102400 #限制打开文件个数

配置文件格式:

#每行一个定义      

格式说明:

应用于哪些对象

Username 单个用户 @group 组内所有用户 * 所有用户 % 仅用于限制 maxlogins limit , 可以使用 %group 语法. 只用 % 相当于 * 对所有用户 maxsyslogins limit限制. %group 表示限制此组中的所有用户总的最大登录数

限制的类型

Soft 软限制,普通用户自己可以修改 Hard 硬限制,由root用户设定,且通过kernel强制生效 - 二者同时限定

限制的资源

nofile 所能够同时打开的最大文件数量,默认为1024 nproc 所能够同时运行的进程的最大数量,默认为1024

指定具体值

案例:系统的各种资源的默认值

[root@centos8 ~]#ulimit -a core file size         (blocks, -c) unlimited data seg size           (kbytes, -d) unlimited scheduling priority             (-e) 0 file size               (blocks, -f) unlimited pending signals                 (-i) 3059 max locked memory       (kbytes, -l) 16384 max memory size         (kbytes, -m) unlimited open files                     (-n) 1024 pipe size           (512 bytes, -p) 8 POSIX message queues     (bytes, -q) 819200 real-time priority             (-r) 0 stack size             (kbytes, -s) 8192 cpu time               (seconds, -t) unlimited max user processes             (-u) 3059 virtual memory         (kbytes, -v) unlimited file locks                     (-x) unlimited

案例:ulimit命令修改用户打开的文件个数

[root@centos8 ~]#ulimit -n 1024 [root@centos8 ~]#ulimit -n 1048577 修改可以打开的文件的个数 -bash: ulimit: open files: cannot modify limit: Operation not permitted [root@centos8 ~]#ulimit -n 1048576 [root@centos8 ~]#ulimit -a core file size         (blocks, -c) unlimited data seg size           (kbytes, -d) unlimited scheduling priority             (-e) 0 file size               (blocks, -f) unlimited pending signals                 (-i) 7111 max locked memory       (kbytes, -l) 16384 max memory size         (kbytes, -m) unlimited open files                     (-n) 1048576 pipe size           (512 bytes, -p) 8 POSIX message queues     (bytes, -q) 819200 real-time priority             (-r) 0 stack size             (kbytes, -s) 8192 cpu time               (seconds, -t) unlimited max user processes             (-u) 7111 virtual memory         (kbytes, -v) unlimited file locks                     (-x) unlimited [root@centos8 ~]#echo 2^20|bc 1048576 [root@centos7 pam.d]#ulimit -n1048576 最多打开的文件次数 [root@centos7 pam.d]#ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 3829 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1048576 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 3829 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited

案例:限制用户最多打开的文件数和运行进程数,并持久保存

cat /etc/pam.d/system-auth session     required     pam_limits.so vim /etc/security/limits.conf   #用户apache可打开10240个文件 apache – nofile 10240 #用户student不能运行超过20个进程 student hard nproc 10 #用student登录多次运行bash,观察结果 [root@centos8 ~]#vim /etc/security/limits.conf wang          -     nofile 66666 wang          -     nproc  5 mage          -     nofile 88888 [root@centos8 ~]#su - wang Last login: Mon May 25 14:40:38 CST 2020 on pts/0 [wang@centos8 ~]$ulimit  -n 66666

案例:限制mage用户最大的同时登录次数

[root@centos8 ~]#tail -n1 /etc/security/limits.conf mage         -     maxlogins   2 [root@centos8 ~]#who mage     tty1         2020-05-25 14:35 root     pts/0       2020-05-25 14:35 (10.0.0.1) root     pts/3       2020-05-25 14:06 (10.0.0.1) mage     tty3         2020-05-25 14:35

生产案例

vim /etc/security/limits.conf   *    -   core       unlimited *    -   nproc       1000000 #最大进程 *    -   nofile      1000000 #文件数 *    -   memlock     32000 #锁 *    -   msgqueue    8192000 #消息队列

pam_succeed_if 模块

功能:根据参数中的所有条件都满足才返回成功

ubuntu默认不允许root登录桌面图形

用root登录桌面失败,查看日志,可看到Pam原因 vim /etc/pam.d/gdm-passwd #将下面行注释 #auth requried pam_succeed_if.so user !=root quiet_success

pam_google_authenticator模块

功能:实现SSH登录的两次身份验证,先验证APP的数字码,再验证root用户的密码,都通过才可以登

录。目前只支持口令验证,不支持基于key验证

官方网站:在手机应用市场搜索:身份验证器或authenticator,并安装APP

\2. 运行脚本(需要联网EPEL源),本质是修改了/etc/pam.d/sshd文件,将google的PAM模块加入进去实

[root@centos8 ~]#dnf info google-authenticator BaseOS                                                                       3.3 MB/s | 3.9 kB     00:00     AppStream                                                                     2.9 MB/s | 4.3 kB     00:00     EPEL                                                                           34 kB/s | 4.7 kB     00:00     extras                                                                       7.3 kB/s | 1.5 kB     00:00     Available Packages Name         : google-authenticator Version     : 1.07 Release     : 1.el8 Architecture : x86_64 Size         : 57 k Source       : google-authenticator-1.07-1.el8.src.rpm Repository   : epel Summary     : One-time pass-code support using open standards URL         : https://github.com/google/google-authenticator-libpam/ License     : ASL 2.0 Description : The Google Authenticator package contains a plug-able authentication             : module (PAM) which allows login using one-time pass-codes conforming to             : the open standards developed by the Initiative for Open Authentication             : (OATH) (which is unrelated to OAuth).             :             : Pass-code generators are available (separately) for several mobile             : platforms.             :             : These implementations support the HMAC-Based One-time Password (HOTP)             : algorithm specified in RFC 4226 and the Time-based One-time Password             : (TOTP) algorithm currently in draft. [root@centos8 ~]#bash google-authenticator.sh Installed: google-authenticator-1.07-1.el8.x86_64                                                                       Complete! Do you want me to update your /root/.google_authenticator file? (y/n) y 你希望我更新你的“/root/.google_authenticator”文件吗(y/n)? Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) y 你希望禁止多次使用同一个验证令牌吗?这限制你每次登录的时间大约是30秒, 但是这加大了发现或甚 至防止中间人***的可能性(y/n)? By default, a new token is generated every 30 seconds by the mobile app. In order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. This allows for a time skew of up to 30 seconds between authentication server and client. If you experience problems with poor time synchronization, you can increase the window from its default size of 3 permitted codes (one previous code, the current code, the next code) to 17 permitted codes (the 8 previous codes, the current code, and the 8 next codes). This will permit for a time skew of up to 4 minutes between client and server. Do you want to do so? (y/n) y 默认情况下,令牌保持30秒有效;为了补偿客户机与服务器之间可能存在的时滞, 我们允许在当前时间前后有一个额外令牌。如果你在时间同步方面遇到了问题, 可以增加窗口从默认的 3个可通过验证码增加到17个可通过验证码, 这将允许客户机与服务器之间的时差增加到4分钟。你希望这么做吗(y/n)? If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting? (y/n) y 如果你登录的那台计算机没有经过固化,以防范运用蛮力的登录企图,可以对验证模块 启用尝试次数限制。默认情况下,这限制***者每30秒试图登录的次数只有3次。 你希望启用尝试次数 限制吗(y/n)? 在App Store 搜索Google Authenticator 进行App安装 Do you want authentication tokens to be time-based (y/n) y Warning: pasting the following URL into your browser exposes the OTP secret to Google: https://google.com/chart? chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@centos8.localdomain%3Fse cret%3D7YTAL4GW3TND7BICUMJGJLIFVE%26issuer%3Dcentos8.localdomain  #浏览器打开 此地址 Failed to use libqrencode to show QR code visually for scanning. Consider typing the OTP secret into your app manually. Your new secret key is: 7YTAL4GW3TND7BICUMJGJLIFVE Enter code from app (-1 to skip): 3. 访问生成的url(需要科学上网):   https://google.com/chart? chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/root@centos8.localdomain%3Fsecret %3D7YTAL4GW3TND7BICUMJGJLIFVE%26issuer%3Dcentos8.localdomain

6.7.5 pam_succeed_if 模块

功能:根据参数中的所有条件都满足才返回成功

案例:ubuntu默认不允许root登录桌面图形

用root登录桌面失败,查看日志,可看到Pam原因 Vim /etc/pam.d/gdm-passwd #将下面行注释 #auth requried pam_succeed_if.so user !=root quiet_success

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:视频采集中DMA控制的流模式接口设计
下一篇:SpringAOP实现登录验证的操作代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~