...

CloudLinux Site Isolation: More Secure Than CageFS in Shared Hosting

Site Isolation CloudLinux isolates individual websites within an account more strictly than CageFS and thus closes gaps that frequently occur in multi-site installations on shared hosting. I'll show you the differences, the security benefits in everyday use, and specific steps for how to make effective use of this feature.

Key points

  • Fine-grained insulation: Separation at the domain level prevents cross-domain access within a single account.
  • Separate Processes: Having separate PHP contexts for each site makes lateral movement more difficult.
  • Clean Cron Binding: Jobs are tied to the document root of the respective domain.
  • Multi-layer protection: CageFS isolates accounts; Site Isolation separates websites within an account.
  • Plannable Resources: LVE limits keep peak loads under control and ensure fast response times.

CageFS vs. Site Isolation: A Comparison of Architectures

With CageFS An account can see only its own files, sanitized system paths, and no third-party processes, which severely limits targeted spying. The Site Isolation It operates at a deeper level and creates a separate view of files and processes within the same account for each domain or subdomain. This means that a compromised installation loses direct access to neighboring projects, even if they are under the same login, which makes lateral movement significantly more difficult. Those who want a technical breakdown can find it via the CageFS File System quickly find the right benchmark. From a security and operational standpoint, separation at the domain level thus offers a crucial Role.

Why the Extra Layer Matters

Many agencies combine several WordPress—sites in a single large account, because it makes management and billing easier. However, without separation at the domain level, an outdated instance can access configuration files or paths from neighboring projects, which significantly increases the risk. This is exactly where Site Isolation and keeps the attack surface strictly within the respective document root. This minimizes collateral damage if a single project is compromised or a plugin has a vulnerability. This more precise scoping gives me time to harden affected sites without harming adjacent projects.

Day-to-Day Admin Tasks: Separation by Domain, Dedicated PHP Contexts

I activate Insulation I apply this selectively per domain or subdomain, thereby more tightly isolating particularly high-risk CMS instances. PHP handlers, FPM pools, and .ini settings run separately, which prevents compromised code from accessing processes on other sites. I automatically bind cron jobs to their respective document roots so that scripts cannot access external directories. When switching, CloudLinux gracefully terminates old processes of the affected domain and restarts them in an isolated context, ensuring that requests immediately pass through the new security barrier. This process minimizes downtime and leaves the other projects in the account unaffected, which noticeably improves operations safer does.

Interaction: CageFS, Symlink Protection, and LVE

CageFS What remains is the layer that separates accounts from one another, while site isolation decouples projects within a single account. Symlink protection and kernel mechanisms prevent typical workarounds involving symbolic links or path-based tricks. These layers interlock, making it difficult for attackers to move from one vulnerable site to the next. I benefit in two ways: On the one hand, the attack surface is reduced; on the other, maintenance tasks are clearly limited. Thus, the security model functions as a coordinated Multiple-system rather than a single measure.

Attack Scenarios: How Isolation Works in Practice

Outdated meetings Plug-ins On writable paths, webshells quickly end up in the file system and spy on configurations, unless something blocks them. Site isolation keeps access confined to the domain root, which prevents jumping to neighboring sites and slows down the use of stolen credentials. In agency accounts with many client projects, this separation also stops backdoors that would otherwise serve as a springboard. I also limit misconfigurations, such as overly permissive backup scripts, because the allowed path space is more restricted and clear is defined. This shifts the impact from „account-wide“ to „site-local,“ which simplifies response times and forensic analysis.

Performance and Reliability: Resources Clearly Separated

Many view CloudLinux primarily as Protection, but this separation has tangible effects on response times and predictability. LVE limits for CPU, RAM, I/O, and processes prevent individual sites from using up all resources and slowing down neighboring sites. This way, I can handle peak loads on a per-project basis without compromising security or putting the rest of the server at risk. In combination with cgroup v2 I allocate resources in a way that’s easy to track and keep a clearer eye on bottlenecks. This setup provides me with predictable performance metrics, especially for high-frequency CMS-Installations.

Implementation in Detail: Step-by-Step Procedure and Validation Checks

In practice, following a clear sequence ensures that the transitions go smoothly and no side effects occur. Here's how I do it:

  • Reviewing projects: Each domain/subdomain is assigned a unique document root without shared write paths.
  • Backups and Staging: Before activation, I back up files and databases and test isolation in a staging copy.
  • Enable isolation per domain: Depending on the control panel, I switch the site to its own PHP-FPM pool and separate the ini values.
  • Re-configure cron jobs: I run cron jobs from the respective document root and use only project-specific paths.
  • Symlink maintenance: I remove cross-links between projects or replace them with read-only artifacts when absolutely necessary.
  • Check for a graceful restart: After the switchover, I verify that old processes have been terminated and new ones have started properly.
  • Smoke Tests: I check login, caching, file uploads, webhooks, and CLI tasks (e.g., wp-cli) in each isolated context.

It's important that I strictly keep write paths (uploads, cache, sessions, tmp) separate for each site. Shared „assets“ folders are convenient, but they undermine isolation and make forensic analysis more difficult.

Permissions and Path Concept: How to Keep Sites Clearly Separated

More granular organization relies on clear file permissions and consistent paths. I follow these principles:

  • Document-Root as a boundary: Applications may write only within their root path.
  • Minimum permissions: Directories 750/755, files 640/644 – Special permissions only where technically necessary.
  • Harden configuration files: Set restrictive permissions on wp-config.php and related files, and, if possible, move them out of the web root (within the site context).
  • Temporary paths per site: Separate tmp and session directories for each domain, located within the respective context.
  • No shared vendor: I consistently avoid shared Composer „vendor“ trees across multiple projects.

In addition, I keep the ini settings for each site strict: I set `open_basedir`, `upload_tmp_dir`, and `disable_functions` on a per-project basis rather than making global compromises.

WordPress, TYPO3, and Others: Project-Specific Notes

With CMS stacks, the benefits quickly become apparent when I keep a few details in mind:

  • WordPress: Switch Cron to the actual system Cron so that jobs run in the site context; use wp-cli separately for each domain.
  • Multisite/Network: I avoid file-based cross-links between subsites; media offloading or dedicated buckets are more robust.
  • TYPO3/Drupal: Strictly separate write paths (var, public/fileadmin, sites/default/files) and maintain configuration includes on a per-project basis.
  • Cache/OPcache: Use a separate FPM pool with its own OPcache memory for each site so that warm caches do not interfere with one another.
  • Deployments: Generate build artifacts (Composer, Node) per project; avoid shared build directories.

Especially in highly modular projects („headless,“ multiple front ends), I deliberately define the boundaries: each front end is placed in its own, isolated context with clear interfaces.

Monitoring and Forensics: Visibility by Site

Isolating issues makes troubleshooting easier for me when I keep logs and metrics organized by domain:

  • Error and Access Logs by Site: How to Clearly Correlate 4xx/5xx Spikes with a Project.
  • PHP-FPM Slowlogs: Identify slow scripts on a per-site basis, without interference from other instances.
  • LVE Metrics: Monitor CPU, I/O, EP (Entry Processes), NPROC, and memory per site; detect limit hits early.
  • Alerts: Set thresholds for each project (e.g., a high number of 503/508 errors in a short period of time) to enable a targeted response.
  • Artifact Collection: When incidents occur, I only secure the affected site root—this speeds up analysis and reduces data shadows.

Because the boundaries are clear, I can identify evidence and indicators of compromise more quickly and implement countermeasures in a more targeted manner.

Performance Tuning by Site: Fine-Tuning Pools and Limits

Separate pools aren't just about security; they're also a way to fine-tune performance. I adjust them on a project-by-project basis:

  • pm mode: Dynamic or on-demand, depending on the traffic profile; cushion burst loads with a moderate reserve.
  • max_children: Bind to the number of concurrent requests and the site's memory budget, rather than using global default values.
  • OPcache size: Take the site's "warm set" into account; caches that are too small cause fragmentation and cold starts.
  • Timeouts: Adjust the connect/read timeouts for upstream services (APIs, databases) on a per-site basis to prevent freezes.
  • Static Offloading: Consistently serve static assets (e.g., via the web server cache) to reduce the load on PHP pools.

The result is a setup that absorbs peaks at each site without affecting neighboring sites. This makes response times reliable and predictable.

Limitations, Side Effects, and Troubleshooting

Isolation shifts responsibilities—this is intentional, but it requires mindfulness:

  • Shared Resources: Centralized upload or backup directories spanning multiple sites will no longer function without special configuration.
  • Legacy scripts: I'll update older deployment or maintenance scripts that use absolute account paths to use the site root instead.
  • Importer/Exporter: Tools that can be accessed across site boundaries must be replaced or strictly operated on a per-domain basis.
  • Error codes: 503/504 often indicate pool exhaustion or an upstream hang; 508 indicates that the site has reached its LVE limit.
  • Rollbacks: I maintain separate backups for each site and test restores to ensure there are no unintended consequences.

When projects are intended to share data intentionally, I design well-defined, read-only interfaces instead of direct file access via paths.

Pre-Activation Checklist

  • Does every domain/subdomain have a unique document root that cannot be written to from outside?
  • Have cron jobs, CLI tools, and deployment scripts been updated to use site paths?
  • Are write paths (uploads, cache, tmp, sessions) separated for each site?
  • Have FPM pools, ini values, and OPcache sizes been defined for each site?
  • Are there function-tested backups for each project, including the database?
  • Have symbolic links and includes between sites been removed or restricted to read-only access?
  • Are there metrics and alerts per site for error rates and resources?

This list helps me minimize surprises when switching over and ensures that isolation is effective from day one.

Best Practices for Agencies and Project Owners

I'll ask the provider specifically about Site Isolation and CageFS, because these features provide true isolation in shared environments. I treat each website as its own instance with a separate code path, credentials, and deployment, rather than maintaining mixed codebases. I keep updates for the core, themes, and plugins on a tight schedule so that known vulnerabilities don’t remain unpatched. I assign access rights strictly based on roles and separate logins when different people access different projects. To dig deeper, I often find it helpful to take a look at Per-Site Isolation, in order to plan and implement your own stack effectively.

Choosing a Hosting Package: Identifying Quality Features

I don't stare at Storage space Don’t just focus on traffic—check security features and isolation concepts right from the start. Providers offering CloudLinux, CageFS, and Site Isolation deliver tangible added value for multi-site accounts. Those who rely solely on simple chroot mechanisms leave backdoors open, which can be risky in mixed projects. Clear resource budgets are also important to ensure predictable performance and response times. E-commerce sites, corporate websites, and professional blogs benefit particularly from this, as downtime and side effects can be costly and Reputation cost.

Implementation: Activation and Graceful Restarts

In practice, I activate Insulation where projects operate independently or carry increased risk, such as in the case of numerous extensions. After the switch, CloudLinux gracefully terminates the domain’s old PHP processes and restarts them in the new context, ensuring that requests continue to run smoothly. Dedicated FPM pools per site make it easier to tune memory limits, opcache, and max_children without side effects. I assign cron entries to the respective domain so that scheduled scripts do not access external paths. Together, these steps result in a setup that is easy to maintain and significantly reduces downtime. lowers.

Comparison Table: CageFS and Site Isolation at a Glance

The following comparison shows the Differences A comparison between CageFS and Site Isolation based on typical administrative questions. I focus on visibility, process encapsulation, cron handling, resources, and typical use cases. This comparison helps me structure my decisions and priorities for new accounts. Those who run many independent sites within a single account benefit more from the finer separation. Individual accounts with only one installation work well with both mechanisms, but Site Isolation provides additional Security for growth.

Aspect CageFS (account level) Site Isolation (Domain Level)
Visibility View only your own account files View by domain/subdomain
Processes Shared Processes per Account Separate PHP contexts and FPM pools per site
Cron Jobs Can apply account-wide Linked to the site's document root
Lateral movement Navigation between sites is possible Infidelity is severely restricted
Operational scenario Clear Account Separation Multi-Site Accounts with Clear Demarcation

Summary: The Domain Level as a Security Lever

CloudLinux Site Isolation extends the familiar account isolation provided by CageFS to include per-domain separation, which significantly secures multi-site accounts. This keeps attacks and misconfigurations confined to a single site and prevents a vulnerable project from affecting neighboring sites. Separate PHP contexts, bound cron jobs, and symlink protection form a coordinated security strategy that also makes operations more predictable. Combined with LVE and cgroup v2, I get clear resource budgets and keep peak loads under control for each project. Anyone who takes shared hosting seriously should actively incorporate site isolation—this additional layer reduces risk, minimizes downtime, and strengthens the Reliability entire environments.

Current articles

Server racks with symbolically isolated websites in a CloudLinux environment
Security

CloudLinux Site Isolation: More Secure Than CageFS in Shared Hosting

CloudLinux Site Isolation provides additional protection in shared hosting compared to CageFS by isolating individual websites within an account. This domain-based separation significantly enhances CloudLinux security and effectively protects multi-site installations.