Sudo临时提权配置

目录

  • Sudo临时提权配置
    • 参考
    • Sudo简介
    • Sudo配置文件
    • Sudo配置语法
    • Sudo配置实例
    • Sudo日志记录

Sudo临时提权配置

Written by Zak Zhu

参考

  • LinuxPanda/sudo的使用和配置(https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_009.html)
  • Sudo(https://wiki.archlinux.org/index.php/Sudo_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#%E8%AE%A9_sudo_%E4%BD%BF%E7%94%A8_/etc/sudoers.d_%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6)
  • 马哥linux视频
  • Aaron Kili/在Linux中设置sudo的十条sudoers实用配置(https://linux.cn/article-8145-1.html)

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_Aias

    定义用户别名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

      Sudo临时提权配置_第1张图片

  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"

Sudo临时提权配置_第2张图片

你可能感兴趣的:(Sudo临时提权配置)