Säkerhetsram: Konfigurationshantering | Mitigations
Implementera innehållssäkerhetsprincip (CSP) och inaktivera infogad JavaScript
Title | Details |
---|---|
Komponent | Webbprogram |
SDL-fas | Skapa |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | En introduktion till innehållssäkerhetsprincip, referens för innehållssäkerhetsprincip, Introduktion till innehållssäkerhetsprincip, Kan jag använda CSP? |
Steg | Innehållssäkerhetsprincip (CSP) är en säkerhetsmekanism för skydd på djupet, en W3C-standard, som gör det möjligt för webbprogramägare att ha kontroll över innehållet som är inbäddat på deras webbplats. CSP läggs till som ett HTTP-svarshuvud på webbservern och framtvingas på klientsidan av webbläsare. Det är en tillåten listbaserad princip – en webbplats kan deklarera en uppsättning betrodda domäner som aktivt innehåll som JavaScript kan läsas in från. CSP ger följande säkerhetsfördelar:
|
Exempel
Exempelprincip:
Content-Security-Policy: default-src 'self'; script-src 'self' www.google-analytics.com
Med den här principen kan skript endast läsas in från webbprogrammets server och Google Analytics-server. Skript som läses in från andra webbplatser avvisas. När CSP är aktiverat på en webbplats inaktiveras följande funktioner automatiskt för att minimera XSS-attacker.
Exempel
Infogade skript körs inte. Följande är exempel på infogade skript
<script> some JavaScript code </script>
Event handling attributes of HTML tags (for example, <button onclick="function(){}">
javascript:alert(1);
Exempel
Strängar utvärderas inte som kod.
Example: var str="alert(1)"; eval(str);
Aktivera webbläsarens XSS-filter
Title | Details |
---|---|
Komponent | Webbprogram |
SDL-fas | Skapa |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | XSS-skyddsfilter |
Steg | X-XSS-Protection-svarshuvudkonfiguration styr webbläsarens korsplatsskriptfilter. Det här svarshuvudet kan ha följande värden:
Det här är en Chromium-funktion som använder CSP-överträdelserapporter för att skicka information till valfri URI. De två sista alternativen anses vara säkra värden. |
ASP.NET program måste inaktivera spårning och felsökning före distributionen
Title | Details |
---|---|
Komponent | Webbprogram |
SDL-fas | Skapa |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | ASP.NET Felsökningsöversikt, ASP.NET Spårningsöversikt, Så här aktiverar du spårning för ett ASP.NET-program, Så här aktiverar du felsökning för ASP.NET program |
Steg | När spårning är aktiverat för sidan hämtar varje webbläsare som begär den även spårningsinformation som innehåller data om internt servertillstånd och arbetsflöde. Den informationen kan vara säkerhetskänslig. När felsökning är aktiverat för sidan resulterar fel som inträffar på servern i en fullständig stackspårningsdata som visas i webbläsaren. Dessa data kan exponera säkerhetskänslig information om serverns arbetsflöde. |
Endast åtkomst till JavaScript från tredje part från betrodda källor
Title | Details |
---|---|
Komponent | Webbprogram |
SDL-fas | Skapa |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | Ej tillämpligt |
Steg | JavaScript från tredje part bör endast refereras från betrodda källor. Referensslutpunkterna ska alltid finnas på TLS. |
Se till att autentiserade ASP.NET sidor innehåller skydd för användargränssnittsåtergöring eller klicka-jacking
Title | Details |
---|---|
Komponent | Webbprogram |
SDL-fas | Skapa |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | OWASP click-jacking Defense Cheat Sheet, Internet Explorer Internals – Bekämpa click-jacking med X-Frame-Alternativ |
Steg | Klicka-jacking, även känd som en "UI redress attack", är när en angripare använder flera transparenta eller ogenomskinliga lager för att lura en användare att klicka på en knapp eller länk på en annan sida när de hade för avsikt att klicka på den översta nivån sidan. Den här skiktningen uppnås genom att skapa en skadlig sida med en iframe som läser in offrets sida. Angriparen "kapar" därför klick som är avsedda för deras sida och dirigerar dem till en annan sida, troligen ägs av ett annat program, en domän eller båda. För att förhindra klick-jacking-attacker anger du rätt HTTP-svarshuvuden för X-Frame-Options som instruerar webbläsaren att inte tillåta inramning från andra domäner |
Exempel
Rubriken X-FRAME-OPTIONS kan anges via IIS web.config. Kodfragment för web.config för webbplatser som aldrig ska ramas in:
<system.webServer>
<httpProtocol>
<customHeader>
<add name="X-FRAME-OPTIONS" value="DENY"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Exempel
Web.config-kod för webbplatser som bara ska ramas in av sidor i samma domän:
<system.webServer>
<httpProtocol>
<customHeader>
<add name="X-FRAME-OPTIONS" value="SAMEORIGIN"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Se till att endast betrodda ursprung tillåts om CORS är aktiverat i ASP.NET webbprogram
Title | Details |
---|---|
Komponent | Webbprogram |
SDL-fas | Skapa |
Tillämpliga tekniker | Webbformulär, MVC5 |
Attribut | Ej tillämpligt |
Referenser | Ej tillämpligt |
Steg | Webbläsarskydd förhindrar att en webbsida gör AJAX-begäranden till en annan domän. Den här begränsningen kallas principen för samma ursprung och förhindrar att en skadlig webbplats läser känsliga data från en annan webbplats. Ibland kan det dock krävas att API:er exponeras på ett säkert sätt som andra webbplatser kan använda. Resursdelning för korsande ursprung (CORS) är en W3C-standard som gör att en server kan koppla av principen för samma ursprung. Med CORS kan en server uttryckligen tillåta vissa begäranden mellan ursprung samtidigt som andra avvisas. CORS är säkrare och mer flexibelt än tidigare tekniker, till exempel JSONP. Att aktivera CORS i grunden innebär att lägga till några HTTP-svarshuvuden (Access-Control-*) i webbappen och detta kan göras på ett par sätt. |
Exempel
Om åtkomst till Web.config är tillgänglig kan CORS läggas till via följande kod:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="https://example.com" />
</customHeaders>
</httpProtocol>
Exempel
Om åtkomsten till web.config inte är tillgänglig kan CORS konfigureras genom att lägga till följande C#-kod:
HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "https://example.com")
Observera att det är viktigt att se till att listan över ursprung i attributet "Access-Control-Allow-Origin" är inställd på en begränsad och betrodd uppsättning ursprung. Om du inte konfigurerar detta på ett olämpligt sätt (till exempel om värdet anges som *) kan skadliga webbplatser utlösa begäranden om korsande ursprung till webbprogrammet >utan några begränsningar, vilket gör programmet sårbart för CSRF-attacker.
Aktivera attributet ValidateRequest på ASP.NET Pages
Title | Details |
---|---|
Komponent | Webbprogram |
SDL-fas | Skapa |
Tillämpliga tekniker | Webbformulär, MVC5 |
Attribut | Ej tillämpligt |
Referenser | Validering av begäran – Förhindra skriptattacker |
Steg | Begäran om validering, en funktion för ASP.NET sedan version 1.1, hindrar servern från att acceptera innehåll som innehåller en avkodad HTML-kod. Den här funktionen är utformad för att förhindra vissa angrepp med skriptinmatning genom att en klients skriptkod eller HTML-kod kan omedvetet skickas till en server, lagras och sedan visas för andra användare. Vi rekommenderar fortfarande att du validerar alla indata och HTML-kod när det passar. Verifiering av begäran utförs genom att jämföra alla indata med en lista över potentiellt farliga värden. Om en matchning inträffar genererar ASP.NET en |
Exempel
Den här funktionen kan dock inaktiveras på sidnivå:
<%@ Page validateRequest="false" %>
eller, på programnivå
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
Observera att funktionen Förfrågningsverifiering inte stöds och inte ingår i MVC6-pipelinen.
Använda lokalt värdbaserade senaste versioner av JavaScript-bibliotek
Title | Details |
---|---|
Komponent | Webbprogram |
SDL-fas | Skapa |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | Ej tillämpligt |
Steg | Utvecklare som använder vanliga JavaScript-bibliotek som JQuery måste använda godkända versioner av vanliga JavaScript-bibliotek som inte innehåller kända säkerhetsbrister. En bra idé är att använda den senaste versionen av biblioteken, eftersom de innehåller säkerhetskorrigeringar för kända säkerhetsrisker i äldre versioner. Om den senaste versionen inte kan användas på grund av kompatibilitetsorsaker bör lägsta versionerna nedan användas. Godtagbara minimiversioner:
Läs aldrig in något JavaScript-bibliotek från externa webbplatser, till exempel offentliga CDN:er |
Inaktivera automatisk MIME-sniffning
Title | Details |
---|---|
Komponent | Webbprogram |
SDL-fas | Skapa |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | IE8-säkerhet del V: Omfattande skydd, MIME-typ |
Steg | Rubriken X-Content-Type-Options är ett HTTP-huvud som gör att utvecklare kan ange att deras innehåll inte ska vara MIME-sniffat. Den här rubriken är utformad för att minimera MIME-sniffningsattacker. För varje sida som kan innehålla användarkontrollerbart innehåll måste du använda HTTP-huvudet X-Content-Type-Options:nosniff. Om du vill aktivera det nödvändiga huvudet globalt för alla sidor i programmet kan du göra något av följande |
Exempel
Lägg till huvudet i filen web.config om programmet finns i Internet Information Services (IIS) 7 och senare.
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Exempel
Lägg till rubriken via den globala Application_BeginRequest
void Application_BeginRequest(object sender, EventArgs e)
{
this.Response.Headers["X-Content-Type-Options"] = "nosniff";
}
Exempel
Implementera anpassad HTTP-modul
public class XContentTypeOptionsModule : IHttpModule
{
#region IHttpModule Members
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += newEventHandler(context_PreSendRequestHeaders);
}
#endregion
void context_PreSendRequestHeaders(object sender, EventArgs e)
{
HttpApplication application = sender as HttpApplication;
if (application == null)
return;
if (application.Response.Headers["X-Content-Type-Options "] != null)
return;
application.Response.Headers.Add("X-Content-Type-Options ", "nosniff");
}
}
Exempel
Du kan bara aktivera den nödvändiga rubriken för specifika sidor genom att lägga till den i enskilda svar:
this.Response.Headers["X-Content-Type-Options"] = "nosniff";
Ta bort standardserverhuvuden på Windows Azure-webbplatser för att undvika fingeravtryck
Title | Details |
---|---|
Komponent | Webbprogram |
SDL-fas | Skapa |
Tillämpliga tekniker | Allmän |
Attribut | EnvironmentType – Azure |
Referenser | Ta bort standardserverhuvuden på Windows Azure-webbplatser |
Steg | Rubriker som Server, X-Powered-By, X-AspNet-Version visar information om servern och de underliggande teknikerna. Vi rekommenderar att du utelämnar dessa rubriker och förhindrar att programmet tas med fingeravtryck |
Konfigurera en Windows-brandvägg för databasmotoråtkomst
Title | Details |
---|---|
Komponent | Databas |
SDL-fas | Skapa |
Tillämpliga tekniker | SQL Azure, OnPrem |
Attribut | N/A, SQL-version – V12 |
Referenser | Konfigurera en Azure SQL Database-brandvägg, Konfigurera en Windows-brandvägg för databasmotoråtkomst |
Steg | Brandväggssystem hjälper till att förhindra obehörig åtkomst till datorresurser. Om du vill komma åt en instans av SQL Server Database Engine via en brandvägg måste du konfigurera brandväggen på datorn som kör SQL Server för att tillåta åtkomst |
Se till att endast betrodda ursprung tillåts om CORS är aktiverat på ASP.NET webb-API
Title | Details |
---|---|
Komponent | Webb-API |
SDL-fas | Skapa |
Tillämpliga tekniker | MVC 5 |
Attribut | Ej tillämpligt |
Referenser | Aktivera begäranden mellan ursprung i ASP.NET Webb-API 2, ASP.NET webb-API – CORS-stöd i ASP.NET Webb-API 2 |
Steg | Webbläsarskydd förhindrar att en webbsida gör AJAX-begäranden till en annan domän. Den här begränsningen kallas principen för samma ursprung och förhindrar att en skadlig webbplats läser känsliga data från en annan webbplats. Ibland kan det dock krävas att API:er exponeras på ett säkert sätt som andra webbplatser kan använda. Resursdelning för korsande ursprung (CORS) är en W3C-standard som gör att en server kan koppla av principen för samma ursprung. Med CORS kan en server uttryckligen tillåta vissa begäranden mellan ursprung samtidigt som andra avvisas. CORS är säkrare och mer flexibelt än tidigare tekniker, till exempel JSONP. |
Exempel
I App_Start/WebApiConfig.cs lägger du till följande kod i metoden WebApiConfig.Register
using System.Web.Http;
namespace WebService
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// New code
config.EnableCors();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
Exempel
EnableCors-attributet kan tillämpas på åtgärdsmetoder i en kontrollant på följande sätt:
public class ResourcesController : ApiController
{
[EnableCors("http://localhost:55912", // Origin
null, // Request headers
"GET", // HTTP methods
"bar", // Response headers
SupportsCredentials=true // Allow credentials
)]
public HttpResponseMessage Get(int id)
{
var resp = Request.CreateResponse(HttpStatusCode.NoContent);
resp.Headers.Add("bar", "a bar value");
return resp;
}
[EnableCors("http://localhost:55912", // Origin
"Accept, Origin, Content-Type", // Request headers
"PUT", // HTTP methods
PreflightMaxAge=600 // Preflight cache duration
)]
public HttpResponseMessage Put(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
[EnableCors("http://localhost:55912", // Origin
"Accept, Origin, Content-Type", // Request headers
"POST", // HTTP methods
PreflightMaxAge=600 // Preflight cache duration
)]
public HttpResponseMessage Post(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
}
Observera att det är viktigt att se till att listan över ursprung i Attributet EnableCors är inställd på en begränsad och betrodd uppsättning ursprung. Om du inte konfigurerar detta på ett olämpligt sätt (till exempel om värdet anges som *) kan skadliga webbplatser utlösa begäranden mellan ursprung till API:et utan några begränsningar, >vilket gör API:et sårbart för CSRF-attacker. EnableCors kan dekoreras på styrenhetsnivå.
Exempel
Om du vill inaktivera CORS på en viss metod i en klass kan attributet DisableCors användas enligt nedan:
[EnableCors("https://example.com", "Accept, Origin, Content-Type", "POST")]
public class ResourcesController : ApiController
{
public HttpResponseMessage Put(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
public HttpResponseMessage Post(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
// CORS not allowed because of the [DisableCors] attribute
[DisableCors]
public HttpResponseMessage Delete(int id)
{
return Request.CreateResponse(HttpStatusCode.NoContent);
}
}
Title | Details |
---|---|
Komponent | Webb-API |
SDL-fas | Skapa |
Tillämpliga tekniker | MVC 6 |
Attribut | Ej tillämpligt |
Referenser | Aktivera CORS (Cross-Origin Requests) i ASP.NET Core 1.0 |
Steg | I ASP.NET Core 1.0 kan CORS aktiveras antingen med mellanprogram eller MVC. När du använder MVC för att aktivera CORS används samma CORS-tjänster, men CORS-mellanprogrammet är det inte. |
Metod 1 Aktivera CORS med mellanprogram: Om du vill aktivera CORS för hela programmet lägger du till CORS-mellanprogrammet i begärandepipelinen med hjälp av usecors-tilläggsmetoden. Du kan ange en princip för korsande ursprung när du lägger till CORS-mellanprogrammet med klassen CorsPolicyBuilder. Det finns två sätt att göra detta på:
Exempel
Den första är att anropa UseCors med en lambda. Lambda tar ett CorsPolicyBuilder-objekt:
public void Configure(IApplicationBuilder app)
{
app.UseCors(builder =>
builder.WithOrigins("https://example.com")
.WithMethods("GET", "POST", "HEAD")
.WithHeaders("accept", "content-type", "origin", "x-custom-header"));
}
Exempel
Det andra är att definiera en eller flera namngivna CORS-principer och sedan välja principen efter namn vid körning.
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin",
builder => builder.WithOrigins("https://example.com"));
});
}
public void Configure(IApplicationBuilder app)
{
app.UseCors("AllowSpecificOrigin");
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}
Metod 2 Aktivera CORS i MVC: Utvecklare kan också använda MVC för att tillämpa specifika CORS per åtgärd, per styrenhet eller globalt för alla styrenheter.
Exempel
Per åtgärd: Om du vill ange en CORS-princip för en specifik åtgärd lägger du till attributet [EnableCors] i åtgärden. Ange principnamnet.
public class HomeController : Controller
{
[EnableCors("AllowSpecificOrigin")]
public IActionResult Index()
{
return View();
}
Exempel
Per styrenhet:
[EnableCors("AllowSpecificOrigin")]
public class HomeController : Controller
{
Exempel
Globalt:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new CorsAuthorizationFilterFactory("AllowSpecificOrigin"));
});
}
Observera att det är viktigt att se till att listan över ursprung i Attributet EnableCors är inställd på en begränsad och betrodd uppsättning ursprung. Om du inte konfigurerar detta på ett olämpligt sätt (till exempel om värdet anges som *) kan skadliga webbplatser utlösa begäranden mellan ursprung till API:et utan några begränsningar, >vilket gör API:et sårbart för CSRF-attacker.
Exempel
Om du vill inaktivera CORS för en kontrollant eller åtgärd använder du attributet [DisableCors].
[DisableCors]
public IActionResult About()
{
return View();
}
Kryptera delar av webb-API:ets konfigurationsfiler som innehåller känsliga data
Title | Details |
---|---|
Komponent | Webb-API |
SDL-fas | Distribution |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | Anvisningar: Kryptera konfigurationsavsnitt i ASP.NET 2.0 Med DPAPI, ange en skyddad konfigurationsprovider, använda Azure Key Vault för att skydda programhemligheter |
Steg | Konfigurationsfiler som web.config, appsettings.json används ofta för att lagra känslig information, inklusive användarnamn, lösenord, databas anslutningssträng och krypteringsnycklar. Om du inte skyddar den här informationen är ditt program sårbart för angripare eller skadliga användare som får känslig information, till exempel kontoanvändarnamn och lösenord, databasnamn och servernamn. Baserat på distributionstypen (azure/on-prem) krypterar du de känsliga avsnitten i konfigurationsfiler med DPAPI eller tjänster som Azure Key Vault. |
Se till att alla administratörsgränssnitt skyddas med starka autentiseringsuppgifter
Title | Details |
---|---|
Komponent | IoT-enhet |
SDL-fas | Distribution |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | Ej tillämpligt |
Steg | Alla administrativa gränssnitt som enheten eller fältgatewayen exponerar bör skyddas med starka autentiseringsuppgifter. Dessutom bör alla andra exponerade gränssnitt som WiFi, SSH, Filresurser, FTP skyddas med starka autentiseringsuppgifter. Svaga standardlösenord ska inte användas. |
Kontrollera att okänd kod inte kan köras på enheter
Title | Details |
---|---|
Komponent | IoT-enhet |
SDL-fas | Skapa |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | Aktivera säker start- och BitLocker-enhetskryptering i Windows 10 IoT Core |
Steg | UEFI Secure Boot begränsar systemet till att endast tillåta körning av binärfiler som signerats av en angiven utfärdare. Den här funktionen förhindrar att okänd kod körs på plattformen och potentiellt försvagar säkerhetsstatusen för den. Aktivera säker UEFI-start och begränsa listan över certifikatutfärdare som är betrodda för signeringskod. Signera all kod som distribueras på enheten med någon av de betrodda myndigheterna. |
Kryptera operativsystem och andra partitioner av IoT-enhet med BitLocker
Title | Details |
---|---|
Komponent | IoT-enhet |
SDL-fas | Skapa |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | Ej tillämpligt |
Steg | Windows 10 IoT Core implementerar en enkel version av BitLocker-enhetskryptering, som har ett starkt beroende av förekomsten av en TPM på plattformen, inklusive det nödvändiga preOS-protokollet i UEFI som utför nödvändiga mätningar. Dessa preOS-mätningar säkerställer att operativsystemet senare har en slutgiltig post om hur operativsystemet startades. Kryptera OS-partitioner med BitLocker och andra partitioner även om de lagrar känsliga data. |
Se till att endast de lägsta tjänsterna/funktionerna är aktiverade på enheter
Title | Details |
---|---|
Komponent | IoT-enhet |
SDL-fas | Distribution |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | Ej tillämpligt |
Steg | Aktivera eller inaktivera inte några funktioner eller tjänster i operativsystemet som inte krävs för att lösningen ska fungera. Om enheten till exempel inte kräver att ett användargränssnitt distribueras installerar du Windows IoT Core i huvudlöst läge. |
Kryptera operativsystem och andra partitioner av IoT Field Gateway med BitLocker
Title | Details |
---|---|
Komponent | IoT-fältgateway |
SDL-fas | Distribution |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | Ej tillämpligt |
Steg | Windows 10 IoT Core implementerar en enkel version av BitLocker-enhetskryptering, som har ett starkt beroende av förekomsten av en TPM på plattformen, inklusive det nödvändiga preOS-protokollet i UEFI som utför nödvändiga mätningar. Dessa preOS-mätningar säkerställer att operativsystemet senare har en slutgiltig post om hur operativsystemet startades. Kryptera OS-partitioner med BitLocker och andra partitioner även om de lagrar känsliga data. |
Kontrollera att standardautentiseringsuppgifterna för inloggning för fältgatewayen ändras under installationen
Title | Details |
---|---|
Komponent | IoT-fältgateway |
SDL-fas | Distribution |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | Ej tillämpligt |
Steg | Kontrollera att standardautentiseringsuppgifterna för inloggning för fältgatewayen ändras under installationen |
Se till att Cloud Gateway implementerar en process för att hålla de anslutna enheternas inbyggda programvara uppdaterad
Title | Details |
---|---|
Komponent | IoT Cloud Gateway |
SDL-fas | Skapa |
Tillämpliga tekniker | Allmän |
Attribut | Gatewayval – Azure IoT Hub |
Referenser | Självstudiekurs om IoT Hub Enhetshantering Overview,Device Update for Azure IoT Hub using the Raspberry Pi 3 B+ Reference Image(Enhetsuppdatering för Azure IoT Hub) med hjälp av Raspberry Pi 3 B+-referensbilden. |
Steg | LWM2M är ett protokoll från Open Mobile Alliance for IoT Enhetshantering. Med Azure IoT-enhetshantering kan du interagera med fysiska enheter med hjälp av enhetsjobb. Se till att Cloud Gateway implementerar en process för att rutinmässigt hålla enheten och andra konfigurationsdata uppdaterade med hjälp av Azure IoT Hub Enhetshantering. |
Se till att enheterna har slutpunktssäkerhetskontroller konfigurerade enligt organisationens principer
Title | Details |
---|---|
Komponent | Gränsen för datorförtroende |
SDL-fas | Distribution |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | Ej tillämpligt |
Steg | Se till att enheter har slutpunktssäkerhetskontroller som BitLocker för kryptering på disknivå, antivirusprogram med uppdaterade signaturer, värdbaserad brandvägg, OS-uppgraderingar, grupprinciper osv. konfigureras enligt organisationens säkerhetsprinciper. |
Säkerställa säker hantering av Åtkomstnycklar för Azure Storage
Title | Details |
---|---|
Komponent | Azure Storage |
SDL-fas | Distribution |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | Säkerhetsguide för Azure Storage – Hantera dina lagringskontonycklar |
Steg | Nyckellagring: Vi rekommenderar att du lagrar Azure Storage-åtkomstnycklarna i Azure Key Vault som en hemlighet och att programmen hämtar nyckeln från nyckelvalvet. Detta rekommenderas på grund av följande orsaker:
|
Se till att endast betrott ursprung tillåts om CORS är aktiverat på Azure Storage
Title | Details |
---|---|
Komponent | Azure Storage |
SDL-fas | Skapa |
Tillämpliga tekniker | Allmän |
Attribut | Ej tillämpligt |
Referenser | CORS-stöd för Azure Storage-tjänsterna |
Steg | Med Azure Storage kan du aktivera CORS – resursdelning mellan ursprung. För varje lagringskonto kan du ange domäner som kan komma åt resurserna i lagringskontot. Som standard är CORS inaktiverat för alla tjänster. Du kan aktivera CORS med hjälp av REST-API:et eller lagringsklientbiblioteket för att anropa någon av metoderna för att ange tjänstprinciperna. |
Aktivera WCF:s funktion för tjänstbegränsning
Title | Details |
---|---|
Komponent | WCF |
SDL-fas | Skapa |
Tillämpliga tekniker | .NET Framework 3 |
Attribut | Ej tillämpligt |
Referenser | MSDN, Fortify Kingdom |
Steg | Att inte sätta en gräns för användningen av systemresurser kan leda till resursöverbelastning och i slutändan ett överbelastningsöverbelastning.
|
Exempel
Följande är ett exempel på en konfiguration med begränsning aktiverat:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Throttled">
<serviceThrottling maxConcurrentCalls="[YOUR SERVICE VALUE]" maxConcurrentSessions="[YOUR SERVICE VALUE]" maxConcurrentInstances="[YOUR SERVICE VALUE]" />
...
</system.serviceModel>
Röjande av WCF-Information via metadata
Title | Details |
---|---|
Komponent | WCF |
SDL-fas | Skapa |
Tillämpliga tekniker | .NET Framework 3 |
Attribut | Ej tillämpligt |
Referenser | MSDN, Fortify Kingdom |
Steg | Metadata kan hjälpa angripare att lära sig om systemet och planera en form av attack. WCF-tjänster kan konfigureras för att exponera metadata. Metadata ger detaljerad information om tjänstbeskrivning och bör inte sändas i produktionsmiljöer. Egenskaperna HttpGetEnabled / HttpsGetEnabled för klassen ServiceMetaData definierar om en tjänst ska exponera metadata |
Exempel
Koden nedan instruerar WCF att sända en tjänsts metadata
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri(EndPointAddress);
Host.Description.Behaviors.Add(smb);
Sänd inte tjänstmetadata i en produktionsmiljö. Ange egenskaperna HttpGetEnabled/HttpsGetEnabled för klassen ServiceMetaData till false.
Exempel
Koden nedan instruerar WCF att inte sända en tjänsts metadata.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = false;
smb.HttpGetUrl = new Uri(EndPointAddress);
Host.Description.Behaviors.Add(smb);