基线检查及安全加固
2203 字
11 分钟
基线检查及安全加固
一、基本概念
1.1 核心概念速记
| 缩写 | 全称 | 说明 |
|---|---|---|
| OS | Operation System | 操作系统 |
| DBMS | Database Management System | 数据库管理系统(Oracle、MySQL、SQL Server、达梦、人大金仓) |
| FW | Firewall | 防火墙 |
| WAF | Web Application Firewall | Web应用防火墙 |
| RT | Router | 路由器(网关) |
| SW | Switch | 交换机 |
存储单位:
- 1b(bit)= 1个二进制位
- 1B(Byte)= 8bit
- 1KB = 1024B
- 1MB = 1024KB
1.2 什么是基线检查?
检查系统/应用的基本安全配置是否符合标准。
1.3 常见问答
| 问题 | 答案 |
|---|---|
| 基线检查和安全检测有何区别? | 几乎没有区别 |
| 做完一次基线检查和安全加固后就不用再做了吗? | 不行,需定期持续进行 |
| 什么时候做基线检查? | 客户/合同要求时、系统部署后、上线前 |
| 一般对哪些系统做安检加固? | OS、DBMS、中间件、网络设备、网络安全设备 |
1.4 配置途径
| 途径 | 使用场景 |
|---|---|
| 命令 | cmd/powershell 中执行 |
| 注册表(regedit) | Windows 系统配置 |
| 组策略(gpedit.msc) | Windows 批量策略配置 |
| 安全策略(secpol.msc) | Windows 安全配置 |
| 控制面板(control) | Windows 图形界面 |
| 配置文件 | Linux/开源软件 |
二、PHP 安全加固
2.1 PHP 配置文件位置
# 查找 php.inifind /etc -name php.ini# 常见位置:# /etc/php/7.4/cli/php.ini
# 查看已安装 PHPsudo apt list --installed | grep phpwhich php2.2 PHP 核心加固配置
| 配置项 | 说明 | 推荐值 |
|---|---|---|
open_basedir | 限制 PHP 可访问的目录 | /var/www/html:/tmp |
disable_functions | 禁用危险函数 | system,exec,passthru,shell_exec,phpinfo |
expose_php | 隐藏 PHP 版本信息 | Off |
display_errors | 关闭错误显示 | Off |
log_errors | 开启错误日志 | On |
error_log | 错误日志路径 | /var/log/php_error.log |
register_globals | 关闭全局变量注册(PHP 5.3 已废弃) | Off |
magic_quotes_gpc | SQL注入防护(PHP 5.4 已废弃) | On |
2.3 控制 PHP 访问目录
# Linux:冒号分隔open_basedir = "/var/www/html:/tmp"
# Windows:分号分隔open_basedir = "C:/www;C:/tmp"2.4 禁用危险函数
# 禁用命令执行函数disable_functions = system,passthru,exec,shell_exec,popen,pcntl_exec,proc_open,proc_close,dl
# 额外禁用文件操作函数disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,unlink,delete,copy,mkdir,rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown
# 禁用信息泄露disable_functions = phpinfo2.5 隐藏版本信息
expose_php = Off2.6 错误日志配置
display_errors = Offlog_errors = Onerror_log = /usr/local/apache2/logs/php_error.log三、Windows 安全加固
3.1 账户管理与认证授权
| 加固项 | 操作 | 说明 |
|---|---|---|
| 禁用 Guest 账户 | 计算机管理 → 本地用户和组 → Guest → 禁用 | 防止未授权访问 |
| 删除无用账户 | 禁用→观察→确认无影响后删除 | 减少攻击面 |
| 权限分离 | 按业务创建不同用户组 | 最小权限原则 |
| 不显示最后用户名 | secpol.msc → 本地策略 → 安全选项 → 交互式登录:不显示最后的用户名 → 启用 | 防止信息泄露 |
3.2 密码策略
路径: secpol.msc → 账户策略 → 密码策略
| 策略 | 推荐值 |
|---|---|
| 密码必须符合复杂性要求 | 启用(大写+小写+数字+特殊字符 ≥ 2种) |
| 密码长度最小值 | ≥ 8 字符 |
| 密码最长使用期限 | ≤ 90 天 |
3.3 账户锁定策略
路径: secpol.msc → 账户策略 → 账户锁定策略
| 策略 | 推荐值 |
|---|---|
| 账户锁定阈值 | ≤ 10 次(连续失败锁定) |
3.4 用户权限指派
路径: secpol.msc → 本地策略 → 用户权限分配
| 策略 | 推荐值 |
|---|---|
| 从远端系统强制关机 | 仅 Administrators 组 |
| 关闭系统 | 仅 Administrators 组 |
| 取得文件所有权 | 仅 Administrators 组 |
| 允许本地登录 | 指定授权用户 |
| 从网络访问此计算机 | 指定授权用户 |
3.5 日志配置
路径: secpol.msc → 本地策略 → 审核策略
| 审核项 | 推荐配置 |
|---|---|
| 审核登录事件 | 成功+失败 |
| 审核账户管理 | 成功+失败 |
| 审核进程追踪 | 仅失败(谨慎开启) |
日志大小: eventvwr.msc → Windows 日志
| 日志类型 | 推荐大小 |
|---|---|
| 应用日志 | ≥ 8192KB |
| 系统日志 | ≥ 8192KB |
| 安全日志 | ≥ 8192KB |
3.6 IP 协议安全(SYN 攻击防护)
路径: 注册表 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\
| 注册表项 | 推荐值 | 说明 |
|---|---|---|
SynAttackProtect | 2 | 启用 SYN 攻击保护 |
TcpMaxHalfOpen | 500 | SYN_RCVD 状态连接阈值 |
TcpMaxHalfOpenRetried | 400 | 重传 SYN_RCVD 连接阈值 |
3.7 文件共享安全
| 加固项 | 操作 |
|---|---|
| 关闭默认共享 | 计算机管理 → 共享文件夹 → 停止 C 两个共享 |
| 共享权限限制 | 不设置 Everyone 权限,仅授权用户 |
3.8 安全选项
路径: secpol.msc → 本地策略 → 安全选项
| 策略 | 推荐值 |
|---|---|
| 关机:允许系统在未登录前关机 | 禁用 |
| Microsoft 网络服务器:暂停会话前空闲时间 | 15 分钟 |
3.9 其他配置
| 加固项 | 操作 |
|---|---|
| 防病毒软件 | 安装企业级防病毒,开启病毒库更新 |
| 屏幕保护 | 设置等待 5 分钟,恢复时需要密码 |
| 补丁管理 | 安装最新 Hotfix,先兼容性测试,勿自动安装 |
| 防火墙 | 启用防火墙(firewall.cpl) |
四、Linux 安全加固
4.1 账号和口令
删除/锁定无用账号
# 删除账号userdel <用户名>
# 锁定账号passwd -l <用户名>
# 解锁账号passwd -u <用户名>检查空口令和 root 权限账号
# 查看空口令账号awk -F: '($2 == "")' /etc/shadow
# 查看 UID=0 的账号(应只有 root)awk -F: '($3 == 0)' /etc/passwd
# 为空口令账号设置密码passwd <用户名>密码策略(/etc/login.defs)
PASS_MAX_DAYS 90 # 密码最长使用天数PASS_MIN_DAYS 0 # 密码最短使用天数PASS_WARN_AGE 7 # 密码到期前提醒天数使用 chage 修改用户密码策略
chage -m 0 -M 30 -E 2000-01-01 -W 7 <用户名>账户锁定策略(PAM)
# /etc/pam.d/common-auth 添加auth required pam_tally.so onerr=fail deny=3 unlock_time=300限制 su 用户
# /etc/pam.d/su 添加auth required pam_wheel.so group=test # 仅 test 组可 su禁止 root 直接 SSH 登录
PermitRootLogin no
# 重启 SSH 服务service sshd restart4.2 服务安全
# 查看所有服务sudo systemctl list-units --type=service
# 停止服务sudo systemctl stop <服务名>
# 禁用服务(禁止自启动)sudo systemctl disable <服务名>SSH 服务加固
PermitRootLogin no # 禁止 root 直接登录Protocol 2 # 使用 SSHv24.3 文件系统
设置 umask
# /etc/profile 添加umask 026# 即新文件:属主 rwx,同组 r,其他无# 666-026=640
# 立即生效source /etc/profile设置登录超时
# /etc/profile 设置TMOUT=180 # 3 分钟超时4.4 日志配置
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# 重启 rsyslogsudo systemctl restart rsyslog记录所有用户操作日志
# /etc/profile 添加USER=`whoami`USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`if [ "$USER_IP" = "" ]; then USER_IP=`hostname`fiif [ ! -d /var/log/history ]; then mkdir /var/log/history chmod 777 /var/log/historyfiif [ ! -d /var/log/history/${LOGNAME} ]; then mkdir /var/log/history/${LOGNAME} chmod 300 /var/log/history/${LOGNAME}fiexport HISTSIZE=4096DT=`date +"%Y%m%d_%H:%M:%S"`export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"chmod 600 /var/log/history/${LOGNAME}/* 2>/dev/null五、Apache 安全加固
5.1 低权限账号运行
# 创建 Apache 用户groupadd apacheuseradd apache -g apache
# httpd.conf 配置User www-dataGroup www-data5.2 授权设置
# 配置文件权限chmod 600 /etc/httpd/conf/httpd.conf
# 日志文件权限chmod 644 /var/log/httpd/*.log5.3 日志设置
# 错误日志LogLevel noticeErrorLog logs/error_log
# 访问日志格式LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Accept}i\" \"%{Referer}i\" \"%{User-Agent}i\"" combinedCustomLog logs/access.log combined5.4 禁止访问外部文件和目录列出
# 禁止访问 Web 目录之外的文件<Directory /> Order Deny,Allow Deny from all</Directory># 禁止目录列出(删除 Indexes)Options FollowSymLinks5.5 隐藏版本信息
ServerSignature OffServerTokens Prod5.6 关闭 TRACE
TraceEnable off六、Nginx 安全加固
6.1 日志配置
http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';}
server { access_log logs/host.access.log main;}6.2 禁止目录浏览和限制执行权限
# 禁止目录浏览autoindex off;
# 限制目录执行权限location ~ /(attachments|upload)/.*\.(php|php5)?$ { deny all;}6.3 隐藏版本信息
server_tokens off;6.4 限制 HTTP 请求方法和 IP 访问
# 限制请求方法if ($request_method !~ ^(GET|HEAD|POST)$) { return 403;}
# 限制 IP 访问location / { allow 192.168.1.0/24; deny all;}6.5 Nginx 降权
user www-data;# 或user www www;七、Tomcat 安全加固
| 加固项 | 操作 |
|---|---|
| 管理后台防护 | 删除或重命名 /webapps/manager、/host-manager |
| 强口令 | conf/tomcat-users.xml 配置复杂密码 |
| 修改默认端口 | conf/server.xml 修改 8080 |
| 访问日志 | 取消 AccessLogValve 注释 |
| 禁止目录列出 | conf/web.xml 设置 listings=false |
| 删除示例文件 | 删除 webapps/docs、examples |
八、MySQL 安全加固
| 加固项 | 操作 |
|---|---|
| 低权限运行 | 创建 myUser,以普通用户运行 MySQL |
| 禁止共享账号 | 每个应用使用独立数据库账号 |
| 禁用无关账号 | DROP USER test; |
| 强口令策略 | 长度 ≥ 8,含大小写+数字+特殊字符(≥2种),90天更换 |
| 最小权限授权 | GRANT 仅授予必要权限,REVOKE 回收多余权限 |
| 启用日志审计 | my.cnf 配置 log-error、log-bin 等 |
| 禁止远程访问 | 绑定 127.0.0.1 或白名单 IP |
| 连接数限制 | max_connections = 1000 |
| 安装最新版本 | 持续更新补丁 |
📌 快速参考卡片
Windows 命令
regedit # 注册表gpedit.msc # 组策略编辑器secpol.msc # 本地安全策略eventvwr.msc # 事件查看器control # 控制面板services.msc # 服务管理firewall.cpl # 防火墙Linux 命令
find /etc -name php.ini # 找 PHP 配置sudo nginx -t # 测试 Nginx 配置systemctl restart php7.4-fpm # 重启 PHP-FPM加固优先级
1. 账号/口令管理 → 2. 日志审计 → 3. 权限控制 → 4. 隐藏版本信息 → 5. 关闭危险功能文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章智能推荐
1
信息收集
技术文章从域名、IP、指纹到社工信息,渗透测试前期信息收集的完整思路与常用工具。
2
Webshell 工具
技术文章冰蝎、哥斯拉、蚁剑三款 Webshell 管理工具的特点对比与流量绕过方法。
3
漏扫工具
技术文章AWVS、AppScan、Nessus、Xray 四款漏扫工具的定位、使用方式与扫描结果解读。
4
应急响应
技术文章Windows 与 Linux 的入侵排查路径,含账号、进程、启动项、日志与 Webshell 查杀。
5
中间件解析漏洞
技术文章Apache、Nginx、IIS 三大中间件解析漏洞的成因、复现过程与利用条件。
随机文章随机推荐















