最小化安全加固的核心是按系统角色预设基线并自动化执行:先识别非必要服务与端口,再通过脚本批量禁用服务、清理防火墙规则、关闭默认共享,并固化策略确保重启不回弹。

核心思路是:先识别非必要服务与端口,再通过脚本批量禁用服务、删除防火墙规则,并固化策略。不靠人工逐项判断,而是基于系统角色(如Web服务器、数据库服务器)预设最小化基线。
明确最小化范围:按角色定义“必要”边界
服务和端口是否该关,不能只看端口号,而要看系统实际用途。例如:
- 对外提供网页服务的服务器:保留80/443,关闭21(FTP)、23(Telnet)、135–139/445(SMB相关)、3389(RDP,除非运维必需)
- 纯后端数据库服务器:仅开放3306(MySQL)或5432(PostgreSQL),关闭所有远程管理端口,禁用Windows Server服务(lanmanserver)、Print Spooler等
- Linux最小化系统:默认禁用firewalld/iptables以外的所有网络服务(如rpcbind、avahi-daemon、cups),只保留sshd(且需加固)
Windows:用批处理+PowerShell组合关停服务与端口
单个.bat文件即可完成服务禁用 + 防火墙清理 + 共享关闭三步:
- 停服务:
sc config "W3SVC" start= disabled(IIS)、sc config "Telnet" start= disabled - 删防火墙规则:
netsh advfirewall firewall delete rule name="Open TCP 21"(需提前命名规范) - 关默认共享:
reg add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" /v AutoShareServer /t REG_DWORD /d 0 /f - 强制以管理员权限运行:脚本开头加
net session >nul 2>&1 || (powershell start "" -verb runas "%~f0" & exit /b)
Linux:Bash脚本统一执行服务裁剪与端口封禁
典型初始化脚本中嵌入最小化逻辑:
- 关闭非核心服务:
systemctl disable --now avahi-daemon bluetooth cups rpcbind - 清空firewalld默认放行:
firewall-cmd --permanent --remove-service={ssh,dhcpv6-client},再仅添加业务所需端口 - 禁用root登录与密码认证:
sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config && systemctl restart sshd - 配合rkhunter与logrotate,把“最小化”纳入合规检查循环
验证与持续生效:避免重启后回弹
自动化不是“跑一次就完”,关键在持久性和可审计:
- Windows:用
sc qc 服务名确认启动类型为DISABLED,而非MANUAL - Linux:用
systemctl is-enabled 服务名返回disabled,且systemctl is-active返回inactive - 端口状态双检:
netstat -tuln | grep :端口+firewall-cmd --list-ports(或netsh advfirewall firewall show rule name=all) - 将脚本加入部署流程(如Ansible playbook或Packer镜像构建),确保新实例天生最小化

















