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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM