Linux渗透测试

su用户切换

su机制介绍

su(substitute user):切换/替换用户

  • root切换为任何可登录的用户,无需密码
  • 普通用户切换至其他用户时,需要验证目标用户的密码
  • 不指定目标用户时,默认切换为root

10.5.1

su基本用法

切换到新用户的登录环境

  • 执行su - 用户名 进入新的用户环境
  • 执行exit返回原来的用户
1
2
3
4
5
6
7
8
9
[root@ntd ~]# su - student        //切换为student,其中 - 表示登录

[student@ntd ~]$ pwd //以student身份执行任务
/home/student

[student@ntd ~]$ exit //退出切换环境
注销

[root@ntd ~]# //已返回到原来的环境

禁止滥用su切换权限

通常情况下,任何用户都被允许使用su 切换

但openEuler中启用了wheel组限制

  • 除了root以外,只有加入wheel组的用户才被允许使用su
  • 切换其他人使用su切换时,会提示拒绝权限
1
2
3
4
5
6
7
8
9
[root@ntd ~]# useradd student            //创建student用户

[root@ntd ~]# passwd student //为student设置密码

[root@ntd ~]# su - student //从root切换到student(允许)

[student@ntd ~]$ su - root //从student切换到root(拒绝)
密码:
su: 拒绝权限

使用su切换

  • 将用户添加到wheel组中
1
2
3
4
5
6
[root@ntd ~]# gpasswd -a student wheel        //将student用户加入到wheel组
正在将用户“student”加入到“wheel”组中

[root@ntd ~]# su - student //切换到student用户

[student@ntd ~]$ su - root //从student切换到root用户
  • 取消wheel组限制(注释配置项使其失效)
1
2
3
[root@ntd ~]# vi /etc/pam.d/su

#auth required pam_wheel.so use_uid

su操作日志

安全日志/var/log/secure文件

  • 记录了用户登录、切换相关的事件信息
  • 查找su-l关键词(/su-l),可以找到与使用su切换用户相关的消息
1
2
3
4
[root@ntd ~]# less /var/log/secure

Jan 4 14:50:59 ntd su[2075]: pam_unix(su-l:session): session opened for user student(uid=1001) by root(uid=0)
Jan 4 14:51:08 ntd su[2147]: pam_unix(su-l:session): session opened for user root(uid=0) by root(uid=1001)

sudo命令提权

sudo机制介绍

sudo(super doing):执行管理员授权的命令

  • 允许授权用户代替管理员(或其他用户) 来完成预先授权的命令
  • 授权用户、授权命令需要提前配置
  • 通过sudo执行命令时,只验证自己的密码 (5分钟内不重复验证)

10.5.2

配置sudo授权

使用visudo专用工具

  • 授权规则:用户名 本机可用主机名列表=(用户身份) 授权命令列表
  • 不指定用户身份时,缺省为root
  • 指定用户组使用%组名
1
2
3
4
5
[root@ntd ~]# visudo

%wheel ALL=(ALL) ALL
zx ALL= /usr/bin/nmtui
zy ALL= ALL

sudo基本用法

sudo -l:查看自己的sudo授权

1
2
3
4
5
6
[zy@ntd ~]$ sudo -l

[sudo] zy 的密码: //初次使用时,验证用户zy的密码(5分钟内不再验证)

用户 zy 可以在 ntd 上运行以下命令:
(root) ALL

执行管理员已允许提权的命令

  • sudo 命令
1
2
3
4
5
6
7
[zy@ntd ~]$ mkdir /zydir                 //正常使用,无权在/下创建子目录
mkdir: 无法创建目录 “/zydir”: 权限不够

[zy@ntd ~]$ sudo mkdir /zydir //sudo提权,成功在/下创建子目录

[zy@ntd ~]$ ls -ld /zydir
drwxr-xr-x. 2 root root 4096 1月 4 15:16 /zydir

开启sudo操作日志

  • 日志审计功能默认不开启
  • 如果需要,可以手动开启sudo操作日志
1
2
3
[root@ntd ~]# visudo

Defaults logfile=/var/log/sudo //添加此行,设置sudo日志位置
1
2
3
[root@ntd ~]# cat /var/log/sudo            //查看sudo记录
Jan 4 15:20:32 : zy : TTY=pts/0 ; PWD=/home/zy ; USER=root ;
COMMAND=/usr/bin/rm -rf /zydir

systemctl系统控制

systemctl工具

用户主要通过systemctl来控制系统和服务状态

10.5.3

启动、停止、重启服务

基本用法

  • systemctl –type service //列出所有服务
  • systemctl start service //启动服务
  • systemctl stop service //停止服务
  • systemctl restart service //重启服务
1
2
3
4
5
6
[root@ntd ~]# systemctl --type service
UNIT LOAD ACTIVE SUB DE>
atd.service loaded active running De>
auditd.service loaded active running Se>
chronyd.service loaded active running NT>
crond.service loaded active running Co>

检查服务状态

基本用法

  • systemctl is-active 服务名 //检查服务状态(简洁)
  • systemctl status 服务名 //检查服务状态(详细)

主要看Active:信息

  • active(running)表示运行中,inactive(dead)表示已停止
1
2
3
4
5
6
7
8
9
[root@ntd ~]# systemctl start firewalld              //开启防火墙服务

[root@ntd ~]# systemctl is-active firewalld //检查防火墙服务状态
active //已开启

[root@ntd ~]# systemctl stop firewalld //关闭防火墙服务

[root@ntd ~]# systemctl is-active firewalld //检查防火墙服务状态
inactive //已关闭

允许服务开机自启动

基本用法

  • systemctl enable 服务名 //允许开机自启
  • systemctl enable –now 服务名 //允许开机自启,并立即启动
  • systemctl is-enabled 服务名 //查看是否设置为开机自启
1
2
3
[root@ntd ~]# systemctl enable firewalld             //设置防火墙服务开机自启	
[root@ntd ~]# systemctl is-enabled firewalld
enabled //已设置为开机自启

禁止服务开机自启动

基本用法

  • systemctl disable 服务名 //禁止开机自启
  • systemctl disable –now 服务名 //禁止开机自启,并立即停止服务
1
2
3
4
5
[root@ntd ~]# systemctl disable firewalld                              //禁止防火墙服务开机自启
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@ntd ~]# systemctl is-enabled firewalld
disabled //已设置为禁止开机自启

SELinux防护

SELinux介绍

Security Enhanced Linux,安全增强型Linux系统

源于美国国家安全局(NSA) 强制保护安全策略

  • 主要针对Linux系统中的文件、进程等提供策略保护
  • 用户只分配“需要”的最小权限
  • 进程只访问“需要”的资源
  • 网络服务只能开启“需要”的端口

查看SELinux运行状态

三种运行状态

  • Enforcing,强制(严格按策略执行保护)
  • Permissive,宽松(若有违规会记录,但不会做真正限制)
  • Disable,禁用(内核不加载SELinux)

检查当前的SELinux运行状态

1
2
[root@ntd ~]# getenforce            //获取SELinux状态
Enforcing //强制保护

切换SELinux运行状态

立即切换(在“强制”与“宽松”之间)

  • 使用setenforce 1|0,执行后立即生效
1
2
3
4
5
6
7
[root@ntd ~]# setenforce 0          //切换为宽松模式
[root@ntd ~]# getenforce
Permissive

[root@ntd ~]# setenforce 1 //切换为强制模式
[root@ntd ~]# getenforce
Enforcing