Linux 软件免费装

Vokull Security Center

开发者 glogger
更新时间 2026年8月28日 01:40
PHP版本: 8.1 及以上
WordPress版本: 7.1
版权: GPL-2.0-or-later
版权网址: 版权信息

标签

security activity log audit log two-factor passkeys

下载

1.8.0 1.7.0

详情介绍:

Vokull Security Center ("vökull" is Icelandic for "vigilant/watchful") watches the things an attacker actually has to touch in order to keep a foothold in a WordPress site, records them in a searchable log, and e-mails you immediately when something matters. It is built around two goals that pull against each other: miss as little as possible, and produce as few false alarms as possible. Every event type can be set individually to immediate e-mail, log only, or off. Login blocking always starts in monitor mode so you can see what a rule would have done before you arm it. What is monitored A separate Hardening screen reports the current posture — file editor, permissions, salts, updates, HTTPS, two-factor coverage and more — against the official WordPress hardening guide, linking to it at each point. The plugin never modifies, quarantines or deletes a scanned file. It reports, and leaves recovery to you. Hardening report A read-only screen grading this installation against the official WordPress hardening guide, with a link to the relevant section of that guide on every check. Twenty-two checks covering the dashboard file editor and DISALLOW_FILE_MODS, file permissions, wp-config.php location and permissions, authentication salts, error output, core and extension updates, unused plugins and themes, administrator count, open registration, HTTPS, two-factor coverage, XML-RPC, alerting, file monitoring and backups. Checks are graded Good, Fix this, Worth fixing — or "Your call", for the ones that genuinely depend on how the site is run rather than having a right answer. Nothing on the page changes anything. Two-factor authentication: passkeys or an authenticator app Two independent second factors, and an account may hold either or both. Whichever is used, the session is issued only after the factor is proven — never before. Enrolment is per account and voluntary by default; a site setting can require a second factor for administrators, with a grace period whose clock starts when you switch the requirement on. Either factor satisfies it. Username + password │ ▼ WordPress accepts the password │ ▼ Does the account have a second factor? │ ├── Passkey ────► Face ID / Touch ID / Hello ──┐ │ │ ├── TOTP ───────► six digits from the app ─────┤ │ │ └── Recovery ───► one of ten single-use codes ─┤ │ ▼ Login Passkeys. A WebAuthn credential held by the phone, laptop, hardware key or password manager that created it. There is nothing to type, nothing to read out over the phone to someone claiming to be support, and the browser will only ever offer the passkey to your exact domain — so a convincing copy of your login page gets nothing. Only a public key is stored on the site; the private half never leaves the device. Users can register several and see when each was last used. If an authenticator that keeps a signature counter ever repeats a value — what a cloned key looks like — that is logged and mailed to you. Passwordless sign-in. On an HTTPS site you can additionally allow a passkey to sign in on its own, with no password at all. It is off by default, because it is a second way into the site and that is a decision worth taking deliberately. The authenticator must verify the user (fingerprint, face or PIN), and country rules, the IP deny list and the kill switch all still apply. Authenticator apps. The familiar six digits from any TOTP app. Shared secrets are encrypted with AES-256-GCM under a key derived from the site salts, so a database dump without wp-config.php is useless. Each code is accepted once, so a code read over your shoulder cannot be replayed. The QR code is drawn on your own server — the secret is never sent to an external QR service. Recovery, in order: ten single-use recovery codes, issued the first time any factor is switched on and shown once; the other factor, if the account has both; optionally a one-time code mailed to the account address; and failing everything, a reset by another administrator. No part of this contacts anything outside your own site. Passkeys are a conversation between the browser and this server; the WebAuthn library is bundled with the plugin. Geo-aware login control Country is resolved from your CDN or reverse proxy's country header when the request demonstrably came through it, otherwise from a local MaxMind GeoLite2 database. No external API is called during login. X-Forwarded-For is only trusted when the connecting address is in your configured trusted-proxy list, so the client IP cannot be spoofed. Because locking yourself out is the real risk, there are four independent ways back in: monitor mode is the default, an IP/CIDR allow list is exempt from blocking, a wp-config.php constant disables blocking outright, and every blocked login e-mails you a single-use, time-limited link that unblocks your current IP. Administrator-only The plugin adds no front-end output, no REST routes and no shortcodes. Its menu, notices, assets and actions all require the manage_options capability, and a blocked login is indistinguishable from an ordinary wrong password. The one exception is two-factor enrolment: that belongs to the account holder, so every signed-in user finds a Two-factor entry in their own profile menu and can set up a passkey or an authenticator app there. Nothing else about the plugin becomes visible to them. About the name "Vökull" is Icelandic for "vigilant", "watchful". Which is fairly close to the entire job description: watch, and say something the moment it matters.

安装:

  1. Install it from the Plugins screen, or upload the release ZIP under Plugins > Add New > Upload Plugin. If you take the ZIP from GitHub, use the vokull-security-center.zip release asset and not the "Download ZIP" source archive: the source archive carries no vendor/ directory and unpacks under a branch-suffixed directory name, which breaks country lookups and updates.
  2. The plugin directory must be named vokull-security-center. It is the plugin slug, and updates are matched against it.
  3. Activate it. WordPress Multisite is not supported and activation will stop with an explanation.
  4. Open Security Center → Settings and set your alert recipients.
  5. For country-based rules, add a MaxMind GeoLite2 licence key (free) and download the database, or configure your CDN's country header.
  6. Leave blocking in monitor mode for a few days, review the log, then arm it.

升级注意事项:

1.8.0 Adds passkeys as a second factor alongside authenticator apps, and optional passwordless sign-in. Nothing to do after updating: existing two-factor setups are untouched and passkeys are opt-in per account. On an HTTPS site, users will find "Add a passkey" on their Two-factor screen. 1.7.0 Sentinel Security Center is now Vokull Security Center. Settings, log and baselines are preserved. One manual step: the main plugin file was renamed, so WordPress leaves the plugin switched off after updating — activate it again on the Plugins screen. 1.6.6 Documentation and housekeeping only, with no functional change and nothing to do after updating. The readme now spells out the two external services the plugin can contact, what each request sends, and when. 1.6.5 Adds an alert for plugins that have an update waiting. Nothing is e-mailed until you set that event to e-mail under Settings; until then it is written to the log like any other event. 1.6.0 The plugin no longer updates itself from GitHub; updates come through WordPress.org from this version on. Install this one through the update offer as it stands, or by uploading the ZIP. WPSEC_GITHUB_TOKEN, if you set it, can be removed from wp-config.php. 1.5.2 Fixes "Check again" reporting no update for hours after one was published. The fix only takes effect once this version is installed: to see it now, use the plugin's update offer as it stands, or clear the wpsec_gh_release transient. 1.5.1 A build-tooling fix with no functional change from 1.5.0. Nothing to do after updating. 1.5.0 Packaging and metadata only: no functional change, and nothing to do after updating. 1.4.0 A rename and nothing else: WP Security Center is now Sentinel Security Center. Settings, log and baselines are preserved. One manual step: the main plugin file was renamed, so WordPress leaves the plugin switched off after the update. Nothing is monitored until you activate it again. 1.3.0 Adds an IP deny list on the Login & Location tab; nothing changes until you put an address in it. Also fixes the plugins screen offering an update that is already installed, and lets the log search box find rows by event type, IP address and time rather than only by description. 1.2.0 Start at the Hardening screen: it grades this installation against the official WordPress hardening guide and says what to change. Adds optional two-factor authentication — nothing changes for anyone until a user enrols, or until you require it in Settings. Also fixes three false alarms. 1.1.1 Required if your copy of this plugin is hosted in a private GitHub repository: without it, automatic updates are detected but cannot be downloaded. Install this version once by hand, and every later update will work on its own. 1.1.0 The first release that actually does anything. Review Settings after upgrading: alerts are off until recipients are set, and login blocking stays in monitor mode until you arm it. 1.0.0 Initial release.

常见问题:

Do passkeys need anything special?

An HTTPS site and a reasonably current browser. Nothing else: no service to sign up for, no key to configure, no traffic leaving your server. If the site is not on HTTPS the feature does not offer itself, because browsers refuse to create a passkey over a plain connection. A passkey is bound to your domain. On a subdomain multisite, one registered on a.example.com will not work on b.example.com.

Should users have a passkey or an authenticator app?

A passkey, if the device allows it — it is the only second factor that cannot be typed into a fake login page. But there is no need to choose: an account can hold both, and either one gets you in. Whichever comes first also issues the recovery codes.

What happens if I lose my authenticator app?

Use one of the ten recovery codes issued when you switched two-factor on. If those are gone too and the site has the e-mail fallback enabled, the sign-in screen can mail a one-time code to the address on your account. If everything is lost, any other administrator can reset your second factor from your profile screen — you then set it up again. The e-mail fallback is off by default on purpose. It means whoever can read that mailbox can finish the sign-in, which on many sites is the same person who controls the hosting account. Turn it on when losing a phone would otherwise mean losing the site; leave it off otherwise. Every code sent and every code used is written to the log.

Does two-factor cover the REST API and application passwords?

No. They are non-interactive — there is nobody there to type a code — and an application password is already a separate credential you can revoke on its own. If an account has to be locked down completely, revoke its application passwords as well.

Does it block brute-force login attempts?

No, by design. Failed attempts are logged — login.failed, at Info and log-only, so a burst of them is visible in the log and searchable by user name and IP — but nothing is enforced: no counters, no thresholds, no lockouts. Rate limiting belongs in your firewall, CDN or fail2ban, where it can act before the request reaches PHP. Every rule this plugin enforces reacts only to logins that actually succeeded. Set the event to "E-mail" only if you know the site is quiet. On a public site bots guess passwords around the clock, and an inbox that learns to ignore this plugin is worse than no alert at all.

Will country blocking stop a determined attacker?

No. An attacker using a VPN endpoint inside an allowed country resolves to that country and passes. There is no VPN or Tor detection. Treat this control as something that removes opportunistic foreign traffic, not as a boundary.

What happens if the GeoIP database is missing or broken?

An individual IP that cannot be resolved is treated as not allowed and is blocked. But if the lookup subsystem as a whole is unavailable, blocking automatically falls back to monitor mode and raises a critical alert, so a deleted database file can never lock you out.

The Status screen says the GeoIP self test failed, but the database is installed. Why?

Almost always because the plugin was installed from a GitHub source archive rather than the release ZIP, so the bundled MaxMind reader library in vendor/ is missing. Downloading the database needs no library and succeeds; reading it does. Two-factor enrolment showing no QR code is the same cause. Reinstall from the release ZIP.

Can I get locked out?

Blocking is off until you arm it, and the settings screen refuses to arm it without a working database. If it does happen: the WPSEC_DISABLE_BLOCKING constant in wp-config.php disables blocking immediately, and the alert e-mail for every blocked login contains a single-use bypass link.

Are logins over the REST API or XML-RPC blocked too?

Not by default. Application passwords and XML-RPC authenticate through the same WordPress hook as an interactive login, so blocking them would silently break integrations hosted abroad. There is a setting to include them.

Does it support Multisite?

No. Activation on a network stops with a message rather than misbehaving quietly.

更新日志:

1.8.0 1.7.0 1.6.6 1.6.5 1.6.0 1.5.2 1.5.1 1.5.0 1.4.0 1.3.0 1.2.0 1.1.1 1.1.0 1.0.0