Stepping Stone Server
A stepping stone server is a public host that routes user traffic to private machines. You set it up by hardening one external node and forwarding SSH traffic through it. Most engineering teams put this machine in a public subnet to guard internal systems. Still, broad network rules or shared keys on that host often grant excessive internal reach. How a stepping stone server works in practice In a standard cloud layout, databases and internal servers sit in private subnets. These private mach
Kubernetes API Server Access: the complete guide
Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.
A stepping stone server is a public host that routes user traffic to private machines. You set it up by hardening one external node and forwarding SSH traffic through it. Most engineering teams put this machine in a public subnet to guard internal systems. Still, broad network rules or shared keys on that host often grant excessive internal reach.
How a stepping stone server works in practice
In a standard cloud layout, databases and internal servers sit in private subnets. These private machines have no public IP addresses, so outside users cannot reach them. Teams place a single hardened host at the network edge to bridge this gap. Engineers log in to this edge host first before moving to deeper network zones.
Admin teams lock down the host by removing extra tools and closing unused ports. Inbound firewall rules allow SSH traffic only from known office or VPN addresses. Outbound rules allow the host to talk to target machines on the private network. Users keep their private SSH keys on their own laptops and forward the session.
When an engineer starts a session, the client authenticates with the edge host first. Once that check passes, the client opens a tunnel to the final private machine. This design keeps private keys off the middle host so stolen disks expose nothing. System logs on the edge host record which user account opened the network path.
What the native setup solves and what it misses
A stepping stone server shrinks the public attack surface of a cloud network. Instead of exposing fifty servers to the internet, teams expose and patch just one. Network admins can watch one entry point and block bad IP addresses fast. It gives teams a simple way to gate network entry at the perimeter.
Still, this network design only checks who can open a tunnel at login time. Once the tunnel is open, the middle host sees only encrypted network packets passing through. It cannot read or filter the actual shell commands or database queries inside. If an engineer has login rights, they can run any command that role allows.
Kubernetes API Server Access: architecture patterns and best practices
Continue reading? Get the full guide.
Free. No spam. Unsubscribe anytime.
Key management also creates ongoing work as the engineering team grows and changes. When a developer leaves, admins must revoke keys across both edge and internal hosts. Teams often share service accounts on target boxes to skip this tedious setup work. Shared accounts erase individual audit trails and make incident reviews much harder to finish.
Managing day-to-day maintenance and audit gaps
Running an edge host requires constant OS patching and disk space checks for logs. High traffic or large file transfers through one small host can slow down sessions. If that single host goes down, engineers lose their path to fix broken systems. Teams must then build redundant hosts across zones, which doubles the maintenance work.
Compliance audits also ask for proof of what users did inside production databases. Network connection logs only show that an engineer connected at a certain time. They do not show whether that person ran a safe read query or deleted tables. Also, static database results return raw emails, phone numbers, card numbers, and national IDs.
Add runtime guardrails and masking beside your databases and APIs
Login rules, role grants, and CI checks govern who connects to your stack. Yet any allowed script, engineer, or AI agent still runs commands with the full scope of its role. For workloads on Postgres, MySQL, SQL Server, MongoDB, ClickHouse, Kubernetes, SSH, or internal HTTP services, hoop.dev sits beside the service as an open-source proxy, a sidecar for your database or API.
Before a query runs, hoop.dev guardrails check the statement against your rules. An AI Analyzer you configure can score intent or hold risky calls for human review. Next, hoop.dev data masking rewrites sensitive fields in responses, and each verdict is logged per listener. Explore the MIT-licensed project on GitHub.
Frequently asked questions
Why should you avoid storing private SSH keys on the middle host?
Storing private keys on the middle host puts every internal server at high risk. If an attacker compromises that one machine, they can steal the stored keys right away. Forwarding keys from a local laptop keeps those secrets out of the host's disk.
Does a stepping stone server log the commands an engineer runs on target hosts?
No, standard SSH forwarding encrypts the inner session from the laptop to the target. The middle server only sees the start time, end time, and byte counts. To see actual commands, you must collect logs from every single target machine.
How do you limit lateral movement once a user logs in to the network?
You must set strict host firewall rules between the middle host and private subnets. Group your internal servers by role and allow traffic only on required ports. Also, remove local admin rights on the middle host so users cannot alter routing.
Related guides
In this post