88
99<hr >
1010
11- ` sandpolis ` is a ** virtual estate monitoring/management tool** under active
12- development.
11+ ` sandpolis ` is a ** virtual estate monitoring/management tool** (VEM²) under
12+ active development.
1313
1414<p align =" center " >
1515 <img src="https://raw.githubusercontent.com/fossable/sandpolis/master/.github/images/overview.png" />
1616</p >
1717
18+ ## Virtual estate
19+
20+ Virtual/digital estate is an all-encompassing term that generally refers to all
21+ of the (non-physical) assets in your possession. Some of them may be entirely
22+ virtual, like accounts on _ github.com_ . Others have a physical component as
23+ well, like a server in your closet, Raspberry Pi, or laptop.
24+
25+ All of these entities are part of your _ virtual estate_ and are often
26+ intricately connected in various ways. As an example, you might have an SSH key
27+ or API token on your machine that grants access to repositories (a kind of
28+ digital asset) on Github. And suppose your machine also has an authorized key
29+ installed that allows access from another machine:
30+
31+ ```
32+ ┌──────────┐ SSH Key ┌──────────┐ API Token ┌───────────────────┐
33+ │Machine A ┼───────────►Machine B ┼─────────────► Github │
34+ └──────────┘ └──────────┘ │ │
35+ │ - Private repos │
36+ └───────────────────┘
37+ ```
38+
39+ If you care about those repos, then Sandpolis can map out an attack surface that
40+ includes both ` Machine A ` and ` Machine B ` . If ` Machine A ` happens to have a weak
41+ password or one that's shared with another website, then the attack surface is
42+ consequently expanded with appropriate probabilities.
43+
44+ Mapping these relationships automatically is possible because Sandpolis runs an
45+ agent on ` Machine A ` and ` Machine B ` (and has API access to Github).
46+
1847## Security Warning
1948
2049Sandpolis is an extremely high-value attack target as it provides management
@@ -27,23 +56,36 @@ available:
2756
2857- Users can be required to login with two-factor authentication codes.
2958
30- - User permissions can restrict what users are able to do and on what instances.
31-
32- - Agents can optionally run in _ read only_ mode which still provides useful
33- information, but prohibits all write operations. This can significantly
34- mitigate potential damage in the event of server compromise.
59+ - User permissions restrict what users are able to do and on what instances.
3560
3661Even with several layers of strong authentication, there's always risk that the
37- Sandpolis server can be compromised. If the risks of "single point of
38- compromise" outweigh the convenience of having a unified management interface,
39- then ** don't use Sandpolis** .
62+ Sandpolis server can be compromised. If the risks of introducing a "single point
63+ of compromise" outweigh the convenience of having a unified management
64+ interface, then ** don't use Sandpolis** .
65+
66+ You can choose how much trust you allocate to the Sandpolis network. For
67+ example, agents can optionally run in _ read only_ mode which still provides
68+ useful monitoring information, but prohibits all write operations (including
69+ agent updates). This can significantly mitigate potential damage in the event of
70+ server compromise.
4071
4172## Layers
4273
43- Features are organized into _ layers_ that can be toggled on/off in the UI.
74+ Features are organized into _ layers_ that can be toggled on/off in the UI. If
75+ you build Sandpolis from source, it's also easy to pick and choose what layers
76+ are included:
77+
78+ ``` sh
79+ # Build the Sandpolis server with remote desktop capabilities ONLY
80+ cargo build --no-default-features --features server --features layer-desktop
81+ ```
4482
4583### Account
4684
85+ Models online/offline accounts and their relationships to agent instances.
86+ Enables higher-order analysis of virtual estate like attack surface mapping and
87+ compromise tracing.
88+
4789### Alert
4890
4991Triggers user notifications when certain events are detected in the Sandpolis
@@ -57,24 +99,71 @@ Provides access to remote desktop capabilities.
5799### Filesystem
58100
59101Provides read/write access to agent filesystems. The Sandpolis client can also
60- mount a remote filesystem.
102+ mount an agent's filesystem.
61103
62104### Logging
63105
64106### Package
65107
66- Integrates with the package manager on agents to manages package versions.
108+ Integrates with package managers to monitor package versions.
67109
68110### Probe
69111
70112Probes are managable from the Sandpolis network, but don't run agent software.
71113Instead, a remote Sandpolis agent instance connects to probes over a standard
72114protocol like SSH, SNMP, Docker, etc.
73115
116+ You can interact with probes almost as if they were regular agents (as long as
117+ the gateway instance remains online).
118+
74119### Shell
75120
76121Provides an interactive remote shell.
77122
78123### Tunnel
79124
80125### User
126+
127+ ## Installation
128+
129+ <details >
130+ <summary >Crates.io</summary >
131+
132+ ![ Crates.io Total Downloads] ( https://img.shields.io/crates/d/sandpolis )
133+
134+ #### Install from crates.io
135+
136+ ``` sh
137+ cargo install sandpolis
138+ ```
139+
140+ </details >
141+
142+ <details >
143+ <summary >Docker</summary >
144+
145+ #### Install server from DockerHub
146+
147+ ![ Docker Pulls] ( https://img.shields.io/docker/pulls/sandpolis/server )
148+ ![ Docker Image Size] ( https://img.shields.io/docker/image-size/sandpolis/server )
149+ ![ Docker Stars] ( https://img.shields.io/docker/stars/sandpolis/server )
150+
151+ ``` yml
152+ # Docker compose
153+ services :
154+ sandpolis-server:
155+ image: sandpolis/server
156+ restart: unless-stopped
157+ ```
158+
159+ #### Install client from DockerHub
160+
161+ ![ Docker Pulls] ( https://img.shields.io/docker/pulls/sandpolis/client )
162+ ![ Docker Image Size] ( https://img.shields.io/docker/image-size/sandpolis/client )
163+ ![ Docker Stars] ( https://img.shields.io/docker/stars/sandpolis/client )
164+
165+ ``` sh
166+ alias sandpolis-client=" docker run --rm sandpolis/client"
167+ ```
168+
169+ </details >
0 commit comments