=== Locktura Security ===
Contributors: alainlankers
Tags: security, firewall, hardening, brute force, two factor authentication
Requires at least: 6.2
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 2.5.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

All-in-one WordPress security suite with local firewall, login protection, anti-spam controls, hardening, monitoring, and alerts.

== Description ==

Locktura Security brings modular WordPress protection, monitoring, maintenance, and alerts into one dashboard. Most protection runs locally; enable only what your site needs.

= Included modules =

* **Firewall** - Attack filtering and cache-aware protection.
* **Brute Force Defense** - Login limits, bans, and unban controls.
* **Hardening** - User enumeration, editor, XML-RPC, feed, hotlink, and server-exposure controls.
* **Update Manager** - Updates, Software Health, rollback, and cleanup.
* **Access Control** - IP lists, exclusions, and automatic bans.
* **Geo Blocking** - Country rules and crawler verification.
* **Hide Login** - Custom login URL and route protection.
* **Anti-Spam Shield** - Local CAPTCHA and form or comment protection.
* **Usernames & 2FA** - Username audits, TOTP, passkeys, recovery codes, role rules, and least-privilege Locktura permissions.
* **Password Manager** - Policies, resets, risk scans, and breach checks.
* **Email Alerts** - Configurable security notifications.
* **Security Logs** - Tamper-evident local events, integrity checks, and export.
* **Live Traffic** - Requests, visitors, bots, filters, and geolocation.
* **User Log** - Tamper-evident account, content, and settings activity.
* **File Scanner** - File and configuration checks, official checksum verification, incremental integrity scans, deployment windows, quarantine, and restore.
* **File Permissions** - Permission checks, fixes, and history.
* **SSL Control** - HTTPS, certificate, proxy, backup, and rollback.
* **Email Encoder** - Email inventory and obfuscation.

= Separate Premium plugin =

Locktura Premium is separately distributed outside WordPress.org and is not included in this package. Every Free feature above works without a license.

The separate Premium plugin adds:

* **Pattern Recognition**
* **Behavior Analytics**
* **Admin Lockdown**
* **Virtual Patching**
* **Header Hardening**
* **API Guardian**
* **Neural Bot Suppressor**
* **Network Reputation Control**
* **Domain Security**
* **Malware Scanner & Cleanup**
* **Smart 404**
* **Extra Hardening Tools**
* **Monthly Reports**
* **Session Management**
* **Extra User Safety Tools**
* **Premium Signature Pack**

== Installation ==

1. Upload the `locktura` folder to `/wp-content/plugins/`, or install it through the WordPress Plugins screen.
2. Activate Locktura Security and open the Locktura dashboard.
3. Review the modules, enable the protections you need, and save changed settings.

== Screenshots ==

1. Security Overview with the protection score, security activity, blocked threats, scans, and blocked login attempts.
2. Recent security alerts with the most active threat categories, threat distribution, and blocked countries.
3. Traffic and blocked-login activity with an overview of installed Locktura security modules.
4. Module management overview showing active protections and the current status of each module.
5. Brute Force settings with protection controls, detection rules, security activity, and current status.
6. Hardening settings for reducing common WordPress attack surfaces and protecting sensitive files and services.
7. Firewall settings with request protection controls, rule configuration, and current protection status.

== Frequently Asked Questions ==

= Is the firewall included? =

Yes. Locktura Security includes the firewall with bundled community rules.

= Do all listed Free features work without a license? =

Yes. Every feature listed under Included in this plugin works without a license and has no time or usage restrictions. The separately distributed Premium plugin is not included in this package.

= Do I need a cloud account? =

No. Protection runs locally. Only the optional features documented under External services make network requests.

= Does Locktura Security store security logs? =

Yes. Security events are stored locally for administrator review. New records are linked and signed so unexpected changes or missing records can be detected. Existing records remain available as legacy logs after upgrading.

= Can IP addresses be anonymized? =

Yes. An IP anonymization setting is available.

= Do users need a passkey? =

No. Passkeys and physical security keys are optional. Existing authenticator-app 2FA keeps working without re-enrollment, and the familiar 2FA screen remains the default after password login.

= Where do users manage 2FA? =

Users manage their own authenticator app, passkeys, and recovery codes under Users > Profile. Administrators can require 2FA by role, set a grace period, review enrollment status, and reset 2FA without seeing user secrets.

= What does the Permissions tab control? =

It separates Locktura access into viewing security, managing blocks, running scans, repairing files, managing policy, and clearing logs. Administrators retain full access; other roles or individual users receive only the permissions you assign. Permission changes require a fresh 2FA verification.

== Privacy ==

Locktura stores security data locally, including IP addresses, request and login details, usernames, events, alert settings, password-policy and 2FA settings, encrypted TOTP secrets, public passkey credential data, hashed recovery codes, enrollment state, scan history, and update history. Passkey private keys remain on the user's authenticator and are never stored by Locktura. Optional geolocation and password-breach checks use the services below. Administrators control retention, recipients, lookups, and privacy settings.

== External services ==

Locktura loads no scripts, styles, fonts, or images from third parties. It makes only the requests documented below when the related feature is enabled or used.

= WordPress.org and extension update providers =

Used for core, plugin, and theme update checks and downloads through WordPress.org and update endpoints declared by installed extensions. Requests occur during administrator-requested or scheduled checks and can contain the site URL, software versions, locale, and extension metadata. A manual Software Health scan and enabled Trusted Integrity Scanner also request official WordPress.org core and plugin checksums; the Software Health scan can additionally request plugin last-update metadata. These checksum requests contain the installed version, locale, and plugin slug. Scan results, local baselines, integrity findings, and update history are stored locally. Local file contents are never sent to WordPress.org by the integrity scanner.

Documentation: https://developer.wordpress.org/apis/handbook/wordpress-org/update-api/ and https://developer.wordpress.org/cli/commands/plugin/verify-checksums/
Policies: https://developer.wordpress.org/plugins/wordpress-org/detailed-plugin-guidelines/ and https://wordpress.org/about/license/
Privacy: https://wordpress.org/about/privacy/

= Have I Been Pwned Pwned Passwords =

Used for optional breach checks through `https://api.pwnedpasswords.com/range/{first5-sha1}`. Only the first five characters of the password's SHA-1 hash are sent, never the password or complete hash. Results can be cached locally, and stored status is discarded when the credential changes.

Documentation: https://haveibeenpwned.com/API/v3#PwnedPasswords
Terms: https://haveibeenpwned.com/TermsOfUse
Privacy: https://haveibeenpwned.com/Privacy

= Geolocation providers =

When enabled geolocation needs uncached data and no trusted country header exists, Locktura sends the public IP being looked up. Results can be cached locally for 24 hours. Providers are tried in this order:

* Country (`https://api.country.is/{ip}`) - Primary provider. Service information and privacy: https://country.is/ | Source and self-hosting: https://github.com/lineofflight/country
* IPWhois (`https://ipwho.is/{ip}`) - First fallback. Documentation: https://ipwhois.io/documentation | Terms: https://ipwhois.io/terms | Privacy: https://ipwhois.io/privacy
* ipapi.co (`https://ipapi.co/{ip}/json/`) - Final fallback. Documentation: https://ipapi.co/api/ | Terms: https://ipapi.co/terms/ | Privacy: https://ipapi.co/privacy/

= Own-site HTTPS and TLS checks =

SSL Control checks the configured `home_url()` or `site_url()`. An administrator-requested HEAD request or TLS handshake sends ordinary network metadata and a Locktura user-agent to the site's own host. System Health also sends five small daily GET requests to the configured `home_url()`: one random missing path, three fixed sensitive paths, and the homepage. These requests check public exposure and unexpected external redirects. Response bodies and possible secrets are never stored; only status information is retained. No third-party endpoint is selected by Locktura.

= Site-configured email delivery =

Enabled alerts and tests can contain the recipient, site URL, event type, timestamp, IP address, relevant context, and remediation links. WordPress uses the site's configured mail transport; Locktura selects no provider.

= Locktura website links =

Links to `https://locktura.com/` open only after an administrator clicks them; there are no background calls.

Terms: https://locktura.com/terms-and-conditions/
Privacy: https://locktura.com/privacy-policy/

== Translations ==

Dutch translations are managed through translate.wordpress.org and delivered by WordPress when an approved package is available.

== Bundled assets ==

Runtime assets are bundled locally. Flag Icons, QRCode for JavaScript, and lbuchs/WebAuthn use the MIT License; Inter and Bebas Neue use the SIL Open Font License 1.1. The modified Wikimedia Commons world map is public domain. Source and license details are included under `assets/` and `vendor/lbuchs/`. Locktura artwork is GPLv2 or later.

== Changelog ==

= 2.5.0 =

* Added System Health and Public Exposure checks, and expanded Software Health reporting.
* Expanded MFA policy, step-up protection, account permissions, and unsafe-username controls.
* Added Firewall Block and Monitor Only modes, WooCommerce Safe mode, and improved Cache Guard behavior.
* Improved Security Logs, User Logs, and File Integrity Monitoring workflows and reporting.
* Improved Access Control, Password Manager, File Scanner, and SSL Control navigation.
* Improved request sanitization and translation metadata across Free security modules.

= 2.4.4 =

* Added Free Identity Security with optional passkeys, self-service 2FA, role-based grace periods, encrypted TOTP storage, and configurable step-up protection for critical actions while preserving existing 2FA enrollments.
* Added a Free Permissions tab with separate Locktura capabilities for viewing, blocks, scans, file repair, policy changes, and log clearing, assignable by WordPress role or user.
* Added Free Software Health checks for abandoned plugins, update sources, and official WordPress.org file checksums.
* Added Free Security Logs integrity protection with a hash chain, signed checkpoints, background verification, local retention, and a separate log-deletion capability.
* Added the Free Trusted Integrity Scanner with official Core and WordPress.org plugin checksums, full local baselines, incremental background scans, deployment windows, and automatic update rescans.
* Improved Security Logs pagination and dashboard grid layout.
* Fixed password-reset compatibility with Hide Login and improved Semantic Decode Shield event logging.
* Improved Geo Blocking IP handling and regional controls, plus File Scanner status and detection accuracy.

= 2.4.3 =

* Improved dashboard and Live Traffic reporting with more consistent aggregation and country details.
* Improved password-strength checks and security-log timezone handling.
* Confirmed compatibility with WordPress 7.1 and refreshed public documentation.

= 2.4.2 =

* Improved user and 2FA management with filtering, pagination, role-aware guidance, and session controls.
* Added hashed, one-time recovery codes for existing authenticator-app 2FA accounts.
* Improved file-permission guidance and support for approved hosting-specific permissions.
