资讯动态

网络安全技能大赛加固与取证实战要点

发布时间:2026/10/30 2:55:25 来源:尧图企业网站定制
简介2021年全国职业院校技能大赛网络安全竞赛试题文档面向职业院校网络安全参赛选手、指导教师及备赛训练人员聚焦赛题环境中的安全加固与事件响应能力训练。内容围绕登录安全、数据库加固、流量完整性保护、事件监控、SSH、VSFTPD、IIS服务加固及防火墙策略展开并延伸至网络安全事件响应、数字取证调查与应用安全模块可作为赛前模拟、课堂实训和技能查漏补缺的参考。资源包共1个docx文件大小约119KB便于直接查阅与打印文档以任务式条目组织涵盖Windows与Linux双平台的密码策略、登录提示、会话超时、MySQL权限收敛、HTTP重定向HTTPS、审核策略、端口禁用与iptables访问控制等关键操作要点。已有959人学习适合需要系统梳理竞赛任务与加固思路的读者按模块对照练习。1. 从一道“禁 ping”题说起网络安全技能大赛的卷面到底怎么给分网络安全技能大赛的卷子摊开最容易被轻敌的是模块 A设个密码长度、删个默认库、禁掉 445 端口全是一行命令的事看着像送分。真坐到赛位上才发现分数不按“你会不会”发按“改没改到赛题要的那一行、服务有没有重启、值是不是题目要的那个数”发。禁 ping 那道题就是典型命令谁都会敲可/proc/sys/net/ipv4/icmp_echo_ignore_all后面该写 0 还是 1写反了照样零分。这场考试分两块。模块 A 考加固的执行力六个任务把 Windows 和 Linux 的账户、数据库、服务、流量、监控、防火墙挨个过一遍模块 B 考取证的追溯力内存、流量包、渗透测试三条链Flag 制对就是分错就是零。它适合正在备赛的学生、带队的指导者也适合把这份卷子当 Windows/Linux 安全配置清单来练的人——照着做一遍日常运维里那些“知道该改但没改过”的项基本就补齐了。2. 考点地图A 模块六项加固、B 模块三条取证链分都藏在“改到点上”模块 A 的本质是“给一台已经跑起来的机器按清单上锁”。它的判分方式非常直接每一项改动都有唯一落点——要么是某个配置文件的某个字段要么是某个图形界面里的某个勾选框要么是一条防火墙规则。赛题里凡是带“截图”字样的比如把 user1 的登录时间配置界面截下来不截就是白做这不是格式要求是得分点本身。2.1 A 模块六个任务从登录加固到防火墙策略六个任务不是并列关系是层层递进的关系先管住“谁能进来”A-1再管住“进来能动什么”A-2 数据库权限然后管住“数据在路上别被截”A-3 流量完整性接着管“进来了要留痕”A-4 事件监控再往下是“别把不必要的服务暴露出去”A-5 服务加固最后是“在边界上直接掐断”A-6 防火墙。任务平台考什么真正的判分落点A-1 登录安全加固Windows Linux密码长度、登录横幅、会话超时、登录时间段配置文件字段值、界面截图是否截到A-2 数据库加固Linuxmy.cnf 运行账户、删默认库、改管理员名、密码加密、授权SQL 是否执行成功、权限是否只剩四类A-3 流量完整性WindowsIIS 把 HTTP 重定向到 HTTPS访问 http 是否自动跳 https、证书是否被浏览器接受A-4 事件监控Windows审核策略四类事件的成败组合勾选组合是否与题目逐字对应A-5 服务加固Linux Windowssshd 端口与 root 禁登、vsftpd 匿名与超时、IIS 日志与并发改完服务能不能起来、配置项是否真的生效A-6 防火墙策略Windows Linux禁 445、禁 23、禁 ping、只放行指定源 IP 连 22规则方向入站、规则顺序、有没有兜底 DROP从时间分配上看A-1 和 A-5 的分数密度最高因为这两组每一项都横跨两个平台Windows 走界面、Linux 走配置文件等于一道题考两遍。A-2 和 A-6 的性价比最高命令短、见效快适合放在状态最好的时候做。A-3 和 A-4 则最容易被跳过很多人是做到一半发现时间不够直接把重定向和审核策略放掉——这两块恰恰是最好拿的因为全是点界面。2.2 B 模块三类 Flag答案在证据里不在配置里模块 B 换了身份你不再是上锁的那个人而是事后进场的人某台服务器被攻击了团队要追源头、分析手法、找漏洞、写响应报告、清后门、恢复运行。题目给的环境里有 Windows 服务器有若干台 Linux 虚拟机还有一台渗透测试用的工作机工具集齐全剩下的全靠你自己从证据里把答案抠出来。Flag 的格式是Flag{Xxxx123}提交时只交括号里的Xxxx123不带Flag、不带大括号、不带空格。这个规则每年都有人栽后面单开一节讲。取证类别证据载体常见问法关键工具/命令内存取证内存镜像用户密码、IP 与主机名、浏览器关键词、矿池地址、服务名内存分析框架的 hashdump、netscan、svcscan流量分析pcapng 数据包FTP 账号密码、登录时间、第一条命令、下载文件名、文件内容抓包工具的协议过滤、流跟踪、对象导出渗透测试靶机服务nmap 输出参数、数据库初始化命令、导入查看命令、CVE 公开时间、漏洞检测回显扫描器、渗透框架的 search 与 check这三类题的共同点是答案不依赖你的记忆依赖你有没有把证据翻到底。内存题不会因为你背过命令就给分流量题也不会因为你认识 FTP 协议就给分必须把那一帧、那一条连接、那一个注册表键真正找出来。2.3 真题演练两道一分钟内的送分题第一问最小密码长度不少于 16 个字符Windows 与 Linux。Windows 侧两条路一条走界面管理工具 → 本地安全策略 → 账户策略 → 密码策略 → “密码最小长度”改成 16。另一条走命令行更快# 以管理员身份打开命令提示符 # /minpwlen 指定密码最小长度改完立即生效无需重启 net accounts /minpwlen:16 # 验证输出的“最小密码长度”一行应为 16 net accountsLinux 侧改的是/etc/login.defs里的PASS_MIN_LEN# PASS_MIN_LEN 控制新建密码的最短长度 # 注意 login.defs 只管新建/修改密码时的校验已存在的旧密码不会因此失效 sed -i s/^PASS_MIN_LEN.*/PASS_MIN_LEN\t16/ /etc/login.defs # 验证确认字段确实是 16且没有被注释掉 grep -E ^PASS_MIN_LEN /etc/login.defs这里有两个参数要看清。net accounts是即时生效的不加任何重启参数sed -i是就地改写改写前最好cp一份原文改坏了还能回退。验证动作不能省——grep的结果如果是空的说明那一行被注释掉了前面有#只替换值不改注释符等于没改。第二问用户登录系统时要有 “For authorized users only” 提示信息。Linux 侧要改两处因为本地登录和远程登录走的是不同入口# 1) 本地终端登录横幅改 /etc/issue echo For authorized users only /etc/issue # 2) 远程 SSH 登录横幅先准备 banner 文件再在 sshd 配置里指过去 echo For authorized users only /etc/ssh/banner # 在 /etc/ssh/sshd_config 中追加 Banner 指令 echo Banner /etc/ssh/banner /etc/ssh/sshd_config # 3) 重启 SSH 服务让配置生效 systemctl restart sshd/etc/issue只影响本地 tty 登录Banner才影响 SSH。很多人只改了前者远程连上去一看没有横幅就以为题目出错了。/etc/ssh/banner这个文件是自己新建的路径要和sshd_config里写的完全一致包括大小写。重启sshd之后如果连不上先检查sshd -t的语法校验结果再看/etc/ssh/banner的读权限——权限过宽或过窄都可能被拒绝读取。Windows 侧走界面本地安全策略 → 本地策略 → 安全选项 → “交互式登录试图登录的用户的消息标题”和“消息文本”把欢迎语填进去。标题和文本是两栏题目只给一句话时通常填到“消息文本”标题可以留空或填同样的内容但不要什么都不填。3. A 模块加固动作账户、数据库、服务、边界十一条落点的正确写法这一章把模块 A 里最容易“改了一半”的动作逐个拆开。判断一个动作做没做对标准只有一条配置改完之后用一个验证命令或一次实际访问把它复现出来。凡是验证不了的改动在赛场上都等于赌。3.1 密码策略与登录策略四处配置、两个界面账户这块一共四个动作分布在两个平台上互相不重叠但很容易混。密码长度两处Windows 的账户策略、Linux 的 login.defs登录横幅两处Linux 的 issue 与 sshd Banner、Windows 的安全选项会话超时两处Linux 的 ClientAliveInterval 与 ClientAliveCountMax、Windows 的远程桌面会话主机设置再加上 Windows 独有的登录时间段限制。会话超时是这部分最容易算错的一题。Linux 侧的两个参数是乘法关系不是加法# ClientAliveInterval服务器每隔多少秒向客户端发一次探测 # ClientAliveCountMax连续多少次探测无响应就断开 # 两者相乘 实际断开的空闲时长题目要求 ≤5 分钟即 ≤300 秒 # 60 × 5 300正好卡在上限稳妥 sed -i s/^#\?ClientAliveInterval.*/ClientAliveInterval 60/ /etc/ssh/sshd_config sed -i s/^#\?ClientAliveCountMax.*/ClientAliveCountMax 5/ /etc/ssh/sshd_config systemctl restart sshd参数含义要说清ClientAliveInterval单位是秒ClientAliveCountMax是次数乘积才是总时长。如果题目要求“小于等于 5 分钟”把这两个值设成 60 和 5 就是 300 秒卡在边界上设成 300 和 5 就是 1500 秒直接超标。Windows 侧对应的是远程桌面会话主机设置里的“活动但空闲的会话时间限制”或者 RDP-Tcp 属性 → 会话 → 改写空闲会话限制单位是分钟填 5。登录时间段限制这道题题干里特意写了“单机”和“域用户”两种情况就是防止你用错方法。单机环境下一条命令搞定# /time 参数限定可登录的时间段 # M-F 表示周一到周五9:00-18:00 为时间段中间用逗号连接不能有空格 net user user1 /time:M-F,9:00-18:00 # 验证输出的“允许登录时间”一行应显示为 M-F 9:00-18:00 net user user1命令里的逗号是硬分隔符写成M-F, 9:00-18:00逗号后加空格会报错。域环境走的是用户属性 → 账户 → 登录时间图形化拖时间段最小单位是小时9:00 到 18:00 正好是整点不用纠结半小时怎么办。题目要求截图时截的是这个登录时间对话框不是命令回显。上面这些动作里只有“登录时间段”是赛题明确要求截图的其余都是改完就生效。3.2 数据库加固五连动作与必须补的 flush privileges数据库这块五道题题干给的命令其实都能用但少了收尾动作赛场上要补。第一道是让 MySQL 以普通账户运行改的是/etc/my.cnf# 在 [mysqld] 段落里指定运行用户避免 mysqld 以 root 身份跑 # 注意必须在 [mysqld] 段内写到别的段里不生效 sed -i /^\[mysqld\]/a user mysql /etc/my.cnf # 验证重启后看进程属主是不是 mysql systemctl restart mysqld ps -ef | grep mysqlduser mysql这一行的位置很关键写在[client]或[mysqld_safe]段里服务起不来。重启后如果服务挂掉先看/var/log/mysqld.log最常见的原因是数据目录属主和user参数指定的账户不一致。剩下四道是纯 SQL-- 删除默认测试库减少暴露面 DROP DATABASE test; -- 改管理员账户名改的是 mysql 库的 user 表 UPDATE mysql.user SET userSuperRoot WHERE userroot; -- 用内置加密函数重设 user1 的密码注意用 password() 而不是直接 md5(password) 字段 UPDATE mysql.user SET passwordPASSWORD(Pssw0rd1!) WHERE useruser1; -- 只给四类 DML 权限不给 drop、不给 grant GRANT SELECT,INSERT,DELETE,UPDATE ON testdb.* TO user1localhost; -- 改完 user 表必须刷权限否则内存里的权限表还是旧的 FLUSH PRIVILEGES;参数和坑点要说明白。mysql.user表在旧版本里密码字段叫password新版本改成了authentication_string赛题环境的版本以实际为准不确定就先DESC mysql.user;看一眼字段名。GRANT语句里user1localhost的主机部分不能省省了会变成%通配权限范围直接放大。FLUSH PRIVILEGES是必须补的一条——UPDATE改的是磁盘表权限系统读的是内存不刷就等于没改。验证方式SHOW GRANTS FOR user1localhost;输出里应该只有那四类权限。3.3 服务加固SSH 端口、vsftpd 匿名、IIS 日志与并发SSH 两道题是连着的。第一道把端口从 22 改成 2222第二道禁止 root 远程登录# 端口把注释掉的 #Port 22 打开并改成 2222 sed -i s/^#\?Port .*/Port 2222/ /etc/ssh/sshd_config # 禁止 root 直接远程登录把 #PermitRootLogin yes 改成 PermitRootLogin no sed -i s/^#\?PermitRootLogin.*/PermitRootLogin no/ /etc/ssh/sshd_config # 语法校验再重启避免改错导致 SSH 直接失联 sshd -t systemctl restart sshd改完端口连不上八成是三个原因防火墙没放行 2222、SELinux 没给新端口打标签、sshd_config里Port出现了两行一行旧的 22、一行新的 2222。第二个原因最隐蔽命令是semanage port -a -t ssh_port_t -p tcp 2222。这也是为什么改之前先sshd -t——语法过了不代表能连上但语法不过一定连不上。vsftpd 两道题一道禁匿名上传一道设空闲超时# 禁止匿名登录匿名登录一关匿名上传自然也就没了 sed -i s/^#\?anonymous_enable.*/anonymous_enableNO/ /etc/vsftpd/vsftpd.conf # 无任何操作的超时题目要求 5 分钟单位是秒写 300 # 常见翻车点把 idle_session_timeout 写成 600那是 10 分钟直接不给分 sed -i s/^#\?idle_session_timeout.*/idle_session_timeout300/ /etc/vsftpd/vsftpd.conf systemctl restart vsftpd配置项要分清主次idle_session_timeout管的是“连着但不敲命令”的空闲时长data_connection_timeout管的是数据传输连接、connect_timeout和accept_timeout管的是主动/被动模式的建连超时。题目说“无任何操作的超时”对应的就是idle_session_timeout其余几个是干扰项改了不加分也不扣分但写错值会被判为不符合。IIS 两道题都在界面里。日志审计要开格式选 W3C字段只勾日期、时间、客户端 IP 地址、用户名、方法这五项多勾少勾都要扣最大并发连接数在站点的高级设置里改成 1000。日志字段这块有个细节W3C 格式下字段是逐项勾选的勾完之后要到站点根目录下的logs文件夹确认生成了新的日志文件光点确定不看结果可能因为目录权限没写进去。3.4 流量完整性与事件监控URL 重写规则与审核策略的四个子类HTTP 跳 HTTPS 这道题判分点不在“有没有配”在“访问 http 时会不会自动跳到 https且证书不报错”。IIS 里装好 URL 重写模块之后规则要加在站点级别!-- web.config 中的重写规则匹配所有 http 请求301 永久跳转到 https -- configuration system.webServer rewrite rules rule nameForceHTTPS stopProcessingtrue !-- 条件{HTTPS} 为 OFF 时才跳不加这个条件会造成无限重定向 -- match url(.*) / conditions add input{HTTPS} pattern^OFF$ / /conditions action typeRedirect urlhttps://{HTTP_HOST}/{R:1} redirectTypePermanent / /rule /rules /rewrite /system.webServer /configuration三个参数要说清{HTTPS}匹配^OFF$是防死循环的关键少了它https 请求也会被再跳一次浏览器报“重定向次数过多”redirectTypePermanent对应 301题目如果说“永久重定向”就必须写 Permanent写 Found 是 302语义不同{R:1}是第一个捕获组保留原始路径不写就会把所有请求都跳到首页。证书按赛题给的域名签发并绑定到站点 443 端口浏览器地址栏出现锁标识才算过。审核策略这道题看着简单实际上是逐字对答案子类别题目要求的成功/失败组合审核登录事件成功 失败审核特权使用仅成功审核策略更改成功 失败审核进程跟踪成功 失败路径是计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 审核策略。这里唯一的坑是“审核特权使用”只要求成功很多人顺手把失败也勾上结果与题目不符。勾完之后建议用auditpol /get /category:*复核一遍界面上的勾选状态有时候不刷新。3.5 真题演练防火墙四问的规则写法防火墙这块的题判断对错的标准不是“端口通不通”是“规则写没写对方向、有没有兜底”。禁用 445 端口Windows。高级安全 Windows Defender 防火墙 → 入站规则 → 新建规则 → 端口 → TCP → 特定本地端口填 445 → 阻止连接 → 应用于所有配置文件。方向必须是入站出站规则拦不住外部连进来。禁用 23 端口Windows 与 Linux。Windows 同上端口换 23。Linux 一条命令# 在 INPUT 链追加一条规则丢弃目标端口为 23 的 TCP 包 # -A 是追加到链尾-I 是插入到链首题目没特殊要求时用 -A 即可 iptables -A INPUT -p tcp --dport 23 -j DROP # 验证列出规则确认这条在 INPUT 链里 iptables -L INPUT -n --line-numbers-j DROP是静默丢弃对端会一直等到超时-j REJECT会回一个拒绝包。题目说“禁用”两者都算但 DROP 更彻底。禁止 ping 通Linux。三种解法考场上选最稳的那一种# 解法一临时改内核参数重启失效适合快速验证 echo 1 /proc/sys/net/ipv4/icmp_echo_ignore_all # 解法二写进 sysctl.conf 永久生效改完必须执行 sysctl -p echo net.ipv4.icmp_echo_ignore_all1 /etc/sysctl.conf sysctl -p # 解法三用防火墙丢弃 icmp echo-request类型 8 iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP这里有个必须想清楚的细节icmp_echo_ignore_all的值是 1 才表示“忽略所有 ICMP echo 请求”也就是禁止 ping写 0 是允许。题目要的是“禁止别人 ping 通”值就必须是 1。赛题原文里的数字如果与这个语义相反按语义走——判分看的是结果不是你有没有照抄题面。只允许 172.16.1.1 通过 SSH 连接Linux。这道题最容易只写一半# 第一步放行指定源 IP 访问 22 端口 iptables -A INPUT -s 172.16.1.1 -p tcp --dport 22 -j ACCEPT # 第二步其余所有来源访问 22 端口一律丢弃——缺了这条题目等于没做 iptables -A INPUT -p tcp --dport 22 -j DROP # 验证从非 172.16.1.1 的机器 ssh 过来应该超时 iptables -L INPUT -n --line-numbers顺序是命门。ACCEPT那条必须在DROP前面因为 iptables 从上往下匹配命中即停。如果先写了DROP再写ACCEPT那么 172.16.1.1 也会被丢掉自己把自己锁在门外。注意iptables 规则重启后默认不保留。如果赛题环境重启过改完记得用iptables-save落盘或者确认持久化服务已经接管。4. B 模块取证内存、流量、渗透三类 Flag 的提取流程模块 B 的分数结构是“全或无”一道题十几分答错就是零没有过程分。所以做这类题的第一原则是先确认答案形态再去找证据。题目说“密码为 6 位”那就是 6 位说“以 ip:主机名 形式提交”格式里那个冒号就不能少。4.1 内存取证五问从 hashdump 到 svcscan第一问拿到用户 admin 的密码并破解密码 6 位。流程是先用内存分析框架确定镜像的系统版本加载对应 profile再导出用户哈希# 第一步识别镜像信息从输出里挑出对应的 profile volatility -f mem.img imageinfo # 第二步用上一步的 profile 导出用户哈希表 volatility -f mem.img --profileWin7SP1x64 hashdump # 第三步把输出的 用户名:哈希 存成文件用离线破解工具跑 6 位数字/小写字母掩码 john --formatnt hashes.txt --mask?d?d?d?d?d?d参数含义-f指定镜像文件--profile必须与imageinfo给的一致profile 错了后续所有命令都取不到数据。hashdump输出的是 NTLM 哈希用掩码暴力破解 6 位纯数字是秒级的纯小写字母也就几分钟。破解出来的明文直接就是 Flag格式Flag{admin,密码}。第二问当前系统 IP 与主机名。IP 从网络连接记录里找主机名要从注册表里挖# 查网络连接从输出里筛出本机对外通信的地址 volatility -f mem.img --profileWin7SP1x64 netscan # 主机名藏在注册表的 ComputerName 键里先定位注册表 hive 的虚拟地址 volatility -f mem.img --profileWin7SP1x64 hivelist # 用上一步给出的 SYSTEM hive 偏移打印键值 volatility -f mem.img --profileWin7SP1x64 printkey -o 0x偏移值 \ -K ControlSet001\Control\ComputerName\ComputerNamenetscan输出里会有大量0.0.0.0的监听记录本机地址通常出现在“本地地址”列且不是回环。主机名只认ComputerName这一处Hostname是 DNS 名两者可能不同题目要哪个就用哪个。第三问浏览器搜索过的关键词。内存里残留的是浏览器的历史缓存片段用字符串提取配合关键词定位最快# 从镜像里提取可打印字符串再筛搜索接口的特征串 strings mem.img | grep -iE search\?|q|wd | head -50搜索引擎的查询参数有固定特征q、wd、word都是入口。找出来的字符串是 URL 编码的需要手工解码或者用python3 -c import urllib.parse;print(urllib.parse.unquote(...))还原。第四问挖矿进程指向的矿池地址。挖矿的特征是“一个陌生进程长期保持着一条对外连接”所以还是回到netscan重点看外部地址和非常见端口3333、5555、7777、14444 这类。找到IP:端口直接提交格式就是题目要求的Flag{ip:端口}。第五问恶意进程注册的服务名。用服务扫描# 列出内存中的所有服务重点看二进制路径指向临时目录或用户目录的条目 volatility -f mem.img --profileWin7SP1x64 svcscan正常服务的可执行文件都在System32下路径里出现Temp、ProgramData、Users\Public的基本就是后门注册的服务。服务名在输出的Service Name字段只交名字不带引号。4.2 流量分析五问一条 FTP 会话能挖出五个 Flag流量题的五问是串在一根线上的全程围绕同一个 pcapng 文件所以第一问找对了后面四问都是顺藤摸瓜。第一问FTP 账号密码。过滤ftp协议看USER和PASS两条请求或者直接跟踪 TCP 流# 抓包工具的显示过滤器只看 FTP 的控制通道 ftp # 或者直接筛登录相关的命令缩小范围 ftp.request.command USER || ftp.request.command PASSFTP 是明文协议USER后面跟用户名PASS后面跟密码中间用英文逗号拼起来提交。如果服务器回了230 Login successful说明这组凭据是有效的题目里“可成功登录”这个限定就是让你别拿失败的尝试去交。第二问登录时间。找到服务端返回230的那一帧看它的时间列。抓包工具默认显示的是相对时间需要把列设置改成“绝对时间”或者右键该帧看“到达时间”。格式是时:分:秒看题目示例。第三问登录成功后执行的第一条命令。过滤ftp.request.command按时间排序230响应的下一帧通常就是客户端发的第一条命令常见的是PWD、SYST、TYPE I、PASV。只交命令本身不交参数。第四问下载的文件名。找RETR命令后面跟的就是文件名。第五问下载的文件内容。三种取法从稳到快跟踪该数据流的 TCP 流、用“导出对象”功能把 FTP-DATA 通道的文件导出、或者从数据帧里把十六进制内容拼出来。导出的文件如果打不开先看是不是二进制文件直接file一下确认类型再决定用文本编辑器还是十六进制查看器。4.3 渗透测试五问从 nmap 到 MSF 的完整链路这五问考的不是“会不会打”而是“工具的参数记不记得住”。题目问什么就答什么多写一个字都算错。第一问nmap 以 xml 格式输出到指定文件必须要用的参数。答案就是-oX。记忆方式-o是输出X是 XML。完整的命令形态是nmap -sV -oX result.xml 目标IP但题目只要参数就交-oX。第二问初始化 MSF 数据库的命令。msfdb init。这条命令只跑一次跑完会创建数据库并写入配置后续db_import才有地方导入。第三问导入扫描结果后查看主机数据的命令。hosts。在 MSF 控制台里db_import /路径/result.xml把 xml 导入数据库hosts列出所有已导入的主机services列出服务。题目问“查看该数据要使用的命令”交hosts。第四问搜索 CVE-2019-0708 后回显中的漏洞公开时间。执行search cve-2019-0708回显表格里有Disclosure Date一列把那里的本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑