12 Commits

Author SHA1 Message Date
tomFlowee c0f579ff6d add VPN feature
This allows a jail to have a VPN config associated and as a result we start
a new net namespace, completely isolating the jails networking.
We then start an openVPN client to route between the main network and the
jails' network.

The main limitation here is that we don't setup DNS, which basically means
that the VPN will route DNS calls to the other side, but since we don't
remount resolv.conf this depends on the vpn provider actually mapping the
nameserver we use. For people that use a nameserver like 192.168.100.1,
this most of the time works just fine.

Improvement is possible.
2026-04-11 15:06:44 +02:00
tomFlowee d046c171f6 New feature; add encrypt-at-rest
When a jail is encryted at rest using 'encfs' we detect that and ask for
a password upon starting the jail.

This sounded like a neat little idea which ended up taking nearly 4 days
to do...
EncFS needs to be running as root, as it is a FUSE system and it will
actually stop root from reading/writing files if it is running as a
user. It also is very picky about not running in a namespace, it manages
to hang indefinitely otherwise where a shutdown can't complete because
the process doesn't want to die :-)

So, it runs as root, takes the password via a pipe and we have a
watchdog proces to kill it when the jail is shut down.
2024-05-20 22:21:03 +02:00
tomFlowee ba4ba341ad Show path to exe in listing
Calling `iso -lv` shows a listing of all profiles, this will now include
the path to the executable in profiles where it isn't instantly obvious.
2024-03-06 12:24:14 +01:00
tomFlowee 771bf8d4f7 Fix exe-paths in my homedir. 2024-03-06 11:48:16 +01:00
tomFlowee 151b874a8e Add 'autodelete' and 'secure' arguments
When starting a new application for the first time you can
start them with these two feature.

Autodelete:
  this waits until the iso-pipe file is removed by the jailer,
  which it does when all processes stopped,
  and then proceeds to remove all files for the jail.

Secure:
  Puts all known rights in the 'denied' list, making the jail
  quite secure. Not a VM or a docker, but close.
2024-02-25 23:29:33 +01:00
tomFlowee 53e434769d Improve details reporting
Include proper start time and 'is running' information in the iso cli
app.
2024-02-25 20:52:04 +01:00
tomFlowee f7c9347c4c Process data sent from runner to listener
The pipe was always there, but we didn't really use it so far.
This now uses the pipe to send back the PID of the 'jailer' which we
store in a 'state' file.
2024-02-25 19:22:08 +01:00
tomFlowee b6192288f4 Have more expressive profile listing 2024-02-25 16:21:41 +01:00
tomFlowee b826503d86 Add init-script feature
When the profile has an init-script, we execute that with bash _before_
the actual executable is started.

This allows things like preparing the jail for a fresh run every time.

Notice that adding a second app in the same running jail skips the init
script.
2024-02-24 11:40:42 +01:00
tomFlowee 7260988bcf Rename listApps to listProfiles
Also more docs
2024-02-20 21:57:05 +01:00
tomFlowee 5e689f34de Introduce app-aliases
This moves the primary key for a 'jail' to no longer be the executable
path, but instead a name.
In many cases that string will be based on the executable path, for
instance it will take the filename if the exe lives in /bin or /usr/bin
so in that respect nothing will change.

What this does allow is that you can have two different profiles that
both map to the same executabe. Allowing for instance having two
completely isolated instances running of telegram or of firefox.
2024-02-19 19:52:24 +01:00
tomFlowee ce7046efa2 Rename from 'securityManager' to 'IsolationRunner'.
The defaults are not 'secure', as they would be annoying to the max.
This is an isolation runner, removing a lot of attack vectors, for sure
but the name would give the wrong impression with defaults like we have
now.
2024-02-19 12:54:52 +01:00