You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/security/develop/threat-modeling-tool-communication-security.md
+13-13Lines changed: 13 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,13 +27,13 @@ ms.author: jegeib
27
27
|**Dynamics CRM**| <ul><li>[Check service account privileges and check that the custom Services or ASP.NET Pages respect CRM's security](#priv-aspnet)</li></ul> |
28
28
|**Azure Data Factory**| <ul><li>[Use Data management gateway while connecting On-premises SQL Server to Azure Data Factory](#sqlserver-factory)</li></ul> |
29
29
|**Identity Server**| <ul><li>[Ensure that all traffic to Identity Server is over HTTPS connection](#identity-https)</li></ul> |
30
-
|**Web Application**| <ul><li>[Verify X.509 certificates used to authenticate SSL, TLS, and DTLS connections](#x509-ssltls)</li><li>[Configure SSL certificate for custom domain in Azure App Service](#ssl-appservice)</li><li>[Force all traffic to Azure App Service over HTTPS connection](#appservice-https)</li><li>[Enable HTTP Strict Transport Security (HSTS)](#http-hsts)</li></ul> |
30
+
|**Web Application**| <ul><li>[Verify X.509 certificates used to authenticate SSL, TLS, and DTLS connections](#x509-ssltls)</li><li>[Configure TLS/SSL certificate for custom domain in Azure App Service](#ssl-appservice)</li><li>[Force all traffic to Azure App Service over HTTPS connection](#appservice-https)</li><li>[Enable HTTP Strict Transport Security (HSTS)](#http-hsts)</li></ul> |
31
31
|**Database**| <ul><li>[Ensure SQL server connection encryption and certificate validation](#sqlserver-validation)</li><li>[Force Encrypted communication to SQL server](#encrypted-sqlserver)</li></ul> |
32
32
|**Azure Storage**| <ul><li>[Ensure that communication to Azure Storage is over HTTPS](#comm-storage)</li><li>[Validate MD5 hash after downloading blob if HTTPS cannot be enabled](#md5-https)</li><li>[Use SMB 3.0 compatible client to ensure in-transit data encryption to Azure File Shares](#smb-shares)</li></ul> |
|**WCF**| <ul><li>[Enable HTTPS - Secure Transport channel](#https-transport)</li><li>[WCF: Set Message security Protection level to EncryptAndSign](#message-protection)</li><li>[WCF: Use a least-privileged account to run your WCF service](#least-account-wcf)</li></ul> |
35
35
|**Web API**| <ul><li>[Force all traffic to Web APIs over HTTPS connection](#webapi-https)</li></ul> |
36
-
|**Azure Cache for Redis**| <ul><li>[Ensure that communication to Azure Cache for Redis is over SSL](#redis-ssl)</li></ul> |
36
+
|**Azure Cache for Redis**| <ul><li>[Ensure that communication to Azure Cache for Redis is over TLS](#redis-ssl)</li></ul> |
37
37
|**IoT Field Gateway**| <ul><li>[Secure Device to Field Gateway communication](#device-field)</li></ul> |
38
38
|**IoT Cloud Gateway**| <ul><li>[Secure Device to Cloud Gateway communication using SSL/TLS](#device-cloud)</li></ul> |
39
39
@@ -79,7 +79,7 @@ ms.author: jegeib
79
79
|**Applicable Technologies**| Generic |
80
80
|**Attributes**| N/A |
81
81
|**References**|[IdentityServer3 - Keys, Signatures and Cryptography](https://identityserver.github.io/Documentation/docsv2/configuration/crypto.html), [IdentityServer3 - Deployment](https://identityserver.github.io/Documentation/docsv2/advanced/deployment.html)|
82
-
|**Steps**| By default, IdentityServer requires all incoming connections to come over HTTPS. It is absolutely mandatory that communication with IdentityServer is done over secured transports only. There are certain deployment scenarios like SSL offloading where this requirement can be relaxed. See the Identity Server deployment page in the references for more information. |
82
+
|**Steps**| By default, IdentityServer requires all incoming connections to come over HTTPS. It is absolutely mandatory that communication with IdentityServer is done over secured transports only. There are certain deployment scenarios like TLS offloading where this requirement can be relaxed. See the Identity Server deployment page in the references for more information. |
83
83
84
84
## <aid="x509-ssltls"></a>Verify X.509 certificates used to authenticate SSL, TLS, and DTLS connections
85
85
@@ -92,7 +92,7 @@ ms.author: jegeib
92
92
|**References**| N/A |
93
93
|**Steps**| <p>Applications that use SSL, TLS, or DTLS must fully verify the X.509 certificates of the entities they connect to. This includes verification of the certificates for:</p><ul><li>Domain name</li><li>Validity dates (both beginning and expiration dates)</li><li>Revocation status</li><li>Usage (for example, Server Authentication for servers, Client Authentication for clients)</li><li>Trust chain. Certificates must chain to a root certification authority (CA) that is trusted by the platform or explicitly configured by the administrator</li><li>Key length of certificate's public key must be >2048 bits</li><li>Hashing algorithm must be SHA256 and above |
94
94
95
-
## <aid="ssl-appservice"></a>Configure SSL certificate for custom domain in Azure App Service
95
+
## <aid="ssl-appservice"></a>Configure TLS/SSL certificate for custom domain in Azure App Service
96
96
97
97
| Title | Details |
98
98
| ----------------------- | ------------ |
@@ -101,7 +101,7 @@ ms.author: jegeib
101
101
|**Applicable Technologies**| Generic |
102
102
|**Attributes**| EnvironmentType - Azure |
103
103
|**References**|[Enable HTTPS for an app in Azure App Service](../../app-service/configure-ssl-bindings.md)|
104
-
|**Steps**| By default, Azure already enables HTTPS for every app with a wildcard certificate for the *.azurewebsites.net domain. However, like all wildcard domains, it is not as secure as using a custom domain with own certificate [Refer](https://casecurity.org/2014/02/26/pros-and-cons-of-single-domain-multi-domain-and-wildcard-certificates/). It is recommended to enable SSL for the custom domain which the deployed app will be accessed through|
104
+
|**Steps**| By default, Azure already enables HTTPS for every app with a wildcard certificate for the *.azurewebsites.net domain. However, like all wildcard domains, it is not as secure as using a custom domain with own certificate [Refer](https://casecurity.org/2014/02/26/pros-and-cons-of-single-domain-multi-domain-and-wildcard-certificates/). It is recommended to enable TLS for the custom domain which the deployed app will be accessed through|
105
105
106
106
## <aid="appservice-https"></a>Force all traffic to Azure App Service over HTTPS connection
107
107
@@ -156,7 +156,7 @@ This rule works by returning an HTTP status code of 301 (permanent redirect) whe
156
156
|**Applicable Technologies**| SQL Azure |
157
157
|**Attributes**| SQL Version - V12 |
158
158
|**References**|[Best Practices on Writing Secure Connection Strings for SQL Database](https://social.technet.microsoft.com/wiki/contents/articles/2951.windows-azure-sql-database-connection-security.aspx#best)|
159
-
|**Steps**| <p>All communications between SQL Database and a client application are encrypted using Secure Sockets Layer (SSL) at all times. SQL Database doesn't support unencrypted connections. To validate certificates with application code or tools, explicitly request an encrypted connection and do not trust the server certificates. If your application code or tools do not request an encrypted connection, they will still receive encrypted connections</p><p>However, they may not validate the server certificates and thus will be susceptible to "man in the middle" attacks. To validate certificates with ADO.NET application code, set `Encrypt=True` and `TrustServerCertificate=False` in the database connection string. To validate certificates via SQL Server Management Studio, open the Connect to Server dialog box. Click Encrypt connection on the Connection Properties tab</p>|
159
+
|**Steps**| <p>All communications between SQL Database and a client application are encrypted using Transport Layer Security (TLS), previously known as Secure Sockets Layer (SSL), at all times. SQL Database doesn't support unencrypted connections. To validate certificates with application code or tools, explicitly request an encrypted connection and do not trust the server certificates. If your application code or tools do not request an encrypted connection, they will still receive encrypted connections</p><p>However, they may not validate the server certificates and thus will be susceptible to "man in the middle" attacks. To validate certificates with ADO.NET application code, set `Encrypt=True` and `TrustServerCertificate=False` in the database connection string. To validate certificates via SQL Server Management Studio, open the Connect to Server dialog box. Click Encrypt connection on the Connection Properties tab</p>|
160
160
161
161
## <aid="encrypted-sqlserver"></a>Force Encrypted communication to SQL server
162
162
@@ -167,7 +167,7 @@ This rule works by returning an HTTP status code of 301 (permanent redirect) whe
167
167
|**Applicable Technologies**| OnPrem |
168
168
|**Attributes**| SQL Version - MsSQL2016, SQL Version - MsSQL2012, SQL Version - MsSQL2014 |
169
169
|**References**|[Enable Encrypted Connections to the Database Engine](https://msdn.microsoft.com/library/ms191192)|
170
-
|**Steps**| Enabling SSL encryption increases the security of data transmitted across networks between instances of SQL Server and applications. |
170
+
|**Steps**| Enabling TLS encryption increases the security of data transmitted across networks between instances of SQL Server and applications. |
171
171
172
172
## <aid="comm-storage"></a>Ensure that communication to Azure Storage is over HTTPS
173
173
@@ -211,7 +211,7 @@ This rule works by returning an HTTP status code of 301 (permanent redirect) whe
211
211
|**Applicable Technologies**| Generic, Windows Phone |
212
212
|**Attributes**| N/A |
213
213
|**References**|[Certificate and Public Key Pinning](https://owasp.org/www-community/controls/Certificate_and_Public_Key_Pinning)|
214
-
|**Steps**| <p>Certificate pinning defends against Man-In-The-Middle (MITM) attacks. Pinning is the process of associating a host with their expected X509 certificate or public key. Once a certificate or public key is known or seen for a host, the certificate or public key is associated or 'pinned' to the host. </p><p>Thus, when an adversary attempts to do SSL MITM attack, during SSL handshake the key from attacker's server will be different from the pinned certificate's key, and the request will be discarded, thus preventing MITM Certificate pinning can be achieved by implementing ServicePointManager's `ServerCertificateValidationCallback` delegate.</p>|
214
+
|**Steps**| <p>Certificate pinning defends against Man-In-The-Middle (MITM) attacks. Pinning is the process of associating a host with their expected X509 certificate or public key. Once a certificate or public key is known or seen for a host, the certificate or public key is associated or 'pinned' to the host. </p><p>Thus, when an adversary attempts to do TLS MITM attack, during TLS handshake the key from attacker's server will be different from the pinned certificate's key, and the request will be discarded, thus preventing MITM Certificate pinning can be achieved by implementing ServicePointManager's `ServerCertificateValidationCallback` delegate.</p>|
215
215
216
216
### Example
217
217
```csharp
@@ -342,7 +342,7 @@ string GetData(int value);
342
342
|**Steps**| If an application has both an HTTPS and an HTTP binding, clients can still use HTTP to access the site. To prevent this, use an action filter to ensure that requests to protected APIs are always over HTTPS.|
343
343
344
344
### Example
345
-
The following code shows a Web API authentication filter that checks for SSL:
345
+
The following code shows a Web API authentication filter that checks for TLS:
|**Steps**| Redis server does not support SSL out of the box, but Azure Cache for Redis does. If you are connecting to Azure Cache for Redis and your client supports SSL, like StackExchange.Redis, then you should use SSL. By default non-SSL port is disabled for new Azure Cache for Redis instances. Ensure that the secure defaults are not changed unless there is a dependency on SSL support for redis clients. |
|**Steps**| Redis server does not support TLS out of the box, but Azure Cache for Redis does. If you are connecting to Azure Cache for Redis and your client supports TLS, like StackExchange.Redis, then you should use TLS. By default non-TLS port is disabled for new Azure Cache for Redis instances. Ensure that the secure defaults are not changed unless there is a dependency on TLS support for redis clients. |
384
384
385
385
Please note that Redis is designed to be accessed by trusted clients inside trusted environments. This means that usually it is not a good idea to expose the Redis instance directly to the internet or, in general, to an environment where untrusted clients can directly access the Redis TCP port or UNIX socket.
0 commit comments