本清单覆盖Windows(含域环境)、Linux两大系统,包含权限加固、日志监控、服务防护等核心防御操作,可直接在靶机或生产环境执行(生产环境建议先测试)。
一、 Windows 系统防御配置
1. 账户与权限加固
- 禁用默认管理员账户
cmd
net user administrator /active:no - 创建强密码策略(域环境需在 DC 执行)
cmd
# 设置密码长度最小8位、包含数字+字母+特殊字符、90天过期 net accounts /minpwlen:8 /maxpwage:90 /minpwage:1 /uniquepw:5 - 禁止普通用户修改服务配置
cmd
# 以WinRM服务为例,限制仅管理员可修改 sc sdset WinRM D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU) - 排查隐藏账户
cmd
# 列出所有账户(含带$的隐藏账户) net user # 查看域内隐藏账户 net user /domain | findstr "$"
2. 服务与端口防护
- 禁用不必要的高危服务
cmd
# 禁用SMBv1(防范永恒之蓝等漏洞) sc config lanmanworkstation depend= bowser/mrxsmb20/nsi sc config mrxsmb10 start= disabled # 禁用不必要的远程服务(如WMI、Telnet) sc config winmgmt start= demand # 设为手动启动 sc config tlntsvr start= disabled - 防火墙限制端口访问
cmd
# 禁止外部访问445(SMB)、135(RPC)端口 netsh advfirewall set allprofiles state on netsh advfirewall firewall add rule name="Block SMB" dir=in action=block protocol=TCP localport=445 netsh advfirewall firewall add rule name="Block RPC" dir=in action=block protocol=TCP localport=135 # 仅允许管理网段访问3389(RDP) netsh advfirewall firewall add rule name="Allow RDP" dir=in action=allow protocol=TCP localport=3389 remoteip=192.168.56.0/24
3. 日志监控与备份
- 开启日志审计策略
cmd
# 启用账户登录、账户管理、系统事件审计 auditpol /set /category:"账户登录事件" /success:enable /failure:enable auditpol /set /category:"账户管理" /success:enable /failure:enable auditpol /set /category:"系统事件" /success:enable /failure:enable - 将日志同步到远程服务器(防止本地删除)
cmd
# 1. 配置远程日志服务器(需开启事件日志收集服务) # 2. 本地服务器推送日志 wevtutil sl Security /e:true /rt:true /r:192.168.56.200 /u:admin /p:P@ssw0rd - 查看日志是否被篡改
cmd
# 检查安全日志大小和记录数 wevtutil gl Security
4. 域环境专项防御
- 禁用 NTLM 认证,强制 Kerberos
cmd
# 在域控制器执行,修改组策略 reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LmCompatibilityLevel /t REG_DWORD /d 5 /f - 定期轮换 KRBTGT 账户密码(防范黄金票据)
cmd
# 需执行两次,间隔至少24小时 ntdsutil "set dsrm password" "reset krbtgt password" quit quit - 监控域管理员登录行为
cmd
# 查询域管理员最近登录记录 net user administrator /domain | findstr "登录"
二、 Linux 系统防御配置
1. 账户与权限加固
- 禁用 root SSH 登录
bash
运行
# 编辑SSH配置文件 sed -i 's/#PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config systemctl restart sshd - 限制 sudo 权限(仅授权必要用户)
bash
运行
# 编辑sudoers文件(必须用visudo,避免语法错误) visudo # 添加规则:仅允许user1执行指定命令 user1 ALL=(ALL) /usr/bin/ls, /usr/bin/cat - 清理不必要的 SUID/SGID 文件
bash
运行
# 查找所有SUID文件 find / -perm -u+s -type f 2>/dev/null # 移除不必要的SUID权限(如find命令) chmod u-s /usr/bin/find
2. 服务与端口防护
- 禁用不必要的服务
bash
运行
# 查看开机自启服务 systemctl list-unit-files --type=service --state=enabled # 禁用无用服务(如rsync、telnet) systemctl disable rsyncd systemctl stop rsyncd - 使用 iptables 限制端口访问
bash
运行
# 清空现有规则 iptables -F # 允许回环接口 iptables -A INPUT -i lo -j ACCEPT # 仅允许管理网段访问SSH(22端口) iptables -A INPUT -p tcp --dport 22 -s 192.168.56.0/24 -j ACCEPT # 拒绝所有其他入站流量 iptables -P INPUT DROP # 保存规则 iptables-save > /etc/iptables/rules.v4
3. 日志监控与备份
- 开启 SSH 登录审计
bash
运行
# 确保auth.log日志开启(默认开启) # 配置日志轮转,防止日志过大 vi /etc/logrotate.d/rsyslog # 添加规则:每周轮转,保留4周日志 /var/log/auth.log { weekly rotate 4 missingok notifempty compress } - 将日志同步到远程服务器
bash
运行
# 1. 安装rsyslog客户端 apt install rsyslog -y # 2. 编辑配置文件,指向远程日志服务器 echo "*.* @192.168.56.200:514" >> /etc/rsyslog.conf systemctl restart rsyslog - 监控命令历史记录
bash
运行
# 防止用户清空history(修改history文件权限) chmod 444 ~/.bash_history # 记录所有用户的命令执行日志 echo "export PROMPT_COMMAND='history -a;'" >> /etc/profile source /etc/profile
4. 恶意进程与后门检测
- 查找异常进程
bash
运行
# 查看进程树,识别未知进程 pstree -pu # 查找隐藏进程(对比ps和/proc目录) ls /proc | grep -v -E '^[0-9]+$' - 检查 SSH 公钥后门
bash
运行
# 查看所有用户的authorized_keys文件 find /home -name authorized_keys -exec cat {} \;
三、 通用防御注意事项
- 所有命令需以管理员 /root 权限执行,Windows 用
管理员cmd,Linux 加sudo。 - 生产环境修改配置前需备份,例如
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak。 - 定期执行脚本自动化检查,可将上述命令写入 Shell/PowerShell 脚本,每周执行一次。