Linux用户权限配置审计与提权风险排查实操指南

低价海外云服务器,香港/美国免备案服务器仅需8.8起

实操环境与前置条件

本次实操使用的系统为Kali Linux 2024.4版本,内核版本6.8.0,测试主机固定IP地址为192.168.31.120,网关192.168.31.1,DNS服务器为223.5.5.5。
前置条件如下:
1、测试主机已完成基础系统更新,具备可正常访问的官方软件源
2、操作账号拥有sudo权限,可执行特权命令完成审计与排查操作
3、系统已预装find、stat、sudo等基础工具,未安装的组件可通过apt命令完成部署
4、本次操作仅用于授权范围内的安全测试,请不要在未获得书面授权的系统上执行相关操作

一、Linux用户权限基础配置审计

用户权限配置是Linux系统安全的基础,异常的权限配置会直接成为红队的提权入口,该环节将从用户账号、sudo规则、文件目录权限三个维度完成全流程审计。

1.1 系统用户与组信息审计

Linux系统的用户与组信息集中存储在/etc/passwd、/etc/shadow、/etc/group三个核心文件中,审计的核心是排查异常账号、越权配置与权限泄露风险。

首先执行以下命令,查看系统全量用户配置,重点关注UID为0的账号与可登录用户:

root@kali:~# cat /etc/passwd | head -15
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
kali:x:1000:1000:kali:/home/kali:/bin/bash
test:x:1001:1001:test:/home/test:/bin/bash

配置说明:Linux系统中UID为0代表最高系统权限,正常情况下仅root账号的UID为0;shell字段为/bin/bash、/bin/sh等可登录shell的账号,需核实是否为授权使用的账号,其余系统账号默认应使用/sbin/nologin禁止登录。

执行以下命令,专项排查UID为0的非root账号,该类账号属于高风险越权账号:

root@kali:~# awk -F: '$3==0 && $1!="root" {print $1}' /etc/passwd

若命令有输出结果,说明系统存在额外的特权账号,需立即核实账号来源并清理。

接下来审计/etc/shadow文件,该文件存储用户密码哈希值,权限配置错误会直接导致密码泄露。执行以下命令查看文件权限:

root@kali:~# stat /etc/shadow
  File: /etc/shadow
  Size: 1635        Blocks: 8          IO Block: 4096   regular file
Device: 8,1 Inode: 262153      Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2026-04-20 10:20:00.000000000 +0800
Modify: 2026-04-15 14:30:00.000000000 +0800
Change: 2026-04-15 14:30:00.000000000 +0800
 Birth: 2026-03-01 09:00:00.000000000 +0800

正常配置下,/etc/shadow文件的权限应为0600,属主与属组均为root。若权限配置大于0600,比如出现其他用户可读权限,会导致密码哈希被非授权用户获取,需立即修复权限。

最后审计用户组配置,重点关注root组与sudo组的成员,执行以下命令:

root@kali:~# grep -E 'sudo|root' /etc/group
root:x:0:
sudo:x:27:kali

需逐行核实sudo组内的用户,仅授权用户可加入该组;root组内除root账号外,不应存在其他普通用户,避免越权风险。

1.2 用户sudo权限配置审计

sudo权限配置不当是Linux本地提权最常见的入口,配置文件为/etc/sudoers,同时/etc/sudoers.d/目录下的所有文件都会被加载生效。

首先执行以下命令,验证sudoers配置文件的语法合法性:

root@kali:~# visudo -c
/etc/sudoers: parsed OK
/etc/sudoers.d/kali-grant-root: parsed OK
/etc/sudoers.d/README: parsed OK

若输出结果中存在语法错误,会直接导致sudo命令无法正常使用。修改sudoers配置请不要直接使用vi/vim编辑,必须使用visudo命令,该命令会在保存时自动校验语法,避免配置错误导致系统权限管理异常。若已出现配置错误导致sudo无法使用,可通过pkexec visudo命令修复配置。

执行以下命令,查看系统全量生效的sudo权限规则,过滤掉注释与空行:

root@kali:~# cat /etc/sudoers /etc/sudoers.d/* 2>/dev/null | grep -v '^#' | grep -v '^$'
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
root    ALL=(ALL:ALL) ALL
%sudo   ALL=(ALL:ALL) ALL
@includedir /etc/sudoers.d
kali ALL=(root) NOPASSWD: ALL
test ALL=(ALL) NOPASSWD: /usr/bin/find, /usr/bin/vim

高风险配置排查要点:
1、NOPASSWD配置项,允许用户无需输入密码执行sudo命令,一旦对应用户账号被控制,红队可直接获取对应权限
2、ALL权限配置,允许用户执行所有系统命令,等同于完全的root权限,仅授权管理员账号可使用该配置
3、包含可提权命令的配置,比如find、vim、less、python、bash等命令,即使仅允许执行该单个命令,红队也可通过命令内置功能实现提权

执行以下命令,专项排查系统中所有NOPASSWD配置项:

root@kali:~# grep -r 'NOPASSWD' /etc/sudoers /etc/sudoers.d/
/etc/sudoers.d/kali-grant-root:kali ALL=(root) NOPASSWD: ALL
/etc/sudoers:test ALL=(ALL) NOPASSWD: /usr/bin/find, /usr/bin/vim

对于排查到的NOPASSWD配置,需严格限制可执行命令的范围,禁止配置ALL参数,同时移除可用于提权的危险命令,仅保留业务必需的最小权限命令。

1.3 文件与目录权限基础审计

文件与目录的权限配置直接决定数据的访问边界,异常的可写权限会导致配置被篡改、恶意代码执行等风险,重点审计系统关键目录与全局可写文件。

首先审计系统关键目录的权限配置,执行以下命令查看根目录权限:

root@kali:~# stat /
  File: /
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 8,1 Inode: 2           Links: 18
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2026-04-01 09:00:00.000000000 +0800
Modify: 2026-03-01 09:00:00.000000000 +0800
Change: 2026-03-01 09:00:00.000000000 +0800
 Birth: 2026-02-01 09:00:00.000000000 +0800

根目录的正常权限应为0755,仅root用户可写,若配置为其他用户可写,会导致严重的权限泄露风险。同理,/etc、/root、/usr/bin、/usr/sbin等系统关键目录,均需保证仅root用户可写。

执行以下命令,排查系统中所有全局可写的文件,全局可写代表系统所有用户均可修改文件内容:

root@kali:~# find / -type f -perm -0002 2>/dev/null | head -10
/tmp/test.sh
/tmp/backup.log
/var/tmp/debug.txt
/home/test/run.sh

全局可写文件的风险点在于,若该文件被root权限的进程、计划任务、服务调用,红队可通过修改文件内容插入恶意代码,在进程执行时实现提权。排查过程中,/tmp、/var/tmp等临时目录的文件需重点关注,业务脚本、配置文件禁止设置全局可写权限。

执行以下命令,排查系统中所有全局可写的目录:

root@kali:~# find / -type d -perm -0002 2>/dev/null | grep -v 'tmp'
/home/test/data
/opt/script

全局可写目录的风险在于,红队可在目录中写入恶意文件、替换原有文件,若该目录在特权进程的执行路径中,会直接导致提权。除系统默认的临时目录外,业务相关目录请不要设置全局可写权限。

二、Linux提权风险点专项排查

完成基础权限审计后,需针对Linux系统常见的提权路径做专项排查,提前发现红队可利用的风险点,完成前置防护。

2.1 SUID/SGID权限异常文件排查

SUID权限是Linux系统的特殊权限,设置了SUID的文件,执行时会继承文件属主的权限;若文件属主为root,普通用户执行该文件时会临时获得root权限,是红队本地提权的核心利用路径。

执行以下命令,排查系统中所有属主为root且设置了SUID权限的文件,为方便排查可将结果输出到文件中:

root@kali:~# find / -type f -user root -perm -4000 2>/dev/null | tee suid_files.txt
/usr/bin/su
/usr/bin/sudo
/usr/bin/passwd
/usr/bin/chsh
/usr/bin/chfn
/usr/bin/newgrp
/usr/bin/mount
/usr/bin/umount
/usr/bin/fusermount3
/usr/sbin/mount.nfs
/home/test/find
/opt/script/bash

正常系统中,SUID权限文件仅包含su、sudo、passwd等系统默认工具,排查重点为非系统默认路径的SUID文件,以及find、vim、bash、python、nmap等可用于提权的工具。

以find命令为例,若该文件设置了root属主的SUID权限,红队可通过以下命令直接获取root权限:

test@kali:~$ /home/test/find . -exec /bin/bash -p \;
bash-5.2# id
uid=1001(test) gid=1001(test) euid=0(root) groups=1001(test)

对于排查到的非必要SUID文件,可通过chmod u-s 文件名的命令移除SUID权限;对于业务必需的SUID文件,需严格限制文件的访问权限,仅允许授权用户执行。

同理,执行以下命令排查属主为root且设置了SGID权限的文件,SGID权限会让文件执行时继承属组的权限,若属组为root,同样存在提权风险:

root@kali:~# find / -type f -user root -perm -2000 2>/dev/null
/usr/bin/wall
/usr/bin/chage
/usr/bin/ssh-agent
/usr/bin/crontab
/usr/sbin/unix_chkpwd

2.2 可写配置文件与计划任务风险排查

计划任务是Linux系统中定时执行脚本或程序的功能,若计划任务以root权限执行,且对应的脚本、程序或配置文件存在可写权限,红队可通过篡改内容实现提权。

系统级计划任务的配置文件与目录包括/etc/crontab、/etc/cron.d/、/etc/cron.hourly/、/etc/cron.daily/等,用户级计划任务存储在/var/spool/cron/crontabs/目录下。

首先执行以下命令,查看系统核心crontab配置:

root@kali:~# cat /etc/crontab
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
0 2 * * *   root    /opt/backup/backup.sh

重点关注以root用户执行的任务,需逐行核实任务调用的脚本或程序的权限。以上述配置中的/opt/backup/backup.sh为例,执行以下命令查看文件权限:

root@kali:~# stat /opt/backup/backup.sh
  File: /opt/backup/backup.sh
  Size: 320         Blocks: 8          IO Block: 4096   regular file
Device: 8,1 Inode: 263001      Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2026-04-10 09:00:00.000000000 +0800
Modify: 2026-04-01 09:00:00.000000000 +0800
Change: 2026-04-01 09:00:00.000000000 +0800
 Birth: 2026-03-01 09:00:00.000000000 +0800

该文件设置了0777全局可写权限,任何用户都可以修改脚本内容,在每日凌晨2点执行时,插入的恶意代码会以root权限运行,属于极高风险配置。

执行以下命令,批量排查cron相关目录下的所有文件权限:

root@kali:~# find /etc/cron* -type f -exec ls -la {} \; 2>/dev/null
-rw-r--r-- 1 root root 1042 Mar  1 09:00 /etc/crontab
-rw-r--r-- 1 root root  102 Mar  1 09:00 /etc/cron.d/backup
-rwxr-xr-x 1 root root  320 Apr  1 09:00 /etc/cron.daily/0anacron
-rwxr-xr-x 1 root root  539 Mar  1 09:00 /etc/cron.daily/apt-compat

同时需关注计划任务中的PATH环境变量,若PATH配置中包含当前目录(.)或普通用户可写的目录,且目录顺序在系统目录之前,红队可在对应目录写入与系统命令同名的恶意文件,计划任务执行时会优先运行恶意文件,实现提权。

除计划任务外,还需重点排查/etc/passwd、/etc/sudoers、/etc/group、/etc/rc.local、/etc/systemd/system/等系统配置文件与服务目录,若这些文件或目录存在非root用户可写权限,红队可直接修改配置实现提权。

2.3 内核与系统组件漏洞风险排查

未修复的内核与系统组件漏洞,是红队实现本地提权的重要路径,即使权限配置完全合规,攻击者也可通过漏洞绕过权限限制获取root权限。

首先执行以下命令,查看系统内核版本:

root@kali:~# uname -a
Linux kali 6.8.0-kali3-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.8.6-1kali1 (2024-04-22) x86_64 GNU/Linux

需根据内核版本,排查是否存在公开的提权漏洞,常见的内核提权漏洞包括脏牛(CVE-2016-5195)、Dirty Pipe(CVE-2022-0847)、PTRACE_TRACEME漏洞(CVE-2019-13272)等。对于存在公开漏洞的内核版本,需立即升级到官方修复后的稳定版本。

执行以下命令,查看系统sudo组件的版本,sudo是提权漏洞高发的组件,历史上出现过多个本地提权漏洞:

root@kali:~# sudo -V
Sudo version 1.9.15p5
Sudoers policy plugin version 1.9.15p5
Sudoers file grammar version 48
Sudoers I/O plugin version 1.9.15p5

同理,polkit、dbus、docker等系统组件也存在多个历史提权漏洞,需定期更新组件版本,修复已知安全漏洞。对于生产环境系统,建议配置自动安全更新,及时修复高危漏洞。

2.4 权限配置不当的服务与进程排查

以root权限运行的服务与进程,若对应的可执行文件、配置文件、日志目录存在可写权限,红队可通过篡改内容实现提权,该类风险在业务自定义服务中尤为常见。

执行以下命令,查看系统中所有以root权限运行的进程:

root@kali:~# ps aux | grep root | head -10
root         1  0.0  0.1 168432 12340 ?        Ss   09:00   0:01 /sbin/init splash
root         2  0.0  0.0      0     0 ?        S    09:00   0:00 [kthreadd]
root       300  0.0  0.2 321456 23456 ?        Ss   09:00   0:00 /usr/sbin/sshd -D
root      1200  0.0  0.1 245678 11234 ?        S    09:05   0:00 /opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
root      1500  0.0  0.3 456789 34567 ?        Ssl  09:10   0:02 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

重点排查非系统默认的业务进程,以上述nginx进程为例,执行以下命令查看可执行文件的权限:

root@kali:~# stat /opt/nginx/sbin/nginx
  File: /opt/nginx/sbin/nginx
  Size: 1245678     Blocks: 2432       IO Block: 4096   regular file
Device: 8,1 Inode: 264001      Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2026-03-01 09:00:00.000000000 +0800
Modify: 2026-03-01 09:00:00.000000000 +0800
Change: 2026-03-01 09:00:00.000000000 +0800
 Birth: 2026-02-01 09:00:00.000000000 +0800

若该文件存在非root用户可写权限,攻击者可替换可执行文件,重启服务后即可执行恶意代码获取root权限。同时需排查服务对应的配置文件、日志目录、脚本文件的权限,避免出现可写风险。

对于systemd管理的服务,执行以下命令查看自定义服务的配置文件,重点关注服务的执行用户与ExecStart参数:

root@kali:~# cat /etc/systemd/system/test.service
[Unit]
Description=Test Business Service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/home/test/start.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

该服务以root权限运行,执行的脚本位于普通用户的家目录下,若脚本存在可写权限,攻击者可直接修改脚本内容,重启服务后实现提权。对于非必需的服务,请不要以root用户运行,需配置独立的普通用户执行服务进程,遵循最小权限原则。

三、自动化审计工具的部署与使用

手动审计可精准定位风险点,但效率较低,可通过专业的自动化审计工具完成全系统扫描,提升排查效率。

3.1 auditd审计工具部署与配置

auditd是Linux系统内置的审计工具,可实时监控系统关键文件的修改、特权命令的执行、权限变更等操作,实现风险行为的实时记录与事后追溯。

首先执行以下命令安装并启动auditd服务:

root@kali:~# apt update && apt install auditd -y
命中:1 http://http.kali.org/kali kali-rolling InRelease
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
auditd 已经是最新版 (1:3.1.2-2)。
0 个升级,0 个新安装,0 个要删除和 0 个不升级。
root@kali:~# systemctl enable --now auditd
Synchronizing state of auditd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable auditd
root@kali:~# systemctl status auditd
● auditd.service - Security Auditing Service
     Loaded: loaded (/lib/systemd/system/auditd.service; enabled; preset: enabled)
     Active: active (running) since Mon 2026-04-20 10:30:00 CST; 10s ago
       Docs: man:auditd(8)
             https://github.com/linux-audit/audit-userspace
   Main PID: 2000 (auditd)
      Tasks: 1 (limit: 4654)
     Memory: 1.2M
        CPU: 15ms
     CGroup: /system.slice/auditd.service
             └─2000 /sbin/auditd

执行以下命令,配置审计规则,监控系统关键权限文件的修改操作:

root@kali:~# auditctl -w /etc/passwd -p wa -k passwd_modify
root@kali:~# auditctl -w /etc/shadow -p wa -k shadow_modify
root@kali:~# auditctl -w /etc/sudoers -p wa -k sudoers_modify
root@kali:~# auditctl -w /etc/crontab -p wa -k crontab_modify

参数说明:-w指定监控的文件路径,-p wa指定监控写入与属性变更操作,-k设置规则的关键词,便于后续日志检索。

执行以下命令,查看已配置的审计规则:

root@kali:~# auditctl -l
-w /etc/passwd -p wa -k passwd_modify
-w /etc/shadow -p wa -k shadow_modify
-w /etc/sudoers -p wa -k sudoers_modify
-w /etc/crontab -p wa -k crontab_modify

当监控的文件被修改时,可通过ausearch命令检索对应的审计日志,比如查看/etc/sudoers文件的修改记录:

root@kali:~# ausearch -k sudoers_modify
----
time->Mon Apr 20 10:35:00 2026
type=PROCTITLE msg=audit(1713580500.123:45): proctitle=76697375646F002D73
type=PATH msg=audit(1713580500.123:45): item=0 name="/etc/sudoers.tmp" inode=262150 dev=08:01 mode=0100600 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(1713580500.123:45): cwd="/root"
type=SYSCALL msg=audit(1713580500.123:45): arch=c000003e syscall=82 success=yes exit=0 a0=55f8a7b8d240 a1=55f8a7b8d280 a2=0 a3=7fff5a6b78c0 items=1 ppid=1900 pid=2050 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="visudo" exe="/usr/sbin/visudo" subj=unconfined key="sudoers_modify"

日志中会记录操作的时间、执行的命令、操作用户、进程ID等信息,可用于风险行为的追溯与排查。

3.2 Lynis安全审计工具使用

Lynis是一款开源的Linux安全审计工具,可自动扫描系统的权限配置、提权风险、漏洞、合规性等内容,生成详细的审计报告,是蓝队常用的安全审计工具。

执行以下命令安装Lynis:

root@kali:~# apt install lynis -y
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
lynis 已经是最新版 (3.0.9-1)。
0 个升级,0 个新安装,0 个要删除和 0 个不升级。

执行以下命令,启动系统全量安全审计:

root@kali:~# lynis audit system
[+] Initializing program
------------------------------------
  - Detecting OS...                                           [ DONE ]
  - Checking profiles...                                      [ DONE ]
  - Detecting language and localization                       [ DONE ]
  - Using language: en (English)
  - Program version: 3.0.9
  - Operating system: Linux
  - Kernel version: 6.8.0
  - Hardware platform: x86_64
  - Hostname: kali
  - Auditor: root
  - Scan mode: full system scan
  - Log file: /var/log/lynis.log
  - Report file: /var/log/lynis-report.dat

... 扫描过程省略 ...

[+] File Permissions
------------------------------------
 - Checking umask value                                              [ OK ]
 - Checking file permissions in /etc                                 [ OK ]
 - Checking file permissions in /home                                [ WARNING ]
 - Checking for SUID/SGID files                                      [ FOUND ]
 - Checking for world writable files                                 [ FOUND ]
 - Checking for orphaned files                                        [ OK ]

... 扫描过程省略 ...

  ===============================================================================
  Lynis security scan details:

  Hardening index : 65 [##############      ]
  Tests performed : 267
  Plugins enabled : 0

  Components:
  - Firewall               [V]
  - Malware scanner        [X]

  Scan mode:
  - Normal                 [V]
  - Forensics              [X]
  - Pentest                [X]

  Tips:
  - Run lynis show details TEST-ID to see details about a test
  - Use the --profile option to scan with a custom profile
  - Enable plugins to get more functionality
  - Check the log file and report for more details

扫描完成后,Lynis会生成系统加固指数,标记出所有风险项与警告项,详细的扫描报告存储在/var/log/lynis.log文件中,可根据报告中的提示逐一修复风险点。

四、风险修复与权限加固建议

完成审计与排查后,需针对发现的风险点完成修复,同时建立常态化的权限管理机制,具体建议如下:
1、严格限制系统用户的权限,删除未使用的闲置账号,禁止非授权用户拥有sudo权限,sudo配置需遵循最小权限原则,严格限制可执行的命令范围,禁止使用NOPASSWD: ALL类的全权限配置
2、规范文件与目录的权限配置,系统关键目录与文件仅允许root用户可写,移除非必要的SUID/SGID权限,定期排查全局可写的文件与目录,业务脚本与配置文件禁止设置全局可写权限
3、定期更新系统内核与软件包,修复已知的安全漏洞,对于不再维护的系统版本,及时升级到官方支持的稳定版本,生产环境建议配置自动安全更新,及时修复高危漏洞
4、配置系统审计工具,监控关键文件的修改与特权命令的执行,建立定期安全审计机制,每月至少完成一次全系统的权限审计与风险排查,及时发现并修复潜在风险
5、规范服务与进程的运行权限,禁止非必要的服务以root用户运行,为业务服务配置独立的普通用户,服务对应的可执行文件、配置文件与脚本需严格限制写入权限,仅授权用户可修改

THE END
喜欢就关注一下咱们公众号吧
点赞37 分享