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.
Login Items
-
Login Alerthttps://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 Historyhttps://www.drupal.org/project/login_history
new table stores all logins
-
Login Trackerhttps://www.drupal.org/project/login_tracker
similar to Login History
-
Login Securityhttps://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 Frameworkhttps://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 gatewayhttps://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 Visualizationhttps://www.drupal.org/project/psv
Shows strength of password
-
Force Password Changehttps://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 Timeouthttps://www.drupal.org/project/user_pwreset_timeout
This module provides a Drupal UI method for setting the user password reset link timeout variable
General Security
-
Redirect 403 to User Loginhttps://www.drupal.org/project/r4032login
redirects users
-
Security Kithttps://www.drupal.org/project/seckit
Prevents Cross-Site Scripting, Cross-Site Request Forgery, ClickJacking, Supports SSL/HSTS, Implements headers
-
Security.txthttps://www.drupal.org/project/securitytxt
provides editable security.txt file
-
RobotsTxthttps://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 Loginhttps://www.drupal.org/project/super_login
better login page, no real security enhancements
-
Site Audithttps://www.drupal.org/project/site_audit
Site Audit is a Drupal static site analysis platform that generates reports with actionable best practice recommendations.
-
honeypothttps://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 Authenticationhttps://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 Providerhttps://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 Authenticationhttps://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 Onhttps://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 Logouthttps://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 Checkerhttps://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 fixhttps://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 Accesshttps://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 Delegationhttps://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 Usershttps://www.drupal.org/project/purge_users
Auto Purge Users lets administrators delete inactive users based on time conditions.
Reports
-
System Statushttps://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.
-
Wardenhttps://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.
-
Monitoringhttps://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 Loghttps://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 loghttps://www.drupal.org/project/config_log
This module allows to log any configuration change in Drupal 8 (in your selected logging system).
-
Cryptologhttps://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 cronhttps://www.drupal.org/project/dsc
Tiny module that let administrators define with more granularity the number of watchdog entries to keep in database.
-
DBLog Filterhttps://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 Pagerhttps://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 loghttps://www.drupal.org/project/entity_log
Entity log is used for tracking field changes on entities.
-
Error Loghttps://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 Trackhttps://www.drupal.org/project/events_log_track
This module track logs of specific events that you’d like to review.
-
Events Logginghttps://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.
-
Monologhttps://www.drupal.org/project/monolog
This module integrates Drupal with the fantastic Monolog library by Seldaek to provide a better logging solution.
-
Notify loghttps://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 Extrashttps://www.drupal.org/project/watchdog_event_extras
Allows other information to be displayed for log events.
-
Watchdog Mailerhttps://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
-
Flysystemhttps://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 – S3https://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
-
WebP – Image Optimizationhttps://www.drupal.org/project/webp
Add image optimization to Drupal through the use of the WebP image standard provided by Google. Instructions: https://dev.acquia.com/blog/webp-and-drupal
-
Image Optimize API + WebPhttps://www.drupal.org/project/imageapi_optimize
-
Accelerated Mobile Pageshttps://www.drupal.org/project/amp
The AMP module is designed to convert Drupal pages into pages that comply with the AMP standard.
https://www.drupal.org/project/amp_cts
https://www.drupal.org/project/simple_amp (alternate solution)
-
CDNhttps://www.drupal.org/project/cdn
This module provides easy Content Delivery Network integration for Drupal sites. It changes file URLs, so that files (CSS, JS, images, fonts, videos …) are downloaded from a CDN instead of your web server.
It does not put your entire website behind a CDN.
Only
Origin Pull
CDNs are supported. These are CDNs that only require you to replace the domain name with another domain name. The CDN will then automatically fetch (pull) the files from your server (the origin). Nowadays pretty much every CDN is an Origin Pull CDN.[DEV]: https://www.drupal.org/project/cdn_cloudfront_private
-
Lazy Loading Imageshttps://www.drupal.org/project/blazy
Provides integration with bLazy and or Intersection Observer API to lazy load and multi-serve images to save bandwidth and server requests. The user will have faster load times and save data usage if they don’t browse the whole page.
https://www.drupal.org/project/blazy_blurry_placeholder
https://www.drupal.org/project/image_lazy_loader
https://www.drupal.org/project/lazyloader
https://www.drupal.org/project/lazy