提交 6d83a225 authored 作者: PGY's avatar PGY

docs(PRD): 新增天津海油项目漏洞修复PRD文档

该文档包含了针对麒麟系统的16项安全漏洞修复方案,涵盖:
- OpenSSH安全配置加固
- 命令行界面超时设置
- PAM认证模块配置
- Telnet禁用和SSH启用
- 登录日志记录配置
- 用户目录默认访问权限设置
- 口令策略配置(过期警告、复杂度、更改间隔等)
- 重要系统文件权限设置
- 账户认证失败次数限制
- 历史命令数量限制
- 密码重复使用限制
上级 10a32523
{
"permissions": {
"allow": [
"Bash(cd:*)",
"Bash(iconv -f GBK -t UTF-8 \"C:/Users/UBAINS/Desktop/天津海油项目漏洞/智慧终端运行状态管理系统初测报告/初测/基线检查/Linux/192.169.8.70-银河麒麟-基线检查初测/192.169.8.70-银河麒麟-基线检查初测_html/host/192.169.8.70.html\")",
"Bash(iconv -f GBK -t UTF-8 C:/Users/UBAINS/Desktop/天津海油项目漏洞/智慧终端运行状态管理系统初测报告/初测/基线检查/Linux/192.169.8.70-银河麒麟-基线检查初测/192.169.8.70-银河麒麟-基线检查初测_html/host/192.169.8.70.html)",
"Read(//tmp/**)",
"Bash(powershell -Command \"Get-Content ''C:\\\\Users\\\\UBAINS\\\\Desktop\\\\天津海油项目漏洞\\\\智慧终端运行状态管理系统初测报告\\\\初测\\\\基线检查\\\\Linux\\\\192.169.8.70-银河麒麟-基线检查初测\\\\192.169.8.70-银河麒麟-基线检查初测_html\\\\host\\\\192.169.8.70.html'' -Encoding UTF8 | Out-File -FilePath /tmp/kylin_report_utf8.html -Encoding UTF8\")"
]
}
}
# _PRD_检查是否删除test库
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查是否删除test库 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 + MySQL数据库 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 7 |
| 风险值 | 1 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现MySQL数据库可能保留了安装时创建的test数据库,存在安全隐患:
- test数据库通常权限设置过于宽松
- 可能被攻击者利用进行测试攻击
- 不符合安全基线要求
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:运行MySQL数据库的麒麟v10系统服务器
- 影响对象:MySQL数据库
## 3. 需求描述
### 3.1 检查项
| 序号 | 检查点 | 实际值 | 匹配规则 | 标准值 | 配置方法 | 结果 |
|------|--------|--------|----------|--------|----------|------|
| 1 | 应该删除进行安装测试的test库 | [待获取] | 字符串不包含 | test | 见配置方法 | [待检查] |
### 3.2 配置方法
#### 删除test数据库
```sql
-- 查看所有数据库
SHOW databases;
-- 删除test数据库
DROP DATABASE test;
-- 刷新权限
FLUSH PRIVILEGES;
```
### 3.3 检查逻辑
```bash
# 检查是否存在test数据库
TEST_DB_EXISTS=$(mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "
SHOW DATABASES LIKE 'test';
" | grep -c test)
if [ "$TEST_DB_EXISTS" -gt 0 ]; then
echo "检查不通过:存在test数据库"
else
echo "检查通过:不存在test数据库"
fi
# 同时检查test_%开头的数据库
TEST_PATTERN=$(mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "
SHOW DATABASES LIKE 'test_%';
" | wc -l)
if [ "$TEST_PATTERN" -gt 1 ]; then
echo "警告:存在test_%开头的数据库"
fi
```
### 3.4 修复建议
1. 登录MySQL数据库
2. 删除test数据库
3. 检查并删除test_%开头的数据库
4. 刷新权限使更改生效
5. 移除test数据库相关的用户权限
## 4. 测试用例
### 4.1 正常场景
- 不存在test数据库 → 检查通过
### 4.2 异常场景
- 存在test数据库 → 检查不通过,提示删除
## 5. 注意事项
- 删除前确认test数据库中没有重要数据
- 删除数据库操作不可逆,请谨慎操作
- 建议在业务低峰期执行
## 6. 优化功能回填
待开发完成后,在此记录实际开发过程中的优化内容。
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查是否存在匿名账户
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查是否存在匿名账户 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 + MySQL数据库 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 1 |
| 风险值 | 7 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现MySQL数据库可能存在匿名账户,存在严重安全隐患:
- 匿名账户无需密码即可访问
- 可能被攻击者利用进行未授权访问
- 不符合安全基线要求
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:运行MySQL数据库的麒麟v10系统服务器
- 影响对象:MySQL用户表
## 3. 需求描述
### 3.1 检查项
| 序号 | 检查点 | 实际值 | 匹配规则 | 标准值 | 配置方法 | 结果 |
|------|--------|--------|----------|--------|----------|------|
| 1 | 检查是否存在匿名账户 | [待获取] | 字符串不相等 | user | 见配置方法 | [待检查] |
### 3.2 配置方法
#### 删除匿名账户
```sql
-- 删除空用户名的账户
USE mysql;
DELETE FROM user WHERE User = '';
-- 刷新权限
FLUSH PRIVILEGES;
```
### 3.3 检查逻辑
```bash
# 检查是否存在匿名账户
ANONYMOUS_COUNT=$(mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "
SELECT COUNT(*) FROM mysql.user WHERE User = '';
" | tail -n 1)
if [ "$ANONYMOUS_COUNT" -gt 0 ]; then
echo "检查不通过:存在$ANONYMOUS_COUNT个匿名账户"
mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "SELECT Host, User FROM mysql.user WHERE User = '';"
else
echo "检查通过:不存在匿名账户"
fi
```
### 3.4 修复建议
1. 登录MySQL数据库
2. 删除所有空用户名的账户
3. 刷新权限使更改生效
4. 定期检查防止匿名账户被重新创建
## 4. 测试用例
### 4.1 正常场景
- 不存在匿名账户 → 检查通过
### 4.2 异常场景
- 存在匿名账户 → 检查不通过,提示删除
## 5. 优化功能回填
待开发完成后,在此记录实际开发过程中的优化内容。
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查是否存在空密码
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查是否存在空密码 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 + MySQL数据库 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 2 |
| 风险值 | 7 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现MySQL数据库可能存在空密码账户,存在严重安全隐患:
- 空密码账户无需密码即可登录
- 极易被攻击者利用
- 不符合安全基线要求
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:运行MySQL数据库的麒麟v10系统服务器
- 影响对象:MySQL用户表
- MySQL版本:5.x、8.x
## 3. 需求描述
### 3.1 检查项
| 序号 | 检查点 | 实际值 | 匹配规则 | 标准值 | 配置方法 | 结果 |
|------|--------|--------|----------|--------|----------|------|
| 1 | 检查是否存在空密码 | [待获取] | 字符串不相等 | Password | 见配置方法 | [待检查] |
| 2 | 检查是否存在空密码(版本5.7及以上) | [待获取] | 字符串不相等 | authentication_string | 见配置方法 | [待检查] |
### 3.2 配置方法
#### MySQL 5.7以下版本修改密码
```sql
-- 修改账户密码
UPDATE user SET password=PASSWORD('test!p3') WHERE user='root';
-- 刷新权限
FLUSH PRIVILEGES;
```
#### MySQL 5.7及以上版本修改密码
```sql
-- 修改账户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'test!p3';
-- 刷新权限
FLUSH PRIVILEGES;
```
> 密码应符合强密码策略:包含大小写字母、数字、特殊字符,长度不少于8位
### 3.3 检查逻辑
```bash
# 获取MySQL版本
MYSQL_VERSION=$(mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "SELECT VERSION();" | tail -n 1)
# 提取主版本号
MAJOR_VERSION=$(echo $MYSQL_VERSION | awk -F'.' '{print $1 "." $2}')
if [ $(echo "$MAJOR_VERSION < 5.7" | bc) -eq 1 ]; then
# MySQL 5.7以下版本
EMPTY_PASSWORD=$(mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "
SELECT COUNT(*) FROM mysql.user WHERE Password = '' OR Password IS NULL;
" | tail -n 1)
else
# MySQL 5.7及以上版本
EMPTY_PASSWORD=$(mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "
SELECT COUNT(*) FROM mysql.user WHERE authentication_string = '' OR authentication_string IS NULL;
" | tail -n 1)
fi
if [ "$EMPTY_PASSWORD" -gt 0 ]; then
echo "检查不通过:存在$EMPTY_PASSWORD个空密码账户"
else
echo "检查通过:不存在空密码账户"
fi
```
### 3.4 修复建议
1. 登录MySQL数据库
2. 为所有空密码账户设置强密码
3. 刷新权限使更改生效
4. 定期检查密码强度
## 4. 测试用例
### 4.1 正常场景
- 不存在空密码账户 → 检查通过
### 4.2 异常场景
- 存在空密码账户 → 检查不通过,提示设置密码
## 5. 注意事项
- 修改密码后需同步更新应用程序配置
- 建议使用密码管理工具生成强密码
- 定期更换管理员密码
## 6. 优化功能回填
待开发完成后,在此记录实际开发过程中的优化内容。
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查是否禁止本地文件存取
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查是否禁止本地文件存取 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 + MySQL数据库 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 9 |
| 风险值 | 1 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现MySQL数据库可能启用了本地文件存取功能(LOAD DATA LOCAL INFILE),存在安全隐患:
- 可能被利用读取服务器敏感文件
- 可能导致数据泄露
- 不符合安全基线要求
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:运行MySQL数据库的麒麟v10系统服务器
- 配置文件:`/etc/my.cnf`
- MySQL版本:8.x及其他版本
## 3. 需求描述
### 3.1 检查项
| 序号 | 检查点 | 实际值 | 匹配规则 | 标准值 | 配置方法 | 结果 |
|------|--------|--------|----------|--------|----------|------|
| 1 | 应禁止mysql对本地文件存取-MySQL版本为8 | [待获取] | 字符串包含 | Loading local data is disabled | 见配置方法 | [待检查] |
| 2 | 应禁止mysql对本地文件存取-其他版本 | [待获取] | 字符串包含 | The used command is not allowed | 见配置方法 | [待检查] |
### 3.2 配置方法
#### 方法一:修改配置文件
在my.cnf的mysql字段下加:
```ini
[mysql]
local-infile=0
[mysqld]
local-infile=0
```
#### 方法二:启动时加参数
```bash
/etc/init.d/mysql start --local-infile=0
```
> 假如需要获取本地文件,需要打开此功能,但出于安全考虑建议关闭
> 重新打开命令:`/etc/init.d/mysql start --local-infile=1`
> 备注:可通过`mysql --help`命令提示查询my.cnf路径
### 3.3 检查逻辑
```bash
# 获取MySQL版本
MYSQL_VERSION=$(mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "SELECT VERSION();" | tail -n 1)
MAJOR_VERSION=$(echo $MYSQL_VERSION | awk -F'.' '{print $1}')
echo "MySQL版本: $MYSQL_VERSION"
# 测试LOAD DATA LOCAL INFILE是否被禁用
TEST_RESULT=$(mysql -u root -p"$MYSQL_ROOT_PASSWORD" --local-infile=0 -e "
SELECT LOAD_FILE('/etc/passwd');
" 2>&1)
if echo "$TEST_RESULT" | grep -q "Loading local data is disabled"; then
echo "检查通过:MySQL 8版本已禁止本地文件存取"
CHECK_RESULT="PASS"
elif echo "$TEST_RESULT" | grep -q "The used command is not allowed"; then
echo "检查通过:MySQL已禁止本地文件存取"
CHECK_RESULT="PASS"
elif echo "$TEST_RESULT" | grep -q "ERROR"; then
echo "检查通过:本地文件存取功能已禁用"
CHECK_RESULT="PASS"
else
echo "检查不通过:本地文件存取功能未禁用"
CHECK_RESULT="FAIL"
fi
# 检查配置文件中的设置
if [ -f /etc/my.cnf ]; then
LOCAL_INFILE_SET=$(grep -i "local-infile" /etc/my.cnf | grep -v "^#" | grep "0")
if [ -n "$LOCAL_INFILE_SET" ]; then
echo "配置文件检查:已设置local-infile=0"
fi
fi
```
### 3.4 修复建议
1. 编辑my.cnf配置文件
2.[mysql][mysqld]段添加local-infile=0
3. 重启MySQL服务使配置生效
4. 验证配置是否生效
## 4. 测试用例
### 4.1 正常场景
- LOAD DATA LOCAL INFILE被禁用 → 检查通过
### 4.2 异常场景
- LOAD DATA LOCAL INFILE未被禁用 → 检查不通过,提示配置
## 5. 注意事项
- 修改配置后需重启MySQL服务
- 此功能与客户端和服务端都相关,需同时配置
- 如确实需要使用此功能,应限制可访问的文件路径
- 建议在业务低峰期执行
## 6. 优化功能回填
待开发完成后,在此记录实际开发过程中的优化内容。
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查是否设置最大连接数
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查是否设置最大连接数 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 + MySQL数据库 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 4 |
| 风险值 | 3 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现MySQL数据库最大连接数配置不合理:
- 默认值(151)可能无法满足业务需求
- 连接数过小导致应用无法连接
- 连接数过大可能导致系统资源耗尽
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:运行MySQL数据库的麒麟v10系统服务器
- 配置文件:`/etc/my.cnf`
## 3. 需求描述
### 3.1 检查项
| 序号 | 检查点 | 实际值 | 匹配规则 | 标准值 | 配置方法 | 结果 |
|------|--------|--------|----------|--------|----------|------|
| 1 | 根据机器性能和业务需求,设置最大连接数 | 151 | = | 1000 | 见配置方法 | [待检查] |
> 注:标准值1000为建议值,实际应根据业务需求和服务器性能调整
### 3.2 配置方法
#### 修改配置文件
在mysql的安装目录下,在my.cnf中[mysqld]配置段添加:
```ini
[mysqld]
max_connections = 1000
```
重启mysql服务:`/etc/init.d/mysql restart`
> 备注:可通过`mysql --help`命令提示查询my.cnf路径
### 3.3 检查逻辑
```bash
# 检查当前最大连接数配置
MAX_CONNECTIONS=$(mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "
SHOW VARIABLES LIKE 'max_connections';
" | awk 'NR==2 {print $2}')
echo "当前最大连接数: $MAX_CONNECTIONS"
# 获取服务器内存信息
TOTAL_MEM=$(free -m | awk 'NR==2 {print $2}')
echo "服务器总内存: ${TOTAL_MEM}MB"
# 根据内存计算建议连接数(每个连接约占用2-4MB内存)
SUGGESTED_MIN=$((TOTAL_MEM / 4))
SUGGESTED_MAX=$((TOTAL_MEM / 2))
echo "建议最大连接数范围: $SUGGESTED_MIN - $SUGGESTED_MAX"
if [ "$MAX_CONNECTIONS" -ge 1000 ]; then
echo "检查通过:最大连接数配置合理"
else
echo "检查不通过:最大连接数配置过低"
fi
```
### 3.4 修复建议
1. 根据服务器内存大小计算合适的连接数
2. 在my.cnf中配置max_connections参数
3. 重启MySQL服务使配置生效
4. 监控实际连接数使用情况
#### 计算建议值
- 每个MySQL连接大约占用2-4MB内存
- 建议max_connections = 总内存(MB) / 4 到 总内存(MB) / 2
- 同时考虑业务实际并发需求
## 4. 测试用例
### 4.1 正常场景
- max_connections >= 1000 → 检查通过
### 4.2 异常场景
- max_connections < 1000 → 检查不通过,提示调整
## 5. 注意事项
- 连接数设置过大会占用过多内存
- 修改后需重启MySQL服务
- 应根据实际业务并发需求调整
- 建议在业务低峰期执行
## 6. 优化功能回填
待开发完成后,在此记录实际开发过程中的优化内容。
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查是否配置日志功能
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查是否配置日志功能 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 + MySQL数据库 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 3 |
| 风险值 | 5 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现MySQL数据库日志功能配置不完整或未启用,存在以下安全隐患:
- 无法追踪数据库操作记录
- 发生安全事件后无法溯源
- 不符合安全审计要求
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:运行MySQL数据库的麒麟v10系统服务器
- 配置文件:`/etc/my.cnf`
## 3. 需求描述
### 3.1 检查项
| 序号 | 检查点 | 实际值 | 匹配规则 | 标准值 | 配置方法 | 结果 |
|------|--------|--------|----------|--------|----------|------|
| 1 | 检查是否配置通用查询日志 | [待获取] | 字符串相等 | ON | 见配置方法 | [待检查] |
| 2 | 检查是否配置慢查询日志 | [待获取] | 字符串相等 | ON | 见配置方法 | [待检查] |
| 3 | 检查是否配置错误日志 | [待获取] | 正则表达式匹配 | /[\\|\/].*/ | 见配置方法 | [待检查] |
| 4 | 检测是否配置更新日志 | [待获取] | 字符串相等 | ON | 见配置方法 | [待检查] |
| 5 | 检查是否配置二进制日志 | [待获取] | 字符串相等 | ON | 见配置方法 | [待检查] |
### 3.2 配置方法
#### 3.2.1 通用查询日志
在mysql的安装目录下,修改my.cnf配置文件,增加:
```ini
[mysqld]
general_log = 1
general_log_file = /var/log/mysql/mysql.log
```
重启mysql:`/etc/init.d/mysql restart`
#### 3.2.2 慢查询日志
在mysql的安装目录下,修改my.cnf配置文件,增加:
```ini
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
```
重启mysql:`/etc/init.d/mysql restart`
#### 3.2.3 错误日志
在mysql的安装目录下,修改my.cnf配置文件,增加:
```ini
[mysqld]
log_error = /var/log/mysql/error.log
```
重启mysql:`/etc/init.d/mysql restart`
> 具体log_error存放路径请参照自身环境配置
#### 3.2.4 更新日志
在my.cnf的mysqld下面添加:
```ini
[mysqld]
log_slave_updates = 1
```
重启mysql:`/etc/init.d/mysql restart`
#### 3.2.5 二进制日志
##### MySQL 5.7.3及以下版本
在mysql的安装目录下,修改my.cnf配置文件,增加:
```ini
[mysqld]
log_bin = mysql-bin
```
##### MySQL 5.7.3以后版本
修改my.cnf配置文件,在【mysqld】下增加:
```ini
[mysqld]
log_bin = mysql-bin
server_id = 1
```
重启mysql:`/etc/init.d/mysql restart`
> 备注:可通过`mysql --help`命令提示查询my.cnf路径
### 3.3 检查逻辑
```bash
# 检查通用查询日志
GENERAL_LOG=$(mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "SHOW VARIABLES LIKE 'general_log';" | awk 'NR==2 {print $2}')
# 检查慢查询日志
SLOW_QUERY_LOG=$(mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "SHOW VARIABLES LIKE 'slow_query_log';" | awk 'NR==2 {print $2}')
# 检查错误日志
LOG_ERROR=$(mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "SHOW VARIABLES LIKE 'log_error';" | awk 'NR==2 {print $2}')
# 检查二进制日志
LOG_BIN=$(mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "SHOW VARIABLES LIKE 'log_bin';" | awk 'NR==2 {print $2}')
# 输出检查结果
echo "通用查询日志: $GENERAL_LOG"
echo "慢查询日志: $SLOW_QUERY_LOG"
echo "错误日志路径: $LOG_ERROR"
echo "二进制日志: $LOG_BIN"
```
### 3.4 修复建议
1. 根据业务需求启用必要的日志功能
2. 配置日志文件存储路径
3. 设置日志轮转策略,避免日志文件过大
4. 定期备份和清理历史日志
## 4. 测试用例
### 4.1 正常场景
- 所有关键日志已启用 → 检查通过
### 4.2 异常场景
- 部分或全部日志未启用 → 检查不通过,提示配置
## 5. 注意事项
- 日志文件会占用磁盘空间,需定期清理
- 通用查询日志在繁忙的数据库上会产生大量输出
- 修改配置后需重启MySQL服务
- 确保日志目录有足够的存储空间
## 6. 优化功能回填
待开发完成后,在此记录实际开发过程中的优化内容。
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查是否按用户分配账号
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查是否按用户分配账号 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 + MySQL数据库 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 6 |
| 风险值 | 4 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现MySQL数据库存在账号管理不规范的情况:
- 不同用户间共享账号
- 账号权限分配不合理
- 缺乏独立的业务账号
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:运行MySQL数据库的麒麟v10系统服务器
- 影响对象:MySQL用户账号管理
## 3. 需求描述
### 3.1 检查项
| 序号 | 检查点 | 实际值 | 匹配规则 | 标准值 | 配置方法 | 结果 |
|------|--------|--------|----------|--------|----------|------|
| 1 | 应按用户分配账号,避免不同用户间共享账号 | [待获取] | 正则表达式匹配 | /.+/ | 见配置方法 | [待检查] |
### 3.2 配置方法
#### 创建独立账号示例
```sql
-- 创建账号test,密码为nsfocus
INSERT INTO mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject)
VALUES("localhost","test",password("nsfocus"),'','','');
-- 刷新权限
FLUSH PRIVILEGES;
```
### 3.3 检查逻辑
```bash
# 检查是否有业务账号(排除系统内置账号)
mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "
SELECT User FROM mysql.user
WHERE User NOT IN ('root', 'mysql.sys', 'mysql.session')
AND User NOT LIKE 'mysql.%';
" | grep -v "User"
if [ $? -eq 0 ]; then
echo "检查通过:存在独立业务账号"
else
echo "检查不通过:未找到独立业务账号"
fi
```
### 3.4 修复建议
1. 为每个应用或用户创建独立的MySQL账号
2. 根据实际需求授予最小必要权限
3. 定期审计账号使用情况
4. 删除不再使用的账号
## 4. 测试用例
### 4.1 正常场景
- 存在独立业务账号 → 检查通过
### 4.2 异常场景
- 只有系统内置账号 → 检查不通过,提示创建业务账号
## 5. 优化功能回填
待开发完成后,在此记录实际开发过程中的优化内容。
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查是否更改默认mysql管理员账号
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查是否更改默认mysql管理员账号 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 + MySQL数据库 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 8 |
| 风险值 | 1 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现MySQL数据库使用默认管理员账号root,存在安全隐患:
- 默认root账号容易被攻击者猜测
- 可能遭受暴力破解攻击
- 不符合安全基线要求
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:运行MySQL数据库的麒麟v10系统服务器
- 影响对象:MySQL管理员账号
## 3. 需求描述
### 3.1 检查项
| 序号 | 检查点 | 实际值 | 匹配规则 | 标准值 | 配置方法 | 结果 |
|------|--------|--------|----------|--------|----------|------|
| 1 | 应该更改默认管理员账号,防止对系统用户穷举的恶意行为 | root | 字符串不包含 | root | 见配置方法 | [待检查] |
### 3.2 配置方法
#### 重命名管理员账号
```sql
-- 更新管理员账号名称
UPDATE user SET user="newname" WHERE user="root";
-- 刷新权限
FLUSH PRIVILEGES;
```
> newname为管理员账号的新名称,建议改成不易被猜测的用户名
### 3.3 检查逻辑
```bash
# 检查是否存在root账号
ROOT_EXISTS=$(mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "
SELECT COUNT(*) FROM mysql.user WHERE User='root';
" | tail -n 1)
if [ "$ROOT_EXISTS" -gt 0 ]; then
echo "检查不通过:仍存在root管理员账号"
else
echo "检查通过:已更改默认管理员账号"
fi
```
### 3.4 修复建议
1. 登录MySQL数据库
2. 将root账号重命名为不易猜测的名称
3. 更新应用程序连接字符串中的管理员账号
4. 确保新管理员账号密码强度足够
## 4. 测试用例
### 4.1 正常场景
- 不存在root账号 → 检查通过
### 4.2 异常场景
- 存在root账号 → 检查不通过,提示修改
## 5. 注意事项
- 修改管理员账号后,需同步更新所有使用该账号的应用程序配置
- 建议在业务低峰期执行
- 执行前做好数据库备份
## 6. 优化功能回填
待开发完成后,在此记录实际开发过程中的优化内容。
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查禁止mysql以管理员账号权限运行
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查禁止mysql以管理员账号权限运行 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 + MySQL数据库 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 5 |
| 风险值 | 7 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现MySQL数据库可能以管理员账号(root)权限运行,存在严重安全隐患:
- 数据库进程被攻击时可获得系统最高权限
- 不符合最小权限原则
- 可能导致系统完全被控制
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:运行MySQL数据库的麒麟v10系统服务器
- 配置文件:`/etc/my.cnf`
- 影响服务:MySQL数据库服务
## 3. 需求描述
### 3.1 检查项
| 序号 | 检查点 | 实际值 | 匹配规则 | 标准值 | 配置方法 | 结果 |
|------|--------|--------|----------|--------|----------|------|
| 1 | UNIX下以普通帐户安全运行mysqld,禁止mysql以管理员帐号权限运行 | [待获取] | 字符串不相等 | root | 见配置方法 | [待检查] |
### 3.2 配置方法
#### 方法一:启动mysql时加上--user参数
```bash
/etc/init.d/mysql start --user=user-name
```
#### 方法二:修改配置文件my.cnf
在mysql安装目录下,修改配置文件my.cnf(使用rpm包安装的请修改安装目录下的my-medium.cnf文件)中[mysqld]配置段中添加:
```ini
[mysqld]
user=mysql
```
### 3.3 检查逻辑
```bash
# 检查MySQL运行用户
MYSQL_USER=$(ps -ef | grep mysqld | grep -v grep | awk '{print $1}')
# 判断是否为root
if [ "$MYSQL_USER" == "root" ]; then
echo "检查不通过:MySQL以root用户运行"
else
echo "检查通过:MySQL以$MYSQL_USER用户运行"
fi
```
### 3.4 修复建议
1. 停止MySQL服务
2. 修改my.cnf配置文件,添加user配置项
3. 创建mysql系统用户(如不存在)
4. 修改MySQL数据目录权限
5. 以普通用户启动MySQL服务
## 4. 测试用例
### 4.1 正常场景
- MySQL以mysql用户运行 → 检查通过
### 4.2 异常场景
- MySQL以root用户运行 → 检查不通过,提示修复
## 5. 优化功能回填
待开发完成后,在此记录实际开发过程中的优化内容。
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查历史命令设置
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查历史命令设置 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 18 |
| 风险值 | 3 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现麒麟v10系统历史命令配置不当,存在以下安全隐患:
- 命令历史过多占用空间
- 敏感命令可能泄露
- 不符合安全基线要求
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:麒麟v10系统服务器
- 配置文件:`/etc/bashrc``~/.bashrc`
## 3. 需求描述
检查并配置历史命令设置,限制历史命令数量和保存时间。
### 3.1 检查项
| 序号 | 检查点 | 配置文件 | 标准值 |
|------|--------|----------|--------|
| 1 | 检查保留历史命令的记录文件大小 | 见配置方法 | /\d+/ |
| 2 | 检查保留历史命令的条数 | 见配置方法 | /\d+/ |
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查是否按用户分配账号
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查是否按用户分配账号 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 59 |
| 风险值 | 3 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现麒麟v10系统存在共享账号或未按用户分配账号,存在以下安全隐患:
- 无法追溯操作人员
- 责任不清
- 不符合安全基线要求
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:麒麟v10系统服务器
- 涉及:所有用户账号
## 3. 需求描述
检查是否按用户分配账号,确保一人一账号。
### 3.1 检查项
| 序号 | 检查点 | 配置文件 | 标准值 |
|------|--------|----------|--------|
| 1 | 检查是否按用户分配账号 | 见配置方法 | 1 |
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查是否按组进行账号管理
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查是否按组进行账号管理 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 51 |
| 风险值 | 1 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现麒麟v10系统未按组进行账号管理,存在以下问题:
- 权限管理不规范
- 难以统一管理相同职责的用户
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:麒麟v10系统服务器
- 涉及:所有用户组
## 3. 需求描述
检查是否按组进行账号管理,确保权限管理规范化。
### 3.1 检查项
| 序号 | 检查点 | 配置文件 | 标准值 |
|------|--------|----------|--------|
| 1 | 检查是否按组进行账号管理 | 见配置方法 | 1 |
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查是否设置ssh成功登录后Banner
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查是否设置ssh成功登录后Banner |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 54 |
| 风险值 | 2 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现麒麟v10系统SSH登录后未设置警告Banner,存在以下问题:
- 用户登录后无法律警告提示
- 不符合安全合规要求
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:麒麟v10系统服务器
- 配置文件:`/etc/ssh/sshd_config``/etc/motd`
## 3. 需求描述
检查并设置SSH登录后Banner警告信息。
### 3.1 检查项
| 序号 | 检查点 | 配置文件 | 标准值 |
|------|--------|----------|--------|
| 1 | 是否设置ssh成功登录后Banner信息 | 见配置方法 | true |
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查是否设置系统引导管理器密码
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查是否设置系统引导管理器密码 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 9 |
| 风险值 | 3 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现麒麟v10系统引导管理器未设置密码,存在以下安全隐患:
- 攻击者可修改启动参数
- 可绕过安全机制进入单用户模式
- 不符合安全基线要求
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:麒麟v10系统服务器
- 涉及文件:GRUB配置文件
## 3. 需求描述
检查并设置系统引导管理器密码,防止未经授权修改启动配置。
### 3.1 检查项
| 序号 | 检查点 | 配置文件 | 标准值 |
|------|--------|----------|--------|
| 1 | 检查是否设置grub密码 | 见配置方法 | /[^\s]+/ |
| 2 | 检查是否设置lilo密码 | 见配置方法 | /[^\s]+/ |
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查是否配置用户所需最小权限
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查是否配置用户所需最小权限 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 34 |
| 风险值 | 4 |
| 文档版本 | v1.1 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现麒麟v10系统用户权限配置过于宽松,存在以下安全隐患:
- 用户拥有超出工作需要的权限
- 可能被利用进行提权攻击
- 不符合安全基线要求
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:麒麟v10系统服务器
- 涉及配置:重要文件权限
## 3. 需求描述
检查并配置用户所需最小权限,确保用户仅拥有完成工作所需的最小权限。
### 3.1 检查项
| 序号 | 检查点 | 配置文件 | 标准值 |
|------|--------|----------|--------|
| 1 | 检查/etc/group文件权限 | 见配置方法 | 644 |
| 2 | 检查/etc/shadow文件权限 | 见配置方法 | 600 |
| 3 | 检查/etc/passwd文件权限 | 见配置方法 | 644 |
## 3.2 配置参数说明
| 参数 | 说明 | 推荐值 |
|------|------|--------|
| 权限值 | 文件权限 | 644 |
| 权限值 | 文件权限 | 600 |
| 权限值 | 文件权限 | 644 |
## 4. 技术方案
### 4.1 检查命令
```bash
# 检查重要文件权限
ls -la /etc/passwd
ls -la /etc/shadow
ls -la /etc/group
# 或使用stat命令
stat -c "%a" /etc/passwd
stat -c "%a" /etc/shadow
stat -c "%a" /etc/group
```
### 4.2 配置方法
#### 检查/etc/group文件权限
```bash
chmod 644 /etc/group
```
#### 检查/etc/shadow文件权限
```bash
chmod 600 /etc/shadow
```
#### 检查/etc/passwd文件权限
```bash
chmod 644 /etc/passwd
```
## 5. Shell脚本实现
```bash
#!/bin/bash
#===============================================================================
# 脚本名称: check_user_minimal_privileges.sh
# 功能描述: 检查和修复麒麟v10系统用户最小权限配置
# 使用方法: ./check_user_minimal_privileges.sh [--check|--fix]
# 作者: AI生成
# 日期: 2026-03-25
#===============================================================================
LOG_FILE="/var/log/user_privileges_check.log"
# 重要文件列表(格式:"文件路径:期望权限")
CRITICAL_FILES=(
"/etc/passwd:644"
"/etc/shadow:600"
"/etc/group:644"
)
log_info() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] INFO: $1" | tee -a "$LOG_FILE"
}
check_user_privileges() {
echo "===== 用户最小权限检查报告 ====="
echo "检查时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo ""
local is_compliant=true
local problem_count=0
printf "%-30s %-10s %-10s %-10s\n" "文件路径" "当前权限" "期望权限" "状态"
printf "%-30s %-10s %-10s %-10s\n" "--------" "----------" "----------" "----"
for item in "${CRITICAL_FILES[@]}"; do
local file=$(echo "$item" | cut -d: -f1)
local expected_perm=$(echo "$item" | cut -d: -f2)
if [ ! -e "$file" ]; then
printf "%-30s %-10s %-10s %-10s\n" "$file" "不存在" "$expected_perm" "[跳过]"
continue
fi
local current_perm=$(stat -c "%a" "$file" 2>/dev/null)
if [ "$current_perm" = "$expected_perm" ]; then
printf "%-30s %-10s %-10s %-10s\n" "$file" "$current_perm" "$expected_perm" "[OK]"
else
# 检查权限是否过高
if [ "$current_perm" -gt "$expected_perm" ]; then
printf "%-30s %-10s %-10s %-10s\n" "$file" "$current_perm" "$expected_perm" "[NG]"
((problem_count++))
is_compliant=false
else
printf "%-30s %-10s %-10s %-10s\n" "$file" "$current_perm" "$expected_perm" "[OK]"
fi
fi
done
echo ""
echo "检查统计:"
echo " 问题文件数: $problem_count"
if [ "$is_compliant" = true ]; then
echo ""
echo "合规状态: PASS"
return 0
else
echo ""
echo "合规状态: FAIL"
return 1
fi
}
fix_user_privileges() {
echo "===== 修复用户最小权限配置 ====="
echo "执行时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo ""
local fixed_count=0
for item in "${CRITICAL_FILES[@]}"; do
local file=$(echo "$item" | cut -d: -f1)
local expected_perm=$(echo "$item" | cut -d: -f2)
if [ ! -e "$file" ]; then
continue
fi
local current_perm=$(stat -c "%a" "$file" 2>/dev/null)
if [ "$current_perm" != "$expected_perm" ]; then
echo "修复: $file ($current_perm -> $expected_perm)"
chmod "$expected_perm" "$file"
if [ $? -eq 0 ]; then
log_info "已修复文件权限: $file ($current_perm -> $expected_perm)"
((fixed_count++))
fi
fi
done
echo ""
echo "处理完成,共修复 ${fixed_count} 个权限异常的文件"
}
main() {
if [ "$(id -u)" -ne 0 ]; then
echo "错误: 请使用root用户执行此脚本"
exit 1
fi
case "${1:---check}" in
--check)
check_user_privileges
;;
--fix)
check_user_privileges
if [ $? -ne 0 ]; then
read -p "是否修复发现的权限异常的文件?(y/n): " confirm
if [ "$confirm" = "y" ]; then
fix_user_privileges
fi
fi
;;
*)
echo "使用方法: $0 [--check|--fix]"
exit 1
;;
esac
}
main "$@"
```
## 6. 执行流程
```bash
# 步骤1: 上传脚本到服务器
scp check_user_minimal_privileges.sh root@target_server:/tmp/
# 步骤2: 登录服务器执行
ssh root@target_server
chmod +x /tmp/check_user_minimal_privileges.sh
/tmp/check_user_minimal_privileges.sh --fix
```
## 7. 验收标准
- [ ] 脚本能正确检查文件权限
- [ ] 能识别权限异常的文件
- [ ] 支持自动修复文件权限
- [ ] 日志记录完整
## 8. 风险评估
| 风险项 | 风险等级 | 应对措施 |
|--------|----------|----------|
| 修改权限导致服务异常 | 中 | 修复前确认 |
| 权限设置过严 | 低 | 使用标准权限值 |
## 9. 优化功能回填
| 序号 | 优化内容 | 状态 | 日期 |
|------|----------|------|------|
| - | - | - | - |
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
---
# _PRD_检查系统磁盘分区使用率
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查系统磁盘分区使用率 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 20 |
| 风险值 | 3 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现麒麟v10系统磁盘分区使用率过高,存在以下问题:
- 磁盘空间不足影响系统运行
- 日志无法正常记录
- 不符合安全基线要求
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:麒麟v10系统服务器
- 涉及:所有磁盘分区
## 3. 需求描述
检查系统磁盘分区使用率,确保不超过阈值。
### 3.1 检查项
| 序号 | 检查点 | 配置文件 | 标准值 |
|------|--------|----------|--------|
| 1 | 检测系统磁盘根分区已使用空间是否维持在80%以下 | 见配置方法 | 80 |
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查使用IP协议远程维护的设备是否配置SSH协议禁用telnet协议
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查使用IP协议远程维护的设备是否配置SSH协议禁用telnet协议 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 24 |
| 风险值 | 7 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现麒麟v10系统仍启用telnet服务,存在以下安全隐患:
- telnet明文传输数据
- 密码和网络流量可被窃听
- 不符合安全基线要求
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:麒麟v10系统服务器
- 涉及服务:telnet-server、telnet
## 3. 需求描述
检查并禁用telnet服务,确保使用SSH协议进行远程维护。
### 3.1 检查项
| 序号 | 检查点 | 配置文件 | 标准值 |
|------|--------|----------|--------|
| 1 | 对于使用IP协议进行远程维护的设备,应配置使用SSH协议 | 见配置方法 | sshd |
| 2 | 对于使用IP协议进行远程维护的设备,应禁止使用telnet协议 | 见配置方法 | /telnet\s*disable|disable\s*=\s*yes/i |
| 3 | 是否存在telnet进程 | 见配置方法 | /.+/ |
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查是否修改snmp默认团体字
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查是否修改snmp默认团体字 |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 15 |
| 风险值 | 5 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现麒麟v10系统SNMP使用默认团体字"public/private",存在以下安全隐患:
- 默认团体字可被轻易猜测
- 攻击者可获取系统信息
- 不符合安全基线要求
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:麒麟v10系统服务器
- 配置文件:`/etc/snmp/snmpd.conf`
## 3. 需求描述
检查并修改SNMP默认团体字。
### 3.1 检查项
| 序号 | 检查点 | 配置文件 | 标准值 |
|------|--------|----------|--------|
| 1 | 检查是否安装snmp服务 | 见配置方法 | no |
| 2 | 检查snmp团体字是否未使用private | 见配置方法 | 0 |
| 3 | 检查配置文件/etc/snmp/snmpd.conf是否存在。 | 见配置方法 | yes |
| 4 | 检查snmp团体字是否未使用public | 见配置方法 | 0 |
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查是否禁止root用户登录FTP
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查是否禁止root用户登录FTP |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 29 |
| 风险值 | 5 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现麒麟v10系统FTP允许root用户登录,存在以下安全隐患:
- root密码可能被FTP明文传输窃取
- 不符合安全基线要求
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:麒麟v10系统服务器
- 配置文件:`/etc/ftpusers``/etc/vsftpd/ftpusers`
## 3. 需求描述
检查并禁止root用户通过FTP登录。
### 3.1 检查项
| 序号 | 检查点 | 配置文件 | 标准值 |
|------|--------|----------|--------|
| 1 | 禁止root登录VSFTP | 见配置方法 | valid |
| 2 | 禁止root登录WU-FTP | 见配置方法 | valid |
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
# _PRD_检查是否禁止匿名用户登录FTP
## 1. 文档信息
| 项目 | 内容 |
|------|------|
| 文档名称 | 检查是否禁止匿名用户登录FTP |
| 项目名称 | 天津海油项目-麒麟v10 |
| 系统版本 | 麒麟v10 |
| 执行方式 | Shell脚本直接在Linux服务器上运行 |
| 检查项编号 | 30 |
| 风险值 | 7 |
| 文档版本 | v1.0 |
| 创建日期 | 2026-03-25 |
| 文档状态 | 待开发 |
## 2. 需求背景
### 2.1 问题描述
在天津海油项目中,发现麒麟v10系统FTP服务允许匿名登录,存在以下安全隐患:
- 匿名用户可访问敏感文件
- 无法追踪访问者身份
- 不符合安全基线要求
### 2.2 需求来源
安全漏洞扫描基线检查
### 2.3 影响范围
- 影响设备:麒麟v10系统服务器
- 配置文件:vsftpd、proftpd配置
## 3. 需求描述
检查并禁止FTP匿名用户登录。
### 3.1 检查项
| 序号 | 检查点 | 配置文件 | 标准值 |
|------|--------|----------|--------|
| 1 | 禁止匿名VSFTP用户登录 | 见配置方法 | true |
| 2 | 禁止匿名WU-FTP用户登录 | 见配置方法 | valid |
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论