HTTPS Header Capture Without Proxies

This guide demonstrates how to use QTap to transparently capture HTTP headers from applications without proxies, code changes, or certificate management. QTap uses eBPF to monitor traffic at the kernel level, capturing data before encryption.

Common Use Cases

  • Service Usage Analytics: Track which users or services access internal applications

  • API Monitoring: Capture headers for authentication, rate limiting, or debugging

  • Traffic Recording: Record production requests for testing or replay

  • Security Auditing: Monitor for unauthorized access or suspicious headers

  • Service Migration: Understand dependencies before deprecating endpoints

How It Works

QTap attaches to the kernel using eBPF and intercepts traffic at the TLS/SSL layer, providing visibility into encrypted traffic without managing certificates or deploying proxies. All capture happens out-of-band with minimal performance impact.

Installation

Quick Install

# Install/Update QTap
curl -s https://get.qpoint.io/install | sudo sh

# Verify installation
sudo qtap --version

Configuration

Create a configuration file at /etc/qtap/qtap-config.yaml:

Running QTap

Direct Execution

  1. Create environment file for credentials:

  1. Create systemd service:

  1. Start and enable the service:

Configuration Examples

Example 1: Capture Only Internal Traffic

Example 2: Debug Specific Services

Example 3: Production Traffic Recording

Alternative: Using MinIO (S3-Compatible Storage)

For self-hosted S3-compatible storage like MinIO, adjust the object store configuration:

Understanding Capture Levels

http_capture Plugin Levels

  • none: No capture (disables the rule)

  • summary: Basic metadata (method, path, status code)

  • details: Includes all headers (recommended for user tracking)

  • full: Complete request/response including bodies

Rule Expression Syntax

QTAP uses Rulekit for filtering. Common expressions:

Captured Data Format

Example of captured HTTP transaction with headers:

Analyzing Captured Data

Query S3 with AWS CLI

Extract User Analytics

Create Usage Report

Performance Considerations

  • Capture Level: Use details for headers only, full only when bodies are needed

  • Filtering: Use rules to limit capture to relevant traffic

  • Sampling: For high-volume services, consider sampling strategies

  • Storage: Rotate S3 data based on retention requirements

  • Process Filtering: Exclude noisy system processes

Troubleshooting

Common Issues

No data captured:

  • Verify QTAP is running: sudo systemctl status qtap

  • Check logs: sudo journalctl -u qtap -n 100

  • Ensure traffic matches direction setting (ingress vs egress)

  • Verify HTTP traffic is on expected ports

S3 upload failures:

  • Test credentials: aws s3 ls s3://traffic-capture/

  • Check bucket permissions and region

  • Verify network connectivity to S3

Missing headers:

  • Ensure capture level is details or full

  • Verify the http_capture plugin is configured

  • Check that traffic is HTTP/HTTPS (not other protocols)

High memory usage:

  • Reduce capture level from full to details

  • Add filtering rules to limit captured traffic

  • Increase sampling intervals for high-volume endpoints

Debug Mode

Run QTAP in debug mode for troubleshooting:

Security Best Practices

  1. Credential Management: Use environment variables or IAM roles for S3 credentials

  2. Data Retention: Implement S3 lifecycle policies for automatic data expiration

  3. Access Control: Restrict S3 bucket access to authorized users only

  4. Sensitive Data: Consider filtering out sensitive headers before storage

  5. Encryption: Enable S3 server-side encryption for stored data

Summary

QTap provides transparent HTTP header capture without requiring proxies or code changes. By leveraging eBPF, it captures traffic at the kernel level with minimal performance impact, making it ideal for:

  • Understanding service dependencies

  • Tracking API usage patterns

  • Debugging production issues

  • Recording traffic for testing

  • Security auditing

The combination of flexible filtering rules and native S3 integration makes QTAP a powerful tool for gaining visibility into your HTTP traffic.

Last updated