File integrity monitoring for a small online store
If you take card payments, you are probably already required to detect unauthorised changes to files on your server. Most small merchants do not, and most do not know they should.
File integrity monitoring watches a defined set of paths and alerts when their contents
change unexpectedly. For an online store the paths that matter are the web root, the payment
page and its scripts, system binaries, /etc configuration and authentication
files. PCI DSS Requirement 11.5 asks for exactly this, and Requirement 10 asks you to retain
the logs. The hard part is not installing it; it is scoping it so the alerts stay
meaningful enough that someone still reads them in month three.
Why card skimming is the reason this rule exists
The characteristic attack on a small store is not a dramatic breach. Someone modifies the checkout page, or a script it loads, so that card details are copied to a third party as the customer types them. Everything keeps working. Orders still complete. Nothing looks wrong from the outside, sometimes for months, and the first sign is your acquirer telling you that fraud has been traced back to your store.
File integrity monitoring exists because that change to that file is the earliest detectable moment in the whole sequence.
What to watch, and how hard
| Path | Why | Sensitivity |
|---|---|---|
| Web root and application code | Where a web shell or a skimmer lands. Any change here that you did not deploy is an incident until proven otherwise. | High |
| The payment page and its scripts | Card skimming works by modifying the page or the scripts it loads. This is the specific thing PCI DSS is worried about. | High |
| System binaries and libraries | Changes here mean something with root has modified the system. Rare, and serious when it happens. | High |
| Configuration under /etc | SSH config, firewall rules, cron, scheduled tasks, web server config. Persistence is usually established here. | High |
| Authentication files | Users, groups, sudoers, authorized_keys. A new key you did not add is the clearest possible signal. | High |
| Uploads and cache directories | Change constantly by design. Monitor for executable content, not for change itself, or you will drown. | Tuned |
The noise problem, which is the real problem
Most small FIM deployments are abandoned, and they are abandoned for the same reason: the default configuration alerts on every change everywhere, a cache directory generates two hundred events an hour, and within a fortnight nobody is reading any of it. At that point you are worse off than before, because you now believe you are covered.
Getting this right means treating directories differently. Code, system and configuration paths should alert on any unexpected change. Directories that are supposed to change (uploads, caches, session storage) should alert only on executable content appearing, which is the thing you actually care about there. And deployments need to be a known event, so your own releases do not look like intrusions.
What this does not do
It does not make you PCI DSS compliant. Compliance covers your policies, your people, your payment flow and your systems, and it is assessed against the scope your acquirer sets. FIM is one technical control inside that. It happens to be one of the ones small merchants most often lack entirely, but implementing a control and certifying compliance are different things, and anyone conflating them for you is selling something. More on where that line sits.
A free review tells you what is monitored, what is exposed and what your logs would show after an incident. Pricing.
Related: How to secure a VPS you just bought · Backups that actually restore