article
README
🚀 Windows命令行界面服务器配置
本项目聚焦于Windows命令行界面服务器的配置,能帮助用户灵活设置服务器各项参数,同时具备完善的安全机制,保障服务器的稳定与安全运行。
🚀 快速开始
本部分将为你介绍Windows命令行界面服务器的各项配置内容。
✨ 主要特性
- 多维度配置:支持基础、shell、SSH等多方面的详细配置。
- 资源管理:提供多种资源的URI访问方式,方便查看配置信息。
- 安全防护:具备内置的安全特性和可选的安全功能,保障服务器安全。
- 命令示例:给出常见操作的命令示例,便于用户快速上手。
📦 安装指南
文档未提及安装步骤,暂不提供。
💻 使用示例
基础用法
{
"port": 3000, // 服务绑定端口,默认为3000
"host": "localhost", // 绑定地址,设置为IP或域名,默认为localhost
"restrictWorkingDirectory": true, // 是否限制命令执行目录,默认true
"allowedPaths": [ // 允许的文件夹路径,默认包括当前工作目录和用户家目录
"%current%",
"%home%"
],
"commandLengthLimit": 2000, // 命令的最大长度限制,防止超长命令注入,默认2000字符
"logCommands": true, // 是否记录执行的命令,默认true
"timeout": 30000 // 命令的最长允许运行时间(毫秒),默认30秒
}
高级用法
{
"shells": [ // 支持的shell列表,默认包括cmd和bash
"cmd.exe",
"/bin/bash"
],
"blockedCommands": [ // 被阻止的危险命令,默认包含rm, del等
"rm",
"del",
"format",
"erase",
" Cipher ",
"vssadmin",
"wbadmin",
"regsvr32",
"msbuild"
],
"blockedArguments": [ // 被阻止的危险参数,默认包含/c,/f等
"/c",
"/f",
"/q",
"/s",
"-rf",
"--force",
"--recursive"
],
"enableInjectionProtection": true, // 是否启用命令注入防护,默认true
"caseInsensitiveBlocking": true // 是否对大小写不敏感地阻止命令,默认true
}
{
"ssh": {
"enabled": true, // 是否启用SSH功能,默认true
"maxConcurrentSessions": 5,// 最大允许的并发SSH会话数,默认5
"defaultTimeout": 30000 // 默认命令超时时间(毫秒),默认30秒
}
}
📚 详细文档
资源
SSH连接
- URI格式:
ssh://{connectionId} - 说明:每个SSH连接对应一个资源,显示连接配置信息并自动屏蔽敏感数据。
- 示例:
ssh://raspberry-pi会显示名为"raspberry-pi"的连接配置。
SSH全局配置
- URI:
ssh://config - 说明:显示整个SSH服务器的配置参数,包括默认超时、最大并发连接数等,并自动屏蔽密码信息。
当前目录
- URI:
cli://currentdir - 说明:显示当前命令行界面服务器的工作目录,默认为服务启动时的目录。
CLI全局配置
- URI:
cli://config - 说明:展示CLI服务器的所有配置信息,包括安全性设置、shell参数和SSH配置等。
安全注意事项
建入的安全特性(无法关闭)
- 命令阻止大小写不敏感:所有命令阻止都是不分大小写的,例如"DEL.EXE", "del.cmd"都会被阻止如果"del"在
blockedCommands中。 - 智能路径解析:服务器会解析完整的命令路径以防止欺骗攻击,例如"%SystemRoot%\system32\cmd.exe"会被正确识别为cmd.exe。
- 自动屏蔽敏感信息:在显示任何配置或日志时,密码和密钥等敏感信息都会被自动替换为占位符。
- 会话过期机制:闲置的SSH会话和命令历史记录会有超时限制,防止未授权访问。
可选的安全功能
- 双向认证:支持客户端证书验证或otp一次性密码登录方式,提升SSH连接的安全性。
- 日志记录与审计:所有用户操作都会被详细记录,包括命令内容、执行时间等信息,便于后续审计分析。
重要安全警告
- 默认配置风险:使用默认端口3000和默认路径可能会增加被未授权访问的风险,请根据实际需求更改相关配置。
- SSH弱密码策略:默认禁止使用弱密码协议(如DSA),建议在生产环境中强制启用RSA或ECDSA加密。
- 定期更新检查:由于存在零日漏洞风险,建议定期检查并更新CLI服务器到最新版本。
命令示例
# 查询所有可用资源
curl http://localhost:3000/_resources
# 获取当前目录信息
curl http://localhost:3000/cli://currentdir
# 执行系统命令
curl -X POST --data "command=dir" http://localhost:3000/
🔧 技术细节
内置安全特性原理
- 命令阻止大小写不敏感:在命令解析阶段,将输入的命令统一转换为小写或大写进行匹配,确保无论大小写如何,只要在阻止列表中的命令都会被拦截。
- 智能路径解析:服务器会对输入的命令路径进行解析,通过操作系统的API或内置的路径解析规则,将完整路径转换为可识别的命令名称。
- 自动屏蔽敏感信息:在输出配置或日志时,使用正则表达式或特定的字符串匹配方法,将密码和密钥等敏感信息替换为占位符。
- 会话过期机制:为每个SSH会话和命令历史记录设置一个计时器,当超过预设的超时时间时,自动关闭会话或清除记录。
可选安全功能实现
- 双向认证:通过SSL/TLS协议实现客户端证书验证,或使用OTP库实现一次性密码登录。
- 日志记录与审计:使用日志库将用户操作信息记录到文件或数据库中,方便后续的审计分析。
📄 许可证
本项目遵循MIT许可证,允许用户自由使用、修改和分发代码,但需保留版权声明。具体许可内容请参考MIT License。
⚠️ 重要提示
- 使用默认端口3000和默认路径可能会增加被未授权访问的风险,请根据实际需求更改相关配置。
- 默认禁止使用弱密码协议(如DSA),建议在生产环境中强制启用RSA或ECDSA加密。
- 由于存在零日漏洞风险,建议定期检查并更新CLI服务器到最新版本。
💡 使用建议
- 建议根据实际需求调整服务器的各项配置参数,以提高服务器的安全性和性能。
- 在生产环境中,务必启用双向认证和日志记录与审计功能,以保障服务器的安全运行。
扫码加入微信群