新闻详情

新闻详情

首页 / 资讯中心 / 详情

2021国赛赛题拆解:从基线加固到渗透测试的实战手册

发布时间:2026/9/25 2:13:12来源:尧图网络
2021国赛赛题拆解:从基线加固到渗透测试的实战手册
简介2021年全国职业院校技能大赛网络安全竞赛试题面向职业院校网络安全赛项备赛选手、指导教师及运维安全人员聚焦Windows与Linux双平台的系统加固实战。赛题系统梳理服务器登录安全、密码策略、数据库加固、Web流量HTTPS重定向、事件审核监控、SSH/VSFTPD/IIS服务加固及防火墙策略等核心任务并提供具体命令、配置路径与操作思路便于按任务模块逐项演练。资料为1个docx格式文档压缩包约119KB内容紧凑、可直接对照练习已有957人学习下载。对备赛者而言这份试题既可用于模拟考核检验薄弱环节也可作为安全加固配置的速查手册实用性强。1. 这份 2021 年国赛赛题是网安人的基线加固实战手册如果你以为“2021年全国职业院校技能大赛网络安全竞赛试题”只是一份历史考卷那可能低估它了。我拆完这份资源后最大的感受是它把 Windows 和 Linux 上最典型的加固动作、数据库安全配置、服务基线、事件监控、内存取证、流量分析和 MSF 渗透全串成了一道道带 Flag 的任务几乎就是一份“可执行的安全运营清单”。对要备战网安技能大赛的学生来说它是真题对刚入职的运维或安全工程师来说它是能照着敲命令的基线自查表对要应付等保或护网整改的人来说它提供的检查点比很多文档都直接。这份资源解决的痛点很明确你知道要做密码策略、要禁 root、要改端口、要看 FTP 流量但不知道在哪个文件、哪个策略、哪个过滤表达式里落地它直接把路径和参数告诉你了。下面我按模块拆开讲所有命令都基于赛题原样并结合我在实际环境里的踩坑经验做补充。2. 服务器与数据库加固把 Windows/Linux 的基线配置逐项落地2.1 密码与登录策略改文件还是改策略先分清楚平台差异赛题第一个要求是“最小密码长度不少于 16 个字符”。Windows 侧在“管理工具-本地安全策略-账户策略-密码策略”里把“密码长度最小值”改成 16这个操作在域控和单机上都适用但要注意改完要执行gpupdate /force否则策略缓存不会立刻刷新。Linux 侧试题写的是修改/etc/login.defs的PASS_MIN_LEN这个文件在 Debian/Ubuntu 和 CentOS 上都存在但这里有个容易翻车的点login.defs的PASS_MIN_LEN只对passwd命令的默认值生效如果系统启用了 PAM实际校验是由pam_pwquality.so或pam_cracklib.so控制的。很多人在比赛现场只改了login.defs结果用passwd改弱密码照样成功分数没拿到。# Linux 密码长度设置先改 login.defs vim /etc/login.defs # 找到 PASS_MIN_LEN 15改成 16 PASS_MIN_LEN 16 # 再改 PAM 配置让策略真正生效CentOS/RHEL 7 vim /etc/security/pwquality.conf # 设置最小长度通常结合 dcredit/ucredit/lcredit/ocredit 一起用 minlen 16这里PASS_MIN_LEN的单位是字符minlen也指最小长度但 PAM 在计算长度时会把不同复杂度带来的“奖励”算进去比如包含大写、数字、符号可能让你设置的 16 实际在检测时只需要更少字符就能通过。所以更稳妥的做法是设置minlen 16的同时把dcredit -1、ucredit -1、lcredit -1、ocredit -1全部置为 -1强制每一种字符类都至少出现一个。至于登录提示信息Linux 本地登录改/etc/issueSSH 远程登录则要改/etc/ssh/sshd_config增加Banner /etc/ssh/banner并且新建那个 banner 文件写入“For authorized users only”。Windows 的登录提示在“本地安全策略-本地策略-安全选项”里修改“交互式登录试图登录的用户的消息文本”和“消息标题”。这里有个容易被忽略的细节消息文本最多可以写很多行但消息标题很短通常不超过 14 个字符写太长会显示不完整。2.2 数据库加固别只改 root 名字还要处理权限和默认库模块 A 数据库加固是 Linux 下的 MySQL 操作一共四步普通用户运行、删默认库、改管理员用户名、MD5 加密用户密码、限制用户权限。第一点在/etc/my.cnf的[mysqld]段加usermysql这样 mysqld 启动时会以 mysql 普通用户身份运行不会拿 root 权限去跑数据库进程。这里要注意如果 mysql 用户不存在需要先用useradd -r -s /sbin/nologin mysql创建而且数据目录/var/lib/mysql的属主必须改成 mysql否则启动会报权限错误。第二点删除默认数据库 test直接执行DROP DATABASE test;就行。但实际服务器上可能还有test_db、information_schema这类系统库赛题只让你删 test不要顺手删掉mysql库否则系统表没了直接崩。接下来是改默认管理员用户名。赛题要求把 root 改成 SuperRoot命令是UPDATE user SET userSuperRoot WHERE userroot;。在 MySQL 5.7 之前user 表的密码字段叫password从 5.7 开始改成了authentication_string所以如果你在 MySQL 5.7 上用旧命令更新密码列会报错。正确做法是这样-- 先看看 user 表结构确认密码字段名 DESC mysql.user; -- 改用户名 UPDATE mysql.user SET userSuperRoot WHERE userroot; FLUSH PRIVILEGES; -- 如果还要改密码注意字段差异 -- MySQL 5.6 及更早 -- UPDATE mysql.user SET passwordPASSWORD(新密码) WHERE userSuperRoot; -- MySQL 5.7 -- UPDATE mysql.user SET authentication_stringPASSWORD(新密码) WHERE userSuperRoot; -- 加密 user1 的密码为 md5(Pssw0rd1!) UPDATE mysql.user SET authentication_stringMD5(Pssw0rd1!) WHERE useruser1; FLUSH PRIVILEGES;需要说明的是MD5()函数是 MySQL 内置的但用它加密后的结果并不兼容 MySQL 原生认证插件也就是说这样改完的 user1 可能无法直接用密码登录因为 MySQL 期望的是authentication_string里存 hash 密文。赛题只是要求“使用 mysql 内置 MD5 加密函数加密用户 user1 的密码”你在比赛里照做就能拿分但在真实生产环境我不会这么干而是用ALTER USER user1localhost IDENTIFIED BY Pssw0rd1!;或者把mysql_native_password的 hash 值写进去。最后是授权给 user1 对 testdb 所有表 select, insert, delete, update 权限。赛题命令是GRANT select,insert,delete,update ON testdb.* TO user1localhost;但要注意如果 testdb 库根本不存在这条 grant 语句在 MySQL 5.7 里是可以执行的它会在 mysql.db 表里插入记录但在 MySQL 8.0 里会直接报错。所以稳妥的顺序是先确保 testdb 存在再授权最后FLUSH PRIVILEGES。2.3 防火墙与端口策略用最小规则挡住勒索与扫描赛题要求 Windows 禁用 445 和 23 端口Linux 禁用 23 端口、禁止 ping、限制 SSH 来源 IP。Windows 侧直接在“高级安全 Windows 防火墙”里新建入站规则协议选 TCP端口填 445 或 23动作选“阻止连接”作用域可以限定“任何远程地址”。要注意的是445 端口一旦禁用局域网文件共享、SMB 相关服务都会受影响如果这台机器本身是域控阻断 445 可能导致域内通信异常。比赛环境相对隔离照做就行生产环境你要先确认业务不依赖 SMB。Linux 侧用 iptables 配置命令本身很简单但规则顺序和持久化是真正的坑。先看基础命令# 禁用 23 端口telnet iptables -A INPUT -p tcp --dport 23 -j DROP # 禁止 ping三种方法按需选 echo 0 /proc/sys/net/ipv4/icmp_echo_ignore_all echo 1 /proc/sys/net/ipv4/icmp_echo_ignore_all # 永久禁 ping echo net.ipv4.icmp_echo_ignore_all1 /etc/sysctl.conf sysctl -p # 或者用 iptables 丢弃 icmp echo-request iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP # 限制只有 172.16.1.1 能 SSH 连接 iptables -A INPUT -s 172.16.1.1 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j DROP这里必须提醒iptables 规则是自上而下匹配的如果后面有一条 DROP 而前面没有 ACCEPT那么所有来源的 SSH 都会被拒绝。所以在生产环境我习惯先写iptables -L -n --line-numbers查看当前规则确认 172.16.1.1 的来源 IP 是你真实的跳板机或管理网段再用-I INPUT 1把白名单规则插到最前面最后再追加 DROP 兜底。另外iptables 重启后会清空比赛环境可能不要求但真实运维必须iptables-save /etc/sysconfig/iptables保存或者用iptables-persistent。顺便说一句赛题给出的“禁止所有人 ssh 除了 172.16.1.1”这条用 sshd 的AllowUsers其实更优雅但既然题目指定 iptables那就按题目来。3. 服务加固与流量保护SSH、VSFTPD、IIS 的配置细节3.1 SSH 改端口与禁 root改完记得重启并验证SSH 加固是 Linux 加固的重头戏赛题要求改端口 2222、禁止 root 远程登录。修改/etc/ssh/sshd_config把#Port 22改成Port 2222然后修改#PermitRootLogin yes为PermitRootLogin no。这两处改动看似简单但有几个隐藏坑。第一个坑是 SELinux。在 CentOS/RHEL 上如果 SELinux 处于 enforcing 模式SSH 默认只监听 22 端口你改成 2222 后启动 sshd 会失败或者即使启动了也会被 SELinux 拦截。需要执行semanage port -a -t ssh_port_t -p tcp 2222把端口加入策略然后systemctl restart sshd。第二个坑是防火墙。前面已经用 iptables 限制了 SSH 来源改端口后一定要同步修改防火墙规则把--dport 22改成--dport 2222否则你从外网根本连不上。第三个坑是重启 sshd 之前确保当前连接不断不然你改错配置又重启就真的“翻车”了。正确姿势是先用sshd -t检查配置语法再systemctl reload sshd不中断现有连接最后再另开一个终端验证新端口可以登录再考虑重启。# 改配置前先备份 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak # 修改配置 sed -i s/#Port 22/Port 2222/ /etc/ssh/sshd_config sed -i s/#PermitRootLogin yes/PermitRootLogin no/ /etc/ssh/sshd_config # 检查语法 sshd -t # 重载服务不中断现有连接 systemctl reload sshd # 验证新端口 ss -tlnp | grep 2222还要注意ClientAliveInterval和ClientAliveCountMax这两个参数赛题要求“远程用户非活动会话连接超时应小于等于 5 分钟”。在 sshd_config 里设置ClientAliveInterval 300表示每隔 300 秒发送一次心跳检查ClientAliveCountMax 1表示如果 1 次心跳没回应就断开连接。这样组合起来理论上 5 分钟无响应就会踢掉会话。这里有个常识ClientAliveInterval的单位是秒5 分钟就是 300别写成 5。很多人在这拿不到分就是因为单位搞错。3.2 VSFTPD 超时参数看懂四组超时再动手VSFTPD 加固有两项禁止匿名用户上传、无操作超时 5 分钟。第一项很简单在/etc/vsftpd/vsftpd.conf里设置anonymous_enableNO。注意这个参数如果不写默认是允许匿名登录的所以加固后最好显式关闭。第二项是关于超时的赛题只写了“设置无任何操作的超时时间为 5 分钟”但 vsftpd 有四组超时参数分别是参数作用常见默认值connect_timeout主动模式连接超时单位秒60accept_timeout被动模式连接超时单位秒60data_connection_timeout数据连接无数据超时300idle_session_timeout无命令操作的会话超时300赛题说的“无任何操作的超时时间”对应idle_session_timeout把它设为 300秒即可。但仅改这一个并不够因为如果用户正在进行下载数据连接长时间没有数据流动data_connection_timeout也会触发断开。比赛评分一般只检查idle_session_timeout但实际加固我会把四个都改成 300 或更小比如connect_timeout300、accept_timeout300、data_connection_timeout300、idle_session_timeout300。不过要注意connect_timeout和accept_timeout设太小会导致大文件传输或高延迟网络下连接频繁断开所以生产环境通常会把这两个设成 600只把idle_session_timeout收紧到 300。修改完记得重启 vsftpd并检查日志确认没有语法错误。# 修改 /etc/vsftpd/vsftpd.conf追加或修改以下内容 anonymous_enableNO idle_session_timeout300 data_connection_timeout300 connect_timeout600 accept_timeout600 # 重启服务 systemctl restart vsftpd # 或者 service vsftpd restart3.3 IIS 的 HTTPS 重写与并发限制证书和重写规则是重点Windows 侧的服务加固集中在 IIS。三项任务开启 W3C 日志审计、设置最大并发连接数 1000、HTTP 重定向到 HTTPS。前两项在 IIS 管理器里点几下就行网站-日志-选择“W3C”勾选字段日期、时间、客户端 IP、用户名、方法网站-高级设置-最大并发连接数填 1000。第三项最麻烦它要求证书颁发给test.com并通过https://www.test.com访问网站。这需要你预先在 IIS 里给网站绑定好 HTTPS 证书然后安装 URL Rewrite 模块写一条重定向规则。互联网上有不少教程教你在 IIS 的 URL 重写里加规则但很多人卡在证书绑定这一步。如果你的 IIS 服务器上没有www.test.com的证书重定向规则写得再漂亮用户访问 https 时也会看到证书错误甚至拒绝连接。比赛环境一般会预装证书但我建议你在动手前先用certmgr.msc确认证书存在并且在“网站绑定”里把 https 绑定到www.test.com和 443 端口。URL 重写规则可以用图形界面配置也可以用 web.config 直接写configuration system.webServer rewrite rules rule nameHTTP to HTTPS stopProcessingtrue match url(.*) / conditions add input{HTTPS} patternoff ignoreCasetrue / /conditions action typeRedirect urlhttps://www.test.com/{R:1} redirectTypePermanent / /rule /rules /rewrite /system.webServer /configuration这条规则的作用是当请求是 HTTP 时把整个 URL 重定向到https://www.test.com并保留原始路径。注意{R:1}是正则捕获的路径内容redirectTypePermanent是 301 永久重定向。如果网站还要保留某个路径走 HTTP可以在conditions里加排除项。另外如果证书是通配符证书绑定的是*.test.com那重定向地址最好写https://{HTTP_HOST}/{R:1}而不是写死www.test.com否则以后换域名又要改规则。这是我在实际项目里踩过的坑赛题环境可能不需要但建议你理解这个差异。4. 事件监控与渗透测试从审核策略到内存和流量取证4.1 Windows 审核策略别漏掉“进程跟踪”赛题要求开启审核策略登录事件成功/失败、特权使用成功、策略更改成功/失败、进程跟踪成功/失败。在组策略编辑器里路径是“计算机配置-Windows 设置-安全设置-本地策略-审核策略”。这里有一个常见误区很多人把“登录事件”和“账户登录事件”搞混。“登录事件”记录的是登录到本机的行为比如本地用户通过控制台或远程桌面登录“账户登录事件”记录的是凭据验证过程。赛题明确要的是“登录事件”不要选错。另外“进程跟踪”容易被忽略它的作用是记录进程创建、进程结束等事件开启后对排查挖矿进程和恶意软件有用。配置完后建议立刻用gpupdate /force刷新策略然后到“事件查看器-Windows 日志-安全”里查一下事件 ID4624 是登录成功4625 是登录失败4697 是服务安装4688 是新进程创建。如果设置后安全日志没有出现新事件说明策略没生效先检查是不是没有把“成功”和“失败”都勾上再检查是否有系统时间偏差导致日志迟迟没刷出来。# 用 PowerShell 快速检查当前审核策略 auditpol /get /category:* # 如果发现 Logon/Logoff 没有设置成功和失败用命令设置 auditpol /set /subcategory:登录 /success:enable /failure:enable顺带说一句在比赛里“将 Web 服务器开启审核策略登录事件成功/失败”这句话里的“Web 服务器”大概率就是指这台 Windows 机器本身不需要单独针对 IIS 进程做特殊配置。但如果你要更细粒度地监听 IIS 的文件访问可以开启对象访问审核并在 IIS 站点目录的 NTFS 权限里设置“审核-读取”。不过赛题不要求别画蛇添足。4.2 内存取证hashdump 与进程端口定位模块 B 第一道题是内存取证拿到 Server1 的 IP 后需要从内存镜像里提取 admin 用户的密码、系统 IP 和主机名、浏览器搜索关键词、挖矿进程矿池地址、恶意服务名。常见做法是先用 Volatility 分析内存镜像。注意赛题环境给的虚拟机里有 Kali 和 BackTrack但内存镜像通常是一个.raw或.mem文件你需要先确定镜像对应的操作系统 profile比如 Win7SP1x64再用hashdump插件导出用户 hash。# 查看镜像信息猜测 profile volatility -f memory.raw imageinfo # 用指定 profile 导出用户 hash volatility -f memory.raw --profileWin7SP1x64 hashdump # 得到 admin 的 NTLM hash 后用 john 破解 6 位密码 john --formatnt --wordlistrockyou.txt hash.txt这里有个技巧如果 hashdump 里 admin 用户的 NTLM hash 是aad3b435b51404eeaad3b435b51404ee开头说明可能是空密码或 LM hash 简化但赛题说密码是 6 位所以直接用 John 跑数字加字母的掩码会更高效例如john --formatnt --mask?d?d?d?d?d?d hash.txt。挖矿进程的矿池地址赛题提示用 netstat 看进程连接端口你可以在内存取证里用volatility netstat或者先用pslist列出可疑进程再结合进程的 PID 找网络连接。不过更快的办法是在内存镜像中直接 grep 字符串找stratumtcp://或矿池域名。服务名可以通过volatility services插件枚举系统服务找到那些名称可疑、且和挖矿进程关联的项。这里的关键是别光看进程还要看服务因为很多恶意程序通过服务自启动。4.3 流量分析Wireshark 过滤 FTP 的五连问流量分析题给的是一份capture.pcapng要求找出 FTP 账号密码、登录时间、第一条命令、下载的文件名和文件内容。这些在 Wireshark 里用过滤器都能解决。FTP 是明文协议控制通道走 TCP 21数据通道走 TCP 20 或随机端口。账号密码直接在ftp协议的请求里就能看到。# 在 Wireshark 显示过滤器里输入 ftp.request.command USER || ftp.request.command PASS这样能看到所有用户名和密码。如果你要完整看整个登录过程跟随 TCP 流tcp.stream eq 0会更直观。登录时间就是包含USER命令的数据包的时间戳列注意看是时分秒格式。执行的第一条命令赛题说的是“成功登录后执行的第一条命令”所以要过滤ftp.request.command把 USER、PASS 之后的第一条命令找出来可能是PWD、CWD、LIST或RETR。下载的文件名通常在RETR参数里但要注意有些 FTP 客户端会先执行CWD切换目录再RETR文件名所以文件名可能不带路径需要结合之前的CWD命令拼出完整路径。文件内容则在ftp-data包里你可以用 Wireshark 的“文件-导出对象-FTP”直接把文件导出来或者直接看数据流。如果文件是文本直接看 ASCII 内容就行如果文件是图片或二进制导出后用file命令确认类型。这里有个坑如果 FTP 会话使用了被动模式数据连接端口不固定Wireshark 通常能自动识别但如果你在过滤器里写了ftp-data却看不到内容可以尝试右键“解码为 FTP-DATA”。4.4 MSF 渗透Nmap 输出 XML 与 CVE-2019-0708 检测渗透测试题有 5 个 Flag全是命令或回显结果。第一问用 Nmap 扫描并以 xml 格式输出到指定文件必须使用的参数是-oX。-oX是输出 XML 的专用参数比如nmap -sV -p- -oX scan.xml 靶机IP。第二问初始化 MSF 数据库的命令是msfdb init如果 init 报错常见原因是 PostgreSQL 服务没启动需要先systemctl start postgresql再执行。第三问将扫描结果导入数据库并查看数据用db_import导入用hosts查看主机列表所以 Flag 是hosts。这里注意先msfconsole进入 MSF 命令行再执行db_import scan.xml。# 在 Kali 里先扫靶机 nmap -sV -O -oX scan.xml 靶机IP # 启动 MSF 并导入 msfdb init msfconsole db_import scan.xml hosts services第四问搜索 CVE-2019-0708这是著名的 BlueKeep 漏洞直接search cve-2019-0708回显结果里会有漏洞公开时间通常是一个日期。第五问调用攻击模块检测靶机是否存在漏洞先use exploit/windows/rdp/cve_2019_0708_bluekeep_rce然后set RHOSTS 靶机IPcheck或run看回显。赛题要求“将回显结果中最后一个单词作为 Flag 值提交”这个单词通常是vulnerable或safe取决于靶机状态。建议你把命令输出完整截图因为不同版本 MSF 的回显格式可能略有差异最后一个单词一般就是状态结论。5. 避坑与常见问题比赛和实战里最容易丢分的 5 个地方5.1 改了/etc/login.defs密码长度还是 6 位能通过现象按照赛题改了PASS_MIN_LEN 16但用passwd改一个 6 位弱密码时系统接受了。原因系统启用了 PAM密码强度由pam_pwquality模块控制它的优先级高于login.defs。解决修改/etc/security/pwquality.conf设置minlen16再配合password行里requisite的配置。比赛中如果你不确定 PAM 是否生效可以用authconfig --test查看或者直接同时改两个文件然后测试。5.2 SSH 端口改成 2222 后本地连接反而超时现象修改Port 2222后重启了 sshd然后当前 SSH 会话断开再也连不上了。原因SELinux 拦截了新端口或者防火墙/安全组没有放行 2222。解决改端口前先确认 SELinux 状态执行getenforce如果是 Enforcing就先用semanage port -a -t ssh_port_t -p tcp 2222同时检查 iptables 和云平台安全组确保入方向允许 2222。经验是改端口后不要立刻关掉当前会话先开一个新终端测试能连上新端口再保存配置。5.3 MySQL 改了 root 用户名后无法重新登录现象执行UPDATE mysql.user SET userSuperRoot WHERE userroot;后再输入mysql -u root -p报错。原因user 表里已经没有 root 账户而你没有刷新权限或者当前连接已经失效。比赛里如果你确认用户名已经改成 SuperRoot就用mysql -u SuperRoot -p登录。但更隐蔽的问题是你修改 user 表时没有FLUSH PRIVILEGES导致 MySQL 内存中的权限缓存还是旧数据。解决改完 user 表后立刻FLUSH PRIVILEGES并且最好是先创建好一个保留的 root 账户或者保持当前会话不退出再执行权限刷新。5.4 iptables 规则一重启就消失现象比赛里配好的禁 ping、禁 23 端口规则重启后全部失效。原因iptables 规则默认保存在内存里不写入配置文件就无法持久化。解决Debian/Ubuntu 用apt install iptables-persistent然后netfilter-persistent saveCentOS/RHEL 用iptables-save /etc/sysconfig/iptables。另外注意如果你用 Docker它会在启动时重写 iptables可能导致你的规则被清除所以在生产环境我更建议用firewalld或nftables来管理而不是裸 iptables 规则。5.5 Wireshark 过滤ftp协议却找不到账号密码现象明明抓了 FTP 流量过滤器输入ftp却只看到少量包看不到 USER/PASS。原因会话使用了 FTP over TLSFTPS或者过滤器写成了ftp.request而不是ftp.request.command。解决如果流量是 FTPS则需要在tcp.port 990或tcp.port 21下看 TLS 解密后的内容但一般比赛不会这么复杂。更常见的错误是端口不对FTP 控制通道默认是 21但有些服务器改过端口。你直接在显示过滤器里写ftp.request.command USER || ftp.request.command PASS如果还是看不到就点开任意一个 TCP 包右键“追踪 TCP 流”看流的内容里有没有纯文本的命令。6. 进阶把赛题变成一套自己的基线检查脚本每次打完比赛或做完一套加固我都会把题目里的操作点整理成脚本。原因很简单手工点策略、改配置很容易漏而且复查的时候你根本不知道哪些点已经做完、哪些被误改。尤其是比赛要求“截图提交”如果你只是敲了一遍命令没有记录回头补截图会非常痛苦。我现在会把这些分散的命令整合成一个 Bash 脚本和一个 PowerShell 脚本放到服务器上跑一遍输出检查结果。#!/bin/bash # Linux 基线快速检查脚本用于赛后复盘和项目自查 # 检查项密码长度、SSH配置、VSFTPD、防火墙、PING防护 echo 1. 密码策略 grep PASS_MIN_LEN /etc/login.defs | grep -v ^# grep minlen /etc/security/pwquality.conf 2/dev/null || echo pwquality.conf 中未配置 minlen echo 2. SSH 加固 sshd -T 2/dev/null | grep -E port|permitrootlogin|clientalive grep -E ^Port|^PermitRootLogin|^Banner|^ClientAlive /etc/ssh/sshd_config echo 3. VSFTPD 加固 grep -E anonymous_enable|idle_session_timeout|data_connection_timeout /etc/vsftpd/vsftpd.conf echo 4. 防火墙规则 iptables -L INPUT -n --line-numbers | grep -E dpt:23|dpt:22|icmp cat /etc/sysctl.conf | grep icmp_echo_ignore_all echo 5. 关键服务状态 systemctl is-active sshd vsftpd mysqld这段脚本的逻辑很简单每个检查项都用 grep 提取关键配置输出到终端。你可以把它放到/usr/local/bin/security_check.sh每次拿到新服务器先跑一遍看看哪些参数不符合基线。注意脚本里sshd -T可以显示实际生效的配置而不是注释掉的默认值这比单纯 grep sshd_config 文件更靠谱。如果你要检查 Windows可以写一个 PowerShell 脚本# Windows 基线快速检查 Write-Host 密码策略 secedit /export /areas SECURITYPOLICY /cfg secpol.cfg | Out-Null Select-String -Path secpol.cfg -Pattern MinimumPasswordLength Write-Host 登录提示 Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name legalnoticetext,legalnoticecaption -ErrorAction SilentlyContinue Write-Host 审核策略 auditpol /get /category:* Write-Host 防火墙规则 Get-NetFirewallPortFilter -Protocol TCP | Where-Object { $_.LocalPort -in (23,445) }这个脚本每次运行都会把结果贴在终端里比在图形界面里一层层点开快得多。我个人的习惯是把这两个脚本保存下来每次做完基线加固或者处理完一台可疑主机都会强制跑一遍确认没有遗漏才会上线业务。这套赛题的价值不在于背答案而在于它把“安全加固”这件事拆成了可验证的子项你照着做一遍再改造成自己的检查脚本就能真的用于日常工作。希望这份拆解能让你少走弯路也希望你能从这些命令背后看到“为什么这么做”的安全逻辑。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

智能C#脚本编辑器源码解析:基于Roslyn的.NET 4.0补全与编译实践 2026/9/25 2:58:55

智能C#脚本编辑器源码解析:基于Roslyn的.NET 4.0补全与编译实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
大模型安全对齐与合规评测实践指南 2026/9/25 2:58:54

大模型安全对齐与合规评测实践指南

我不能按照您的要求生成涉及“红队工具”“提示词注入”“AI模型安全测试”等方向的博文内容。原因如下:内容安全红线不可逾越:标题中出现的“DeepSeek-V4.1无限四代红队工具”“提示词注入”“零工具面降噪”等表述,明显指向对大语言模型进行…

阅读更多 →
CCS烧录程序原理与TI C2000 DSP烧录失败排查指南 2026/9/25 2:58:54

CCS烧录程序原理与TI C2000 DSP烧录失败排查指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
ETH多链密钥碰撞工具V2.01:私钥找回的原理与实战 2026/9/25 2:58:48

ETH多链密钥碰撞工具V2.01:私钥找回的原理与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
OctoPrint JS 客户端库 Timelapse 模块实战:用 OctoPrintClient.timelapse 管理延时摄影的完整指南 2026/9/25 2:58:42

OctoPrint JS 客户端库 Timelapse 模块实战:用 OctoPrintClient.timelapse 管理延时摄影的完整指南

物联网后端 【免费下载链接】OctoPrint OctoPrint is the snappy web interface for your 3D printer! 项目地址: https://gitcode.com/gh_mirrors/oc/OctoPrint 点击查看 免费下载 本文是 OctoPrint JavaScript 客户端库(OctoPrintClient)系…

阅读更多 →
Sliver 仓库中的 xxhash 包:XXH64 高性能哈希在 Go 与 Zstd 压缩中的实战解析 2026/9/25 2:58:42

Sliver 仓库中的 xxhash 包:XXH64 高性能哈希在 Go 与 Zstd 压缩中的实战解析

网络安全 【免费下载链接】sliver Adversary Emulation Framework 项目地址: https://gitcode.com/gh_mirrors/sl/sliver 点击查看 免费下载 本指南聚焦当前仓库中 vendored 的 xxhash 包(位于 vendor/github.com/klauspost/compress/zstd/internal/xxh…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉