-
内容大纲
安全加固是配置信息系统的过程,它可以降低信息系统安全风险。本书系统介绍操作系统、数据库、中间件、容器四大板块的相关安全配置,通过强化账号安全、加固服务、修改安全配置、优化访问控制策略、增加安全机制等方法,从风险分析、加固详情、加固步骤3个维度讲解每条安全配置项,有助于读者充分了解每条安全配置项潜在的风险及如何进行加固,并在功能性与安全性之间寻求平衡,合理加强安全性。
本书适用于指导产品研发人员研制默认配置安全的产品,规范技术人员在各类系统上的日常操作,让运维人员获得检查默认安全风险的标准,避免人为因素的失误带来的安全风险。 -
作者介绍
-
目录
第1篇 操作系统安全
第1章 Linux
1.1 账号安全
1.1.1 控制可登录账号
1.1.2 禁止root用户登录
1.1.3 禁用非活动用户
1.1.4 确保root用户的GID为
1.1.5 确保仅root用户的UID为
1.2 密码安全
1.2.1 设置密码生存期
1.2.2 设置密码复杂度
1.2.3 确保加密算法为SHA-
1.2.4 确保etcshadow密码字段不为空
1.3 登录、认证鉴权
1.3.1 配置SSH服务
1.3.2 设置登录超时时间
1.3.3 设置密码锁定策略
1.3.4 禁止匿名用户登录系统
1.3.5 禁用不安全服务
1.3.6 禁用不安全的客户端
1.3.7 配置etccrontab文件权限
1.3.8 确保登录警告配置正确
1.4 日志审计
1.4.1 配置auditd服务
1.4.2 配置rsyslog服务
1.4.3 配置journald服务
1.4.4 配置日志文件最小权限
1.5 安全配置
1.5.1 限制可查看历史命令条数
1.5.2 确保日志文件不会被删除
1.5.3 iptables配置
1.5.4 配置系统时间同步
1.5.5 限制umask值
1.5.6 限制su命令的访问
1.5.7 SELinux配置
1.5.8 系统文件权限配置
1.6 安全启动
1.6.1 设置引导加载程序密码
1.6.2 配置引导加载程序权限
1.6.3 配置单用户模式需要身份验证
1.7 安全编译
1.7.1 限制堆芯转储
1.7.2 启用XDNX支持
1.7.3 启用地址空间布局随机化
1.7.4 禁止安装prelink
1.8 主机和路由器系统配置
1.8.1 禁止接收源路由数据包
1.8.2 禁止数据包转发
1.8.3 关闭ICMP重定向
1.8.4 关闭安全ICMP重定向
1.8.5 记录可疑数据包
1.8.6 忽略广播ICMP请求
1.8.7 忽略虚假ICMP响应
1.8.8 启用反向路径转发
1.8.9 启用TCPSYNCookie
1.8.10 禁止接收IPv6路由器广告
第2章 Windows
2.1 账户安全
2.1.1 禁用Guest账户
2.1.2 禁用管理员账户
2.1.3 删除无用账户
2.1.4 不显示上次登录的用户名
2.1.5 禁止空密码登录系统
2.1.6 重命名来宾和管理员账户
2.1.7 确保“账户锁定时间”设置为“15”或更大的值
2.1.8 确保“账户锁定阈值”设置为“5”或更小的值
2.1.9 确保“计算机账户锁定阈值”设置为“10”或更小的值
2.1.10 确保“重置账户锁定计数器”设置为“15”或更大的值
2.1.11 密码过期之前提醒用户更改密码
2.2 密码策略
2.2.1 启用密码复杂度相关策略
2.2.2 确保“强制密码历史”设置为“24”或更大的值
2.2.3 设置密码使用期限
2.2.4 设置最小密码长度
2.3 认证授权
2.3.1 拒绝Guest、本地账户从网络访问此计算机
2.3.2 拒绝Guest、本地账户通过远程桌面服务登录
2.3.3 配置远程强制关机权限
2.3.4 限制可本地关机的用户
2.3.5 授权可登录的账户
2.3.6 分配用户权限
2.3.7 控制备份文件和目录权限
2.3.8 控制还原文件和目录权限
2.3.9 控制管理审核和安全日志权限
2.3.10 控制身份验证后模拟客户端权限
2.3.11 控制拒绝以服务身份登录权限
2.4 日志审计
2.4.1 设置日志存储文件大小
2.4.2 配置审核策略
2.5 系统配置
2.5.1 设置屏幕保护程序
2.5.2 安全登录
2.5.3 限制匿名枚举
2.5.4 禁止存储网络身份验证的密码和凭据
2.5.5 使用DoH
2.5.6 设置域成员策略
2.5.7 控制从网络访问编辑注册表的权限
2.5.8 控制共享文件夹访问权限
2.5.9 关闭Windows自动播放功能
2.5.10 限制为进程调整内存配额权限用户
15.4.1 确保--profiling参数为false
15.4.2 禁止schedulerAPI服务绑定到非环回的不安全地址
15.5 etcd
15.5.1 为etcd服务配置TLS加密
15.5.2 在etcd服务上启用客户端身份认证
15.5.3 禁止自签名证书用于TLS
15.5.4 设置etcd的TLS连接
15.5.5 配置etcd的对等身份认证
15.5.6 禁止TLS连接时使用自签名证书
15.6 Worker节点配置文件
15.6.1 配置Kubelet服务文件的属主属组和权限
15.6.2 配置代理kubeconfig文件的属主属组和权限
15.6.3 配置kubelet.conf文件的属主属组和权限
15.6.4 配置证书颁发机构文件的属主属组和权限
15.6.5 配置Kubelet配置文件的属主属组和权限
15.7 Kubelet配置
15.7.1 禁止匿名请求Kubelet服务器
15.7.2 启用显式授权
15.7.3 启用Kubelet证书身份认证
15.7.4 禁用只读端口
15.7.5 合理设置默认内核参数值
15.7.6 允许Kubelet管理iptables
15.7.7 不要覆盖节点主机名
15.7.8 在Kubelet上设置TLS连接
15.7.9 启用Kubelet客户端证书轮换
15.7.10 启用Kubelet服务端证书轮换
15.8 Kubernetes策略
15.8.1 禁止hostPID设置为true
15.8.2 禁止hostIPC设置为true
15.8.3 禁止hostNetwork设置为true
15.8.4 禁止allowPrivilegeEscalation设置为true
15.8.5 禁止以root用户运行容器
15.8.6 确保所有命名空间都定义网络策略
结语
2.5.11 配置修改固件环境值权限
2.5.12 配置加载和卸载设备驱动程序权限
2.5.13 配置更改系统时间权限
2.5.14 配置更改时区权限
2.5.15 配置获取同一会话中另一个用户的模拟令牌权限
2.5.16 阻止计算机加入家庭组
2.5.17 阻止用户和应用程序访问危险网站
2.5.18 扫描所有下载文件和附件
2.5.19 开启实时保护
2.5.20 开启行为监视
2.5.21 扫描可移动驱动器
2.5.22 开启自动下载和安装更新
2.5.23 防止绕过WindowsDefenderSmartScreen
2.6 网络安全
2.6.1 LAN管理器配置
2.6.2 设置基于NTMLSSP的客户端和服务器的最小会话安全策略
2.6.3 设置LDAP客户端签名
2.6.4 登录时间到期时强制注销
2.6.5 禁止LocalSystemNULL会话回退
2.6.6 禁止PKU2U身份验证请求使用联机标识
2.6.7 配置Kerberos允许的加密类型
2.6.8 允许本地系统将计算机标识用于NTLM
2.7 本地安全策略
2.7.1 设置提高计划优先级权限
2.7.2 设置创建符号链接权限
2.7.3 设置调试程序权限
2.7.4 设置文件单一进程和系统性能权限
2.7.5 设置创建永久共享对象权限
2.7.6 设置创建全局对象权限
2.7.7 设置创建一个令牌对象权限
2.7.8 设置执行卷维护任务权限
2.7.9 设置拒绝作为批处理作业登录权限
2.7.10 设置替换一个进程级令牌权限
2.7.11 Microsoft网络客户端安全配置
2.7.12 Microsoft网络服务器安全配置
2.7.13 禁止将Everyone权限应用于匿名用户
2.7.14 禁止设置匿名用户可以访问的网络共享
2.7.15 控制应用程序安装
2.7.16 禁用sshd服务
2.7.17 禁用FTP服务
2.7.18 配置高级审核策略
2.7.19 禁止在DNS域网络上安装和配置网桥
2.7.20 禁止在DNS域网络上使用Internet连接共享
2.8 WindowsDefender防火墙
2.8.1 开启WindowsDefender防病毒功能
2.8.2 开启防火墙
2.8.3 配置入站和出站连接
2.8.4 配置日志文件
第2篇 数据库安全
第3章 MySQL
3.1 宿主机安全配置
3.1.1 数据库工作目录和数据目录存放在专用磁盘分区
3.1.2 使用MySQL专用账号启动进程
3.1.3 禁用MySQL历史命令记录
3.1.4 禁止MYSQL_PWD的使用
3.1.5 禁止MySQL运行账号登录系统
3.1.6 禁止MySQL使用默认端口
3.2 备份与容灾
3.2.1 制定数据库备份策略
3.2.2 使用专用存储设备存放备份数据
3.2.3 部署数据库应多主多从
3.3 账号与密码安全
3.3.1 设置密码生存周期
3.3.2 设置密码复杂度
3.3.3 确保不存在空密码账号
3.3.4 确保不存在无用账号
3.3.5 修改默认管理员账号名为非root用户
3.4 身份认证连接与会话超时限制
3.4.1 检查数据库是否设置连接尝试次数
3.4.2 检查是否限制连接地址与设备
3.4.3 限制单个用户的连接数
3.4.4 确保have_ssl设置为yes
3.4.5 确保使用高强度加密套件
3.4.6 确保加解密函数配置高级加密算法
3.4.7 确保使用新版本TLS协议
3.5 数据库文件目录权限
3.5.1 配置文件及目录权限最小化
3.5.2 备份数据权限最小化
3.5.3 二进制日志权限最小化
3.5.4 错误日志权限最小化
3.5.5 慢查询日志权限最小化
3.5.6 中继日志权限最小化
3.5.7 限制日志权限最小化
3.5.8 插件目录权限最小化
3.5.9 密钥证书文件权限最小化
3.6 日志与审计
3.6.1 配置错误日志
3.6.2 确保log-raw设置为off
3.6.3 配置log_error_verbosity
3.7 用户权限控制
3.7.1 确保仅管理员账号可访问所有数据库
3.7.2 确保file不授予非管理员账号
3.7.3 确保process不授予非管理员账号
3.7.4 确保super不授予非管理员账号
3.7.5 确保shutdown不授予非管理员账号
3.7.6 确保createuser不授予非管理员账号
3.7.7 确保grantoption不授予非管理员账号
3.7.8 确保replicationslave不授予非管理员账号
3.8 基本安全配置
3.8.1 确保安装最新补丁
3.8.2 删除默认安装的测试数据库test
3.8.3 确保allow-suspicious-udfs配置为false
3.8.4 local_infile参数设定
3.8.5 skip-grant-tables参数设定
3.8.6 daemon_memcached参数设定
3.8.7 secure_file_priv参数设定
3.8.8 sql_mode参数设定
第4章 PostgreSQL
4.1 目录文件权限
4.1.1 确保配置文件及目录权限合理
4.1.2 备份数据权限最小化
4.1.3 日志文件权限最小化
4.2 日志与审计
4.2.1 确保已开启日志记录
4.2.2 确保已配置日志生命周期
4.2.3 确保已配置日志转储大小
4.2.4 确保配置日志记录内容完整
4.2.5 确保正确配置log_destinations
4.2.6 确保已配置log_truncate_on_rotation
4.2.7 正确配置syslog_facility
4.2.8 正确配置syslog_sequence_numbers
4.2.9 正确配置syslog_split_messages
4.2.10 正确配置syslog_ident
4.2.11 正确配置log_min_messages
4.2.12 正确配置log_min_error_statement
4.2.13 确保禁用debug_print_parse
4.2.14 确保禁用debug_print_rewritten
4.2.15 确保禁用debug_print_plan
4.2.16 确保启用debug_pretty_print
4.2.17 确保启用log_connections
4.2.18 确保启用log_disconnections
4.2.19 正确配置log_error_verbosity
4.2.20 正确配置log_hostname
4.2.21 正确配置log_statement
4.2.22 正确配置log_timezone
4.3 账号与密码安全
4.3.1 设置密码复杂度
4.3.2 设置密码生存周期
4.4 身份认证连接与会话超时限制
4.4.1 检查数据库是否设置连接尝试次数
4.4.2 检查是否限制连接地址与设备
4.4.3 限制单个用户的连接数
4.4.4 设置登录校验密码
4.5 备份与容灾
4.5.1 制定数据库备份策略
4.5.2 部署数据库应多主多从
4.6 用户权限控制
4.7 安装和升级安全配置
4.7.1 确保安装包来源可靠
4.7.2 确保正确配置服务运行级别
4.7.3 配置数据库运行账号文件掩码
第5章 Redis
5.1 身份认证连接
5.1.1 限制客户端认证超时时间
5.1.2 检查数据库是否设置连接尝试次数
5.1.3 配置账号锁定时间
5.2 账号密码认证
5.3 目录文件权限
5.3.1 确保配置文件及目录权限合理
5.3.2 备份数据权限最小化
5.3.3 日志文件权限最小化
5.4 备份与容灾
5.4.1 制定数据库备份策略
5.4.2 部署数据库应多主多从
5.5 安装与升级
5.5.1 确保使用最新安装补丁
5.5.2 使用Redis专用账号启动进程
5.5.3 禁止Redis运行账号登录系统
5.5.4 禁止Redis使用默认端口
第6章 MongoDB
6.1 安装和补丁
6.1.1 确保使用最新版本数据库
6.1.2 使用MongoDB专用账号启动进程
6.1.3 确保MongoDB未使用默认端口
6.1.4 禁止MongoDB运行账号登录系统
6.2 身份认证
6.2.1 确保启用身份认证
6.2.2 确保本机登录进行身份认证
6.2.3 检查是否限制连接地址与设备
6.2.4 确保在集群环境中启用身份认证
6.3 备份与容灾
6.3.1 制定数据库备份策略
6.3.2 部署数据库应多主多从
6.4 日志与审计
6.4.1 确保日志记录内容完整
6.4.2 确保添加新日志采用追加方式而不是覆盖
6.5 目录文件权限
6.5.1 确保配置文件及目录权限合理
6.5.2 备份数据权限最小化
6.5.3 日志文件权限最小化
6.5.4 确保密钥证书文件权限最小化
6.6 权限控制
6.6.1 确保使用基于角色的访问控制
6.6.2 确保每个角色都是必要的且权限最小化
6.6.3 检查具有root用户角色的用户
6.7 传输加密
6.7.1 确保禁用旧版本TLS协议
6.7.2 确保网络传输使用TLS加密
第3篇 中间件安全
第7章 Tomcat
7.1 安全配置
7.1.1 以普通用户运行Tomcat
7.1.2 修改默认端口
7.1.3 设置密码长度和复杂度
7.1.4 配置日志功能
7.1.5 设置支持使用HTTPS等加密协议
7.1.6 设置连接超时时间
7.1.7 禁用危险的HTTP方法
7.2 权限控制
7.2.1 禁用manager功能
7.2.2 禁止Tomcat显示文件列表
第8章 Nginx
8.1 协议安全
8.1.1 配置SSL协议
8.1.2 限制SSL协议和密码
8.2 安全配置
8.2.1 关闭默认错误页的Nginx版本号
8.2.2 设置client_body_timeout超时
8.2.3 设置client_header_timeout超时
8.2.4 设置keepalive_timeout超时
8.2.5 设置send_timeout超时
8.2.6 设置只允许GET、HEAD、POST方法
8.2.7 控制并发连接
第9章 WebLogic
9.1 安全配置
9.1.1 以非root用户运行WebLogic
9.1.2 设置加密协议
9.1.3 设置账号锁定策略
9.1.4 更改默认端口
9.1.5 配置超时退出登录
9.1.6 配置日志功能
9.1.7 设置密码复杂度符合要求
9.2 权限控制
9.2.1 禁用发送服务器标头
9.2.2 限制应用服务器Socket数量
第10章 JBoss
10.1 账号安全
10.1.1 设置jmx-console登录的用户名、密码及其复杂度
10.1.2 设置webservice登录的用户名、密码及其复杂度
10.2 安全配置
10.2.1 设置支持加密协议
10.2.2 修改默认端口
10.2.3 设置会话超时时间
10.2.4 限制目录列表访问
10.2.5 记录用户登录行为
第11章 Apache
11.1 账号安全
11.1.1 设置Apache用户账号Shell生效
11.1.2 锁定Apache用户账号
11.2 安全配置
11.2.1 禁用SSLTLS协议
11.2.2 限制不安全的SSLTLS
11.2.3 设置Timeout小于或等于
11.2.4 设置KeepAlive为On
11.2.5 设置MaxKeepAliveRequests大于或等于
11.2.6 设置KeepAliveTimeout小于或等于
11.2.7 限制所有目录覆盖
第12章 IIS
12.1 权限控制
12.1.1 卸载不需要的组件
12.1.2 删除默认站点
12.1.3 设置网站目录权限
12.1.4 限制应用程序扩展
12.1.5 限制Web服务扩展
12.2 安全配置
12.2.1 日志功能设置
12.2.2 自定义错误信息
第13章 WebSphere
13.1 权限控制
13.1.1 控制config与properties目录权限
13.1.2 禁止目录浏览
13.2 安全配置
13.2.1 禁止列表显示文件
13.2.2 配置日志功能
13.2.3 启用全局安全性
13.2.4 启用Java2安全性
13.2.5 配置控制台会话超时时间
13.2.6 卸载sample例子程序
第4篇 容器安全
第14章 Docker
14.1 Docker主机安全配置
14.1.1 确保docker组中仅存在可信用户
14.1.2 审计Docker守护进程
14.1.3 审计Docker文件和目录
14.1.4 确保Docker版本最新
14.2 Docker守护进程配置
14.2.1 以非root用户运行Docker守护进程
14.2.2 限制在默认网桥上的容器之间的网络流量
14.2.3 设置日志记录级别为info
14.2.4 允许Docker更改iptables
14.2.5 禁止使用不安全的注册表
14.2.6 禁止使用aufs存储驱动程序
14.2.7 配置Docker守护进程的TLS身份验证
14.2.8 正确配置默认ulimit
14.2.9 启用用户命名空间
14.2.10 确保安装授权插件
14.2.11 配置集中和远程日志记录
14.2.12 限制容器获取新权限
14.2.13 启用实时还原
14.2.14 确保禁用Userland代理
14.2.15 禁用实验特性
14.3 Docker守护进程配置文件权限
14.3.1 配置Docker相关文件的权限和属主属组
14.3.2 配置etcdocker目录的权限和属主属组
14.3.3 配置Docker相关证书文件目录的权限和属主属组
14.3.4 配置Docker服务器证书密钥文件的权限和属主属组
14.3.5 配置Docker套接字文件的权限和属主属组
14.3.6 配置Containerd套接字文件的权限和属主属组
14.4 容器镜像和构建文件配置
14.4.1 以非root用户运行容器
14.4.2 仅使用受信任的基础镜像
14.4.3 卸载容器中安装的不必要的软件
14.4.4 确保镜像无安全漏洞
14.4.5 启用Docker的内容信任
14.4.6 容器镜像中添加健康检查
14.4.7 确保在Dockerfiles中不单独使用update指令
14.4.8 删除不必要的setuid和setgid权限
14.4.9 Dockerfiles中使用COPY而不使用ADD
14.4.10 删除Dockerfiles中的敏感信息
14.5 容器运行时配置
14.5.1 启用AppArmor配置
14.5.2 设置SELinux安全选项
14.5.3 删除容器所有不需要的功能
14.5.4 不使用特权容器
14.5.5 禁止以读写形式挂载主机系统敏感目录
14.5.6 禁止容器内运行sshd
14.5.7 确保未映射特权端口
14.5.8 关闭容器非必需端口
14.5.9 确保容器不共享主机的网络命名空间
14.5.10 限制容器的可用内存
14.5.11 设置容器的CPU阈值
14.5.12 合理挂载容器的根文件系统
14.5.13 流量绑定特定的主机端口
14.5.14 设置容器重启策略
14.5.15 不共享主机的PID命名空间
14.5.16 不共享主机的IPC命名空间
14.5.17 不直接暴露主机设备
14.5.18 设置系统资源限制
14.5.19 禁止将挂载传播模式设置为共享
14.5.20 不共享主机的UTS命名空间
14.5.21 启用默认的seccomp配置
14.5.22 禁止dockerexec使用--privileged选项
14.5.23 禁止dockerexec使用--user=root选项
14.5.24 使用默认的Dockercgroup
14.5.25 限制容器获取额外的特权
14.5.26 运行时检查容器健康状况
14.5.27 使用镜像的最新版本
14.5.28 限制容器的pid个数
14.5.29 不共享主机
14.6 Dockerswarm配置
14.6.1 非必要则禁用swarm模式
14.6.2 创建最小数量的管理节点
14.6.3 将swarm服务绑定到特定主机端口
14.6.4 确保所有Dockerswarm覆盖网络均加密
14.6.5 确保swarmmanager在自动锁定模式下运行
14.6.6 隔离管理平面流量与数据平面流量
第15章 Kubernetes
15.1 MasterNode配置文件
15.1.1 配置kube-apiserver.yaml的属主属组和权限
15.1.2 配置kube-controller-manager.yaml的属主属组和权限
15.1.3 配置kube-scheduler.yaml的属主属组和权限
15.1.4 配置etcd.yaml的属主属组和权限
15.1.5 配置容器网络接口文件的属主属组和权限
15.1.6 配置etcd数据目录的属主属组和权限
15.1.7 配置admin.conf的属主属组和权限
15.1.8 配置scheduler.conf的属主属组和权限
15.1.9 配置controller-manager.conf的属主属组和权限
15.1.10 配置KubernetesPKI目录及文件的属主属组和权限
15.2 APIServer
15.2.1 不使用基本身份认证
15.2.2 不使用基于令牌的身份认证
15.2.3 使用HTTPS进行Kubelet连接
15.2.4 启用基于证书的Kubelet身份认证
15.2.5 建立连接前验证Kubelet证书
15.2.6 禁止授权所有请求
15.2.7 设置合理的授权方式
15.2.8 设置新Pod重启时按需拉取镜像
15.2.9 避免自动分配服务账号
15.2.10 拒绝在不存在的命名空间中创建对象
15.2.11 拒绝创建不安全的Pod
15.2.12 设置准入控制插件NodeRestriction
15.2.13 不绑定不安全的apiserver地址
15.2.14 不绑定不安全的端口
15.2.15 不禁用安全端口
15.2.16 启用日志审计
15.2.17 设置合适的日志文件参数
15.2.18 设置适当的API服务器请求超时参数
15.2.19 验证令牌之前先验证服务账号
15.2.20 为apiserver的服务账号设置公钥文件
15.2.21 设置apiserver和etcd之间的TLS连接
15.2.22 设置apiserver的TLS连接
15.2.23 设置etcd对客户端的TLS连接
15.2.24 设置加密存储etcd键值
15.3 Controller管理器
15.3.1 每个控制器使用单独的服务账号凭证
15.3.2 为Controller的服务账号设置私钥文件
15.3.3 设置API服务器的服务证书
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...