warpgate/README.md

109 lines
5.1 KiB
Markdown
Raw Normal View History

2022-07-06 18:31:27 +08:00
<br/>
2022-07-06 04:38:10 +08:00
<img src="warpgate-web/public/assets/logo.svg" width="100" />
<br/>
2022-04-13 01:06:09 +08:00
2022-04-13 01:28:24 +08:00
<a href="https://github.com/warp-tech/warpgate/releases/latest"><img alt="GitHub All Releases" src="https://img.shields.io/github/downloads/warp-tech/warpgate/total.svg?label=DOWNLOADS&logo=github&style=for-the-badge"></a> &nbsp; <a href="https://nightly.link/warp-tech/warpgate/workflows/build/main"><img src="https://shields.io/badge/-Nightly%20Builds-orange?logo=hackthebox&logoColor=fff&style=for-the-badge"/></a> &nbsp;
2022-04-11 04:58:58 +08:00
2022-07-06 04:38:10 +08:00
---
Warpgate is a smart SSH & HTTPS bastion host for Linux that can be used with _any_ SSH client.
2022-04-11 04:58:58 +08:00
2022-07-06 04:38:10 +08:00
* Set it up in your DMZ, add user accounts and easily assign them to specific hosts and URLs within the network.
* Warpgate will record every SSH session for you to view (live) and replay later through a built-in admin web UI.
2022-04-11 05:33:58 +08:00
* Not a jump host - forwards your connections straight to the target instead.
2022-05-31 00:18:41 +08:00
* 2FA support
2022-06-24 16:41:13 +08:00
* Single binary with no dependencies.
2022-04-11 04:58:58 +08:00
* Written in 100% safe Rust.
2022-04-12 04:12:34 +08:00
## Getting started & downloads
2022-04-11 04:58:58 +08:00
2022-07-06 03:32:05 +08:00
* See the [Getting started](https://github.com/warp-tech/warpgate/wiki/Getting-started) wiki page (or [Getting started on Docker](https://github.com/warp-tech/warpgate/wiki/Getting-started-on-Docker)).
2022-04-13 01:28:24 +08:00
* [Release / beta binaries](https://github.com/warp-tech/warpgate/releases)
* [Nightly builds](https://nightly.link/warp-tech/warpgate/workflows/build/main)
2022-04-11 04:58:58 +08:00
2022-05-30 22:35:03 +08:00
<center>
<img width="783" alt="image" src="https://user-images.githubusercontent.com/161476/162640762-a91a2816-48c0-44d9-8b03-5b1e2cb42d51.png">
</center>
<table>
<tr>
<td>
2022-07-06 04:38:10 +08:00
<img width="500" alt="image" src="https://user-images.githubusercontent.com/161476/177408495-80268a91-1a21-43bf-b171-2a563a322f5f.png">
2022-05-30 22:35:03 +08:00
</td>
<td>
2022-07-06 04:38:10 +08:00
<img width="500" alt="image" src="https://user-images.githubusercontent.com/161476/177410749-cf029df7-223e-4c9c-827a-bb96dbe0a7c8.png">
2022-05-30 22:35:03 +08:00
</td>
</tr>
</table>
2022-04-11 04:58:58 +08:00
## Project Status
2022-05-30 16:38:14 +08:00
The project is currently in **alpha** stage and is gathering community feedback. See the [official roadmap](https://github.com/orgs/warp-tech/projects/1/views/2) for the upcoming features.
2022-04-11 04:58:58 +08:00
In particular, we're working on:
* Support for tunneling database connections,
* Requesting admin approval for sessions
* and much more.
2022-04-16 03:38:59 +08:00
## How it works
2022-07-06 04:38:10 +08:00
Warpgate is a service that you deploy on the bastion/DMZ host, which will accept SSH and HTTPS connections and provide an (optional) web admin UI.
2022-04-23 18:29:56 +08:00
Run `warpgate setup` to interactively generate a config file, including port bindings. See [Getting started](https://github.com/warp-tech/warpgate/wiki/Getting-started) for details.
2022-04-16 03:38:59 +08:00
It receives SSH connections with specifically formatted credentials, authenticates the user locally, connects to the target itself, and then connects both parties together while (optionally) recording the session.
2022-07-06 04:38:10 +08:00
When connecting through HTTPS, Warpgate presents a selection of available targets, and will then proxy all traffic in a session to the selected target. You can switch between targets at any time.
2022-04-16 03:38:59 +08:00
You manage the target and user lists and assign them to each other through a config file (default: `/etc/warpgate.yaml`), and the session history is stored in an SQLite database (default: in `/var/lib/warpgate`).
2022-07-06 04:38:10 +08:00
You can use the admin web interface to view the live session list, review session recordings, logs and more.
2022-04-16 03:38:59 +08:00
2022-04-11 04:58:58 +08:00
## Contributing / building from source
2022-06-27 02:50:04 +08:00
* You'll need Rust, NodeJS and Yarn
2022-04-11 04:58:58 +08:00
* Clone the repo
* [Just](https://github.com/casey/just) is used to run tasks - install it: `cargo install just`
* Install the admin UI deps: `just yarn`
* Build the frontend: `just yarn build`
* Build Warpgate: `cargo build` (optionally `--release`)
2022-04-13 00:56:13 +08:00
2022-07-06 04:38:10 +08:00
The binary is in `target/{debug|release}`.
### Tech stack
* Rust 🦀
* HTTP: `poem-web`
* Database: SQLite via `sea-orm` + `sqlx`
* SSH: `russh`
* Typescript
* Svelte
* Bootstrap
2022-04-13 00:56:13 +08:00
## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="https://github.com/Eugeny"><img src="https://avatars.githubusercontent.com/u/161476?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Eugeny</b></sub></a><br /><a href="https://github.com/Eugeny/warpgate/commits?author=Eugeny" title="Code">💻</a></td>
2022-04-13 00:58:36 +08:00
<td align="center"><a href="https://the-empire.systems/"><img src="https://avatars.githubusercontent.com/u/18178614?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Spencer Heywood</b></sub></a><br /><a href="https://github.com/Eugeny/warpgate/commits?author=heywoodlh" title="Code">💻</a></td>
2022-04-13 00:58:50 +08:00
<td align="center"><a href="https://github.com/apiening"><img src="https://avatars.githubusercontent.com/u/2064875?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Andreas Piening</b></sub></a><br /><a href="https://github.com/Eugeny/warpgate/commits?author=apiening" title="Code">💻</a></td>
2022-04-13 00:56:13 +08:00
</tr>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
2022-04-13 01:06:09 +08:00
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!