SMB Signing: What is it? Do I need it?
What is SMB?
Server Message Block (SMB) is a file protocol which used within Windows, Linux and other storage devices. SMB allows devices to have the ability to share and store files easily and allow devices and/or people to access these said files. SMB has been around for a great many years and Microsoft have been trying to ensure that the first version of SMB is no longer used due to inherent security risks as well as there are newer versions available which do a lot more.
To help secure communications and data across the networks, there is a feature available which digitally signs SMB communications between devices at the packet layer. When you enable this feature SMB signing allows the recipient of the SMB communication to authenticate who they are and confirm that the data is genuine. This can help safeguard against attacks such as man-in-the-middle (MITM) attacks.
There is one problem with SMB signing however, although SMB signing is available on all versions of Windows, its currently only enabled on Domain Controllers. If you, the business, want to enable this feature you must specially enable it within Group Policy (or the Local Security Policy). In larger organisations, its recommended that SMB signing is enabled on all devices as it helps protect information and reduce the changes of information leakage or additional attacks.
Enabling SMB Signing
Signing under SMBv1 is different to the later versions, for the purpose of this blog article we won’t discuss how to enable signing under SMBv1 as we’re looking to move away from this. However, configuring SMB signing for SMBv2 and above you need to do the following:
To start, open the Group Policy Management tool, this can be done either through Server Manager > Tools > Group Policy Management, or by running ‘gpmc.msc’ in PowerShell or Command Prompt. Then, depending upon your preferences, either create a new Group Policy, or edit an existing one.
Once your group policy is in edit mode, navigate to Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > Security Options.
There are 4 policy items which you will need to look at, all these policy items can either be enabled or disabled.
SMB Server Packet Signing
The following two policy items apply to the SMB server that is hosting the files, or to say that it is Windows systems that serve any files or printers for communications over SMB to clients within the network.
Microsoft network server: Digitally sign communications (always)
This policy option is to control whether the server requires packet SMB signing, it checks to see whether SMB packet signing must be negotiated before further communication with an SMB client is allowed.
This is set by default as enabled for domain controllers but disabled for other member servers within the domain.
Microsoft network server: Digitally sign communications (if client agrees)
This policy option will determine whether the server will negotiate SMB packet signing with clients that request it. When enabled, the server will negotiate SMB packet signing as per the request of the client. If SMB packet signing is enabled on the client then it will be negotiated by the server.
SMB Client Packet Signing
The following policies apply to the SMB clients, that is any Windows devise that establish a connection to an SMB server.
Microsoft network client: Digitally sign communications (always)
This policy ensures that the SMB client will always require SMB packet signing, when enabled. If the server does not agree to support SMB packet signing with the client, the client will not communicate with the server.
Microsoft network client: Digitally sign communications (if server agrees)
This policy is enabled by default and determines whether the SMB client attempts to negotiate SMB packet signing with the server.
You can watch a video on how to disable SMBv1 and enabling SMB signing here:
I hope this article helps you understand the reasoning behind enabling SMB signing.