Managing Security and Risk —— 管理安全性和风险

2023-03-12
2023-03-16
4 min read
Hits

  本文是 RHCSS 培训课程第一节课的内容,博主结合红帽官方英文教材《RH415-RHEL7.5 Managing Security and Risk》和红帽讲师翻译的中文教材《第一章 管理安全性和风险》整理了如下笔记。

Risk Management

持续风险管理生命周期

graph LR; A[Plan] --> B[Track] B --> C[Control] C --> D[Identify] D --> E[Analyze] E --> A

持续安全性和风险管理生命周期

graph LR; A[Manage] --> B[Adapt] B --> C[Design] C --> D[Build] D --> E[Run] E --> A

几个缩写

CVSS —— 通用漏洞评估系统

CVE(Common Vulnerabilities and Exposures)—— 常见漏洞和披露

RHSA —— 红帽安全公告

RHBA —— 红帽错误修复公告

RHEA —— 红帽增强功能公告

SOE(Standard Operating Environment)—— 标准操作环境:SOE 是标准化的基准安装,仅包含所有服务器安装所需的软件包

几行代码

cat /etc/rht     # 查看 RHT_COURSE 课程编号
sudo free -m     # 查看内存,RHEL 实验环境至少需要 12GB,建议 16GB
(sudo)virt-manager     # 查看有几台 KVM
rht-vmctl status all     # 查看有几台 KVM(建议使用此命令)
rht-vmctl start all     # 启动所有虚拟机
rht-vmctl stop workstation     # 关闭 workstation 虚拟机
rht-vmctl reset tower     # 重置 tower 虚拟机
ss -twl     # 确定哪些端口正打开并正在侦听
su     # 直接到 /root,环境变量不变
su -     # 到 /home 下的用户目录且有 login shell,是当前 SSH fork 出的一个子进程
sudo -i     # 非完全切换,保留原有环境变量
(sudo)parted /dev/sda unit MiB print     # 以 MB 为单位打印出 sda 硬盘容量
vim /etc/sudoers.d/user     # 修改普通用户 user sudo 权限
visudo     # sudo 的总配置文件
id     # 查看当前用户 id
hostname     # 查看当前所在主机
ls -lh ~/.ssh     # 查看 ssh 密钥对及对应权限

几个知识点

KVM 状态

  • DEFINED:可以使用,但未运行
  • MISSING:虚拟机(域)被清除
  • RUNNING:正在运行

yum 的 rpm 最好加上 gpgcheck 用于校验。GPG 的原理是通信双方各拥有一对密钥,用自己的私钥签名,用对方的公钥加密。

su 后有没有 - 的区别在于环境变量不同,没有 - 时,环境变量不变。

Red Hat 7 和 8 中,如果用户没有设置 sudo 权限,但依旧能通过输入密码提权,是因为该用户加入了 wheel 组。

启动虚拟机

  本练习需要用到三个虚拟机:workstation、servera 和 serverb,所以我们在 fondation 中先启动这三个虚拟机

rht-vmctl start workstation     # 启动 workstation 虚拟机
rht-vmctl start servera     # 启动 servera 虚拟机
rht-vmctl start serverb     # 启动 serverb 虚拟机

SSH 免密登陆

ssh-keygen 生成密钥对

[student@workstation ~]$ lab securityrisk-recommend setup     # 实验环境准备
[student@workstation ~]$ ssh student@servera     # 使用 ssh 登陆 servera 的 student 账户
[student@servera ~]$ ssh-keygen     # 使用 ssh-keygen 生成 ssh 密钥对

使用 ssh-keygen 生成密钥对时,如需修改密钥保存目录,需写全目录名,如保存为:/home/root/.ssh/id_rsa.pub。如没有写全目录,则密钥默认保存至“/home”目录。

配置 serverb 免密登录

[student@servera ~]$ ssh-copy-id student@serverb     # 将公钥拷贝至 serverb 的 student 账户
[student@servera ~]$ ssh serverb 'hostname'     # 通过 ssh 连接 serverb 并打印“hostname”
serverb.lab.example.com     # 已无需输入密码直接回显结果,证明上述配置成功
[student@servera ~]$ ssh root@serverb     # 通过 ssh 登陆 serverb 的 root 账户,此时仍需输入密码
[root@serverb ~]# logout     # 退出 serverb 返回至 servera
[student@servera ~]$ ssh student@serverb     # 通过 ssh 登陆 serverb 的 student 账户,此时已无需输入密码

使用 ssh-copy-id 时,拷贝的一定是私钥 ssh-copy-id -i ~/.ssh/id_rsa user@hostname

免密互信权限问题

ls -lhd ~/.ssh     # 客户端查看 .ssh 目录权限,必须为 700
ls -lh ~/.ssh     # 客户端查看私钥权限必须为 600,公钥应为 644
ls -lh ~/.ssh/authorized_keys     # 服务端查看“authorized_keys”权限必须为 600

SSH 禁止 root 登陆

[student@serverb ~]$ sudo -i     # 提权至 root
[root@serverb ~]$ vim /etc/ssh/sshd_config     # 删除该 ssh 配置文件中“PermitRootLogin”前的井号,并将“yes”改为“no”
[root@serverb ~]# systemctl reload sshd     # 重载 ssh 服务
[root@serverb ~]# systemctl cat sshd.service     # 查看“ExecReload”为挂起
[root@serverb ~]# logout     # 退出 serverb 的 root 账户,返回至 student 账户
[student@serverb ~]$ logout     # 退出 serverb 返回至 servera
[student@servera ~]$ ssh root@serverb     # 尝试通过 ssh 登陆 serverb 的 root 账户
Permission denied, please try again.     # 显示“Permission denied”证明 SSH 禁止 root 登陆配置成功

SSH 禁止密码登陆

[student@servera ~]$ ssh student@serverb     # 通过 ssh 免密登陆 serverb 的 student 账户
[student@serverb ~]$ sudo -i     # 提权至 root
[root@serverb ~]# vim /etc/ssh/sshd_config     # 删除该 ssh 配置文件中“PasswordAuthentication”前的井号,并将“yes”改为“no”
[root@serverb ~]# systemctl reload sshd     # 重载 ssh 服务
[root@serverb ~]# logout     # 退出 serverb 的 root 账户,返回至 student 账户
[student@serverb ~]$ logout     # 退出 serverb 返回至 servera
[student@servera ~]$ ssh visitor@serverb     # 通过 ssh 登陆 serverb 的 visitor 账户
Permission denied (publickey,gssapii-keyex,gssapi-with-mic).     # 显示“Permission denied”证明 SSH 禁止密码登陆配置成功
[student@servera ~]$ ssh student@serverb     # 通过 ssh 免密登陆 serverb 的 student 账户成功,证明可以使用密钥登陆 SSH
[student@serverb ~]$ logout     # 退出 serverb 返回至 servera
[student@servera ~]$ logout     # 退出 servera 返回至 workstation
[student@workstation ~]$ lab securityrisk-recomment cleanup     # 清除实验环境