Show HN: Automatic proxy setup for SSH'able boxes that have no network access
github.com
github.com
e.g. you can't curl google.com
I've used this code in CTF competitions and Blue Team exercises where some machines behind a VPN don't have outgoing network access.
(Sometimes it's just simpler to organize this way, sometimes it's deliberate for security purposes.)
Suppose you configured your webserver to run with limited privileges so as if someone hacks it it has limited access. Suppose it still has access to DB and stuff. Well, filtering outgoing connections makes harder to exfiltrate the data OR hop to another hosts. And then you can monitor failed outgoing requests to be able to act/investigate when that happens.
* Incoming access is allowed to "stuff" when connected to the OpenVPN host.
* Outgoing access to services is very heavily restricted.
* Outgoing HTTP/HTTPS requires the site to be on an allow-list. By default all outgoing HTTP/HTTPS traffic is denied.
(We might add yum-repositories to the allowlist, or permit access to the various "Windows Updates" services, for example. But all other downloads from remote sites would be denied.)
I wish companies would hurry up and move away from "trusted" networks and move onto zero trust.
Erm ... mate....
A device is either air-gapped or it isn't. The clue is kinda in the name.
Yes, I know gov/mil networks use data-diodes, but that's a different kettle of very expensive fish which is certified to EAL6/7.
For everyone else, air-gapped means what it says on the tin.
Pseudo air-gapping via firewall rules is not air-gapping, its called writing ACLs.
This is a proxy or a bastion host, no more, no less. Calling it an airgap, even in "scare quotes", is clownishly terrible and serves no purpose beyond polluting the language.
Can you propose an alternative / more accurate name?
Naming things is hard. I love the project though, not because I need it, but it proves one of my point: "If you didn't want me to be able to do X, then you shouldn't have allowed SSH access".
# DisableForwarding disables all forwarding features,
# including X11, ssh-agent(1), TCP and StreamLocal.
# This option overrides all other forwarding-related
# options and may simplify restricted configurations.
#
# CLI option: -o
# options.disable_forwarding/do_authenticated()
DisableForwarding noMakes me wonder if there are any other applications to be had there.
(I am a JavaScript pentester)
Usually bastions are just allowing one SSH server on your VPC/network and every SSH connection going through it.
I still actually haven't found similar projects to mine.
My code review notes says:
# GatewayPorts specifies whether remote hosts are
# allowed to connect to ports forwarded for the
# client. By default, sshd(8) binds remote port
# forwardings to the loopback address. This prevents
# other remote hosts from connecting to forwarded
# ports. GatewayPorts can be used to specify that sshd
# should allow remote port forwardings to bind to
# non-loopback addresses, thus allowing other hosts to
# connect. The argument may be no to force remote port
# forwardings to be available to the local host only,
# yes to force remote port forwardings to bind to the
# wildcard address, or clientspecified to allow the
# client to select the address to which the forwarding
# is bound.
#
# CLI option: -o
# options.fwd_opts.gateway_ports/channel_fwd_bind_addr()/channel_setup_fwd_listener_tcpip()/channel_setup_remote_fwd_listener()
# options.fwd_opts.gateway_ports/channel_fwd_bind_addr()/channel_setup_fwd_listener_tcpip()/channel_setup_local_fwd_listener()
# GatewayPorts defaults to 'no'.Thank you for the feedback!