Defender for Linux vs Windows: Why One Size Fits All Cybersecurity Fails

Defender for Linux vs Windows: Why One Size Fits All Cybersecurity Fails

👁3views

Not automatically. Whether to run EDR on Linux depends on the workload and its residual risk. Linux is not immune, but containerised, immutable and restricted workloads already apply controls at build and deployment. An agent should only be added if it reduces more risk than the privilege, complexity and failure modes it introduces.

Article Summary
  • 1.
    What it is
    EDR on Linux is judged by the workload and its residual risk, not by a uniform coverage target. The article compares container, immutable and Kubernetes environments with traditional Windows estates and weighs what a privileged agent adds.
  • 2.
    Why it matters
    A privileged agent on every host adds code, privilege, complexity and a shared failure domain. The article argues that cost must be set against the risk it actually reduces beyond controls already in place.
  • 3.
    Key takeaway
    If architectural assumptions like read only filesystems and restricted privileges are documented but not enforced, enforcing them will often reduce more risk than installing an antivirus agent.
3,504 words · ~18 min read

A practical look at endpoint detection and response on Linux servers, containers and Kubernetes, and why the decision should start with the workload and its residual risk rather than a uniform coverage target.

1. When Did Linux Become Windows?

Security standards tend to be written for one operating model and then applied, with very little reflection, to every platform the organisation happens to run. It usually starts innocently enough with a policy that says every server must have endpoint protection, which becomes a requirement that every endpoint runs an EDR agent, which becomes a dashboard that every operating system must report into, until eventually someone in a governance forum asks, with a perfectly straight face, whether Microsoft Defender is installed on every Linux server.

I want to be clear up front that this is not an argument that Linux is somehow immune. Linux has vulnerabilities, it attracts serious attackers, and it can absolutely benefit from endpoint detection and response. The question I care about is narrower and, I think, more useful: does a privileged agent running continuously on every host reduce enough additional risk to justify its cost, its complexity and the new ways it can fail?

That question matters most for modern Linux infrastructure built around containers, immutable images, Kubernetes, restricted privileges and disposable workloads, because those environments have already moved a large share of their security controls into the delivery pipeline and the platform itself. So before we install another agent, we should be asking what residual risk we are actually addressing, and what evidence shows that Defender reduces it more effectively than the controls we already have.

2. Linux Is Not a Windows Server With a Different Logo

Windows and Linux arrived at production with different histories, different security mechanisms and very different deployment models. A traditional Windows estate is often a fleet of general purpose machines with interactive users, downloaded executables, desktop applications and a fairly permissive approach to software installation, and antivirus grew up in exactly that world, where the most likely way for something bad to arrive was a user running a file they should not have run.

A well engineered production Linux workload can look almost nothing like that. It may have no interactive users and no SSH access at all, no package installation at runtime, no compiler or development tooling, a read only filesystem and a minimal container image. It may have no direct internet exposure, no persistent local application data, a tightly defined process and network policy, and infrastructure that is automatically replaced rather than repaired when something looks wrong.

None of these properties stop an attacker from exploiting a vulnerable application and running code inside it, and I think it is important to say that plainly. What they do is severely constrain what that compromise can achieve once it happens. Immutable images, restricted capabilities, scoped workload identities and network policy reduce the actions available to an attacker and remove most of the usual routes to persistence, so runtime detection still matters, but the detection problem is fundamentally different from the one you face on a general purpose workstation. The corollary is equally important: if those properties are written in an architecture document but not actually enforced, then enforcing them will often reduce more risk than installing any agent could.

3. The Irony of Installing More Privileged Software to Make Linux Secure

One of the oldest principles in security engineering is that you reduce unnecessary attack surface, and every component you add brings its own code, dependencies, configuration, update mechanism and operational failure modes. Endpoint agents are not exempt from that principle simply because they carry the word security in their product name.

To inspect processes, files, network activity and system behaviour, an agent needs deep visibility into the operating system. Depending on the product and configuration, that means privileged services, kernel interfaces such as eBPF or the audit subsystem, filesystem hooks such as fanotify, and a steady stream of sensitive telemetry leaving the host. That visibility can be genuinely valuable, but it also means you have deployed another highly trusted component across your entire production estate, one that must stay healthy, receive updates, talk to management infrastructure and interact safely with the most sensitive parts of the system.

We do not need to speculate about what happens when this goes wrong. In July 2024 a malformed content update read by CrowdStrike’s Falcon kernel driver crashed what Microsoft estimated to be 8.5 million Windows devices, and while that failure was specific to a Windows kernel driver, the broader lesson about a single update reaching an entire fleet at once applies to any privileged agent on any platform. Earlier that same year, Red Hat documented kernel panics on RHEL 9.4 kernels triggered when the Falcon sensor loaded its eBPF program, which is a useful reminder that moving from kernel modules to eBPF improves the safety model without making it perfect. Microsoft has made the same architectural move with Defender on Linux, which now uses an eBPF sensor by default rather than a kernel module, and that is a sensible design choice; it reduces the risk without removing the shared failure domain.

So the relevant question is not whether the vendor is Microsoft, CrowdStrike, SentinelOne or anyone else. It is whether the additional detection and response capability reduces more risk than the software, privilege, complexity and failure modes it introduces, and that is an engineering question rather than a procurement or compliance one.

4. We Have Already Built a Different Security Model

Cloud native Linux environments can apply security at several layers, and the important point is that most of these layers act before an attacker ever reaches a running process.

flowchart LR
    A[Build time<br/>SBOMs, dependency and image scanning, signing] --> B[Deploy time<br/>admission policy, capabilities, seccomp, SELinux or AppArmor]
    B --> C[Runtime<br/>audit, eBPF observability, Falco, Tetragon, EDR]
    C --> D[Infrastructure<br/>cloud API detection, identity, rebuild from trusted source]

At build time, source code, dependencies, container images and infrastructure definitions can all be scanned before anything is deployed. Software bills of materials let you find vulnerable packages, embedded secrets and components that break policy, while signed artifacts combined with admission policies mean that an untrusted image simply does not get scheduled.

At deployment time, the platform can refuse privileged containers, restrict host mounts, insist on approved registries and strip Linux capabilities down to what the workload genuinely needs. Seccomp, SELinux, AppArmor, workload identity and network policy then constrain what the workload is allowed to do once it is running, which narrows the space an attacker has to work in long before any detection logic is involved.

At the infrastructure layer, cloud native services can detect unusual API activity, suspicious network patterns, credential abuse and configuration drift, and the environment can respond by replacing workloads, rotating credentials and rebuilding from trusted sources rather than trying to clean a compromised host.

The runtime layer deserves more care, because this is where the argument is easiest to get wrong. Linux gives you audit facilities, kernel security modules and eBPF based observability, and tools such as Falco and Tetragon can flag behaviour that departs from what a workload is expected to do. It would be convenient to present these as a lightweight Linux native alternative to EDR, but that would not survive contact with a kernel engineer, because many of them rely on the same underlying mechanisms, need similar privileges and carry similar operational risks. Replacing Defender with a different privileged runtime sensor does not make the concerns in the previous section disappear. The real distinctions are about capability, deployment model and operational consequence: whether the sensor understands containers and Kubernetes context, whether it can enforce as well as observe, whether it runs per node or per workload, how its policy is versioned alongside the application, and what happens to production when it fails.

No single one of these layers is sufficient on its own, but taken together they may already address much of the risk that an endpoint agent is meant to cover. That leaves a simple and slightly uncomfortable question for any rollout proposal: what attack can Defender detect or stop that our existing controls cannot? If the answer is meaningful and measurable, Defender may well be justified, and if it is not, the installation is very hard to defend as anything more than compliance coverage.

5. The Performance and Reliability Questions Nobody Wants to Ask

Security software has real operational costs, because agents consume CPU, memory, storage, network bandwidth and, perhaps most expensively, engineering attention. Filesystem scanning can add I/O, telemetry collection adds its own overhead, and agent updates can introduce compatibility problems with kernels and workloads that were working perfectly well the day before.

How much any of this matters depends on the workload, the configuration, the kernel and the agent implementation, and Microsoft itself publishes guidance on troubleshooting performance and configuring exclusions for Defender on Linux, noting that applications which touch a lot of CPU, disk and memory in a short window are the ones most likely to be affected. An overhead nobody notices on a desktop can become material on a high throughput service tuned to run close to its limits.

Think about a latency sensitive Java service where someone has spent months tuning garbage collection, thread pools, memory allocation, network paths and CPU utilisation. If you add a privileged process with continuous monitoring responsibilities to that host, you have to be able to answer what happens to p99 latency, where the CPU saturation point moves to, what happens during a scan or an agent update, what happens when the agent itself becomes unhealthy, and what happens when the management platform it reports to is unavailable.

I am not claiming that Defender necessarily causes unacceptable performance problems, because in many environments it will not. I am claiming that we need evidence, and that security controls should come with measured security benefits and measured operational costs. We insist on performance testing before an application change goes to production, so it seems reasonable to apply at least the same scrutiny to privileged software that will run on every production server we own.

6. Kubernetes Makes This Conversation Even More Interesting

Kubernetes separates security into several distinct domains: the underlying node, the container runtime, the container image, the application process, the control plane, workload identity, the network boundaries between workloads, and the software supply chain that produces all of it.

An EDR agent on a Linux node can give you useful host level visibility, and I would not dismiss that. It does not, however, secure the Kubernetes control plane, stop someone deploying a malicious workload through a legitimate pipeline, fix excessive IAM permissions or remove vulnerable dependencies from your application. In the other direction, image scanning will not stop runtime exploitation, credential theft or a malicious process spawned inside a container that passed every check at build time. Each control covers a different slice of the problem, which is exactly why mapping them matters.

The deployment model complicates things further. In managed services such as Amazon EKS, worker nodes may be replaced frequently, individual workloads may live for minutes rather than months, and some compute options, Fargate being the obvious example, give you no access to the underlying host at all, so a node level agent has nowhere to run.

The easiest way to see why one standard cannot fit every platform is to put the workload classes side by side:

WorkloadPrincipal concernPotential control strategy
Windows user workstationInteractive execution, phishing, persistenceEDR, application control, identity protection
Traditional Linux serverPrivilege escalation, persistence, lateral movementHost EDR, hardening, audit and detection
Immutable Kubernetes workloadRuntime exploitation, workload identity abuseAdmission policy, isolation, runtime detection
Managed container platformApplication compromise, cloud identity misusePlatform telemetry, workload controls, cloud detection
Ephemeral build runnerSupply chain compromise, secret theftIsolated builds, short lived credentials, artifact verification

Host EDR appears explicitly in only two of those rows, and that is the point. Different security architectures are not necessarily weaker security architectures; they are answers to different threat models.

7. The Difference Between Detection and Prevention

Security programmes often blur the line between detecting an attack and removing the conditions that made it possible, and I want to be careful here not to fall into the opposite trap of assuming prevention always works. A signed image, a read only filesystem and a tightly restricted container do not stop an attacker exploiting a vulnerable application and executing code in memory. Once inside, an attacker can steal the credentials the workload legitimately holds, abuse functionality the application is supposed to have, and communicate over network paths that policy explicitly permits, none of which looks like the classic malware behaviour that antivirus was built to find.

That is precisely why runtime detection remains valuable even in a beautifully engineered platform. The question is not whether to detect, but what detection needs to see. In a constrained workload, the most useful signals are deviations from expected behaviour: a process the image never runs, a syscall the profile never uses, an outbound connection to a destination the service has never called, or a workload identity suddenly making API calls it has never made before. Some of those signals come from the host, some from the runtime, and some only from the cloud control plane.

At the same time, many attacks that an endpoint agent would detect after the fact could have been prevented or contained earlier. The vulnerable dependency could have been caught before deployment, the application could have been prevented from spawning unexpected processes, the container could have run without the privileges it did not need, the sensitive credentials could have been out of reach, and network policy could have blocked the command and control traffic before it ever left the cluster. EDR should complement good platform engineering rather than compensate indefinitely for weak engineering.

8. The Security Dashboard Is Not the Security Architecture

Standardisation has genuine value, because it gives auditors, security teams and executives consistent evidence that is easy to consume. The problem is that a dashboard showing 100% endpoint protection coverage proves that an agent is installed, not that the organisation is secure.

A Linux workload without an EDR agent can be better protected, through immutable deployment, strong workload identity, runtime restrictions, comprehensive logging and solid detection engineering, than a poorly configured server that happens to be running Defender. The reverse is just as true: an unmanaged, long lived Linux server with interactive administration and a broad attack surface may benefit enormously from properly deployed EDR.

If agent installation rates are the wrong measure, we owe the auditors and the board a better one. Instead of asking what percentage of servers have Defender installed, I would rather we asked what percentage of production workloads run as non root with restricted privileges, what percentage of deployed artifacts have verified provenance, whether we can detect a runtime compromise within a defined time, whether we can revoke compromised workload credentials and rebuild affected workloads reliably, and whether we can demonstrate all of this through repeatable attack simulations. None of those metrics individually proves equivalence to EDR, but together, backed by threat specific testing and incident response evidence, they are far closer to security outcomes than a count of green icons.

9. But What About Actual Linux Attacks?

Linux is actively targeted, and anyone who tells you otherwise has not spent much time reading incident reports. Attackers exploit internet facing services, steal SSH credentials, abuse cloud identities, compromise containers, deploy cryptocurrency miners, install rootkits and establish persistence, and ransomware operators have increasingly turned their attention to Linux based virtualisation hosts and enterprise servers because that is where so much valuable infrastructure now lives.

In those circumstances, endpoint detection and response can be extremely valuable. Microsoft Defender for Endpoint on Linux is a supported product with malware protection and endpoint detection capabilities, within the limits of supported distributions, kernels, configurations and licensing, and it can surface telemetry and detections that other controls will miss.

For traditional, long lived Linux servers with interactive administration, third party software and broad exposure, Defender can be an entirely sensible defence in depth control. For a tightly controlled, immutable, single purpose workload, the case has to be made differently and on its own evidence. These are not equivalent systems, and treating them as if they were is simply poor security architecture.

10. Demonstrating Equivalent Controls

If an organisation wants to run an immutable Kubernetes workload without traditional host EDR, it should not get there by assertion; it should be able to show, with evidence, that the alternative controls deliver equivalent or better outcomes across the whole incident lifecycle. A simple way to structure that argument is to assess each stage separately:

StageWhat must be demonstratedEvidence that would convince me
PreventionUntrusted code and excessive privilege cannot reach productionAdmission policy enforcement reports, provenance verification, capability and non root compliance
DetectionRuntime compromise is identified within a defined timeResults from attack simulations mapped to MITRE ATT&CK, with measured time to detect
InvestigationAnalysts can reconstruct what happenedRetained process, network and cloud API telemetry, tested in a tabletop or purple team exercise
ContainmentA compromised workload can be isolated quicklyNetwork policy and identity revocation exercised in practice, not just documented
RecoveryAffected workloads can be rebuilt from trusted sourcesRebuild drills with measured recovery time and verified clean state

The same table works in the other direction. If host EDR is the proposed answer, it should be assessed against the same five stages, and the gap it closes should be visible in the results rather than assumed from the product category. That turns the conversation from a debate about vendors into a governance process that a risk committee or regulator can actually follow.

11. What I Would Ask Before Approving Defender on Linux

If a proposal landed on my desk to roll Defender out across a Linux production estate, these are the questions I would want answered before approving it:

  1. Which specific threats are we addressing? I want to see the attack techniques, mapped to something like MITRE ATT&CK, rather than a generic risk statement.
  2. What controls already exist? Map the build, deployment, identity, network and runtime protections we already have, so we are reasoning about the gap rather than the whole problem.
  3. What additional detection does Defender provide? Demonstrate the improvement through representative attack simulations against our own workloads, not vendor material.
  4. Why is Defender the best control for that gap? Compare it honestly with other runtime sensors, cloud native services and other EDR products, on capability and operational consequence rather than origin.
  5. What privileges does it require? Document exactly what access it has to hosts, processes, files and telemetry, and where that telemetry goes.
  6. What is the performance impact? Measure CPU, memory, I/O, throughput and tail latency under realistic production load.
  7. What are the failure modes? Assess crashes, failed updates, management plane outages and response actions that could disrupt production.
  8. How does it fit immutable infrastructure? Define how installation, configuration, updates, node replacement and image lifecycle will actually work.
  9. Who will respond to the alerts? Detection without investigation and response is just another source of noise.
  10. What measurable residual risk justifies the cost? Include licensing, operational overhead, performance impact and engineering complexity in the calculation.

If those questions have convincing answers, Defender may well be the right choice. If the only answer is that corporate policy requires antivirus on every server, then we are having a conversation about compliance coverage, and we should at least be honest that it is not a conversation about security architecture.

12. Security Should Follow the Architecture, Not the Vendor

Of course Defender runs on Linux; Microsoft supports it, and it has legitimate capabilities and legitimate use cases. The trouble starts when enterprise security programmes evolve around products, buying a platform, standardising on it and then slowly reshaping the infrastructure to suit the tool, which is exactly the wrong way round. The proper order is to start with the workloads, the threats, the existing controls and the residual risks, and only then choose the technologies that measurably reduce those risks. Sometimes that will be Defender, sometimes another EDR product or runtime sensor, sometimes stronger isolation, better identity controls or cloud native detection, and sometimes the right answer will be not to install another agent at all.

This is not about being against Microsoft, against agents or against EDR. It is about refusing to discard the real advances of modern infrastructure, minimal operating systems, immutable deployments, signed artifacts and controls embedded throughout the delivery lifecycle, simply because a compliance spreadsheet expects uniform endpoint coverage, while being equally willing to deploy endpoint security wherever the evidence shows it closes a material gap.

Security maturity is not measured by how consistently you deploy a product. It is measured by how effectively you reduce, detect and recover from risk.

References and Further Reading

Leave a comment

Your email address will not be published. Your first comment is held for approval.