Sudo临时提权配置

Sudo临时提权配置

😄 Written by Zak Zhu

参考

Sudo简介

普通用户可以通过sudo命令来临时提权, 以拥有更高权限的用户身份来执行一些管理命令, 并且能限定其仅能够在某些主机上执行此类的命令, sudo命令操作过程还会被记录在日志中, 以便于日后审计.

Sudo配置文件

  • 配置文件:

    建议: 请在/etc/sudoers.d/下新建文件来配置sudo, 这样更为优雅 ~~

    1. /etc/sudoers
    2. /etc/sudoer.d/*

警告: 如果编写sudo配置存在语法错误, 则会导致sudo不可用. 因此必须使用visudo编辑配置文件以防止出错 !!

  • visudo命令:

    visudo - safely edit the sudoers file

    visudo [OPTIONS] [-f SUDOERS_FILE]
    # Options:
    	-c, --check					# check-only mode		
    	-f, --file=SUDOERS_FILE		# specify sudoers file location
    	-s, --strict				# strict syntax checking
    

Sudo配置语法

详细配置语法, 请man sudoers

Sudo allows glob characters to be used in host names, path names and command line arguments in the sudoers file.

条目格式

User	Host=(Runas)	Tag:Cmnd
# Note: Cmnd must use absolute path !!

别名示例

取别名时注意:

  • 英文字母要求全大写
  • 可以使用下划线
  1. User_Alias

    定义用户别名OPERATOR, 由develop组, zak用户, tian用户组成

    User_Alias OPERATOR = %develop, zak, tian
    
  2. Host_Alias

    • 定义主机别名DB, 由主机名为mysql1, mysql2, oracle1, oracle2组成

      Host_Alias DB = mysql*, oracle*
      
    • 定义主机别名WEB, 由IP地址为192.168.1.1至192.168.1.14, 172.16.32.1.1至172.16.32.1.14组成

      Host_Alias WEB = 192.168.1.0/28, 172.16.32.0/28
      
  3. Runas_Alias

    定义执行者别名OP, 以root和oracle的身份来执行命令

    Runas_Alias OP = root, oracle
    
  4. Cmnd_Alias

    定义命令别名PROCESSES, 由/bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall组成

    Cmnd_Alias KILL	= /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
    

Sudo配置实例

  1. 在/etc/sudoers文件中已配置了一条wheel组的提权, 这条配置允许属于wheel组的用户可以使用sudo命令在所有主机上执行所有命令

    1

  2. 提权网管可以在所有主机上使用网络相关命令管理系统网络

    • useradd netadmin ; passwd netadmin

    • visudo -f /etc/sudoers.d/netadmin

      Cmnd_Alias NETTOOLS = /usr/sbin/ifconfig, /usr/sbin/route, /usr/bin/firewall-cmd, /usr/bin/netstat, /usr/sbin/ss, /usr/bin/ping
      
      netadmin	ALL=(root)	NETTOOLS
      
  3. 提权账号管理者可以在所有主机上使用用户相关命令管理系统用户

    注意: 提权配置完, 需严谨测试, 防止root用户被修改 !!

    • useradd useradmin ; passwd useradmin

    • visudo -f /etc/sudoers.d/useradmin

      Cmnd_Alias USERCMD = /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod, /usr/bin/passwd ?*
      Cmnd_Alias BAN_USERCMD = /usr/sbin/usermod * root, /usr/bin/passwd root, /usr/bin/passwd * root
      
      useradmin       ALL=(root)       USERCMD, !BAN_USERCMD
      

      2

  4. 提权ansible用户可以在所有主机上无密码执行所有命令

    visudo -f /etc/sudoers.d/ansible

    ansible		ALL=(ALL)	NOPASSWD:ALL
    

Sudo日志记录

sudo默认通过syslog来记录操作日志, 可以在/var/log/secure文件里查看到sudo相关的日志. 不过, 我们也可以自定义sudo日志到指定文件.

自定义日志文件

visudo

添加如下内容:

Defaults log_host, log_year, logfile="/var/log/sudo.log"

0

posted @ 2019-10-10 00:01  ZakZhu  阅读(1503)  评论(0编辑  收藏  举报