服务器root权限安全策略配置

2023-11-03

服务器root权限安全策略配置

linux系统中,root具有至高无上的权限,为了安全起见,项目生产环境一般会要求禁止root用户直接ssh登录,使用普通用户登录,有特殊需求时,特定组用户可以使用su切换到root用户,或sudo切换到root权限进行操作。
image-20220215164810497
❗️❗️❗️ 注意: 整改有风险,请确认整改后的可能影响,并谨慎操作!

禁止root用户直接ssh登录

  1. 新建用户并设置密码
useradd admin && echo password123 | passwd --stdin admin

image-20220216100448856
2. 将新用户加入sudoers

cat /etc/sudoers |grep -A 2 "## Allow root to run"                    # 显示匹配行和之后的2行
sed -i '/## Allow root to run/a\admin\tALL=(ALL)\tALL' /etc/sudoers   # 关键字匹配行之后插入一行
cat /etc/sudoers |grep -A 2 "## Allow root to run"

image-20220216100531270
3. 用户登录和su测试

echo $UID
su
echo $UID

image-20220216100707840
4. 日常运维操作测试

kubectl get pod -A
sudo kubectl get pod -A | grep -iv run
sudo kubectl get pod -A |wc -l
sudo kubectl get pod -A

image-20220216102725839
5. 禁用root用户ssh登录

sed -i 's/PermitRootLogin yes/#PermitRootLogin yes/g' /etc/ssh/sshd_config    # 添加注释
cat /etc/ssh/sshd_config |grep PermitRootLogin
systemctl restart sshd

image-20220216103012866
6. 再次登录测试
预期:
root用户无法ssh登录,新建用户ssh登录正常,sudo权限使用正常,可以su切换到root
验证:
root用户ssh登录失败
image-20220216103702746
已加入sudoers的新建用户ssh登录正常,sudo权限使用正常,su切换到root正常
image-20220216104627426
未加入sudoers用户ssh登录正常,不能使用sudo,但su切换到root正常
image-20220216104818350
如果需要设置sudo的超时时间,请点击文末的链接查阅参考。

限制用户su切换到root

  1. 新建用户并加入wheel组
useradd abc && echo password123 | passwd --stdin abc
usermod -G wheel abc

或将已有用户加入wheel组

usermod -G wheel admin

image-20220216112524719
2. 设置只允许wheel组用户使用su命令切换到root

cat /etc/pam.d/su |grep "pam_wheel.so use_uid"
sed -i '/pam_wheel.so use_uid/s/^#//' /etc/pam.d/su          # 去掉注释
cat /etc/pam.d/su |grep "pam_wheel.so use_uid"

image-20220216112621524

echo "SU_WHEEL_ONLY yes" >> /etc/login.defs                  # 文末追加
tail /etc/login.defs

image-20220216113055666
3. 验证测试
预期:
wheel组用户su切换root正常,sudo权限正常;
新建非wheel组用户,加入sudoers后,无法su切换到root,但sudo权限使用正常;
未加入sudoers且非wheel组用户,既无法su切换到root,也无法使用sudo权限

cat /etc/group |grep wheel                      # 查看wheel组用户

image-20220216113604777
验证:
wheel组用户,su切换root正常,sudo权限正常
image-20220216114105877
image-20220216114424770
非wheel组用户-新建用户加入sudoers,sudo权限使用正常,不能su切换到root

useradd qaz && echo password123 | passwd --stdin qaz
cat /etc/sudoers |grep -A 3 "## Allow root to run"                    # 显示匹配行和之后的3行
sed -i '/## Allow root to run/a\qaz\tALL=(ALL)\tALL' /etc/sudoers     # 关键字匹配行之后插入一行
cat /etc/sudoers |grep -A 3 "## Allow root to run"

image-20220216115735932
image-20220216120507090
非wheel组用户-原有用户未加入sudoers,sudo和su切换都无法使用
image-20220216115205314

参考文章

sudo 密码超时时间
只允许特定的组用户su切换到root

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

服务器root权限安全策略配置 的相关文章

  • 将 jar 作为 Linux 服务运行 - init.d 脚本在启动应用程序时卡住

    我目前正在致力于在 Linux VM 上实现一个可运行的 jar 作为后台服务 我已经使用了找到的例子here https gist github com shirish4you 5089019作为工作的基础 并将 start 方法修改为
  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • Gtk-ERROR **:检测到 GTK+ 2.x 符号

    我正在使用 gcc 编译我的 c 应用程序 并使用以下标志 gcc evis c pkg config cflags libs gtk 2 0 libs clutter gtk 1 0 libs gthread 2 0 Wall o evi
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • 当 grep "\\" XXFile 我得到“尾随反斜杠”

    现在我想查找是否有包含 字符的行 我试过grep XXFile但它暗示 尾随反斜杠 但当我尝试时grep XXFile没关系 谁能解释一下为什么第一个案例无法运行 谢谢 区别在于 shell 处理反斜杠的方式 当你写的时候 在双引号中 sh
  • “make install”将库安装在 /usr/lib 而不是 /usr/lib64

    我正在尝试在 64 位 CentOS 7 2 上构建并安装一个库 为了这个目的我正在跑步 cmake DCMAKE BUILD TYPE Release DCMAKE INSTALL PREFIX usr DCMAKE C COMPILER
  • php exec 返回的结果比直接进入命令行要少

    我有一个 exec 命令 它的行为与通过 Penguinet 给 linux 的相同命令不同 res exec cd mnt mydirectory zcat log file gz echo res 当将命令直接放入命令行时 我在日志文件
  • waitpid() 的作用是什么?

    有什么用waitpid 它通常用于等待特定进程完成 或者如果您使用特殊标志则更改状态 基于其进程 ID 也称为pid 它还可用于等待一组子进程中的任何一个 无论是来自特定进程组的子进程还是当前进程的任何子进程 See here http l
  • ssh:连接到主机 bitbucket.org 端口 22:连接超时致命

    整个错误是 ssh connect to host bitbucket org port 22 Connection timed out fatal The remote end hung up unexpectedly 当我从位于不同服务
  • 在两次之间每分钟执行一次 Cronjob

    我需要在 crontab 中每分钟运行一个 bash 脚本8 45am and 9 50am每天的 Code 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 8 home pull sh gt ho
  • 如何查询X11显示分辨率?

    这似乎是一个简单的问题 但我找不到答案 如何查询 通过 X11 存在哪些监视器及其分辨率 查看显示宏 http tronche com gui x xlib display display macros html and 屏幕宏 http
  • 无法连接到 EC2 - ssh:连接到主机端口 22:连接被拒绝

    我目前在海外 尝试通过 ssh 连接到我的 EC2 实例 但收到错误ssh connect to host ec2 34 207 64 42 compute 1 amazonaws com port 22 Connection refuse
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • GitLab:无法将代码推送到服务器?

    我已经在 Ubuntu 服务器上安装了 GitLab 一切似乎都工作正常 除了我无法向服务器推送 拉取 克隆 当我按下时 我收到一般错误消息 fatal Could not read from remote repository Pleas
  • 如何在 GNU/Linux 上设置 Subversion (SVN) 服务器 - Ubuntu [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一台运行 Ubuntu 的笔记本电脑 我想将其用作 Subversion 服务器 既让我自己在本地承诺 也让其他人远程承诺 要使其
  • 如何从 PROC 获取有关子进程的信息

    我正在尝试编写一个以几个进程作为参数的程序 然后父进程执行每个子进程并打印出一些相关的统计信息 示例 generate ls l 将生成一个程序 打印出有关 ls l 的一些统计信息 特别是其系统时间 用户时间和上下文切换次数 我不想使用
  • 让 TeXstudio 在 linux mint 中工作:找不到文件“url.sty”。

    刚刚切换到 Linux Mint 以前的顽固 Windows 用户 我在尝试安装 TeXstudio 时遇到一些问题 Sudo apt get install texstudio 给了我一个正确的安装 至少 我是这么认为的 但是当我尝试构建
  • 无法通过 Python 子进程进行 SSH

    我需要通过堡垒 ssh 进入机器 因此 该命令相当长 ssh i

随机推荐