Managing Security and Risk —— 管理安全性和风险
本文是 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 组。
Reviewing Recommended Security Practices
启动虚拟机
本练习需要用到三个虚拟机: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 # 清除实验环境