I do use Linux (almost) exclusively, but I'm well aware of the security limitations.

Forget this keylogger. All you need is to somehow write a single line into .profile or .bashrc, which basically every executed program can do, and you own the user account. You can intercept every program with wrappers by changing PATH or adding desktop entries in .local/share/applications, extract all data from applications, use LD_PRELOAD like shown in the submission ... the possibilities are endless.

There isn't even a single decent dynamic firewall with those annoying popups.

Apart from SELinux, there is also firejail [1], which I use to sandbox browsers. Flatpak and Snap are also trying to solve both the packaging and the sandboxing aspect, with moderate success. They also increase the risk due to lack of centralized package ownership, so require a very solid sandbox.

The only reason why the Linux desktop is somewhat secure is the reliance on official package repos, the trustworthiness of the open source communities, and the and the relatively small target group.

I do believe that the path forward has to be Mac OS/Android/iOS style sandboxing - especially for everything not directly from an official repo, but there seems to be relatively little interest in the ecosystem.

Non Linux specific sidenote: ever notice how many VS Code extensions download random binaries from the net? Or just that they can execute arbitrary code? Compromising one of those could lead to some glorious returns for malicious actors, with potential access to lots of source code, credentials and internal networks.

Bottom line: if you touch any sensitive data or work with secure systems at all, you have to be extremely paranoid about your machine - no matter what OS you are on.

[1] https://firejail.wordpress.com/

> There isn't even a single decent dynamic firewall with those annoying popups.

even benign apps that phone home like pulumi and terraform are fun to see and block with annoying popups.

monitoring egress really is the only realistic play. i rolled my own[1], inspired by opensnitch[2].

netfilter_queue is really great, and definitely makes annoying popup dynamic firewalls possible.

1. https://github.com/nathants/tinysnitch 2. https://github.com/evilsocket/opensnitch