Select any two versions of this STIG to compare the individual requirements
Select any old version/release of this STIG to view the previous requirements
Open the Exchange Management Shell and enter the following command: Get-RpcClientAccess | Select-Object -Property Server, Name, EncryptionRequired If the value of "EncryptionRequired" is not set to "True", this is a finding. Note: This is configured as "True" by default.
Open the Exchange Management Shell and enter the following command: Set-RpcClientAccess -Server <ServerName> -EncryptionRequired $true
Open an Exchange Management Shell and enter the following command: Get-ExchangeCertificate |Select-Object -Property Subject,Services,Thumbprint If the certificate associated with the IIS service is not a trusted public certificate, this is a finding. In the same Exchange Management Shell, run the following cmdlets: Get-OwaVirtualDirectory | Select-Object -Property internalurl, externalurl If the value returned is not https://, this is a finding. Open IIS Manager and locate the Exchange Server. In the navigation pane on the left, navigate to Sites >> Default Web Site >> owa. In the pane on the right, under /owa Home, in the IIS section, double-click "SSL Settings". If the box "Require SSL" is not checked, this is a finding.
Ensure a trusted public certificate is installed for the Exchange server with the correct FQDNs that will service the domain. This will allow secure communications between clients and the server. This should be done before the server is put into production. Once installed, in an elevated Exchange Management Shell, run the following cmdlet to associate the certificate with the IIS service: Enable-ExchangeCertificate -Thumbprint <thumbprint of public cert> -Services IIS Set the OWA URL to use HTTPS instead of HTTP by updating the URLs to HTTPS. If the website is "http://mail.contoso.com" for both internal and external (for example), run the following cmdlet to set it to HTTPS: Set-OwaVirtualDirectory -Identity "<Server>\owa (Default Web Site) -InternalUrl "https://mail.contoso.com/owa" -ExternalUrl "https://mail.contoso.com/owa" Note: If this change is made, it must be done for the ECP virtual directory as well. A warning notifies users that this must be done. Open IIS Manager and locate the Exchange Server. In the navigation pane on the left, navigate to Sites >> Default Web Site >> owa. In the pane on the right, under /owa Home, in the IIS section, double-click "SSL Settings". Check the box for "Require SSL".
Open the Exchange Management Shell and enter the following command: Get-OwaVirtualDirectory | Select-Object -Property ServerName, Name, Identity, *Authentication If the value of "FormsAuthentication" is not set to "False", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-OwaVirtualDirectory -Identity <'IdentityName'> -FormsAuthentication $false Note: <IdentityName> must be in quotes. Example for the Identity Name: <ServerName>\owa (Default website) Restart the IIS service.
Open the Exchange Management Shell and enter the following command: Get-AdminAuditLogConfig | Select-Object -Property Name, AdminAuditLogEnabled If the value of "AdminAuditLogEnabled" is not set to "True", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-AdminAuditLogConfig -AdminAuditLogEnabled $true
Open the Exchange Management Shell and enter the following command: Get-ExchangeCertificate | Select-Object -Property CertificateDomains, issuer If the value of "CertificateDomains" does not indicate it is issued by the DOD, this is a finding.
Remove the non-DOD certificate and import the correct DOD certificates.
Open the Exchange Management Shell and enter the following command: Get-OwaVirtualDirectory | Select-Object -Property ServerName, Name, Identity,*Authentication If the value of "WindowsAuthentication" is not set to "True", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-OwaVirtualDirectory -Identity '<IdentityName>' -WindowsAuthentication $true Note: The <IdentityName> value must be in quotes. Example for the Identity Name: <ServerName>\owa (Default website)
Note: This requirement is not applicable on classified or completely closed networks. For Non-Enterprise Mail: Open the Exchange Management Shell and enter the following command: Get-RemoteDomain | Select-Object -Property Identity, AutoForwardEnabled If the value of AutoForwardEnabled is not set to "False", this is a finding. For Enterprise Mail: If the value of "AutoForwardEnabled" is set to "True", this is not a finding. and In the Exchange Management Shell, enter the following command: Get-RemoteDomain If the value of "RemoteDomain" is not set to ".mil" and/or ".gov" domain(s), this is a finding.
For Non-Enterprise Mail: Open the Exchange Management Shell and enter the following command: Set-RemoteDomain -Identity <'IdentityName'> -AutoForwardEnabled $false Note: The <IdentityName> value must be in quotes. For Enterprise Mail: New-RemoteDomain -Name <NewRemoteDomainName> -DomainName <SMTP Address> Note: <NewRemoteDomainName> must either be a .mil or .gov domain. Set-RemoteDomain -Identity <'RemoteDomainIdentity'> -AutoForwardEnabled $true Note: The <RemoteDomainIdentity> value must be in quotes.
Open the Exchange Management Shell and enter the following command: Get-TransportService | Select-Object -Property Name, Identity, ConnectivityLogEnabled If the value of "ConnectivityLogEnabled" is not set to "True", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-TransportService -Identity <'IdentityName'> -ConnectivityLogEnabled $true Note: The <IdentityName> value must be in quotes.
Open the Exchange Management Shell and enter the following command: Get-EventLogLevel If the Diagnostic of any EventLevel is not set to "Lowest", this is a finding. Note: Default installation of Exchange has all Event Levels set to Lowest with exception of the following: MSExchange ADAccess\Topology - Low MSExchangeADAccess\Validation - Low MSExchange BackEndRehydration\Configuration - Low MSExchange BackEndRehydration\Server - 2 MSExchange OAuth\Configuration - Low MSExchange OAuth\Server - 2 MSExchange RBAC\RBAC - Low MSExchangeADTopology\Topology - Low All of these must be set to "Lowest".
Open the Exchange Management Shell and enter the following command: Set-EventLogLevel -Identity <'IdentityName\EventlogName'> -Level Lowest Note: The <IdentityName\EventlogName> value must be in quotes.
Open the Exchange Management Shell and enter the following command: Get-AdminAuditLogConfig | Select-Object -Property AdminAuditLogParameters Note: The value of "*" indicates all parameters are being audited. If the value of "AdminAuditLogParameters" is not set to "*", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-AdminAuditLogConfig -AdminAuditLogParameters *
Refer to the EDSP on who should be in the RBAC role group "Audit Log". It is automatically assigned to those in the Organization Management role group. In an Exchange management shell, run the following cmdlet: Get-RoleGroup "Records Management"|Get-RoleGroupMember Unless specified in the EDSP that custom role group is specified for this permission, if this role group is empty this is a finding.
Refer to the EDSP on who should have the RBAC role "Audit Log". If a custom RBAC role is designated for the Audit Log role, ensure that the custom RBAC role group is populated. Follow the rule of least privilege. Otherwise, in an Exchange management shell, run the following: "Add-RoleGroupMember -Identity "Records Management" -Member <user>" Where <user> is the personnel responsible for handling audit logs.
Open the Exchange Management Shell and enter the following command: Get-TransportService | Select-Object -Property Name, Identity, MessageTrackingLogSubjectLoggingEnabled If the value of "MessageTrackingLogSubjectLoggingEnabled" is not set to "False", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-Transportservice -MessageTrackingLogSubjectLoggingEnabled $False
Open the Exchange Management Shell and enter the following command: Get-TransportService | Select-Object -Property Name, MessageTrackingLogEnabled If the value of MessageTrackingLogEnabled is not set to True, this is a finding.
Open the Exchange Management Shell and enter the following command: Set-TransportService <IdentityName> -MessageTrackingLogEnabled $true Note: The <IdentityName> value must be in quotes.
Open the Exchange Management Shell and enter the following command: Get-MailboxDatabase | Select-Object -Property Name, Identity, CircularLoggingEnabled If the value of "CircularLoggingEnabled" is not set to "False", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-MailboxDatabase -Identity <'IdentityName'> -CircularLoggingEnabled $false Note: The <IdentityName> value must be in quotes.
Note: If a third-party application is performing monitoring functions, the reviewer should verify the application is monitoring correctly and mark the vulnerability not applicable (NA). Open the Exchange Management Shell and enter the following command: perfmon Get-MonitoringItemHelp -Identity <String> -Server <ServerIdParameter> If no sets are defined or queues are not being monitored, this is a finding.
Open the Exchange Management Shell and enter the following command: perfmon In the left pane, navigate to and select Performance >> Data Collector Sets >> User Defined. Right-click and navigate to User Defined >> New >> Data Collector Sets and configure the system to use the data collection set for monitoring the queues.
Review the Email Domain Security Plan (EDSP) or document that contains this information. Determine the authorized groups or users that should have "Read" access to the audit data. By default, the logs are located on the application partition in \Program Files\Microsoft\Exchange Server\V15\Logging. If any group or user has "Read" access to the audit data that is not documented in the EDSP, this is a finding.
Update the EDSP to specify the authorized groups or users that should have "Read" access to the audit data or verify that this information is documented by the organization. Restrict any unauthorized groups' or users' "Read" access to the audit logs.
Review the Email Domain Security Plan (EDSP) or document that contains this information. Determine the authorized groups or users that should have access to the audit data. By default, the logs are located on the application partition in \Program Files\Microsoft\Exchange Server\V15\Logging. If any group or user has modify privileges for the audit data that is not documented in the EDSP, this is a finding.
Update the EDSP to specify the authorized groups or users that should have access to the audit data or verify that this information is documented by the organization. Restrict any unauthorized groups' or users' modify permissions for the audit logs.
Review the Email Domain Security Plan (EDSP) or document that contains this information. Determine the authorized groups or users that should have "Delete" permissions for the audit data. By default, the logs are located on the application partition in \Program Files\Microsoft\Exchange Server\V15\Logging. If any group or user has "Delete" permissions for the audit data that is not documented in the EDSP, this is a finding.
Update the EDSP to specify the authorized groups or users that should have "Delete" permissions for the audit data or verify that this information is documented by the organization. Restrict any unauthorized groups' or users' "Delete" permissions for the audit logs.
Review the Email Domain Security Plan (EDSP) or document that contains this information. Determine the audit logs' assigned partition. By default, the logs are located on the application partition in \Program Files\Microsoft\Exchange Server\V15\Logging. If the log files are not on a separate partition from the application, this is a finding.
Update the EDSP to specify the audit logs' assigned partition or verify that this information is documented by the organization. Configure the audit log location to be on a partition drive separate from the application.
Open the Exchange Management Shell and enter the following command: Get-ExecutionPolicy If the value returned is not "RemoteSigned", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-ExecutionPolicy RemoteSigned
Open the Exchange Management Shell and enter the following command: Get-ExchangeServer -status | Select-Object -Property Name, Identity, ErrorReportingEnabled For each Exchange Server, if the value of "ErrorReportingEnabled" is not set to "False", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-ExchangeServer -Identity <'IdentityName'> -ErrorReportingEnabled $false Note: The <IdentityName> value must be in quotes. Repeat the process for each Exchange Server.
Open the Exchange Management Shell and enter the following command: Get-OrganizationConfig | Select-Object -Property CustomerFeedbackEnabled If the value for "CustomerFeedbackEnabled" is not set to "False", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-OrganizationConfig -CustomerFeedbackEnabled $false
Note: This requirement applies to IMAP4. IMAP Secure is not restricted and does not apply to this requirement. Open the Windows PowerShell and enter the following command: Get-Service -Name MSExchangeIMAPBE,MSExchangeImap4 |Select-Object -Property Name,StartType If ANY of the IMAP services StartType is NOT set to "Disabled", this is a finding.
Open the Windows PowerShell in an Elevated Prompt and enter the following commands: Get-Service -Name MSExchangeIMAPBE,MSExchangeImap4 |ForEach-Object {Set-Service -Name $_.Name -StartupType Disabled}
Get-Service -Name MSExchangePop3,MSExchangePOP3BE |Select-Object -Property Name,StartType If any of the POP3 services StartType is NOT set to "Disabled", this is a finding.
Open the Windows PowerShell in an Elevated Prompt and enter the following commands: Get-Service -Name MSExchangePop3,MSExchangePOP3BE |ForEach-Object {Set-Service -Name $_.Name -StartupType Disabled}
Review the Email Domain Security Plan (EDSP) or document that contains this information. Determine the location where the Exchange Mailbox databases reside. Open the Exchange Management Shell and enter the following command: Get-MailboxDatabase | Select-Object -Property Name, Identity, EdbFilePath Open Windows Explorer, navigate to the mailbox databases, and verify they are on a dedicated partition. If the mailbox databases are not on a dedicated partition, this is a finding.
Update the EDSP to specify the location where the Exchange Mailbox databases reside or verify that this information is documented by the organization. Configure the mailbox databases on a dedicated partition. Ensure the drive that its being moved to has enough space for the database and logs (if not moving the logs to their own partition). Consult the EDSP and ensure that this is done within a maintenance window as this will incur downtime for any users connected to this mailbox database. Ensure backups are not running at the time this needs to be done. If this server is in a Database Availability Group, this cannot be done until all replicated copies of that database are removed first. Then the move operation can be performed. Once completed, replicated copies can be recreated appropriately. In an Exchange Management Shell, run the following (assuming copies of the database is removed if replicated or if it is a single copy database): Move-DatabasePath -Identity "<name of database>" -EdbFilePath "<drive>:\PathToDatabase\<MailboxDatabase.edb>" -LogFolderPath "<drive>:\LogFolderPath\" Example: Move-DatabasePath -Identity "Database1" -EdbFilePath "D:\MailboxDBs\Database1.edb" -LogFolderPath "D:\MailboxDBLogs\"
Open the Exchange Management Shell and enter the following command: Get-SendConnector | Select-Object -Property Name, Identity, SmartHosts Identify the internet-facing connectors. For each Send connector, if the value of "SmartHosts" does not return the Smart Host IP address, this is a finding.
Open the Exchange Management Shell and enter the following command: Set-SendConnector -Identity <'IdentityName'> -SmartHosts <'IP Address of Smart Host'> -DNSRoutingEnabled $false Note: The <IdentityName> and <IP Address of Smart Host> values must be in quotes. Repeat the procedure for each Send connector.
Open the Exchange Management Shell and enter the following command: Get-MailboxDatabase| Select-Object -Property Name, Identity, RetainDeletedItemsUntilBackup If the value of "RetainDeletedItemsUntilBackup" is not set to "True", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-MailboxDatabase -Identity <'IdentityName'> -RetainDeletedItemsUntilBackup $true Note: The <IdentityName> value must be in quotes.
Review the Email Domain Security Plan (EDSP). Determine any accounts that have been authorized to have email auto-forwarded. Note: If email auto-forwarding is not being used, this check is not applicable. Open the Exchange Management Shell and enter the following commands: Get-Mailbox | Select-Object -Property Name, Identity, Forward* Note: The asterisk (*) will grab both ForwardingAddress and ForwardingSMTPAddress. If any user has a forwarding SMTP address and is not documented in the EDSP, this is a finding. Note: If no remote SMTP domain matching the mail-enabled user or contact that allows forwarding is configured for users identified with a forwarding address, this function will not work properly.
Update the EDSP. Open the Exchange Management Shell and enter the following command: Set-Mailbox -Identity <'IdentityName'> -ForwardingSMTPAdddress $null Note: The <IdentityName> value must be in quotes.
Review the Email Domain Security Plan (EDSP) or document that contains this information. Determine any accounts that have been authorized to have email auto-forwarded. Note: If email auto-forwarding is not being used, this check is not applicable (NA). Open the Exchange Management Shell and enter the following commands: Get-RemoteDomain | Select Name, Identity, DomainName, AutoForwardEnabled |Format-List If any domain for a user forwarding SMTP address is not documented in the EDSP, this is a finding. Note: If no remote SMTP domain matching the mail-enabled user or contact that allows forwarding is configured for users identified with a forwarding address, this function will not work properly.
Update the EDSP to specify any accounts that have been authorized to have email auto-forwarded or verify that this information is documented by the organization. For domains that are listed in the EDSP to allow AutoForwarding, open the Exchange Management Shell and enter the following command: Set-RemoteDomain -Identity <RemoteDomainIdParameter> -AutoForwardEnabled $true If the Remote Domain is NOT listed in the EDSP to allow for AutoForwarding, open the Exchange Management Shell and enter the following command: Set-RemoteDomain -Identity [RemoteDomainIdentity] -AutoForwardingEnabled $false
Open the Exchange Management Shell and enter the following command: Get-MailboxDatabase | Select-Object -Property Name, Identity, MountAtStartup If the value of "MountAtStartup" is not set to "True", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-MailboxDatabase -Identity <'IdentityName'> -MountAtStartup $true Note: The <IdentityName> value must be in quotes.
Open the Exchange Management Shell and enter the following command: Get-MailboxDatabase | Select-Object -Property Name, Identity, ProhibitSendReceiveQuota If the value of "ProhibitSendReceiveQuota" is not set to "Unlimited", this is a finding. or If the value of "ProhibitSendReceiveQuota" is set to an alternate value and has signoff and risk acceptance in the EDSP, this is not a finding.
Open the Exchange Management Shell and enter the following command: Set-MailboxDatabase -Identity <'IdentityName'> -ProhibitSendReceiveQuota Unlimited Note: The <IdentityName> value must be in quotes. or Enter the value as identified by the EDSP that has obtained a signoff with risk acceptance.
Review the Email Domain Security Plan (EDSP) or document that contains this information. Determine the value for the Prohibit Send Quota limit. Open the Exchange Management Shell and enter the following command: Get-MailboxDatabase | Select-Object -Property Name, Identity, ProhibitSendQuota If the value of "ProhibitSendQuota" is not set to the site's Prohibit Send Quota limit, this is a finding.
Update the EDSP to specify the value for the Prohibit Send Quota limit or verify that this information is documented by the organization. Open the Exchange Management Shell and enter the following command: Set-MailboxDatabase -Identity <'IdentityName'> -ProhibitSendQuota <'QuotaLimit'> Note: The <IdentityName> and <QuotaLimit> values must be in quotes.
Review the EDSP or document that contains this information. Determine the global maximum message receive size and whether signoff with risk acceptance is documented for the Receive connector to have a different value. Open the Exchange Management Shell and enter the following command: Get-ReceiveConnector | Select-Object -Property Name, Identity, MaxMessageSize Identify internet-facing connectors. For each Receive connector, if the value of "MaxMessageSize" is not the same as the global value, this is a finding. or If "MaxMessageSize" is set to a numeric value different from the global value and has signoff and risk acceptance in the EDSP, this is not a finding.
Update the EDSP to specify the global maximum message receive size and, if operationally necessary, to document signoff with risk acceptance for the receive connector to have a different value, or verify that this information is documented by the organization. Open the Exchange Management Shell and enter the following command: Set-ReceiveConnector -Identity <'IdentityName'> -MaxMessageSize <'MaxReceiveSize'> Note: The <IdentityName> and <MaxReceiveSize> values must be in quotes. or Enter the value as identified by the EDSP that has obtained a signoff with risk acceptance. Repeat the procedure for each Receive connector.
Review the Email Domain Security Plan (EDSP) or document that contains this information. Determine the Max Hop Count value for Receive connectors. Open the Exchange Management Shell and enter the following command: Get-ReceiveConnector | Select-Object -Property Name, MaxHopCount For each Receive connector, if the value of "MaxHopCount" is not set to "60", this is a finding. or If the value of "MaxHopCount" is set to a value other than "60" and has signoff and risk acceptance in the EDSP, this is not a finding.
Update the EDSP to specify the "MaxHopCount" value or verify that this information is documented by the organization. Open the Exchange Management Shell and enter the following command: Set-ReceiveConnector -MaxHopCount 60 or Enter the value as identified by the EDSP that has obtained a signoff with risk acceptance. Repeat the procedure for each Receive connector.
Review the Email Domain Security Plan (EDSP). Determine the value for SMTP Server Maximum Outbound Connections. Open the Exchange Management Shell and enter the following command: Get-TransportService | Select-Object -Property Name, Identity, MaxOutboundConnections If the value of "MaxOutboundConnections" is not set to "1000", this is a finding. or If "MaxOutboundConnections" is set to a value other than "1000" and has signoff and risk acceptance in the EDSP, this is not a finding.
Update the EDSP to specify the "MaxOutboundConnections" value. Open the Exchange Management Shell and enter the following command: Set-TransportService -Identity <'IdentityName'> -MaxOutboundConnections 1000 Note: The <IdentityName> value must be in quotes. or Enter the value as identified by the EDSP that has obtained a signoff with risk acceptance.
Note: This requirement applies to IMAP4. IMAP Secure is not restricted and does not apply to this requirement. Review the Email Domain Security Plan (EDSP) or document that contains this information. Determine the Maximum Recipients per Message value. Open the Exchange Management Shell and enter the following command: Get-ReceiveConnector | Select-Object -Property Name, Identity, MaxRecipientsPerMessage For each Receive connector, evaluate the "MaxRecipientsPerMessage" value. For each Receive connector, if the value of "MaxRecipientsPerMessage" is not set to "5000", this is a finding. or If the value of "MaxRecipientsPerMessage" is set to a value other than "5000" and has signoff and risk acceptance in the EDSP, this is not a finding.
Update the EDSP to specify the "MaxRecipientsPerMessage" value or verify that this information is documented by the organization. Open the Exchange Management Shell and enter the following command: Set-ReceiveConnector -Identity <'IdentityName'> -MaxRecipientsPerMessage 5000 Note: The <IdentityName> value must be in quotes. or Enter the value as identified by the EDSP that has obtained a signoff with risk acceptance. Repeat the procedure for each Receive connector.
Review the EDSP or document that contains this information. Determine the maximum message send size. Open the Exchange Management Shell and enter the following command: Get-SendConnector | Select-Object -Property Name, Identity, MaxMessageSize For each Send connector, if the value of "MaxMessageSize" is not the same as the global value, this is a finding. or If "MaxMessageSize" is set to a numeric value different from the maximum message send size value documented in the EDSP, this is a finding.
Update the EDSP to specify the "MaxMessageSize" value or verify that this information is documented by the organization. Open the Exchange Management Shell and enter the following command: Set-SendConnector -Identity <'IdentityName'> -MaxMessageSize <MaxSendSize> Note: The <IdentityName> value must be in quotes. or Enter the value as identified by the EDSP that has obtained a signoff with risk acceptance. Repeat the procedures for each Send connector.
Review the Email Domain Security Plan (EDSP) or document that contains this information. Determine the global maximum message receive size. Open the Exchange Management Shell and enter the following command: Get-TransportConfig | Select-Object -Property Name, Identity, MaxReceiveSize If the value of "MaxReceiveSize" is not set to "10MB", this is a finding. or If "MaxReceiveSize" is set to an alternate value and has signoff and risk acceptance in the EDSP, this is not a finding.
Update the EDSP to specify the "MaxReceiveSize" value or verify that this information is documented by the organization. Open the Exchange Management Shell and enter the following command: Set-TransportConfig -MaxReceiveSize 10MB or Enter the value as identified by the EDSP that has obtained a signoff with risk acceptance.
Review the Email Domain Security Plan (EDSP) or document that contains this information. Determine the global maximum message send size. Open the Exchange Management Shell and enter the following command: Get-TransportConfig | Select-Object -Property Name, Identity, MaxSendSize If the value of "MaxSendSize" is not set to "10MB", this is a finding. or If "MaxSendSize" is set to an alternate value and has signoff and risk acceptance in the EDSP, this is not a finding.
Update the EDSP to specify the "MaxSendSize" value or verify that this information is documented by the organization. Open the Exchange Management Shell and enter the following command: Set-TransportConfig -MaxSendSize 10MB or Enter the value as identified by the EDSP that has obtained a signoff with risk acceptance.
Review the Email Domain Security Plan (EDSP) or document that contains this information. Determine the value for Maximum Outbound Domain Connections. Open the Exchange Management Shell and enter the following command: Get-TransportService | Select-Object -Property Name, Identity, MaxPerDomainOutboundConnections If the value of "MaxPerDomainOutboundConnections" is not set to "20", this is a finding. or If "MaxPerDomainOutboundConnections" is set to a value other than "20" and has signoff and risk acceptance in the EDSP, this is not a finding.
Update the EDSP to specify the "MaxPerDomainOutboundConnection" value or verify that this information is documented by the organization. Open the Exchange Management Shell and enter the following command: Set-TransportService -Identity <'IdentityName'> -MaxPerDomainOutboundConnections 20 Note: The <IdentityName> value must be in quotes. or Enter the value as identified by the EDSP that has obtained a signoff with risk acceptance.
Review the Email Domain Security Plan (EDSP) or document that contains this information. Determine the Connection Timeout value. Open the Exchange Management Shell and enter the following command: Get-SendConnector | Select-Object -Property Name, Identity, ConnectionInactivityTimeOut For each Send connector, if the value of "ConnectionInactivityTimeOut" is not set to "00:10:00", this is a finding. or If "ConnectionInactivityTimeOut" is set to a value other than "00:10:00" and has signoff and risk acceptance in the EDSP, this is not a finding.
Update the EDSP to specify the "ConnectionInactivityTimeOut" value. Open the Exchange Management Shell and enter the following command: Set-SendConnector -Identity <'IdentityName'> -ConnectionInactivityTimeOut 00:10:00 Note: The <IdentityName> value must be in quotes. or Enter the value as identified by the EDSP that has obtained a signoff with risk acceptance.
Review the Email Domain Security Plan (EDSP). Determine the antivirus strategy. Verify the email-aware antivirus scanner product is Exchange 2019 compatible and DOD approved. If email servers are using an email-aware antivirus scanner product that is not DOD approved and Exchange 2019 compatible, this is a finding.
Update the EDSP to specify the organization's antivirus strategy. Install and configure a DOD-approved compatible Exchange 2019 email-aware antivirus scanner product.
Open the Exchange Management Shell and enter the following command: Get-ReceiveConnector | Select-Object -Property Name, Identity, PermissionGroups |Format-List For each Receive connector, if the value of "PermissionGroups" is "AnonymousUsers" for any receive connector, this is a finding.
Open the Exchange Management Shell and enter the following command: Set-ReceiveConnector -Identity ['IdentityName'] -PermissionGroups and enter a valid value user group. Note: The <IdentityName> value must be in quotes. Example: Set-ReceiveConnector -Identity <'IdentityName'> -PermissionGroups ExchangeUsers Repeat the procedures for each Receive connector. This will remove the AnonymousUsers value simultaneously.
Open the Exchange Management Shell and enter the following command: Get-RemoteDomain | Select-Object -Property Name, DomainName, Identity, AllowedOOFType If the value of "AllowedOOFType" is not set to "InternalLegacy", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-RemoteDomain -Identity <'IdentityName'> -AllowedOOFType 'InternalLegacy' Note: The <IdentityName> and InternalLegacy values must be in quotes.
Review the Email Domain Security Plan (EDSP). Note: If using another DOD-approved anti-spam product for email or a DOD-approved email gateway spamming device, such as Enterprise Email Security Gateway (EEMSG), this is not applicable. Open the Exchange Management Shell and enter the following command: Get-ContentFilterConfig |Select-Object -Property Name, Enabled |Format-Table If no value is returned, this is a finding.
Update the EDSP with the anti-spam mechanism used. Install the AntiSpam module. Open the Exchange Management Shell and enter the following command: & $env:ExchangeInstallPath\Scripts\Install-AntiSpamAgents.ps1
Review the Email Domain Security Plan (EDSP). Note: If using another DOD-approved anti-spam product for email or a DOD-approved email gateway spamming device, such as Enterprise Email Security Gateway (EEMSG), this is not applicable. Open the Exchange Management Shell and enter the following command: Get-ContentFilterConfig | Select-Object -Property Name, Enabled|Format-Table; Get-SenderFilterConfig |Select-Object -Property Name, Enabled |Format-Table; Get-SenderIDConfig |Select-Object -Property Name, Enabled |Format-Table; Get-SenderReputationConfig |Select-Object -Property Name, Enabled |Format-Table If any of the above values returned are not set to "True", this is a finding.
Update the EDSP with the anti-spam mechanism used. Open the Exchange Management Shell and enter the following command for any values that were not set to "True": Set-ContentFilterConfig -Enabled $true Set-SenderFilterConfig -Enabled $true Set-SenderIDConfig -Enabled $true Set-SenderReputationConfig -Enabled $true
Review the Email Domain Security Plan (EDSP). Note: If using another DOD-approved anti-spam product for email or a DOD-approved email gateway spamming device, such as Enterprise Email Security Gateway (EEMSG), this is not applicable. Determine the internal SMTP servers. Open the Exchange Management Shell and enter the following command: Get-TransportConfig | Format-List InternalSMTPServers If any internal SMTP server IP address returned does not reflect the list of accepted SMTP server IP addresses, this is a finding.
Note: Configure the IP addresses of every internal SMTP server. If the Mailbox server is the only SMTP server running the anti-spam agents, configure the IP address of the Mailbox server. Update the EDSP with the anti-spam mechanism used. Open the Exchange Management Shell and enter the following command: Single SMTP server address: Set-TransportConfig -InternalSMTPServers @{Add='<ip address1>'} Multiple SMTP server addresses: Set-TransportConfig -InternalSMTPServers @{Add='<ip address1>','<ip address2>'}
Note: Automated replies to .mil or .gov sites are allowed. Open the Exchange Management Shell and enter the following command: Get-RemoteDomain | Select-Object -Property Name, Identity, AutoReplyEnabled If the value of "AutoReplyEnabled" is set to "True" and is configured to only reply to .mil or .gov sites, this is not a finding. If the value of "AutoReplyEnabled" is not set to "False", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-RemoteDomain -Identity <'IdentityName'> -AutoReplyEnabled $false Note: The <IdentityName> value must be in quotes.
Review the Email Domain Security Plan (EDSP). Determine the global maximum message recipient count. Open the Exchange Management Shell and enter the following command: Get-TransportConfig | Select-Object -Property Name, Identity, MaxRecipientEnvelopeLimit If the value of "MaxRecipientEnvelopeLimit" is not set to "5000", this is a finding. or If "MaxRecipientEnvelopeLimit" is set to an alternate value and has signoff and risk acceptance in the EDSP, this is not a finding.
Update the EDSP to specify the global maximum message recipient count. Set-TransportConfig -MaxRecipientEnvelopeLimit 5000 or Enter the value as identified by the EDSP that has obtained a signoff with risk acceptance. Restart the Microsoft Exchange Information Store service.
Open the Exchange Management Shell and run the following cmdlets: Get-TransportAgent "Malware Agent" If the identity "Malware Agent" is not set to "Enabled", this is a finding.
Open the Exchange Management Shell and run the following command: & $env:ExchangeInstallPath\Scripts\Enable-AntimalwareScanning.ps1 This will automatically enable the anti-malware agent. After the script completes, run the following cmdlet to complete the process: Restart-Service MSExchangeTransport This may take up to 10 minutes to take effect.
In Exchange Management shell, run the following cmdlet: Get-MalwareFilteringServer |Select-Object -Property Name, *Update* If the property "Update frequency" is not set, this is a finding. If the Malware agent is not installed, then this is not applicable.
In an elevated Exchange management shell, run the following cmdlet: Set-MalwareFilteringServer -Identity <Identity> -UpdateFrequency <integer> Where <Identity> is the name of the Exchange Server and <integer> is the update frequency (in minutes). Refer to the Enterprise Domain Security Plan (EDSP) for the update cadence that best aligns with the user's organization.
Open the Exchange Management Shell and enter the following command: Get-TransportAgent "Malware Agent" If the value of "Enabled" is set to "True", this is a finding.
Open the Exchange Management Shell and enter the following command: & env:ExchangeInstallPath\Scripts\Disable-Antimalwarescanning.ps1
Review the Email Domain Security Plan (EDSP) and determine the Connection Timeout value. Open the Exchange Management Shell and enter the following command: Get-ReceiveConnector | Select-Object -Property Name, Identity, ConnectionTimeout For each Receive connector, if the value of "ConnectionTimeout" is not set to "00:10:00", this is a finding. or If "ConnectionTimeout" is set to other than "00:10:00" and has signoff and risk acceptance in the EDSP, this is not a finding.
Update the EDSP to specify the Connection Timeout value. Open the Exchange Management Shell and enter the following command: Set-ReceiveConnector -Identity <'IdentityName'> -ConnectionTimeout 00:10:00 Note: The <IdentityName> value must be in quotes. or Enter the value as identified by the EDSP that has obtained a signoff with risk acceptance.
Review the Email Domain Security Plan (EDSP) to verify which users should be in each built-in RBAC management role group. If this is not found, this is a finding.
Update the EDSP and define which users should and should not have elevated privileges within the organization. Follow the rule of least privilege and ensure that administrators are given just enough access to complete their job. Referenced Document: https://docs.microsoft.com/en-us/exchange/understanding-management-role-groups-exchange-2013-help?view=exchserver-2019
Review the Email Domain Security Plan (EDSP) or document that contains this information. Determine the authorized groups and users that have access to the Exchange application directories. Verify the access permissions on the directory match the access permissions listed in the EDSP. If any group or user has different access permissions, this is a finding. Note: The default installation directory is \Program Files\Microsoft\Exchange Server\V15.
Update the EDSP to specify the authorized groups and users that have access to the Exchange application directories or verify that this information is documented by the organization. Navigate to the Exchange application directory and remove or modify the group or user access permissions. Note: The default installation directory is \Program Files\Microsoft\Exchange Server\V15.
Review the Email Domain Security Plan (EDSP) or document that contains this information. Determine the software baseline. Review the application software baseline procedures and implementation artifacts. Note the list of files and directories included in the baseline procedure for completeness. If an email software copy exists to serve as a baseline and is available for comparison during scanning efforts, this is not a finding.
Update the EDSP to specify the software baseline, procedures, and implementation artifacts or verify that this information is documented by the organization.
Review the Email Domain Security Plan (EDSP). Determine whether the site monitors system files (e.g., *.exe, *.bat, *.com, *.cmd, and *.dll) on servers for unauthorized changes against a baseline on a weekly basis. If software files are not monitored for unauthorized changes, this is a finding. Note: An approved and properly configured solution will contain both a list of baselines that includes all system file locations and a file comparison task that is scheduled to run at least weekly.
Update the EDSP to specify that the organization monitors system files on servers for unauthorized changes against a baseline on a weekly basis or verify that this information is documented by the organization. Monitor the software files (e.g., *.exe, *.bat, *.com, *.cmd, and *.dll) on Exchange servers for unauthorized changes against a baseline on a weekly basis. Note: This can be done with the use of various monitoring tools.
Review the Email Domain Security Plan (EDSP). Note: Required services will vary among organizations depending on the role of the individual system. Organizations will develop their own list of services, which will be documented and justified with the information system security officer (ISSO). The site's list will be provided for any security review. Services that are common to multiple systems can be addressed in one document. Exceptions for individual systems should be identified separately by system. Open a Windows PowerShell and enter the following command: Get-Service | Where-Object {$_.status -eq 'running'} Note: The command returns a list of installed services and the status of that service. If the services required are not documented in the EDSP, this is a finding. If any undocumented or unnecessary services are running, this is a finding.
Update the EDSP to specify the services required for the system to function. Remove or disable any services that are not required.
Open the Exchange Management Shell and enter the following command: Get-OutlookAnywhere Get-OutlookAnywhere | Select-Object -Property Name, Identity, InternalClientAuthenticationMethod, ExternalClientAuthenticationMethod If the value of "InternalClientAuthenticationMethod" and the value of "ExternalClientAuthenticationMethod" are not set to NTLM, this is a finding.
Open the Exchange Management Shell and enter the following command: For InternalClientAuthenticationMethod: Set-OutlookAnywhere -Identity '<IdentityName'> -InternalClientAuthenticationMethod NTLM For ExternalClientAuthenticationMethod: Set-OutlookAnywhere -Identity '<IdentityName'> -ExternalClientAuthenticationMethod NTLM
Review the Email Domain Security Plan (EDSP). Determine if the directory Exchange is installed: 1. Open Windows Explorer. 2. Navigate to where Exchange is installed. If Exchange resides on a directory or partition other than that of the operating system and does not have other applications installed (unless approved by the Information System Security Officer [ISSO]), this is not a finding.
Update the EDSP with the location of where Exchange is installed. Install Exchange on a dedicated application directory or partition separate than that of the operating system.
Open the Exchange Management Shell and enter the following command: Get-RemoteDomain | Select-Object -Property Identity, DeliveryReportEnabled If the value of "DeliveryReportEnabled" is not set to "False", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-RemoteDomain -Identity <'IdentityName'> -DeliveryReportEnabled $false Note: The <IdentityName> value must be in quotes.
Note: For the purpose of this requirement, "remote" refers to those domains external to the DODIN, whether classified or unclassified. NDRs between DODIN networks is permitted. Open the Exchange Management Shell and enter the following command: Get-RemoteDomain | Select-Object -Property Name, Identity, NDREnabled If the value of "NDREnabled" is not set to "False", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-RemoteDomain -Identity <'IdentityName'> -NDREnabled $false Note: The <IdentityName> value must be in quotes.
Open the Exchange Management Shell and enter the following command: Get-ReceiveConnector | Select-Object -Property Name, Identity, Banner For each Receive connector, if the value of "Banner" is not set to "220 SMTP Server Ready", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-ReceiveConnector -Identity <'IdentityName'> -Banner '220 SMTP Server Ready' Note: The <IdentityName> and 220 SMTP Server Ready values must be in quotes. Repeat the procedures for each Receive connector.
Open the Exchange Management Shell and enter the following command: Get-SendConnector | Select-Object -Property Name, Identity, TlsAuthLevel For each Send connector, if the value of "TlsAuthLevel" is not set to "DomainValidation", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-SendConnector -Identity <'IdentityName'> -TlsAuthLevel DomainValidation Note: The <IdentityName> value must be in quotes. Repeat the procedure for each Send connector.
Review the Email Domain Security Plan (EDSP). Determine if a Database Availability Group exists. From Exchange Admin Center: 1. In the pane on the left, navigate to "servers". 2. In the pane on the right, navigate to the "database availability groups" tab. 3. Verify a database availability group is configured with member servers. If two or more member servers are not listed, this is a finding. From Exchange PowerShell, run the following cmdlet: Get-DatabaseAvailabilityGroup If no DatabaseAvailabilityGroup is listed or a Database Availability Group is listed but has no member servers, this is a finding. Determine if the Exchange Mailbox databases are using redundancy. From Exchange Admin Center: 1. In the pane on the left, navigate to "servers". 2. In the pane on the right, navigate to the "databases" tab. 3. For each database, check the column "SERVERS WITH COPIES". Unless specified in the EDSP, if the "SERVERS WITH COPIES" column does not have two or more servers listed, this is a finding. From Exchange PowerShell, run the following cmdlet: Get-MailboxDatabaseCopyStatus -Identity <DatabaseName> Unless specified in the EDSP, if the output of this cmdlet does not show more than one copy, this is a finding.
Update the EDSP to specify how Exchange Mailbox databases use redundancy. Add two or more Mailbox servers to the database availability group. Add a database copy to one or more member servers within the database availability group.
Note: AuthMechanism may include other mechanisms as long as the "Tls" is identified. Open the Exchange Management Shell and enter the following command: Get-ReceiveConnector | Select-Object -Property Name, Identity, AuthMechanism For each Receive connector, if the value of "AuthMechanism" is not set to "Tls", this is a finding.
Open the Exchange Management Shell and enter the following command: Set-ReceiveConnector -Identity <'IdentityName'> -AuthMechanism 'Tls' Note: The <IdentityName> value must be in quotes. Repeat the procedures for each Receive connector.
Determine the most current, approved service pack. Open the Exchange Management Shell and enter the following command: Get-ExchangeServer | Select-Object -Property Name, AdminDisplayVersion |Format-List If the value of "AdminDisplayVersion" does not return the most current, approved Cumulative Update (CU), this is a finding.
Consult the EDSP for the accepted update process within the organization. Install the most current, approved CU. Microsoft recommends as a best practice to always install the latest CU when creating a new server. Existing servers keep as up-to-date as possible and backup any customizations. Follow any additional recommendations by going to the following website: https://learn.microsoft.com/en-us/Exchange/plan-and-deploy/install-cumulative-updates?view=exchserver-2019 All Exchange 2019 updates can be found on the Microsoft Exchange update site: https://learn.microsoft.com/en-us/Exchange/new-features/updates?view=exchserver-2019 Exchange CUs must be manually downloaded. Since CUs are full installations of Exchange, there is no need to install the "Release to Manufacturer" version first. However, once installed, it cannot be uninstalled. Installation must be done on a test server first before placing in production to ensure that it does not disrupt services or conflict with existing configurations. Note: Some CUs will require an Active Directory Schema extension, which adds new Exchange attributes. Consult the EDSP and ensure appropriate permissions before beginning an update. Note: Security updates (SUs) can be downloaded and triggered through Windows Updates by going to Windows Update >>Advanced Options >> "Choose how updates are installed" and select the box "Give me updates for other Microsoft products when I update Windows" if the Exchange server is connected to the web or internal Windows Update Services.
Open a Windows PowerShell Module and enter the following commands: Get-Website | Select-Object -Property Name Get-WebBinding -Name <'WebSiteName'> | Format-List If the Web binding values returned are not on standard port 80 for HTTP connections or port 443 for HTTPS connections, this is a finding. Note: This is excluding the Exchange Back End website which uses 81/444. Repeat the process for each website.
Configure web ports to be ports 80 and 443, as specified by PPSM standards. In an Exchange Management Shell, run the following cmdlet on the "Default Web Site": Set-WebBinding -Name 'Default Web Site' -BindingInformation "127.0.0.1:443:" -PropertyName Port -Value 443 Set-WebBinding -Name 'Default Web Site' -BindingInformation ":443:" -PropertyName Port -Value 443 Note: This does not apply to the Exchange Back End website.