CentOS下JMeter如何进行安全性测试
小樊
35
2025-12-07 21:49:28
CentOS下使用JMeter进行安全性测试
一 环境准备与基线
安装 Java 8+ (JMeter 为 Java 应用),配置环境变量:
安装:sudo yum install -y java-1.8.0-openjdk-devel
配置:/etc/profile 中添加
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:$PATH
生效:source /etc/profile && java -version
安装 Apache JMeter (建议 5.4.x),配置环境变量:
解压:tar -zxvf apache-jmeter-5.4.3.tgz -C /usr/local/
配置:/etc/profile 中添加
export JMETER_HOME=/usr/local/apache-jmeter-5.4.3
export PATH=$JMETER_HOME/bin:$PATH
生效:source /etc/profile && jmeter -v
非 GUI 运行与报告(CLI 更适合稳定性与资源占用控制):
执行:./jmeter -n -t your_plan.jmx -l results.jtl -e -o report/
仅生成报告:./jmeter -g results.jtl -o report/
如需 HTTPS 测试,准备服务端证书并在 JMeter 的 SSL 管理器 导入信任库(keystore),随后在 HTTP 请求中使用 https:// 与端口 443 。
二 常见安全性测试场景与JMeter实现
传输安全与证书校验
目标:验证 HTTPS/TLS 配置、证书链、主机名校验、协议与套件强度。
做法:用 HTTP 请求 指向目标 HTTPS 接口;在 SSL 管理器 导入服务端或根证书;结合 断言 校验响应内容/头部;如需客户端证书,在 HTTP 请求中配置 Keystore/证书与私钥 。
认证与会话安全
目标:验证 登录认证 、会话管理 、多因素认证 、Token 生命周期 与权限控制 。
做法:使用 HTTP Header Manager 设置 Authorization: Bearer 或 Cookie ;对登录接口做 CSV Data Set Config 参数化用户名/口令;用 BeanShell PostProcessor/JSON Extractor 解析登录响应并提取 session/access_token 供后续请求使用;对敏感接口做 响应断言 与 响应时间断言 验证失败与锁定策略。
输入与注入类安全
目标:验证 SQL 注入 、XSS 、命令注入 、路径遍历 等输入校验与过滤。
做法:在 CSV Data Set Config 中准备常见攻击载荷(如 ' OR 1=1--、"><script>alert(1)</script>、;id、../../../etc/passwd);使用 循环控制器 +HTTP 请求 批量发送;用 响应断言/正则断言 检测异常报错、堆栈、重定向到错误页或可疑输出;对上传接口使用 multipart/form-data 发送畸形文件并观察拒绝与清理策略。
访问控制与授权
目标:验证 越权访问 (水平/垂直)、权限提升 、资源未授权访问 。
做法:准备不同角色的 账号凭据 ;先以低权限账号获取资源列表,再以高权限账号尝试访问受限资源;用 JSON Extractor 抽取资源标识,构造越权请求;用 断言 校验是否返回 403/401 或异常数据。
速率限制与防护策略
目标:验证 限流 、防暴力破解 、验证码 、WAF/IPS 行为。
做法:用 常数吞吐量定时器/高斯随机定时器 控制请求速率;对登录等接口实施高频尝试并观察 429/503 与锁定;在 HTTP Header Manager 设置常见 User-Agent 与 X-Forwarded-For 模拟不同来源;结合 响应断言 与 监听器 统计触发防护后的行为。
敏感信息与错误处理
目标:验证 错误信息泄露 、日志打印敏感数据 、不安全的直接对象引用 。
做法:构造异常输入并观察响应体与响应头是否泄露 堆栈、数据库错误、内部路径、密钥/令牌 ;用 响应断言/正则 检测敏感关键字;检查 Set-Cookie 的 HttpOnly/Secure/ SameSite 属性与 HSTS 头。
三 执行与报告要点
非 GUI 执行与资源控制
执行:./jmeter -n -t plan.jmx -l results.jtl -e -o report/
建议在 setenv.sh (位于 JMeter 的 bin 目录)中设置堆内存,例如:export JVM_ARGS="-Xms2g -Xmx2g",避免 OOM 并提升稳定性。
结果分析与验证
使用 查看结果树 做少量样本调试;用 聚合报告/Summary Report 观察 响应时间、吞吐量、错误率 ;对安全用例添加 断言 统计失败比例与触发条件;对异常响应使用 正则表达式提取器/JSON 提取器 定位问题点。
分布式与安全通信
场景:高并发安全测试或内网隔离环境需要多台压力机。
做法:在所有节点生成并分发一致的 rmi_keystore.jks (执行 create-rmi-keystore.sh);在 jmeter.properties 中设置 remote_hosts=压力机IP:端口、server.rmi.ssl.disable=true;在 jmeter-server 中设置 RMI_HOST_DEF=-Djava.rmi.server.hostname=本机IP;启动 ./jmeter-server;控制机远程启动测试。
四 合规与安全提示
仅在取得系统所有者授权的范围内开展测试,遵守法律与合规要求;避免对生产系统造成 拒绝服务 或数据破坏。
控制请求速率与并发,优先在 测试环境 复现问题;必要时与 WAF/安全团队 联动,分阶段启用规则。
妥善管理 凭据与证书 :使用 测试专用账号/令牌 ;证书与密钥仅用于测试,禁止明文存放与泄露。
测试完成后清理测试数据,撤销临时权限,恢复安全策略(如限流、验证码、WAF 规则)。