You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/cloud-amazon-ec2.md
+3-2
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ Addtional configurations are documented in the [EC2 section of the deploy from a
18
18
19
19
In the AWS console, find the policies menu: click Services > IAM > Policies. Click Create Policy.
20
20
21
-
Here, you have the policy editor. Switch to the JSON tab and copy-paste over the existing empty policy with [the minimum required AWS policy needed for Algo deployment](https://github.com/trailofbits/algo/blob/master/docs/deploy-from-ansible.md#minimum-required-iam-permissions-for-deployment).
21
+
Here, you have the policy editor. Switch to the JSON tab and copy-paste over the existing empty policy with [the minimum required AWS policy needed for Algo deployment](https://github.com/trailofbits/algo/blob/master/docs/deploy-from-ansible.md#minimum-required-iam-permissions-for-deployment).
22
22
23
23
When prompted to name the policy, name it `AlgoVPN_Provisioning`.
24
24
@@ -69,7 +69,7 @@ $ ./algo
69
69
9. OpenStack (DreamCompute optimised)
70
70
10. CloudStack (Exoscale optimised)
71
71
11. Linode
72
-
12. Install to existing Ubuntu 18.04 or 20.04 server (for more advanced users)
72
+
12. Install to existing Ubuntu server (for more advanced users)
73
73
74
74
Enter the number of your desired provider
75
75
: 3
@@ -125,4 +125,5 @@ Enter the number of your desired region
125
125
You will then be asked the remainder of the standard Algo setup questions.
126
126
127
127
## Cleanup
128
+
128
129
If you've installed Algo onto EC2 multiple times, your AWS account may become cluttered with unused or deleted resources e.g. instances, VPCs, subnets, etc. This may cause future installs to fail. The easiest way to clean up after you're done with a server is to go to "CloudFormation" from the console and delete the CloudFormation stack associated with that server. Please note that unless you've enabled termination protection on your instance, deleting the stack this way will delete your instance without warning, so be sure you are deleting the correct stack.
* Enables AppArmor, limits CPU and memory access, and drops user privileges
61
-
* Builds a Certificate Authority (CA) with [easy-rsa-ipsec](https://github.com/ValdikSS/easy-rsa-ipsec) and creates one client certificate per user
62
-
* Bundles the appropriate certificates into Apple mobileconfig profiles for each user
- Enables AppArmor, limits CPU and memory access, and drops user privileges
61
+
- Builds a Certificate Authority (CA) with [easy-rsa-ipsec](https://github.com/ValdikSS/easy-rsa-ipsec) and creates one client certificate per user
62
+
- Bundles the appropriate certificates into Apple mobileconfig profiles for each user
63
63
- role: dns_adblocking
64
-
* Installs DNS encryption through [dnscrypt-proxy](https://github.com/jedisct1/dnscrypt-proxy) with blacklists to be updated daily from `adblock_lists` in `config.cfg` - note this will occur even if `dns_encryption` in `config.cfg` is set to `false`
65
-
* Constrains dnscrypt-proxy with AppArmor and cgroups CPU and memory limitations
64
+
- Installs DNS encryption through [dnscrypt-proxy](https://github.com/jedisct1/dnscrypt-proxy) with blacklists to be updated daily from `adblock_lists` in `config.cfg` - note this will occur even if `dns_encryption` in `config.cfg` is set to `false`
65
+
- Constrains dnscrypt-proxy with AppArmor and cgroups CPU and memory limitations
66
66
- role: ssh_tunneling
67
-
* Adds a restricted `algo` group with no shell access and limited SSH forwarding options
68
-
* Creates one limited, local account and an SSH public key for each user
67
+
- Adds a restricted `algo` group with no shell access and limited SSH forwarding options
68
+
- Creates one limited, local account and an SSH public key for each user
69
69
- role: wireguard
70
-
* Installs a [Wireguard](https://www.wireguard.com/) server, with a startup script, and automatic checks for upgrades
71
-
* Creates wireguard.conf files for Linux clients as well as QR codes for Apple/Android clients
70
+
- Installs a [Wireguard](https://www.wireguard.com/) server, with a startup script, and automatic checks for upgrades
71
+
- Creates wireguard.conf files for Linux clients as well as QR codes for Apple/Android clients
72
72
73
73
Note: The `strongswan` role generates Apple profiles with On-Demand Wifi and Cellular if you pass the following variables:
74
74
@@ -96,7 +96,7 @@ Required variables:
96
96
- do_token
97
97
- region
98
98
99
-
Possible options can be gathered calling to https://api.digitalocean.com/v2/regions
99
+
Possible options can be gathered calling to <https://api.digitalocean.com/v2/regions>
-[image](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-images.html) - AMI `describe-images` search parameters to find the OS for the hosted image. Each OS and architecture has a unique AMI-ID. The OS owner, for example [Ubuntu](https://cloud-images.ubuntu.com/locator/ec2/), updates these images often. If parameters below result in multiple results, the most recent AMI-ID is chosen
-[owners] - The operating system owner id. Default is [Canonical](https://help.ubuntu.com/community/EC2StartersGuide#Official_Ubuntu_Cloud_Guest_Amazon_Machine_Images_.28AMIs.29) (Default: 099720109477)
121
123
-[arch] - The architecture (Default: x86_64, Optional: arm64)
122
-
-[name] - The wildcard string to filter available ami names. Algo appends this name with the string "-\*64-server-\*", and prepends with "ubuntu/images/hvm-ssd/" (Default: ubuntu-focal-20.04)
124
+
-[name] - The wildcard string to filter available ami names. Algo appends this name with the string "-\*64-server-\*", and prepends with "ubuntu/images/hvm-ssd/" (Default: Ubuntu latest LTS)
123
125
-[instance_market_type](https://aws.amazon.com/ec2/pricing/) - Two pricing models are supported: on-demand and spot. String (Default: on-demand)
124
-
* If using spot instance types, one additional IAM permission along with the below minimum is required for deployment:
126
+
- If using spot instance types, one additional IAM permission along with the below minimum is required for deployment:
127
+
125
128
```
126
129
"ec2:CreateLaunchTemplate"
127
130
```
128
131
129
-
#### Minimum required IAM permissions for deployment:
132
+
#### Minimum required IAM permissions for deployment
130
133
131
134
```
132
135
{
@@ -232,7 +235,7 @@ Required variables:
232
235
233
236
Possible options can be gathered via cli `aws lightsail get-regions`
234
237
235
-
#### Minimum required IAM permissions for deployment:
238
+
#### Minimum required IAM permissions for deployment
Copy file name to clipboardExpand all lines: docs/deploy-from-docker.md
+15-6
Original file line number
Diff line number
Diff line change
@@ -13,28 +13,36 @@ While it is not possible to run your Algo server from within a Docker container,
13
13
2. Create a local directory to hold your VPN configs (e.g. `C:\Users\trailofbits\Documents\VPNs\`)
14
14
3. Create a local copy of [config.cfg](https://github.com/trailofbits/algo/blob/master/config.cfg), with required modifications (e.g. `C:\Users\trailofbits\Documents\VPNs\config.cfg`)
15
15
4. Run the Docker container, mounting your configurations appropriately (assuming the container is named `trailofbits/algo` with a tag `latest`):
16
-
- From Windows:
16
+
17
+
- From Windows:
18
+
17
19
```powershell
18
20
C:\Users\trailofbits> docker run --cap-drop=all -it \
19
21
-v C:\Users\trailofbits\Documents\VPNs:/data \
20
-
trailofbits/algo:latest
22
+
ghcr.io/trailofbits/algo:latest
21
23
```
22
-
- From Linux:
24
+
25
+
- From Linux:
26
+
23
27
```bash
24
28
$ docker run --cap-drop=all -it \
25
29
-v /home/trailofbits/Documents/VPNs:/data \
26
-
trailofbits/algo:latest
30
+
ghcr.io/trailofbits/algo:latest
27
31
```
32
+
28
33
5. When it exits, you'll be left with a fully populated `configs` directory, containing all appropriate configuration data for your clients, and for future server management
29
34
30
35
### Providing Additional Files
36
+
31
37
If you need to provide additional files -- like authorization files for Google Cloud Project -- you can simply specify an additional `-v` parameter, and provide the appropriate path when prompted by `algo`.
32
38
33
39
For example, you can specify `-v C:\Users\trailofbits\Documents\VPNs\gce_auth.json:/algo/gce_auth.json`, making the local path to your credentials JSON file `/algo/gce_auth.json`.
34
40
35
41
### Scripted deployment
42
+
36
43
Ansible variables (see [Deployment from Ansible](deploy-from-ansible.md)) can be passed via `ALGO_ARGS` environment variable.
37
44
_The leading `-e` (or `--extra-vars`) is required_, e.g.
45
+
38
46
```bash
39
47
$ ALGO_ARGS="-e
40
48
provider=digitalocean
@@ -50,19 +58,20 @@ $ ALGO_ARGS="-e
50
58
$ docker run --cap-drop=all -it \
51
59
-e "ALGO_ARGS=$ALGO_ARGS" \
52
60
-v /home/trailofbits/Documents/VPNs:/data \
53
-
trailofbits/algo:latest
61
+
ghcr.io/trailofbits/algo:latest
54
62
```
55
63
56
64
## Managing an Algo Server with Docker
57
65
58
66
Even though the container itself is transient, because you've persisted the configuration data, you can use the same Docker image to manage your Algo server. This is done by setting the environment variable `ALGO_ARGS`.
59
67
60
68
If you want to use Algo to update the users on an existing server, specify `-e "ALGO_ARGS=update-users"` in your `docker run` command:
Copy file name to clipboardExpand all lines: docs/deploy-to-ubuntu.md
+4-1
Original file line number
Diff line number
Diff line change
@@ -9,14 +9,17 @@
9
9
You can use Algo to configure a pre-existing server as an AlgoVPN rather than using it to create and configure a new server on a supported cloud provider. This is referred to as a **local** installation rather than a **cloud** deployment. If you're new to Algo or unfamiliar with Linux you'll find a cloud deployment to be easier.
10
10
11
11
To perform a local installation, install the Algo scripts following the normal installation instructions, then choose:
12
+
12
13
```
13
-
Install to existing Ubuntu 18.04 or 20.04 server (for more advanced users)
14
+
Install to existing Ubuntu latest LTS server (for more advanced users)
14
15
```
16
+
15
17
Make sure your target server is running an unmodified copy of the operating system version specified. The target can be the same system where you've installed the Algo scripts, or a remote system that you are able to access as root via SSH without needing to enter the SSH key passphrase (such as when using `ssh-agent`).
16
18
17
19
## Inbound VPN Server (also called "Road Warrior" setup)
18
20
19
21
Some may find it useful to set up an Algo server on an Ubuntu box on your home LAN, with the intention of being able to securely access your LAN and any resources on it when you're traveling elsewhere (the ["road warrior" setup](https://en.wikipedia.org/wiki/Road_warrior_(computing))). A few tips if you're doing so:
22
+
20
23
- Make sure you forward any [relevant incoming ports](/docs/firewalls.md#external-firewall) to the Algo server from your router;
21
24
- Change `BetweenClients_DROP` in `config.cfg` to `false`, and also consider changing `block_smb` and `block_netbios` to `false`;
22
25
- If you want to use a DNS server on your LAN to resolve local domain names properly (e.g. a Pi-hole), set the `dns_encryption` flag in `config.cfg` to `false`, and change `dns_servers` to the local DNS server IP (i.e. `192.168.1.2`).
Copy file name to clipboardExpand all lines: docs/deploy-to-unsupported-cloud.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
Algo officially supports the [cloud providers listed here](https://github.com/trailofbits/algo/blob/master/README.md#deploy-the-algo-server). If you want to deploy Algo on another virtual hosting provider, that provider must support:
4
4
5
-
1. the base operating system image that Algo uses (Ubuntu 18.04 or 20.04), and
5
+
1. the base operating system image that Algo uses (Ubuntu latest LTS release), and
6
6
2. a minimum of certain kernel modules required for the strongSwan IPsec server.
7
7
8
8
Please see the [Required Kernel Modules](https://wiki.strongswan.org/projects/strongswan/wiki/KernelModules) documentation from strongSwan for a list of the specific required modules and a script to check for them. As a first step, we recommend running their shell script to determine initial compatibility with your new hosting provider.
Copy file name to clipboardExpand all lines: docs/faq.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -17,7 +17,7 @@
17
17
18
18
## Has Algo been audited?
19
19
20
-
No. This project is under active development. We're happy to [accept and fix issues](https://github.com/trailofbits/algo/issues) as they are identified. Use Algo at your own risk. If you find a security issue of any severity, please [contact us on Slack](https://empireslacking.herokuapp.com).
20
+
No. This project is under active development. We're happy to [accept and fix issues](https://github.com/trailofbits/algo/issues) as they are identified. Use Algo at your own risk. If you find a security issue of any severity, please [contact us on Slack](https://slack.empirehacking.nyc).
0 commit comments