终端/服务器安全基线检查
- 教程文章
- 2026-08-21
- 60热度
- 0评论
服务器基线检查(Security Baseline)是对服务器进行安全配置核查的标准化流程:检查账户口令、审计日志、网络防护、服务配置等是否符合安全规范,并对不合规项进行加固。一次完整的基线核查能发现 90% 以上的常见弱配置,是等保测评、渗透测试前期的必备环节。
检查项总览
| 基线类型 | 检查项数 | 高危 | 中危 | 低危 | 信息 |
|---|---|---|---|---|---|
| Windows 基线 | 57 | 8 | 2 | 8 | 39 |
| Linux 基线 | 63 | 34 | 4 | 21 | 4 |
| 合计 | 120 | 42 | 6 | 29 | 43 |
优先处理高危项:Windows 重点关注默认共享、自动登录、危险服务(Remote Registry/Messenger/TermService)、补丁更新;Linux 重点关注账户口令策略、SSH 配置、日志审计、网络防护。
一、Windows 基线检查(57 项)
所有组策略类检查项均可通过 gpedit.msc 打开本地组策略编辑器操作;服务类通过 services.msc 管理。表格较宽时可在下方横向滚动查看。
账户与密码策略(12 项)
| # | 检测项 | 风险 | 修复操作 |
|---|---|---|---|
| 1 | 账户:管理员帐户状态 | 中危 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“安全选项”,双击右侧“帐户: 管理员帐户状态”设置为“已禁用”。 |
| 2 | 账户:重命名管理员帐户 | 中危 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“安全选项”,双击右侧“帐户: 重命名管理员帐户”设置为除“Administrator”外的值。 |
| 3 | 密码复杂性要求 | 低危 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“账户策略”->“密码策略”,双击右侧“密码必须符合复杂性要求”,点击“已启用”使得在更改或创建密码时执行复杂性要求。 |
| 4 | 密码长度最小值 | 低危 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“账户策略”->“密码策略”,双击右侧“密码长度最小值”设置为大于等于8的数字。 |
| 5 | 账户:来宾帐户状态 | 低危 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“安全选项”,双击右侧“帐户: 来宾帐户状态”设置为“已禁用”。 |
| 6 | 账户:重命名来宾帐户 | 低危 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“安全选项”,双击右侧“账户:重命名来宾帐户”设置为除“Guest”外的值。 |
| 7 | 密码最长使用期限 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“账户策略”->“密码策略”,双击右侧“密码最长使用期限”设置为小于等于60天。 |
| 8 | 密码最短使用期限 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“账户策略”->“密码策略”,双击右侧“密码最短使用期限”设置为非0值。 |
| 9 | 强制密码历史 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“账户策略”->“密码策略”,双击右侧“强制密码历史”设置为0-24之间,且不可为0。 |
| 10 | 帐户锁定阈值 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“账户策略”->“账户锁定策略”,双击右侧“帐户锁定阈值”设置为非0值。 |
| 11 | 帐户锁定时间 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“账户策略”->“账户锁定策略”,双击右侧“帐户锁定时间”设置为至少10分钟。 |
| 12 | 复位帐户锁定计数器 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“账户策略”->“账户锁定策略”,双击右侧“复位帐户锁定计数器|重置帐户锁定计数器”设置为非0值。 |
审核与日志(12 项)
| # | 检测项 | 风险 | 修复操作 |
|---|---|---|---|
| 13 | 审核策略更改 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“审核策略”,双击右侧“审核策略更改”设置。 |
| 14 | 审核登录事件 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“审核策略”,双击右侧“审核登录事件”设置。 |
| 15 | 审核对象访问 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“审核策略”,双击右侧“审核对象访问”设置。 |
| 16 | 审核进程跟踪 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“审核策略”,双击右侧“审核进程跟踪”设置。 |
| 17 | 审核目录服务访问 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“审核策略”,双击右侧“审核目录服务访问”设置。 |
| 18 | 审核特权使用 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“审核策略”,双击右侧“审核特权使用”设置。 |
| 19 | 审核系统事件 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“审核策略”,双击右侧“审核账户登录事件”设置。 |
| 20 | 审核账户登录事件 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“审核策略”,双击右侧“审核账户登录事件”设置。 |
| 21 | 审核帐户管理 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“审核策略”,双击右侧“审核帐户管理”设置。 |
| 22 | 应用日志查看器设置 | 信息 | 依次打开“控制面板”->“管理工具”->“事件查看器”->“Windows 日志”->“应用程序”,右键选择“属性”,设置日志查看器大小为非0值。 |
| 23 | 系统日志查看器设置 | 信息 | 依次打开“控制面板”->“管理工具”->“事件查看器”->“Windows 日志”->“系统”,右键选择“属性”,设置日志查看器大小为非0值。 |
| 24 | 安全日志查看器设置 | 信息 | 依次打开“控制面板”->“管理工具”->“事件查看器”->“Windows 日志”->“安全”,右键选择“属性”,设置日志查看器大小为非0值。 |
网络与登录安全(10 项)
| # | 检测项 | 风险 | 修复操作 |
|---|---|---|---|
| 25 | Microsoft 网络服务器: 登录时间过期后断开与客户端的连接 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“安全选项”,双击右侧“Microsoft 网络服务器: 登录时间过期后断开与客户端的连接”设置为启用。 |
| 26 | Microsoft 网络服务器: 对通信进行数字签名(如果客户端允许) | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“安全选项”,双击右侧“Microsoft 网络服务器: 对通信进行数字签名(如果客户端允许)”设置。 |
| 27 | 交互式登录:提示用户过期之前修改密码 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“安全选项”,双击右侧“交互式登录:提示用户过期之前修改密码”设置最少为10。 |
| 28 | 交互式登录: 无需按 Ctrl+Alt+Del | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“安全选项”,双击右侧“交互式登录: 无需按 Ctrl+Alt+Del”设置。配置为“已禁用(停用)”。 |
| 29 | 交互式登录: 之前登录到缓存的次数(域控制器不可用时) | 信息 | 此项仅适用于域成员。打开命令提示符,运行命令“gpedit.msc”打开组策略编辑器,浏览到路径“本地计算机策略\计算机配置\Windows设置\安全设置\本地策略\安全选项”,在右边窗格中找到“(交互式登录:)可被缓存保存的前次登录个数(在域控制器不可用的情况下)”或“交互式登录: 之前登录到缓存的次数(域控制器不可用时)”,配置为不大于标准值的值:5。非域成员主机的实际值将显示为0。 |
| 30 | 网络安全: 基于 NTLM SSP 的(包括安全 RPC)服务器的最小会话安全 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“安全选项”,双击右侧“网络安全: 基于 NTLM SSP 的(包括安全 RPC)服务器的最小会话安全”设置为“求128位加密”。 |
| 31 | 网络访问: 不允许匿名枚举 SAM 帐户 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“安全选项”,双击右侧“网络访问: 不允许匿名枚举 SAM 帐户”设置未开启。 |
| 32 | 域成员: 对安全通道数据进行数字加密(如果可能) | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“安全选项”,双击右侧“域成员: 对安全通道数据进行数字加密(如果可能)”设置。 |
| 33 | 域成员: 对安全通道数据进行数字加密或数字签名(始终) | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“安全选项”,双击右侧“域成员: 对安全通道数据进行数字加密或数字签名(始终)”设置。 |
| 34 | 域成员: 对安全通道数据进行数字签名(如果可能) | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“安全选项”,双击右侧“域成员: 对安全通道数据进行数字签名(如果可能)”设置。 |
系统服务与安全配置(16 项)
| # | 检测项 | 风险 | 修复操作 |
|---|---|---|---|
| 35 | 关闭默认共享盘 | 高危 | 进入“开始->运行->Regedit”,进入注册表编辑器,更改注册表键值:在HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\新建DWRD值,数值名称为AutoShareServer,值为0。。 |
| 36 | 允许管理员自动登录 | 高危 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“安全选项”,双击右侧“恢复控制台: 允许自动管理登录”设置。 |
| 37 | 远程注册表服务 | 高危 | 按下WIN+R键输入“services.msc”打开服务,找到“Remote Registry”,双击打开设置为“禁用”。 |
| 38 | Messenger服务 | 高危 | 按下WIN+R键输入“services.msc”打开服务,找到“Messenger”,双击打开设置为“禁用”。 |
| 39 | Clipbook服务 | 高危 | 按下WIN+R键输入“services.msc”打开服务,找到“Clipbook”,双击打开设置为“禁用”。 |
| 40 | Alerter服务 | 高危 | 按下WIN+R键输入“services.msc”打开服务,找到“Alerter”,双击打开设置为“禁用”。 |
| 41 | TermService服务 | 高危 | 按下WIN+R键输入“services.msc”打开服务,找到“TermService”,双击打开设置为“禁用”。 |
| 42 | 检查是否已开启系统补丁更新服务或程序 | 高危 | 点击【控制面板】-【系统和安全】找到Windows Update,点击更改设置,选择自动安装更新。 |
| 43 | 启动系统自带防火墙 | 低危 | 进入“控制面板“->”网络连接“->”本地连接”,在高级选项的设置中,查看是否启用Windows防火墙。查看是否在“例外”中配置允许业务所需的程序接入网络。查看是否在“例外->编辑->更改范围”编辑允许接入的网络地址范围。当存在多种防火墙类型时,如公用网络、工作网络防火墙时,需全部启用。 |
| 44 | 禁用全部驱动器自动运行 | 信息 | WinXP下, 按下WIN+R键输入“gpedit.msc”打开本地组策略编辑器,依次点击“本地计算机 策略”->“计算机配置”->“管理模板”->“系统”,双击右侧“关闭自动播放”,下方的“关闭自动播放”下拉框中选择“所有驱动器”,点击“确定”保存。 Win7及以上,按下WIN+R键输入“gpedit.msc”打开本地组策略编辑器,依次点击“本地计算机 策略”->“计算机配置”->“管理模板”->“Windows 组件”->“自动播放策略”,双击右侧“关闭自动播放”,下方的“关闭自动播放”下拉框中选择“所有驱动器”,点击“确定”保存。 |
| 45 | 屏幕保护程序启动等待时间 | 信息 | 依次打开“控制面板”->“外观和个性化”->“屏幕保护程序”设置为1-15分钟的值。 |
| 46 | 屏幕保护程序是否使用“恢复时显示登陆屏幕” | 信息 | 依次打开“控制面板”->“外观和个性化”->“屏幕保护程序”设置。 |
| 47 | 从远程系统强制关机 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“用户权限分配”,在右侧列表找到该项设置为“系统管理员”。 |
| 48 | 关闭系统 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“用户权限分配”,在右侧列表找到该项设置为“系统管理员、备份操作员(Backup Operators)、高级用户(Power User)”。 |
| 49 | 取得文件或其他对象的所有权 | 信息 | 依次点击“本地计算机 策略”->“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“用户权限分配”,在右侧列表找到该项设置为“系统管理员”。 |
| 50 | 启用数据执行保护功能 | 信息 | 进入“控制面板->系统->高级系统设置”,在“高级”选项卡的 “性能”下的“设置”。进入 “数据执行保护”选项卡。查看是否设置为“ 仅为基本 Windows 程序和服务启用DEP”。 |
浏览器安全(7 项)
| # | 检测项 | 风险 | 修复操作 |
|---|---|---|---|
| 51 | 禁用VBScript(IE浏览器) | 高危 | 计算机配置\管理模板\Windows 组件\Internet Explorer\Internet 控制面板\安全页\Internet 区域 → "允许在 Internet Explorer 中运行 VBScript" 设置为“已禁用” |
| 52 | 跨域 HTTP 基本身份验证提示(谷歌浏览器) | 低危 | 计算机配置/用户配置 > 管理模板 > Google/Google Chrome > Google Chrome > HTTP 身份验证的政策 → "跨域 HTTP 基本身份验证提示" 设置为“已禁用” |
| 53 | 禁用自动填充(谷歌浏览器) | 低危 | 计算机配置/用户配置 > 管理模板 > Google/Google Chrome > Google Chrome → "启用自动埴充" 设置为“已禁用” |
| 54 | 启用安全浏览(谷歌浏览器) | 低危 | 计算机配置/用户配置 > 管理模板 > Google/Google Chrome > Google Chrome → "启用安全浏览" 设置为“已启用” |
| 55 | 禁用 ActiveX 控件(IE浏览器) | 信息 | 计算机配置\管理模板\Windows 组件\Internet Explorer\Internet 控制面板\安全页\Internet 区域 → "对未标记为可安全执行脚本的 ActiveX 控件初始化并执行脚本" 设置为“已禁用” |
| 56 | 阻止文件下载(IE浏览器) | 信息 | 计算机配置\管理模板\Windows 组件\Internet Explorer\Internet 控制面板\安全页\Internet 区域 → "文件下载" 设置为“已禁用” |
| 57 | 禁用 Java 小程序(IE浏览器) | 信息 | 计算机配置\管理模板\Windows 组件\Internet Explorer\Internet 控制面板\安全页\Internet 区域 → "Java 权限" 设置为“已禁用” |
二、Linux 基线检查(63 项)
以下命令兼容 Debian / Ubuntu / CentOS 等主流发行版(包管理命令按发行版调整)。修改前请先备份配置文件。
账户与密码策略(13 项)
| # | 检测项 | 风险 | 修复操作 |
|---|---|---|---|
| 1 | 检查系统是否启用了sudo命令 | 高危 | 下载安装sudo,neokylin默认没有配置yum 管理设备,需要自己配置,然后按照yum 安装方式执行,或者打neokylin客服电话,进行咨询 |
| 2 | 检查系统中是否存在密码为空的帐户 | 高危 | 方法1. 执行命令 su username 切换到指定username用户,然后执行 passwd,根据提示设置密码; 方法2. sudo su - 切换到root用户,然后执行 passwd useranme,根据提示设置username的密码。 |
| 3 | 检查系统中是否存在UID与root帐户相同的帐户 | 高危 | 方法 1. 执行命令 usermod -u uid username 其中uid修改为所指定uid 大于10000; 方法 2. root权限 编辑/etc/passwd文件,修改username记录的第二个冒号与第三个冒号之间的值。 |
| 4 | 检查是否存在未禁止登录的系统默认帐户 | 高危 | 使用管理员权限修改/etc/passwd文件,修改以下(daemon|bin|sys|sync|games|man|lp|mail|news|uucp|proxy|www-data|backup|list|irc|gnats|nobody|libuuid|speech-dispatcher|rpc|netdump|xfs)帐户的登录时使用的shell为“/sbin/nologin”,及每行最后面,如果不需要禁止这里面的账户,或者禁止其他账户,根据需求修改。 |
| 5 | 检查是否设置密码最小长度 | 高危 | 编辑/etc/login.defs文件,取消PASS_MIN_LEN前的#号,并修改PASS_MIN_LEN值为8。 |
| 6 | 检查是否设置密码过期时间 | 高危 | 编辑 #vi /etc/login.defs文件,添加或者修改PASS_MAX_DAYS的值为90,即PASS_MAX_DAYS=90。 |
| 7 | 检查是否设置了密码更改最小间隔周期 | 高危 | 编辑#vi /etc/login.defs文件,并修改或添加PASS_MIN_DAYS 2,表示至少2天修改一次密码,如果需要频繁修改密,则注释掉或删掉这行,又或者设置为0。 |
| 8 | 检查是否设置密码在设定时不能使用前几次密码的次数限制 | 高危 | 相关文件 1.Debian / Ubuntu:所在文件 #/etc/pam.d/common-password, 2.CentOS / RedHat / Fedora 所在文件 #/etc/pam.d/system-auth 3.suse 所在文件 /etc/pam.d/passwd或者/etc/pam.d/common-password(最新版在这个下面) 编辑对应文件,在 password sufficient pam_unix.so 所在行最后面添加remember=5 表示不能重复前5次的密码。 |
| 9 | 检查是否配置密码复杂度策略 | 高危 | 修改/etc/security/pwquality.conf文件,在ucredit=1 lcredit=1 dcredit=1 ocredit=1 选3种,取消注释,并修改为ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1。注:ucredit:大写字母个数;lcredit:小写字母个数;dcredit:数字个数;ocredit:特殊字符个数。 |
| 10 | 检查是否设置密码过期前警告天数 | 中危 | 编辑/etc/login.defs文件,并修改或添加PASS_WARN_AGE 7,表示密码过期的前七天提醒。 |
| 11 | 检查记录历史命令条数是否设置 | 中危 | 编辑文件/etc/profile,修改或添加HISTSIZE=1000,表示1000条历史命令 |
| 12 | 检查是否禁止wheel组之外的用户使用su命令切换到root | 低危 | 这里采用pam管理,1.编辑 /etc/pam.d/su文件,添加或修改为下面两行:auth required pam_wheel.so group=wheel 和 auth sufficient pam_rootok.so 2. 然后把需要使用sudo命令用户添加到wheel组, 执行命令:usermod –G wheel username |
| 13 | 检查是否可以查看系统的OS补丁 | 低危 | 联系neokylin客服,或者去nekylin官网下载最新版os镜像进行升级。 |
审计与日志(10 项)
| # | 检测项 | 风险 | 修复操作 |
|---|---|---|---|
| 14 | 检查是否开启日志功能 | 高危 | 1.老版本没有使用systemd的管理服务时,使用传统命令"service syslog(rsyslog|syslog-ng) start"或者/etc/init.d/syslog start来启动日志服务(两者等价)。 2.使用systemd的系统使用命令"systemctl start syslog(rsyslog|syslog-ng).service"来启动服务。 注:后面服务管理方式都是类似 |
| 15 | 检查是否开启audit日志审计功能 | 高危 | 使用管理员权限输入命令"service auditd start"或者"systemctl start auditd.service"开启审计服务,如无法开启或不存在服务,请安装审计安装包(audit)后重新尝试。 |
| 16 | 检查启用系统核心转储设置 | 高危 | 编辑#vi /etc/security/limits.conf文件,添加或者修改下面两行 * soft core 0 ,* hard core 0 |
| 17 | 检查是否设置审计日志保存时间 | 高危 | 检查审计日志默认保存时间是否符合规范,建议保存180天内的日志。则编辑/etc/logrotate.conf,如果日志轮转周期设置为weekly(默认)则建议修改rotate值为27,表示27周,同理若周期为daily则建议rotate设置为180,表示180天,若周期为monthly则建议设置为6,表示6个月。 |
| 18 | 检查是否对登录进行日志记录 | 高危 | 登录日志文件为/var/log/wtmp, /var/log/utmp,这两个个文件中记录着所有登录过主机的用户,时间,来源等内容,这个文件不具可读性,可用last命令来看。 如果命令无结果,请检查系统安装是否正确,如有需要请重新安装。 |
| 19 | 检查用户对设备的操作是否被记录 | 低危 | 通过设置日志文件可以对每个用户的每一条命令进行记录,这一功能默认是不开放的,为了打开它,需要安装pacct工具,并执行以下命令: #touch /var/log/pacct #accton /var/log/pacct 执行读取命令lastcomm username –f /var/log/pacct |
| 20 | 检查是否配置syslog-ng安全事件的日志 | 低危 | 编辑/etc/syslog-ng/syslog-ng.conf 配置: filter f_msgs { level(err) or facility(kern) and level(debug) or facility(daemon) and level(notice); }; destination msgs { file("/var/adm/msgs"); }; log { source(src); filter(f_msgs); destination(msgs); }; 其中/var/adm/msgs为日志文件。 如果该文件不存在,则创建该文件,执行命令# touch /var/adm/msgs,并修改权限为666。执行命令 # chmod 666 /var/adm/msgs. 重启日志服务: #/etc/init.d/syslog restart |
| 21 | 检查是否配置rsyslog安全事件的日志 | 低危 | 编辑/etc/rsyslog.conf 添加或者修改为 *.err;kern.debug;daemon.notice /var/adm/messages 其中/var/adm/messages为日志文件。 如果该文件不存在,则创建该文件,执行命令# touch /var/adm/messages,并修改权限为666 执行命令# chmod 666 /var/adm/messages. 重启日志服务: #service rsyslog restart 或者 systemctl restart rsyslog.service |
| 22 | 检查是否配置syslog安全事件的日志 | 低危 | 编辑/etc/syslog.conf 配置: *.err;kern.debug;daemon.notice /var/adm/messages 其中/var/adm/messages为日志文件。 如果该文件不存在,则创建该文件,命令为: touch /var/adm/messages,并修改权限为666 执行# chmod 666 /var/adm/messages. 重启日志服务: #service syslog restart 或者 systemctl restart syslog.service |
| 23 | 检查是否启用syslog日志审计 | 低危 | 1. 若启用syslog,则编辑/etc/syslog.conf, 若启用rsyslog,则编辑/etc/rsyslog.conf, 选择对应文件添加: authpriv.* /var/log/secure 2. 若启用syslog-ng,则编辑:/etc/syslog-ng/syslog-ng.conf。 添加: filter f_secure { facility(authpriv); }; destination priverr { file("/var/log/secure"); }; log { source(src); filter(f_secure); destination(priverr); }; 3. 创建/var/log/secure文件,执行命令 touch /var/log/secure 4. 重启syslog服务 #/etc/init.d/syslog(rsyslog|syslog-ng) restart 或者 systemctl restart syslog(rsyslog|syslog-ng).service。 |
网络与登录安全(13 项)
| # | 检测项 | 风险 | 修复操作 |
|---|---|---|---|
| 24 | 检查是否设置ssh远程登录密码最大重试次数 | 高危 | 编辑/etc/pam.d/sshd文件,在"#%PAM-1.0"下面添加或者修改 auth required pam_tally2.so deny=5 unlock_time=1800,即表示最大重试次数5次,失败锁定帐户时间30分钟(1800秒)。 |
| 25 | 检查是否允许root帐户ssh远程登录 | 高危 | 编辑/etc/ssh/sshd_config文件,修改或者注释 PermitRootLogin no;然后重启sshd服务 执行systemctl restart sshd.service 或者 service sshd restart |
| 26 | 检查是否没有允许所有IP访问主机 | 高危 | 编辑#vi /etc/hosts.allow,删除或者注释掉 sshd:All |
| 27 | 检查是否配置禁止所有ip段访问主机 | 高危 | 编辑 #vi /etc/hosts.deny,添加或修改sshd:All |
| 28 | 检查是否已禁用telnet服务 | 高危 | 执行 ps -ef | grep telnet 等命令找到telnet服务后将其关闭 1.执行systemctl stop telnet.socket或者service telnet.socket stop停止telnet; 2. 执行chkconfig telnet off 禁止telnet开机自启动。 3. 执行service xinetd restart使命令生效 |
| 29 | 检查是否用户的最小权限是否符合规定 | 高危 | 执行下面三个命令 1. # chmod 644 /etc/passwd,2. # chmod 644 /etc/group,3. # chmod 600 /etc/shadow |
| 30 | 检查是否配置帐户认证失败的次数 | 高危 | 相关文件 1. Debian / Ubuntu:所在文件 #/etc/pam.d/common-account, 2. CentOS / RedHat / Fedora 所在文件 #/etc/pam.d/system-auth 3. suse 所在文件 /etc/pam.d/passwd或者/etc/pam.d/common-auth(最新版在这个下面) 编辑对应文件添加:auth required pam_tally2.so deny=5 unlock_time=1800 no_lock_time 参数说明: deny #连续认证失败次数超过的次数 unlock_time #锁定的时间,单位为秒 |
| 31 | 检查系统当前的umask默认权限值是否符合规范 | 中危 | 编辑 /etc/profile,添加或者修改umask 0022,或者执行 umask 022 |
| 32 | 检查系统是否禁止所有广播包 | 低危 | 为了防止异常修改前请先备份配置文件 #cp -p /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts.bak ,执行命令 #sysctl -w net.ipv4.icmp_echo_ignore_broadcasts="1" 并修改/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts的值为1 |
| 33 | 检查系统是否分配组权限 | 低危 | 1.为了防止意外,执行备份: #cp -p /etc/group /etc/group.bak 2.创建新的用户组 #groupadd 组名 #usermod -g 组名 -d 用户目录 -m 用户名 把用户添加进入某个组(s),具体使用命令 usermod --help 参考说明进行相关设置 |
| 34 | 检查是否启用cron行为日志功能 | 低危 | 1.如果启用了syslog-ng日志则在/etc/syslog-ng/syslog-ng.conf中添加 filter f_cron { facility(cron); }; destination cron { file("/var/log/cron"); }; log { source(src); filter(f_cron); destination(cron); }; 其中/var/log/cron为日志文件。 如果该文件不存在,则创建该文件,命令为: touch /var/log/cron,并修改权限为666.命令为:chmod 666 /var/log/cron; 2.如果启用了rsyslog日志则编辑/etc/rsyslog.conf文件, 配置: cron.* /var/log/cron , 其中/var/log/cron为日志文件。 如果该文件不存在,则创建该文件,命令为: touch /var/log/cron,并修改权限为666.命令为:chmod 666 /var/log/cron; 3.如果启用了syslog日志则编辑/etc/syslog.conf文件, 配置: cron.* /var/log/cron , 其中/var/log/cron为日志文件。 如果该文件不存在,则创建该文件,命令为: touch /var/log/cron,并修改权限为666.命令为:chmod 666 /var/log/cron。 |
| 35 | 检查数据包转发是否关闭 | 低危 | 执行命令 #cat /proc/sys/net/ipv4/ip_forward 如果返回值为0,说明数据包转发功能已经关闭,为1则开启。 关闭数据包转发功能: 命令: #sysctl -w net.ipv4.ip_forward=0 |
| 36 | 检查是否关闭IP欺骗和多IP绑定功能 | 低危 | 1. 编辑/etc/host.conf文件: 添加或者修改nospoof on #关闭IP伪装;配置2. 编辑/etc/host.conf文件: 添加或者修改multi off #关闭多IP绑定 |
系统服务与安全配置(24 项)
| # | 检测项 | 风险 | 修复操作 |
|---|---|---|---|
| 37 | 检查是否启用了不必要的系统服务 | 高危 | 查看正在运行的服务 #ps -ef;如果有需要关闭的服务,如finger,则执行命令: # /etc/init.d/finger stop 或者 service finger stop 或者 systemctl stop finger#关闭正在运行的finger服务。需要关闭不必要的基本服务有:finger、telnet、sendmail、time、echo、discard、daytime、chargen、comsat、klogin、kshell、ntalk、talk、tftp、uucp、dtspc、smb、ident、printer、bootps、lpd、nfs、nfslock、ypbind |
| 38 | 检查系统是否允许root帐户telnet远程登录 | 高危 | 使用pam管理,编辑 /etc/pam.d/login文件,添加行"auth required pam_securetty.so"。 |
| 39 | 检查环境变量PATH目录下是否存在权限为777的目录 | 高危 | 执行命令 ls -l `echo $PATH | tr ":" " "` 查看指定PATH变量下目录的权限,并把权限为777的挑选出来,执行命令 chmod 755 dirname修改目录权限,按照对应的要求设置,默认一般大多数情况为755,dirname为要修改权限的目录名。 |
| 40 | 检查环境变量目录下是否存在权限为777的文件 | 高危 | 执行命令 ls -l `echo $PATH | tr ":" " "` 查看指定PATH变量下文件的权限,并把权限为777的挑选出来,执行命令 chmod 644 filename修改目录权限,按照对应的要求设置,默认一般大多数情况为644,filename为要修改权限的文件名。 |
| 41 | 检查系统会话超时配置 | 高危 | 以管理员权限执行,vi /etc/profile,添加 export TMOUT=480(单位:秒,可根据具体情况设定超时退出时间,要求不大于480秒),注销用户,再用该用户登录激活该功能 |
| 42 | 检查是否禁用了talk服务 | 高危 | 编辑# vi/etc/xinetd.d/talk,修改service talk的disable属性值改为yes;或执行命令"chkconfig talk off"或"systemctl diable talk.service" 来禁止开机启动 |
| 43 | 检查是否禁用了ntalk服务 | 高危 | 编辑#vi /etc/xinetd.d/ntalk,修改service ntalk的disable属性值改为yes。或执行命令"chkconfig ntalk off"或"systemctl diable ntalk.service",来禁止开机启动 |
| 44 | 检查是否禁用了sendmail服务 | 高危 | 执行命令 service sendmail stop or system stop sendmail.service 关闭当前sendmail服务;然后执行chkconfig sendmail off or system disable sendmail.service 关闭sendmail服务开机自动启动。 |
| 45 | 检查是否修改了snmp的默认团体名 | 高危 | 编辑#vi /etc/snmp/snmpd.conf,修改private和public对应的团体名为用户自定义设置团体名,根据各自需求修改。 |
| 46 | 检查磁盘是否充足 | 高危 | 如果磁盘动态分区空间不足,请联系建议管理员扩充磁盘容量,或者购买硬盘,或者云主机申请扩容,或者删除无用的其他文件。 |
| 47 | 检查NFS服务配置是否关闭 | 高危 | 1. 如果需要开启NFS服务,则编辑文件:vi /etc/hosts.allow 增加一行:portmap: 允许访问的IP;2.如果需要停止NFS服务,执行:#server nfs stop 或者 systemctl stop nfs 。 |
| 48 | 检查系统是否开启缓冲区溢出攻击(ASLR) | 高危 | 编辑文件/proc/sys/kernel/randomize_va_space,并修改内容为1或者2。建议修改为2,安全性最高。 |
| 49 | 检查PATH环境变量是否含有相对路径 | 中危 | 编辑#vi /etc/profile或/home/username/.bash_profile 在环境变量$PATH中把包含(.和..)的路径换成绝对路径,或者直接删除. |
| 50 | 检查/etc/aliases和/etc/mail/aliases是否禁用不必要的别名文件 | 低危 | 1. 编辑别名文件vi /etc/aliases,删除或注释掉下面的行 #games: root #ingres: root #system: root #toor: root #uucp: root #manager: root #dumper: root #operator: root #decode: root #root: marc 更新后运行/usr/bin/newaliases,使其改变生效; 2. 编辑别名文件vi /etc/mail/aliases,删除或注释掉下面的行 #games: root #ingres: root #system: root #toor: root #uucp: root #manager: root #dumper: root #operator: root #decode: root #root: marc 修改后运行命令:/usr/bin/newaliases,使其改变生效。 |
| 51 | 检查是否启动空闲时自动定时锁定屏幕功能(适用于具备gnome图形界面的设备) | 低危 | 配置方法:一般在如下路径中 "系统设置"-->"显示设置"-->“屏幕保护程序”; 启用空闲激活 或用命令方式: gsettings set org.gnome.desktop.screensaver idle-activation-enabled true 启用屏幕锁定 或使用命令: gsettings set org.gnome.desktop.screensaver lock-enabled true 启用空闲激活时间 或使用命令: gsettings set org.gnome.desktop.screensaver lock-delay 15 根据具体情况设置时间 |
| 52 | 检查是否禁止源路由 | 低危 | 为了防止异常修改前请先备份配置文件,执行cp -p /proc/sys/net/ipv4/conf/all/accept_source_route /proc/sys/net/ipv4/conf/all/accept_source_route.bak,然后执行 #sysctl -w net.ipv4.conf.all.accept_source_route="0" 并修改/proc/sys/net/ipv4/conf/all/accept_source_route的值为0 |
| 53 | 检查是否禁止icmp重定向报文 | 低危 | 为了防止异常修改前请先备份配置文件 #cp -p /proc/sys/net/ipv4/conf/all/accept_redirects /proc/sys/net/ipv4/conf/all/accept_redirects.bak ,执行命令 #sysctl -w net.ipv4.conf.all.accept_redirects="0" 并修改/proc/sys/net/ipv4/conf/all/accept_redirects的值为0 |
| 54 | 检查系统内核是否发送重定向 | 低危 | 为了防止异常修改前请先备份配置文件 #cp -p /proc/sys/net/ipv4/conf/all/send_redirects /proc/sys/net/ipv4/conf/all/send_redirects.bak ,执行命令 #sysctl -w net.ipv4.conf.all.send_redirects="0" 并修改/proc/sys/net/ipv4/conf/all/send_redirects的值为0 |
| 55 | 检查系统是否内核IP转发 | 低危 | 为了防止异常修改前请先备份配置文件 #cp -p /proc/sys/net/ipv4/ip_forward /proc/sys/net/ipv4/ip_forward.bak ,执行命令 #sysctl -w net.ipv4.ip_forward="0" 并修改/proc/sys/net/ipv4/ip_forward的值为0 |
| 56 | 检查是否使用NTP同步时间,以及对应服务是否安装开启 | 信息 | 1.检查是否安装ntp服务器, redhat centos使用rpm -qa | grep ntp查看(其他发行版本根据具体命令查看),没有则执行yum install ntp,2.配置文件/etc/ntp.conf是否配置同步的服务器,应有下面类似内容server 0.centos.pool.ntp.org iburst,根据自己选择添加同步时间的服务器; 3.检查是否有ntp服务,a. redhat7(fedora20 centos7 ubuntu 15.04 suse20 debian8)以前的版本(没有使用systemd替换SysV) 使用chkconfig --list 检查是否有ntp服务,如果没有则添加,使用命令 chkconfig --add ntpd,然后设定等级chkconfig ntpd on,最后开启服务service ntpd restart; b.使用systemd的系统使用命令 systemctl list-unit-files --type=service | grep -cE 'ntp|ntpd' 查询是否有ntp服务,没有则添加,使用systemctl add ntpd.service,启动服务systemctl start ntpd.service 参考网址https://linux.cn/article-5581-1.html |
| 57 | 检查ssh登录前的警告是否设置 | 信息 | 1. 执行如下命令创建ssh banner信息文件: #touch /etc/ssh/banner #chown bin:bin /etc/ssh/banner #chmod 644 /etc/ssh/banner #echo "您想想设置的信息"> /etc/ssh/banner 可根据实际需要修改该文件的内容。 2. 修改/etc/ssh/sshd_config文件,添加如下行: Banner /etc/ssh/banner 3.重启sshd服务: #/etc/init.d/sshd restart |
| 58 | 检查ssh登录后警告是否设置 | 信息 | 修改文件/etc/motd的内容,如没有该文件,则创建它。 #echo "您想设置的信息"> /etc/motd根据实际需要修改该文件的内容 |
| 59 | 检查登录issue提示信息设置是否符合规范 | 信息 | 编辑#vi /etc/issue and /etc/issue.net 添加内容 " 你想提示的登录信息" 请根据实际需求添加绝修改其中的内容,但是不要出现系统敏感信息,如CentOS等操作系统名称。 |
| 60 | 检查是否有文件拥有suid和sgid权限 | 信息 | 执行命令: find /usr/bin/chage /usr/bin/gpasswd /usr/bin/wall /usr/bin/chfn /usr/bin/chsh /usr/bin/newgrp /usr/bin/write /usr/sbin/usernetctl /usr/sbin/traceroute /bin/mount /bin/umount /bin/ping /sbin/netreport -type f -perm /6000 2>/dev/null 如果有不符合权限文件filename,执行chmod 755 filename修改文件的权限。 例如:chmod a-s /usr/bin/gpasswd |
用户与文件权限(3 项)
| # | 检测项 | 风险 | 修复操作 |
|---|---|---|---|
| 61 | 检查是否分配普通用户 | 低危 | 为用户创建帐号: #useradd username #创建帐号 #passwd username #设置密码 修改权限: #chmod 750 directory #其中755为设置的权限,可根据实际情况设置相应的权限,directory是要更改权限的目录) 使用该命令为不同的用户分配不同的帐号,设置不同的口令及权限信息等。 |
| 62 | 检查是否配置远程日志功能 | 低危 | 1.若启用syslog-ng日志则在/etc/syslog-ng/syslog-ng.conf中配置destination logserver { udp("192.168.0.1" port(514)); }; log { source(src); destination(logserver); }; 将192.168.0.1替换为实际的IP; 2.若启用rsyslog日志则修改配置文件vi /etc/rsyslog.conf, 加上: *.* @192.168.0.1 可以将"*.*"替换为你实际需要的日志信息。比如:kern.* ; mail.* 等等。 将192.168.0.1替换为实际的IP或域名。; 3.若启用syslog日志则修改配置文件vi /etc/syslog.conf, 加上: *.* @192.168.0.1 可以将"*.*"替换为你实际需要的日志信息。比如:kern.* ; mail.* 等等。 将192.168.0.1替换为实际的IP或域名。 |
| 63 | 检查重要文件属性设置是否符合规范 | 低危 | 对/etc/passwd文件,/etc/shadow文件,/etc/group文件,/etc/gshadow分别添加隐藏属性,执行命令如:chattr +i /etc/passwd |
三、检查流程建议
- 先备份:修改 /etc/passwd、/etc/shadow、/etc/ssh/sshd_config 等关键文件前先
cp -p备份 - 高危优先:先处理 42 项高危项,再处理中危、低危
- 验证影响:SSH 相关配置(如禁用 root 登录)修改后先开一个新终端验证可登录,再断开当前连接
- 工具辅助:可用
lynis(apt install lynis)、openscap等自动化工具做初步扫描,再逐项人工复核 - 生成报告:检查结果按「检查项 / 风险等级 / 是否合规 / 修复状态」记录,作为等保测评和验收依据
四、加固速查(中高危项)
仅列出中危、高危检查项,按风险等级从高到低排列,可当工作清单逐项处理。
Windows 中高危(11 项)
| # | 风险 | 检查项 |
|---|---|---|
| 1 | 高危 | 关闭默认共享盘 |
| 2 | 高危 | 允许管理员自动登录 |
| 3 | 高危 | 远程注册表服务 |
| 4 | 高危 | Messenger服务 |
| 5 | 高危 | Clipbook服务 |
| 6 | 高危 | Alerter服务 |
| 7 | 高危 | TermService服务 |
| 8 | 高危 | 检查是否已开启系统补丁更新服务或程序 |
| 9 | 高危 | 禁用VBScript(IE浏览器) |
| 10 | 中危 | 账户:管理员帐户状态 |
| 11 | 中危 | 账户:重命名管理员帐户 |
Linux 中高危(37 项)
| # | 风险 | 检查项 |
|---|---|---|
| 1 | 高危 | 检查系统是否启用了sudo命令 |
| 2 | 高危 | 检查系统中是否存在密码为空的帐户 |
| 3 | 高危 | 检查系统中是否存在UID与root帐户相同的帐户 |
| 4 | 高危 | 检查是否存在未禁止登录的系统默认帐户 |
| 5 | 高危 | 检查是否设置密码最小长度 |
| 6 | 高危 | 检查是否设置密码过期时间 |
| 7 | 高危 | 检查是否设置了密码更改最小间隔周期 |
| 8 | 高危 | 检查是否设置密码在设定时不能使用前几次密码的次数限制 |
| 9 | 高危 | 检查是否配置密码复杂度策略 |
| 10 | 高危 | 检查是否开启日志功能 |
| 11 | 高危 | 检查是否开启audit日志审计功能 |
| 12 | 高危 | 检查启用系统核心转储设置 |
| 13 | 高危 | 检查是否设置审计日志保存时间 |
| 14 | 高危 | 检查是否对登录进行日志记录 |
| 15 | 高危 | 检查是否设置ssh远程登录密码最大重试次数 |
| 16 | 高危 | 检查是否允许root帐户ssh远程登录 |
| 17 | 高危 | 检查是否没有允许所有IP访问主机 |
| 18 | 高危 | 检查是否配置禁止所有ip段访问主机 |
| 19 | 高危 | 检查是否已禁用telnet服务 |
| 20 | 高危 | 检查是否用户的最小权限是否符合规定 |
| 21 | 高危 | 检查是否配置帐户认证失败的次数 |
| 22 | 高危 | 检查是否启用了不必要的系统服务 |
| 23 | 高危 | 检查系统是否允许root帐户telnet远程登录 |
| 24 | 高危 | 检查环境变量PATH目录下是否存在权限为777的目录 |
| 25 | 高危 | 检查环境变量目录下是否存在权限为777的文件 |
| 26 | 高危 | 检查系统会话超时配置 |
| 27 | 高危 | 检查是否禁用了talk服务 |
| 28 | 高危 | 检查是否禁用了ntalk服务 |
| 29 | 高危 | 检查是否禁用了sendmail服务 |
| 30 | 高危 | 检查是否修改了snmp的默认团体名 |
| 31 | 高危 | 检查磁盘是否充足 |
| 32 | 高危 | 检查NFS服务配置是否关闭 |
| 33 | 高危 | 检查系统是否开启缓冲区溢出攻击(ASLR) |
| 34 | 中危 | 检查是否设置密码过期前警告天数 |
| 35 | 中危 | 检查记录历史命令条数是否设置 |
| 36 | 中危 | 检查系统当前的umask默认权限值是否符合规范 |
| 37 | 中危 | 检查PATH环境变量是否含有相对路径 |
基线检查不是一次性的工作——服务器每变更一次配置、每上线一个新服务,都应该重新核查一遍。把这份清单存成模板,配合定期巡检(建议每月一次),能持续保持服务器的安全水位。
