MD4X-00-004400 - MongoDB must automatically terminate a user session after organization-defined conditions or trigger events requiring session disconnect.

Information

This addresses the termination of user-initiated logical sessions in contrast to the termination of network connections that are associated with communications sessions (i.e., network disconnect). A logical session (for local, network, and remote access) is initiated whenever a user (or process acting on behalf of a user) accesses an organizational information system. Such user sessions can be terminated (and thus terminate user access) without terminating network sessions.

Session termination ends all processes associated with a user's logical session except those batch processes/jobs that are specifically created by the user (i.e., session owner) to continue after the session is terminated.

Conditions or trigger events requiring automatic session termination can include, for example, organization-defined periods of user inactivity, targeted responses to certain types of incidents, and time-of-day restrictions on information system use.

This capability is typically reserved for specific cases where the system owner, data owner, or organization requires additional assurance.

NOTE: Nessus has not performed this check. Please review the benchmark to ensure target compliance.

Solution

Determine the situations when a user-initiated database session must be terminated.

Note: The user running the commands shown below must have privileges with listSessions, killAnySession and impersonate action on the cluster.

In the MongoDB shell, as an authenticated user, run the following command to list all user sessions

use config
db.system.sessions.aggregate( [ { $listSessions: { allUsers: true } }

Reference: https://docs.mongodb.com/v4.4/reference/operator/aggregation/listSessions/

Example output:

{ '_id' : { 'id' : UUID('b3b50641-54c6-4d6d-a96e-a2239fadce3c'), 'uid' : BinData(0,'Y5mrDaxi8gv8RmdTsQ+1j7fmkr7JUsabhNmXAheU0fg=') }, 'lastUse' : ISODate('2021-09-23T23:34:43.951Z'), 'user' : { 'name' : 'jsmith@admin' } }

From the output identify the names of users whose sessions should be terminated. Using the user for each session to be terminated, run the following command (still in MongoDB shell).

db.runCommand( { killAllSessionsByPattern: [ { users: [ { user: <user>, db: <dbname> }, ... ] }] } )

Example to terminate user 'jsmith@admin' sessions from example output::

db.runCommand( { killAllSessionsByPattern: [ { users: [ { user: 'jsmith', db: 'admin' } ] }] } )

To terminate all user sessions running on the database, run the following command (still in MongoDB shell):

db.runCommand( { killAllSessionsByPattern: [ ] } )

Reference:
https://docs.mongodb.com/v4.4/reference/command/killAllSessionsByPattern/

See Also

https://dl.dod.cyber.mil/wp-content/uploads/stigs/zip/U_MDB_Enterprise_Advanced_4-x_V1R4_STIG.zip

Item Details

Category: ACCESS CONTROL

References: 800-53|AC-12, CAT|II, CCI|CCI-002361, Rule-ID|SV-252170r961221_rule, STIG-ID|MD4X-00-004400, Vuln-ID|V-252170

Plugin: Unix

Control ID: 7ff93cab73f3bf24cb09090c2815896abb9c6a461bc6e9646da1441585c87ccd