Skip to main content

About this page

This page hosts a list of Drupal modules that can and should be installed in Drupal websites in order to meet the security requirements of the government. Some are only available for Drupal 7, some for Drupal 8. More modules can, and most likely should, be installed to put additional security and auditing standards over the top, but these will get a site started. Also, some of these categories of modules are not needed, but were being explored to fulfill a need for the client.

This research was done in 2019 as part of an ongoing web developent project. Note that no particular module is being promoted or suggested, what’s more important is the type of module or array of solutions a type of module is providing.

Sections:

Login Items

  • Login Alert
    https://www.drupal.org/project/login_alert

    emails user when their account logs in

  • Login Destination [alpha]
    https://www.drupal.org/project/login_destination

    specify where a user goes when they login

  • Login History
    https://www.drupal.org/project/login_history

    new table stores all logins

  • Login Tracker
    https://www.drupal.org/project/login_tracker

    similar to Login History

  • Login Security
    https://www.drupal.org/project/login_security

    limit the number of invalid login attempts before blocking accounts, or deny access by IP address, temporarily or permanently. Hacking notifications to admins, disable login error messages

  • One Time Password [RC1]
    https://www.drupal.org/project/one_time_password

    It provides two factor authentication to users by way of the Time-based One-time Password Algorithm

  • One Time Password SMS [dev, unsecured]
    https://www.drupal.org/project/otp_sms

    This module gives users the ability to receive two factor authentication codes via SMS. This functionality compliments the TFA app integration of One Time Password.

  • One Time Link [alpha2, unsecured]
    https://www.drupal.org/project/one_time_link

    Module creates short and secure links for one-time login. Each link has configurable expire date. Each link could be used only once.

  • Legal [RC1]
    https://www.drupal.org/project/legal

    Displays your Terms & Conditions to users who want to register, and requires that they accept the T&C before their registration is accepted.

    If T&Cs are changed users with an existing account will be asked to accept the new version, and will not be able to log in until they have.

    Terms & Conditions can be displayed as styled text, or in a scroll box.

  • Agreement [alpha2, unsecured]
    https://www.drupal.org/project/agreement

    The Agreement module allows the administrator to present a text-based agreement (think “Terms of Service”) that users of a particular role must accept before they are allowed to access the site. The agreement is presented to users right after login, and must be accepted before the user can navigate to another page. Users will still be able to access the homepage (<front>) and /logout without accepting the agreement; all other pages will redirect the user to the agreement acceptance form.

  • Terms of Use [beta1]
    https://www.drupal.org/project/terms_of_use

    This module adds Terms of Use and a [x] I agree check box to the registration page.

  • Entity Legal [beta1 – 2016]
    https://www.drupal.org/project/entity_legal

    The Entity Legal module provides a solid, versionable, exportable and flexible method of storing legal documents such as Terms and Conditions and Privacy Policies. Users can be forced or soft-suggested to re-read and re-accept legal documents when they change and a full audit trail of which user has accepted when is available.

SMS Integration

  • SMS Framework
    https://www.drupal.org/project/smsframework

    The SMS Framework is a set of modules enabling interaction between Drupal and mobile users via SMS. The included API allows developers to add support for third party gateways, and integrate gateway-agnostic SMS features in your projects.

    The SMS Framework allows you to:

    • Send SMS messages using any supported gateway
    • Collect, confirm, and store mobile information for Drupal users
    • Send batch messages to Drupal users
    • Allow users to send nodes or portions of nodes to mobile phones
  • SMS Gateway Base [alpha1, unsecured]
    https://www.drupal.org/project/sms_gateway_base

    This module provides base classes and functionality which other gateway plugin modules can extend to simplify creation of gateways.

  • SMS RouteSMS [alpha1]
    https://www.drupal.org/project/sms_routesms

    This module provides integration to SMS Framework for the RouteSMS gateway. It allows the users of SMS Framework module to send SMS using RouteSMS as a gateway.

  • SMS simple gateway
    https://www.drupal.org/project/sms_simplegateway

    The rationale for this module is that many (or most) SMS gateway services use basic HTTP GET or POST requests, the only difference being the names of the HTTP parameters. This module allows the user to specify the parameter names for sending and receiving messages, so that they dont have to write a gateway module.

  • SMS UI [dev]
    https://www.drupal.org/project/sms_ui

    The SMS UI module provides a user interface for SMS Framework that allows users to send bulk messages to multiple recipients.

  • AWS SNS for SMS Framework [alpha1, unsecured]
    https://www.drupal.org/project/sms_aws_sns

    This module provides integration to SMS Framework for the AWS SNS gateway. It allows the users of SMS Framework module to send SMS using AWS SNS as a gateway.

Passwords

  • Password Encrypt [alpha]
    https://www.drupal.org/project/password_encrypt

    encrypts password on form submission

  • Password Policy [Alpha]
    https://www.drupal.org/project/password_policy

    forces password rules

  • Password Strength [Alpha]
    https://www.drupal.org/project/password_strength

    Shows strength of password

  • Password Strength Visualization
    https://www.drupal.org/project/psv

    Shows strength of password

  • Force Password Change
    https://www.drupal.org/project/force_password_change

    This module allows administrators to force users, by role, individual user, or newly created user, to change their password on their next page load or login, and/or expire their passwords after a period of time.

  • Mass Password Reset [alpha]
    https://www.drupal.org/project/mass_pwreset

    This module allows users with “Administer users” permission to reset all user accounts and notify all users

  • Pwned Passwords (Have I Been Pwned / HIBP) [alpha]
    https://www.drupal.org/project/pwned_passwords
  • Pwned Checker [RC2]
    https://www.drupal.org/project/pwnd_checker

    Checks have i been pwned

  • User Password Reset Link Timeout
    https://www.drupal.org/project/user_pwreset_timeout

    This module provides a Drupal UI method for setting the user password reset link timeout variable

HSTS / Headers

  • Content-Security-Policy
    https://www.drupal.org/project/csp

    Configure a Content-Security-Policy header for your Drupal site.

  • HTTP Strict Transport Security
    https://www.drupal.org/project/hsts

    adds HSTS headers to website

General Security

  • Redirect 403 to User Login
    https://www.drupal.org/project/r4032login

    redirects users

  • Security Kit
    https://www.drupal.org/project/seckit

    Prevents Cross-Site Scripting, Cross-Site Request Forgery, ClickJacking, Supports SSL/HSTS, Implements headers

  • Security.txt
    https://www.drupal.org/project/securitytxt

    provides editable security.txt file

  • RobotsTxt
    https://www.drupal.org/project/robotstxt

    Use this module when you are running multiple Drupal sites from a single code base (multisite) and you need a different robots.txt file for each one. This module generates the robots.txt file dynamically and gives you the chance to edit it, on a per-site basis, from the web UI.

  • Super Login
    https://www.drupal.org/project/super_login

    better login page, no real security enhancements

  • Site Audit
    https://www.drupal.org/project/site_audit

    Site Audit is a Drupal static site analysis platform that generates reports with actionable best practice recommendations.

  • honeypot
    https://www.drupal.org/project/honeypot

    Honeypot uses both the honeypot and timestamp methods of deterring spam bots from completing forms on your Drupal site

Two-Factor Authentication

  • Two-factor Authentication (TFA) [alpha]
    https://www.drupal.org/project/tfa

    Second-factor authentication for Drupal sites. Drupal provides authentication via something you know — a username and password while TFA module adds a second step of authentication with a check for something you have — such as a code sent to (or generated by) your mobile phone.

  • Two-factor login (TFL) [unsecured]
    https://www.drupal.org/project/tfl

    uses 3rd party service 2factor.in (indian service)

  • One Time Password [RC1]
    https://www.drupal.org/project/one_time_password

    provides two factor authentication to users by way of the Time-based One-time Password Algorithm (google auth, authy, MS Authenticator, etc)

  • Reset Password Email OTP Auth [unsecured]
    https://www.drupal.org/project/reset_pass_email_otp_auth

    TFA email password reset

  • Authorization Code [alpha4]
    https://www.drupal.org/project/authorization_code

    Login with a one time password that will be sent via email, sms or some other communication method.

  • External Authentication
    https://www.drupal.org/project/externalauth

    The ExternalAuth module provides a generic service for logging in and registering users that are authenticated against an external site or service and storing the authentication details.

  • Google Authenticator login [alpha4]
    https://www.drupal.org/project/ga_login

    This module will allow you to add Time-based One-time Password Algorithm (also called “Two Step Authentication” or “Multi-Factor Authentication”) support to user logins. It works with Google’s Authenticator app system and support most (if not all) OATH based HOTP/TOTP systems.

SAML

  • SAML IDP 2.0 Single Sign On (SSO) – SAML Identity Provider (miniorange_saml_idp)
    https://www.drupal.org/project/miniorange_saml_idp

    SAML IDP 2.0 Single Sign On (SSO) – SAML Identity Provider module allows users residing in your Drupal site to login to your SAML 2.0 Compliant Service Provider. We support all known Service Providers that support SAML Authentication Like – Workplace by Facebook, Zendesk, Tableau, Owncloud, Inkling etc.

  • SAML SP 2.0 Single Sign On (SSO) – SAML Service Provider (miniorange_saml)
    https://www.drupal.org/project/miniorange_saml

    SAML 2.0 SP Single Sign On (SSO) – Service Provider allows users residing at a SAML 2.0 capable Identity Provider to login to your Drupal website. We support all known IdPs – Google Apps, ADFS, Azure AD, Okta, Salesforce, Centrify, Bitium, miniOrange IdP, OneLogin, SimpleSAMLphp, Shibboleth, Edugate, DUO, OpenAM, Ping, RSA, IBM, Oracle Access Manager, WSO2, Feide, SecureAuth, NetIQ Access Manager etc.

  • SAML Service Provider
    https://www.drupal.org/project/saml_sp

    The SAML SP module allows Drupal to function as a Service Provider. This means that users can authenticate to Drupal (without a username or password) via a SAML IDP (Identity Provider) that has been pre-registered with Drupal.

  • SAML IdP [alpha1]
    https://www.drupal.org/project/saml_idp

    Provides integration between Drupal and SimpleSAMLphp (https://simplesamlphp.org/) to provide an Identity Provider (IdP) for SAML service providers (SPs)

  • simpleSAMLphp Authentication
    https://www.drupal.org/project/simplesamlphp_auth

    This module integrates Drupal with SimpleSAMLphp, the most robust and complete implementation of SAML in PHP. It makes it possible for Drupal to communicate with SAML or Shibboleth identity providers (IdP) for authenticating users. The resulting Drupal site can effectively act as a SAML or Shibboleth service provider (SP).

  • Auth0 Single Sign On
    https://www.drupal.org/project/auth0

    Single Sign On for Enterprises + Social Login + User/Passwords. For all your Drupal instances.
    Powered by Auth0.

Sessions

  • Session Limit [beta]
    https://www.drupal.org/project/session_limit

    Session Limit allows administrators to limit the number of simultaneous sessions per user.

  • Automated Logout
    https://www.drupal.org/project/autologout

    This module provides a site administrator the ability to log users out after a specified time of inactivity.

  • Session Timeout Notification [unsecured]
    https://www.drupal.org/project/timeout_notification

    This will provide the users a simple notification of an upcoming session expiration, allowing them to renew their current session without losing any critical data due to unknown loss of session.

MISC

  • Composer Security Checker
    https://www.drupal.org/project/composer_security_checker

    The Composer Security Manager module will check any installed Composer packages against using the SensioLabs Security Checker service (using their awesome connection library), and output a report similar to the core Update Manager report.

  • Accessible Media Embed [beta1]
    https://www.drupal.org/project/accessible_media_embed

    media image’s context gives a requirement to change the alt text for different situations.

  • Data Policy [beta4, unsecure]
    https://www.drupal.org/project/data_policy

    The Data Policy module helps site owners or administrators with informing their users about which (personal) data is collected.

    Next to providing functionality for informing users it also has the ability to add a data policy. It can be configured that users are prompted to accept the latest active data policy.

  • Courier + courier sms [alpha + dev]
    https://www.drupal.org/project/courier

    Courier is an API allowing modules to send messages to people via a channel of their preference. Steam + Slack + SMS

ACCESS

  • Forum Access [alpha-0]
    https://www.drupal.org/project/forum_access

    allows you to set forums private

  • Paragraphs Access Control [RC1]
    https://www.drupal.org/project/paragraphs_access

    This module provides a node access type api to allow restriction of access to paragraph items

  • Taxonomy Access Control Lite [alpha]
    https://www.drupal.org/project/tac_lite

    A simple scheme based on taxonomy, roles and users controls which content is visible.

  • Taxonomy access fix
    https://www.drupal.org/project/taxonomy_access_fix

    sets access

  • Block Access [alpha1]
    https://www.drupal.org/project/block_access

    This module adds a set of global permissions for creating, viewing, moving, enabling, disabling and configuring blocks

  • Menu Item Role Access
    https://www.drupal.org/project/menu_item_role_access

    There are times when you need to restrict the items users see without having completely separate menus.

  • Role Delegation
    https://www.drupal.org/project/role_delegation

    This module allows site administrators to grant specific roles the authority to assign selected roles to users, without them needing the administer permissions permission.

  • Auto Purge Users
    https://www.drupal.org/project/purge_users

    Auto Purge Users lets administrators delete inactive users based on time conditions.

Reports

  • System Status
    https://www.drupal.org/project/system_status

    Looking at every aspect of all of your sites, from necessary upgrades and vulnerabilities, to individual modules. Presenting it in one, easy to read dashboard.

  • Warden
    https://www.drupal.org/project/warden

    Warden aims to pull in status and security information from multiple sites into a single centralized dashboard. Simply add this module to the sites you want to include and configure them to send information to the accompanying Warden server which provides the dashboard application.

  • Google Analytics Reports [beta2]
    https://www.drupal.org/project/google_analytics_reports

    Google Analytics Reports module provides graphical reporting of your site’s tracking data. Graphical reports include small path-based report in blocks, and a full path-based report.

  • Monitoring
    https://www.drupal.org/project/monitoring

    This project introduces a vendor independent framework for deeply monitoring Drupal and all its projects / modules. It provides a 360 degree perspective on Drupal system health, being a critical piece for true enterprise Drupal platforms.

  • Performance monitor [alpha2]
    https://www.drupal.org/project/perfmon

    This module tests, verifies and recommends system environment settings to speed up performance of Drupal sites.

Logs

  • Role Log
    https://www.drupal.org/project/role_log

    This is a simple module to log Drupal role changes.

  • Audit Log [alpha1]
    https://www.drupal.org/project/audit_log

    Adds audit logging (a.k.a. an audit trail) functionality to all entities, so you can easily track entity views, inserts, updates and deletes.

  • Audit Files [alpha]
    https://www.drupal.org/project/auditfiles

    Audit files is designed to perform audits of your upload directory and the corresponding database records. It will cross check that all files in the database have a corresponding physical file, or it will check that all files in the upload directory have a corresponding entry in the database.

  • Configuration log
    https://www.drupal.org/project/config_log

    This module allows to log any configuration change in Drupal 8 (in your selected logging system).

  • Cryptolog
    https://www.drupal.org/project/cryptolog

    Cryptolog enhances user privacy (and compliance with GDPR, CCPA, etc.) by logging ephemeral identifiers rather than actual client IP addresses in Drupal’s database tables and syslog.

  • Database Logging Conditions (Watchdog conditions)
    https://www.drupal.org/project/dblog_conditions

    Extends Core Database Logging module (dblog, formerly: watchdog) to allow conditional logging to the database.

  • Database Logging Mailer (Watchdog mailer) [alpha]
    https://www.drupal.org/project/dblog_mailer

    Send log entries from Core Database Logging module (dblog, formerly: watchdog) by email at cron run.

  • DB log selective cron
    https://www.drupal.org/project/dsc

    Tiny module that let administrators define with more granularity the number of watchdog entries to keep in database.

  • DBLog Filter
    https://www.drupal.org/project/dblog_filter

    Are you trying to store only the log messages that are required? Either it is Warnings, Notice, Php, Debug etc.

  • DBLog Pager
    https://www.drupal.org/project/dblog_pager

    It adds paging options (Next, Previous) to the individual events view

  • Dblog Quick Filter [alpha]
    https://www.drupal.org/project/dblog_quick_filter

    enables you to search dblog records.

  • Entity log
    https://www.drupal.org/project/entity_log

    Entity log is used for tracking field changes on entities.

  • Error Log
    https://www.drupal.org/project/error_log

    Error Log module adds the PHP error log as a logger implementation so additional log messages are sent to the error log. (not just critical ones)

  • Events Log Track
    https://www.drupal.org/project/events_log_track

    This module track logs of specific events that you’d like to review.

  • Events Logging
    https://www.drupal.org/project/events_logging

    This module implements an out-of-the-box events logging system with standard content entities and config entities.

  • External Logging [dev, unsecured]
    https://www.drupal.org/project/extlog

    The External logging (extlog) module monitors your system, capturing system events and sends them to a remote log server. Like dblog or syslog this module allows to record events containing usage and performance data, errors, warnings, and similar operational information.

  • File Log [alpha]
    https://www.drupal.org/project/filelog

    This module complements the core Database Log module with a logger that writes events to a file.

  • Monolog
    https://www.drupal.org/project/monolog

    This module integrates Drupal with the fantastic Monolog library by Seldaek to provide a better logging solution.

  • Notify log
    https://www.drupal.org/project/notify_log

    Log popups -The module is designed to help developers, informing them of the new entries in the log.

  • Syslog Report [alpha1, unsecured]
    https://www.drupal.org/project/syslog_report

    This module displays the syslog file located in the log folder. e.g: /var/log/syslog

  • Watchdog Event Extras
    https://www.drupal.org/project/watchdog_event_extras

    Allows other information to be displayed for log events.

  • Watchdog Mailer
    https://www.drupal.org/project/watchdog_mailer

    This module allows you to send warnings and more serious errors in the error log via email to a specified address. Optionally, every PHP entry can be sent, since this is definitely a problem on the site.

  • Watchdog navigate [alpha]
    https://www.drupal.org/project/watchdog_navigate

    Adds buttons to watchdog entries. Very useful if you want to navigate to the next entry, because they are connected somehow.

  • Watchdog Prune [alpha]
    https://www.drupal.org/project/watchdog_prune

    This module will allow you to selectively delete watchdog entries based on criteria, like age

Alternate File System

  • Flysystem
    https://www.drupal.org/project/flysystem

    Flysystem is a filesystem abstraction which allows you to easily swap out a local filesystem for a remote one. Reducing technical debt and chance of vendor lock-in.

  • Flysystem – S3
    https://www.drupal.org/project/flysystem_s3

    Provides an Amazon S3 plugin for Flysystem. Tested with Amazon S3 and Minio.

  • S3 File System [alpha]
    https://www.drupal.org/project/s3fs

    S3 File System (s3fs) provides an additional file system to your drupal site, which stores files in Amazon’s Simple Storage Service (S3) or any other S3-compatible storage service. You can set your site to use S3 File System as the default, or use it only for individual fields. This functionality is designed for sites which are load-balanced across multiple servers, as the mechanism used by Drupal’s default file systems is not viable under such a configuration.

[DEV] ONLY

  • LoginToboggan [not even in Dev yet]
    https://www.drupal.org/project/logintoboggan

    purge unvalidated users, redirect users, return user to original page, rules integration

  • Security Review [no dev yet]
    https://www.drupal.org/project/security_review

    provides checks for basic security settings

  • Notify [dev]
    https://www.drupal.org/project/notify

    This is a lightweight module that allows users to subscribe to periodic emails which include all new or revised content and/or comments of specific content types, much like the daily newsletters sent by some websites.

  • Git Info [dev]
    https://www.drupal.org/project/git_info

    Some useful helpers to display info about the revision of your codebase on the site. It can be a git tag, git revision, date for last commit, or a combination of all.

  • Field Report [dev, unsecured]
    https://www.drupal.org/project/field_report

    The Field Report module creates a report page that lists all of the fields on the site, along with their label, description, field type, and what they are shared with, organized by entity type and bundle.

OPTIMIZATION