Reproducing a Microsoft corporate environment on Linux.
Most companies I've worked at where employees had a Microsoft work computers. They were under heavy control, even with admin privileges. I was wondering, for a corporate environment, how employees'Linux desktops could be kept under control in a similar way. What would be an open source or Linux based alternative to the following:
policy control
Software Center with software allow lists
controlled OS updates
zscaler
software detection tool to detect what's been installed and determine if any unallowed software is present
antivirus
VPN
I can think of a few things, like a company having it's own software repos, or using an atomic distribution. There's already open source VPN solutions if course. But for everything else I don't really know what could be used or what setup we could have.
Detecting "installed" software is iffy. Linux can have all kinds of things running on it that aren't "installed" as-such (same as Windows with portable EXEs, Linux has AppImage/etc). Excepting things like that, you can detect installed apps through the package managers (apt/pkg/yum/snap/etc).
OS updates in Debian-likes and Redhat-likes are controllable out of the box, but I'm not familiar with a way to prevent a user from doing them (other than denying them root access, which might make it hard for them to use the system, depending on what they need to do).
I've had a lot of good results with OpenVPN.
lol antivirus. Not saying Linux doesn't get viruses, or that there arent antiviruses for Linux, but the best way to avoid getting them is still to just avoiding stupid shit. Best thing I can offer is that if you have some kind of centralized storage, check that for compromised files frequently, and keep excellent backups. And make sure your firewalls and ACLs don't suck.
but the best way to avoid getting them is still to just avoiding stupid shit.
This is fine and dandy on a personal pc, but in a work environment you are now being actively targeted by malicious actors if your company is a good target.
Constantly.
So once you are in that zone you do need some fast acting reactive tools that keep watch for viruses.
You can restrict what gets installed by running your own repos and locking the machines to only use those (either give employees accounts with no sudo access, or have monitoring that alerts when repo configs are changed).
So once you are in that zone you do need some fast acting reactive tools that keep watch for viruses.
For anti-malware, I don't think there are very many agents available to the public that work well on Linux, but they do exist inside big companies that use Linux for their employee environments. For forensics and incident response there is GRR, which has Linux support.
Canonical may have some offering in this space, but I'm not familiar with their products.
The best methods to detect and prevent attacks on your endpoints are EDR software that are linked to your corporate router like FortiEDR, which supports Windows, Mac, Linux, and even some VDI like Citrix.
To get rid of Viruses, simply clean out all executable attachments in mails, mailcow and other solutions support that.
You can also mount /home nonexecutable, which means everything you can run needs to be on the system. Without that, "control over what is installed" is worthless. You could literally download any package, export the binary and run it from anywhere.
To run untrusted software, you can use a server that uses something like KASM. It is image-based, accessed through the browser, suppports uploading files and viewing lots of stuff. You can also run antivirus there, but as shown in this video antivirus is often simply tricked by encoding and re-encoding the scripts into something like Base64.
Antivirus really is flawed. You need to control the origins of code, and run all untrusted code in immutable VMs.
Excel sheets can be used without macros, i.e. executable code. Macros can be disabled in Libreoffice afaik, and this is likely possible via some sort of policy.
These are great things to try out and I want to experiment with it when I have time. For example not sure if policies work with flatpak, as users could be able to change them.
Antivirus is a joke, for sure you could run it, but it just doesnt work. It would be just there for the compliance, while you simply dont run any code, not even trusted code, that doesnt come from trusted repos like Fedora, Ubuntu or flathub-verified
Even if you assume that the software you run will never have exploitable security issues, AV can also keep you from spreading infected files e.g. through forwarded mails.
other than denying them root access, which might make it hard for them to use the system
If the user is even slightly knowledgeable, they can't all protection systems using sudo. That's a big no-no if you want top-notch security.
Source - I have broken my corporate's Linux-specific protection mechanisms.
If the user is even slightly knowledgeable, they can’t all protection systems using sudo. That’s a big no-no if you want top-notch security. Source - I have broken my corporate’s Linux-specific protection mechanisms.
I'm not 100% sure I'm getting what you were trying to say in that first sentence, but you realize that not all users have sudo privileges, and if your company left you with sudo that was a mistake, correct?
I meant that if a company wants to maintain the highest levels of security, the user should never be given access to sudo. If a certain workflow requires sudo, the workflow needs to be changed, or it needs to be done in a sanitized environment, or the user needs to be highly trusted.
one of the options in freeIPA/fleet commander is to configure sudo permission sets; you can set up rules for who can use sudo, for which binaries, and to run as which users. so it isn't all or nothing