首页 > 其他分享 >第十六天: 利用 sudo 实现授权、PAM、时间同步

第十六天: 利用 sudo 实现授权、PAM、时间同步

时间:2024-01-30 22:33:43浏览次数:22  
标签:第十六 sudo 用户 pam etc 模块 PAM

一、sudo 组成

sudo 即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性 sudo特性: sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系 管理员 sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服 务器 sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得 了一张存活期为5分钟的票 sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它 所存放的位置默认是在/etc/sudoers,属性必须为0440

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

执行授权命令:/usr/bin/sudo 时间戳文件:/var/db/sudo 日志文件:/var/log/secure   二、sudo 命令 sudo命令 ls -l /usr/bin/sudo sudo -i -u wang 切换身份功能和 su 相似,但不一样,sudo必须提前授权,而且要输入自已的密码 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]] 字母

 

 

sudo别名有四种类型: User_Alias Runas_Alias Host_Alias Cmnd_Alias 别名格式:[A-Z]([A-Z][0-9]_)* 别名定义:Alias_Type NAME1 = item1,item2,item3 : NAME2 = item4, item5    四、实战案例   五、PAM认证机制 1、PAM 介绍  PAM:Pluggable Authentication Modules,插件式的验证模块,Sun公司于1995 年开发的一种与认证 相关的通用框架机制。PAM 只关注如何为服务验证用户的 API,通过提供一些动态链接库和一套统一的 API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配 置不同的认证方式而无需更改服务程序一种认证框架,自身不做认证  2、PAM架构  

 3、 PAM相关文件

 包名: pam 模块文件目录:/lib64/security/*.so 特定模块相关的设置文件:/etc/security/ 应用程序调用PAM模块的配置文件 主配置文件:/etc/pam.conf,默认不存在,一般不使用主配置 为每种应用模块提供一个专用的配置文件:/etc/pam.d/APP_NAME 注意:如/etc/pam.d存在,/etc/pam.conf将失效   4、PAM工作原理 PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证 文件(位于/lib64/security下)进行安全认证    5、PAM 配置文件格式说明  

 application:指服务名,如:telnet、login、ftp等,服务名字“OTHER”代表所有没有在该文件中明确配置的其它服务

type:指模块类型,即功能 control :PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关健词实现 module-path: 用来指明本模块对应的程序文件的路径名 Arguments: 用来传递给该模块的参数   模块类型(module-type) Auth 账号的认证和授权 Account 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务 的访问时间,限制用户的位置(例如:root用户只能从控制台登录) Password 用户修改密码时密码复杂度检查机制等功能 Session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等 -type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有 用 Control: required :一票否决,表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败结 果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕,再将失败结果返回给应 用程序,即为必要条件 requisite :一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执 行同一type内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件 sufficient :一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其 它模块,但如果本模块返回失败可忽略,即为充分条件,优先于前面的required和requisite optional :表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略 include: 调用其他的配置文件中定义的配置信息 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 允许该模块显示用户的帐号名等信息,一般只能在安全的环境下使用,因为泄漏用户名会对安全造成一定程度的威胁   6、PAM模块帮助 官方在线文档:http://www.linux-pam.org/Linux-PAM-html/   pam模块文档说明:/user/share/doc/pam-* rpm -qd pam man -k pam_ man 模块名 如:man 8 rootok    7、常用PAM模块 1、 pam_nologin.so 模块 功能:如果/etc/nologin文件存在,将导致非root用户不能登陆,当该用户登陆时,会显示/etc/nologin文 件内容,并拒绝登陆 2、 pam_limits.so 模块  功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间 修改限制的实现方式: (1) ulimit命令 ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制。 ulimit的设定值是 per-process 的,也就是说,每个进程有自己的limits值。 使用ulimit进行修改,立即生效。 ulimit只影响shell进程及其子进程,用户登出后失效。 可以在profile中加入ulimit的设置,变相的做到永久生效。 -H 设置硬件资源限制.

 

(2) 配置文件: pam_limits的设定值是基于 per-process 的  /etc/security/limits.conf /etc/security/limits.d/*.conf  配置文件格式: #每行一个定义 <domain>       <type> <item> <value>   3、pam_google_authenticator 模块 功能:实现SSH登录的两次身份验证,先验证APP的数字码,再验证root用户的密码,都通过才可以登录。

 

六、时间同步服务 加密和安全当前都离不开时间的同步,否则各种网络服务可能不能正常运行  1、计时方式 原子钟(Atomic clock) 2、时间同步服务 多主机协作工作时,各个主机的时间同步很重要,时间不一致会造成很多重要应用的故障,如:加密协 议,日志,集群等, 利用NTP(Network Time Protocol) 协议使网络中的各个计算机时间达到同步。 目前NTP协议属于运维基础架构中必备的基本服务之一 时间同步软件实现: ntp chrony ntp: 将系统时钟和世界协调时UTC同步,精度在局域网内可达0.1ms,在互联网上绝大多数的地方精度可以 达到1-50ms 项目官网:http://www.ntp.org chrony: 实现NTP协议的的自由软件。可使系统时钟与NTP服务器,参考时钟(例如GPS接收器)以及使用手表 和键盘的手动输入进行同步。还可以作为NTPv4(RFC 5905)服务器和对等体运行,为网络中的计算机 提供时间服务。设计用于在各种条件下良好运行,包括间歇性和高度拥挤的网络连接,温度变化(计算 机时钟对温度敏感),以及不能连续运行或在虚拟机上运行的系统。 通过Internet同步的两台机器之间的典型精度在几毫秒之内,在LAN上,精度通常为几十微秒。利用硬 件时间戳或硬件参考时钟,可实现亚微秒的精度  3、chrony

 

 

 

 

 

 

 

 

标签:第十六,sudo,用户,pam,etc,模块,PAM
From: https://www.cnblogs.com/dujy/p/17993582

相关文章

  • 第十六天:ssh服务
    一、ssh服务介绍ssh:secureshellprotocol,22/tcp,安全的远程登录,实现加密通信,代替传统的telnet协议具体的软件实现:OpenSSH:ssh协议的开源实现,CentOS默认安装dropbear:另一个ssh协议的开源项目的实现SSH协议版本v1:基于CRC-32做MAC,不安全;man-in-middle......
  • sudo提权,ansible批量给所有主机创建系统账户,授权
    sudo(superuseroranotherdo)让普通用户可以以超级管理员或其他人的身份执行命令。sudo基本流程如下:1.管理员需要先授权(修改/etc/sudoers文件)2.普通用户以sudo的形式执行命令3.可以通过sudo-l查看授权情况修改/etc/sudoers的方法如下:1.visudo(带语法检查,默认没有颜色提示)2......
  • sudo: unable to resolve host xxxx: Name or service not known
    前言在Linux环境中,我使用sudo执行命令,发生报错:sudo:unabletoresolvehostxxxx:Nameorservicenotknown解决这个错误通常发生在更改主机名后,使用sudo命令时出现问题。sudo命令会尝试解析主机名,但如果无法解析,就会出现"sudo:unabletoresolvehost"的错误。然而......
  • sudo免密还需要输密码
    一、问题现象###使用sudo提示输入密码[userread@test~]$sudojstat-gcutil697543000我们信任您已经从系统管理员那里了解了日常注意事项。总结起来无外乎这三点:#1)尊重别人的隐私。#2)输入前要先考虑(后果和风险)。#3)权力越大,责任越大。[sudo]us......
  • 数独Sudoku游戏解题C语言和Golang(Go语言)实现
    Go语言实现packagemainimport( "fmt" "os")const( N=9 EmptyCell='0')funcmain(){ iflen(os.Args)!=2||len(os.Args[1])!=81{ fmt.Println("错误:程序需要一个正好包含81位数字的参数。") os.Exit(1) } boa......
  • ansible使用sudo权限执行命令
    1.修改ansible配置文件vim/etc/ansible/ansible.cfg取消注释的行:remote_tmp=~/.ansible/tmpinventory=/etc/ansible/hostshost_key_checking=False2.编写host文件vim/etc/ansible/hosts10.0.3.2ansible_ssh_user="ydpower"ansible_ssh_port="5151"a......
  • vulnhub-devguru(sudo提权)
    环境准备:靶机192.168.0.100攻击机kali192.168.0.128演示使用nmap扫描全端口首先访问80端口 信息收集发现访问/.git/config存在,使用githack获取源码  访问adminer.php,为一个mysql的登录界面。 查找配置文件,找到mysql登录密码。/config/database.php 登录数......
  • vulnhub-toppo(suid提权sudo提权)
    环境准备靶机192.168.116.138攻击机kali192.168.116.130演示直接访问webadmin目录下存在密码本使用ssh连接,账号ted,密码12345ted123使用项目进行探测LinEnumhttps://github.com/rebootuser/LinEnum 存在python可以使用suid提权使用python反弹shell /usr/b......
  • [FreeBSD]如何在FreeBSD 14.0上使用sudo命令
    Itispossibletousesutoexecutecommandsasroot,forexample%suroot-c'pkginspackage'thenenterrootpassword,oreditsudoersfileandaddyouruser,orgiveaccesstothewheelgroup:execute%suroot-cvisudo,thenuncommentCode:%w......
  • UCB Data100:数据科学的原理和技巧:第十六章到第二十章
    十六、交叉验证和正则化CrossValidationandRegularization译者:飞龙协议:CCBY-NC-SA4.0学习成果认识到需要验证和测试集来预览模型在未知数据上的表现应用交叉验证来选择模型超参数了解L1和L2正则化的概念基础在特征工程讲座结束时(第14讲),我们提出了调......