As title says, i’m curious about the worst case scenario in which an attacker tries to hit my system.
The system configuration is the following: i have some services (important ones) accessible only trough VPN, like SSH (key-based auth only), Pihole…Others are publicly accessible, like Immich, Jellyfin (and so on…).Public ones are accessible via reverse proxy (Caddy) and protected by CrowdSec (which bans IPs outside my country and those failing auth 3 times).
What could happen if an attacker finds out a vulnerability on some public service? Would he be only able to access service’s files (like an appropriate login), or delete/encrypt data (as some cases of blackmail) or even pull out and steal my data?
I’m wondering this because i want to know if CrowdSec+Docker (to preserve permissions on the system) is enough to secure a server.
You are doing it wrong: SSH with key authentication is the most secure piece, and could even be public. Immich and Jellyfin surely have zero days and should be behind VPN
Could you elaborate more on immich and jellyfin? I suppose you’re referring to a brute force attack. Isn’t a geoip block + 3 fail attempt to be banned secure enough?
I’m referring to ZERO DAYs. OpenSSH is a serious security product. Those web apps are written by random people and probably riddled with vulnerabilities not known to public.
Here is the rule. Only a trusted vpn and ssh key authentication can be public.
Sorry for the misunderstanding. Perfectly right. Thanks for that
Attacker gains full or even partial control of your system(s) through a vulnerability, does some illegal stuff, swat team shows up and kills all the house inhabitants during the raid as there was a perceived threat.
Is that bad enough? I’m sure I can come up with something worse if needed.
The answer is, as always, it depends.
Some exploits allow the attacker access to the application (in which case they can do whatever the application allows them to do).
Some exploits allow the attacker to get shell access (in which case they can do anything the permissions of the user allow them to do).
Some exploits allow the attacker to get a root shell (in which case they can do almost anything).
Root exploits are much less common, and typically require much more skill, than application exploits. Getting root almost always requires exploiting an application, and then getting shell first.
This is why security people talk about “defence in depth”.
If your application is exploited, what can you do to make it as hard as possible for the attacker to get a shell. If they get a shell, what can you do to make it as hard as possible for them to get root. If they get root, what can you do to restrict the amount of damage they can do. If they do damage, how do you know what they’ve done and what can you do to repair it.
When people are relying on VPNs for security, they are building what security people refer to as the “crunchy on the outside, chewy on the inside” model. There’s no defence in depth, once the attacker is in … you’re screwed.
In a homelab, part of the fun is that we get to decide how much of this we can be bothered with. :-)