Beveiligingsframe: Configuratiebeheer | Oplossingen
CSP (Content Security Policy) implementeren en inline JavaScript uitschakelen
Titel | DETAILS |
---|---|
Onderdeel | Webtoepassing |
SDL-fase | Build |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | Een inleiding tot Inhoudsbeveiligingsbeleid, Naslaginformatie over inhoudsbeveiliging, Inleiding tot inhoudsbeveiligingsbeleid, Kan ik CSP gebruiken? |
Stappen | Content Security Policy (CSP) is een diepgaande beveiligingsmechanisme, een W3C-standaard, waarmee eigenaren van webtoepassingen controle kunnen hebben over de inhoud die is ingesloten op hun site. CSP wordt toegevoegd als een HTTP-antwoordheader op de webserver en wordt afgedwongen op de client naast browsers. Het is een beleid op basis van een lijst: een website kan een set vertrouwde domeinen declareren waaruit actieve inhoud, zoals JavaScript, kan worden geladen. CSP biedt de volgende beveiligingsvoordelen:
|
Opmerking
Voorbeeldbeleid:
Content-Security-Policy: default-src 'self'; script-src 'self' www.google-analytics.com
Met dit beleid kunnen scripts alleen worden geladen vanaf de server van de webtoepassing en de Google Analytics-server. Scripts die vanaf een andere site worden geladen, worden geweigerd. Wanneer CSP is ingeschakeld op een website, worden de volgende functies automatisch uitgeschakeld om XSS-aanvallen te beperken.
Opmerking
Inlinescripts worden niet uitgevoerd. Hieronder volgen voorbeelden van inlinescripts
<script> some JavaScript code </script>
Event handling attributes of HTML tags (for example, <button onclick="function(){}">
javascript:alert(1);
Opmerking
Tekenreeksen worden niet geëvalueerd als code.
Example: var str="alert(1)"; eval(str);
XSS-filter van browser inschakelen
Titel | DETAILS |
---|---|
Onderdeel | Webtoepassing |
SDL-fase | Build |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | XSS-beveiligingsfilter |
Stappen | De configuratie van de antwoordheader van X-XSS-Protection bepaalt het scriptfilter voor meerdere sites van de browser. Deze antwoordheader kan de volgende waarden hebben:
Dit is een Chromium-functie die gebruikmaakt van CSP-schendingenrapporten om details naar een URI van uw keuze te verzenden. De laatste twee opties worden beschouwd als veilige waarden. |
ASP.NET toepassingen moeten tracering en foutopsporing uitschakelen voordat ze worden geïmplementeerd
Titel | DETAILS |
---|---|
Onderdeel | Webtoepassing |
SDL-fase | Build |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | ASP.NET Overzicht van foutopsporing, overzicht van ASP.NET tracering, tracering inschakelen voor een ASP.NET-toepassing, instructies: Foutopsporing inschakelen voor ASP.NET-toepassingen |
Stappen | Wanneer tracering is ingeschakeld voor de pagina, verkrijgt elke browser die deze aanvraagt ook de traceringsgegevens die gegevens over de interne serverstatus en werkstroom bevatten. Deze informatie kan beveiligingsgevoelig zijn. Wanneer foutopsporing is ingeschakeld voor de pagina, worden fouten op de server veroorzaakt door een volledige stacktraceringsgegevens die in de browser worden weergegeven. Deze gegevens bevatten mogelijk beveiligingsgevoelige informatie over de werkstroom van de server. |
Alleen toegang krijgen tot JavaScripts van derden vanuit vertrouwde bronnen
Titel | DETAILS |
---|---|
Onderdeel | Webtoepassing |
SDL-fase | Build |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | N.v.t. |
Stappen | Er mag alleen naar JavaScripts van derden worden verwezen vanuit vertrouwde bronnen. De referentie-eindpunten moeten altijd op TLS zijn. |
Zorg ervoor dat geverifieerde ASP.NET-pagina's ui-verhaal- of click-jacking-verdediging bevatten
Titel | DETAILS |
---|---|
Onderdeel | Webtoepassing |
SDL-fase | Build |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | OWASP click-jacking Defense Cheat Sheet, Internet Explorer Internals - Combating click-jacking with X-Frame-Options |
Stappen | Klik-jacking, ook wel bekend als een 'aanval op gebruikersinterfaceherstel', is wanneer een aanvaller meerdere transparante of ondoorzichtige lagen gebruikt om een gebruiker te misleiden om op een knop of koppeling op een andere pagina te klikken wanneer ze op de pagina op het hoogste niveau wilden klikken. Deze gelaagdheid wordt bereikt door een schadelijke pagina te maken met een iframe, waarmee de pagina van het slachtoffer wordt geladen. De aanvaller is dus 'hijacking' klikken die bedoeld zijn voor hun pagina en deze doorsturen naar een andere pagina, waarschijnlijk eigendom van een andere toepassing, domein of beide. Als u click-jacking-aanvallen wilt voorkomen, stelt u de juiste HTTP-antwoordheaders van X-Frame-Options in die de browser instrueren om framelijsten van andere domeinen niet toe te staan |
Opmerking
De X-FRAME-OPTIONS-header kan worden ingesteld via IIS web.config. Codefragment web.config voor sites die nooit mogen worden omkaderd:
<system.webServer>
<httpProtocol>
<customHeader>
<add name="X-FRAME-OPTIONS" value="DENY"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Opmerking
Web.config-code voor sites die alleen door pagina's in hetzelfde domein mogen worden omlijst:
<system.webServer>
<httpProtocol>
<customHeader>
<add name="X-FRAME-OPTIONS" value="SAMEORIGIN"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Zorg ervoor dat alleen vertrouwde origins zijn toegestaan als CORS is ingeschakeld voor ASP.NET-webtoepassingen
Titel | DETAILS |
---|---|
Onderdeel | Webtoepassing |
SDL-fase | Build |
Toepasselijke technologieën | Webformulieren, MVC5 |
Kenmerken | N.v.t. |
Naslaginformatie | N.v.t. |
Stappen | Browserbeveiliging voorkomt dat een webpagina AJAX-aanvragen indient bij een ander domein. Deze beperking, die bekendstaat als beleid voor zelfde oorsprong, voorkomt dat een kwaadwillende site gevoelige gegevens leest vanaf een andere site. Soms kan het echter nodig zijn om API's veilig beschikbaar te maken die andere sites kunnen gebruiken. Cross Origin Resource Sharing (CORS) is een W3C-standaard waarmee een server hetzelfde origin-beleid kan versoepelen. Met CORS kan een server expliciet bepaalde cross-origin-aanvragen toestaan terwijl andere aanvragen worden geweigerd. CORS is veiliger en flexibeler dan eerdere technieken zoals JSONP. Het inschakelen van CORS wordt in de kern omgezet in het toevoegen van enkele HTTP-antwoordheaders (Access-Control-*) aan de webtoepassing. Dit kan op een aantal manieren worden gedaan. |
Opmerking
Als toegang tot Web.config beschikbaar is, kan CORS worden toegevoegd via de volgende code:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="https://example.com" />
</customHeaders>
</httpProtocol>
Opmerking
Als toegang tot web.config niet beschikbaar is, kan CORS worden geconfigureerd door de volgende C#-code toe te voegen:
HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "https://example.com")
Houd er rekening mee dat het essentieel is om ervoor te zorgen dat de lijst met oorsprongen in het kenmerk Access-Control-Allow-Origin is ingesteld op een eindige en vertrouwde set origins. Als u dit niet op ongepaste wijze configureert (bijvoorbeeld het instellen van de waarde als *), kunnen kwaadwillende sites aanvragen voor cross-origin-aanvragen naar de webtoepassing >zonder beperkingen activeren, waardoor de toepassing kwetsbaar wordt voor CSRF-aanvallen.
Het kenmerk ValidateRequest inschakelen op ASP.NET Pagina's
Titel | DETAILS |
---|---|
Onderdeel | Webtoepassing |
SDL-fase | Build |
Toepasselijke technologieën | Webformulieren, MVC5 |
Kenmerken | N.v.t. |
Naslaginformatie | Aanvraagvalidatie : scriptaanvallen voorkomen |
Stappen | Aanvraagvalidatie, een functie van ASP.NET sinds versie 1.1, voorkomt dat de server inhoud accepteert die niet-gecodeerde HTML bevat. Deze functie is ontworpen om bepaalde scriptinjectieaanvallen te helpen voorkomen, waarbij clientscriptcode of HTML onbewust naar een server kan worden verzonden, opgeslagen en vervolgens aan andere gebruikers kan worden gepresenteerd. We raden u nog steeds ten zeerste aan alle invoergegevens te valideren en HTML te coderen wanneer dit nodig is. Aanvraagvalidatie wordt uitgevoerd door alle invoergegevens te vergelijken met een lijst met mogelijk gevaarlijke waarden. Als er een overeenkomst optreedt, ASP.NET een |
Opmerking
Deze functie kan echter worden uitgeschakeld op paginaniveau:
<%@ Page validateRequest="false" %>
of, op toepassingsniveau
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
Houd er rekening mee dat de functie Validatie van aanvragen niet wordt ondersteund en geen deel uitmaakt van de MVC6-pijplijn.
Lokaal gehoste nieuwste versies van JavaScript-bibliotheken gebruiken
Titel | DETAILS |
---|---|
Onderdeel | Webtoepassing |
SDL-fase | Build |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | N.v.t. |
Stappen | Ontwikkelaars die standaard JavaScript-bibliotheken gebruiken, zoals JQuery, moeten goedgekeurde versies van algemene JavaScript-bibliotheken gebruiken die geen bekende beveiligingsfouten bevatten. Een goede gewoonte is om de meest recente versie van de bibliotheken te gebruiken, omdat deze beveiligingsoplossingen bevatten voor bekende beveiligingsproblemen in hun oudere versies. Als de meest recente release niet kan worden gebruikt vanwege compatibiliteitsredenen, moeten de onderstaande minimumversies worden gebruikt. Acceptabele minimumversies:
Laad nooit een JavaScript-bibliotheek van externe sites, zoals openbare CDN's |
Automatische MIME-sniffing uitschakelen
Titel | DETAILS |
---|---|
Onderdeel | Webtoepassing |
SDL-fase | Build |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | IE8-beveiligingsonderdeel V: Uitgebreide beveiliging, MIME-type |
Stappen | De header X-Content-Type-Options is een HTTP-header waarmee ontwikkelaars kunnen opgeven dat hun inhoud niet MIME-sniffed mag zijn. Deze header is ontworpen om MIME-Sniffing-aanvallen te beperken. Voor elke pagina die besturingselementbare inhoud van de gebruiker kan bevatten, moet u de HTTP-header X-Content-Type-Options:nosniff gebruiken. Als u de vereiste header globaal wilt inschakelen voor alle pagina's in de toepassing, kunt u een van de volgende handelingen uitvoeren |
Opmerking
Voeg de header toe aan het web.config-bestand als de toepassing wordt gehost door IIS (Internet Information Services) 7 en hoger.
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Opmerking
Voeg de header toe via de globale Application_BeginRequest
void Application_BeginRequest(object sender, EventArgs e)
{
this.Response.Headers["X-Content-Type-Options"] = "nosniff";
}
Opmerking
Aangepaste HTTP-module implementeren
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");
}
}
Opmerking
U kunt de vereiste header alleen inschakelen voor specifieke pagina's door deze toe te voegen aan afzonderlijke antwoorden:
this.Response.Headers["X-Content-Type-Options"] = "nosniff";
Standaardserverheaders verwijderen op Windows Azure-websites om vingerafdrukken te voorkomen
Titel | DETAILS |
---|---|
Onderdeel | Webtoepassing |
SDL-fase | Build |
Toepasselijke technologieën | Algemeen |
Kenmerken | EnvironmentType - Azure |
Naslaginformatie | Standaardserverheaders verwijderen op Windows Azure-websites |
Stappen | Headers zoals Server, X-Powered-By, X-AspNet-Version onthullen informatie over de server en de onderliggende technologieën. Het wordt aanbevolen om deze headers te onderdrukken, waardoor vingerafdruk van de toepassing wordt voorkomen |
Een Windows Firewall configureren voor Database Engine Access
Titel | DETAILS |
---|---|
Onderdeel | Database |
SDL-fase | Build |
Toepasselijke technologieën | SQL Azure, OnPrem |
Kenmerken | N.v.v., SQL-versie - V12 |
Naslaginformatie | Een Azure SQL Database-firewall configureren, een Windows Firewall configureren voor Database Engine Access |
Stappen | Firewallsystemen helpen onbevoegde toegang tot computerresources te voorkomen. Als u toegang wilt krijgen tot een exemplaar van de SQL Server Database Engine via een firewall, moet u de firewall op de computer met SQL Server configureren om toegang toe te staan |
Zorg ervoor dat alleen vertrouwde origins zijn toegestaan als CORS is ingeschakeld op ASP.NET Web-API
Titel | DETAILS |
---|---|
Onderdeel | Web-API |
SDL-fase | Build |
Toepasselijke technologieën | MVC 5 |
Kenmerken | N.v.t. |
Naslaginformatie | Cross-Origin-aanvragen inschakelen in ASP.NET Web-API 2, ASP.NET Web-API - CORS-ondersteuning in ASP.NET Web-API 2 |
Stappen | Browserbeveiliging voorkomt dat een webpagina AJAX-aanvragen indient bij een ander domein. Deze beperking, die bekendstaat als beleid voor zelfde oorsprong, voorkomt dat een kwaadwillende site gevoelige gegevens leest vanaf een andere site. Soms kan het echter nodig zijn om API's veilig beschikbaar te maken die andere sites kunnen gebruiken. Cross Origin Resource Sharing (CORS) is een W3C-standaard waarmee een server hetzelfde origin-beleid kan versoepelen. Met CORS kan een server expliciet bepaalde cross-origin-aanvragen toestaan terwijl andere aanvragen worden geweigerd. CORS is veiliger en flexibeler dan eerdere technieken zoals JSONP. |
Opmerking
Voeg in de App_Start/WebApiConfig.cs de volgende code toe aan de methode 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 }
);
}
}
}
Opmerking
EnableCors-kenmerk kan als volgt worden toegepast op actiemethoden in een controller:
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);
}
}
Houd er rekening mee dat het essentieel is om ervoor te zorgen dat de lijst met oorsprongen in het kenmerk EnableCors is ingesteld op een eindige en vertrouwde set origins. Als u dit niet op ongepaste wijze configureert (bijvoorbeeld door de waarde in te stellen als '*'), kunnen kwaadwillende sites aanvragen voor meerdere oorsprongen zonder beperkingen activeren voor de API, >waardoor de API kwetsbaar wordt voor CSRF-aanvallen. EnableCors kan worden ingericht op controllerniveau.
Opmerking
Als u CORS wilt uitschakelen voor een bepaalde methode in een klasse, kan het kenmerk DisableCors worden gebruikt zoals hieronder wordt weergegeven:
[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);
}
}
Titel | DETAILS |
---|---|
Onderdeel | Web-API |
SDL-fase | Build |
Toepasselijke technologieën | MVC 6 |
Kenmerken | N.v.t. |
Naslaginformatie | CORS (Cross-Origin Requests) inschakelen in ASP.NET Core 1.0 |
Stappen | In ASP.NET Core 1.0 kan CORS worden ingeschakeld met behulp van middleware of MVC. Wanneer u MVC gebruikt om CORS in te schakelen, worden dezelfde CORS-services gebruikt, maar de CORS-middleware is dat niet. |
Aanpak-1 CORS met middleware inschakelen: als u CORS wilt inschakelen voor de hele toepassing, voegt u de CORS-middleware toe aan de aanvraagpijplijn met behulp van de UseCors-extensiemethode. Er kan een cross-origin-beleid worden opgegeven bij het toevoegen van de CORS-middleware met behulp van de klasse CorsPolicyBuilder. Er zijn twee manieren om dit te doen:
Opmerking
De eerste is het aanroepen van UseCors met een lambda. De lambda neemt een CorsPolicyBuilder-object:
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"));
}
Opmerking
Ten tweede definieert u een of meer benoemde CORS-beleidsregels en selecteert u vervolgens het beleid op naam tijdens runtime.
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!");
});
}
Aanpak-2 CORS inschakelen in MVC: ontwikkelaars kunnen MVC ook gebruiken om specifieke CORS per actie, per controller of globaal toe te passen voor alle controllers.
Opmerking
Per actie: Als u een CORS-beleid voor een specifieke actie wilt opgeven, voegt u het kenmerk [EnableCors] toe aan de actie. Geef de beleidsnaam op.
public class HomeController : Controller
{
[EnableCors("AllowSpecificOrigin")]
public IActionResult Index()
{
return View();
}
Opmerking
Per controller:
[EnableCors("AllowSpecificOrigin")]
public class HomeController : Controller
{
Opmerking
Wereldwijd:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new CorsAuthorizationFilterFactory("AllowSpecificOrigin"));
});
}
Houd er rekening mee dat het essentieel is om ervoor te zorgen dat de lijst met oorsprongen in het kenmerk EnableCors is ingesteld op een eindige en vertrouwde set origins. Als u dit niet op ongepaste wijze configureert (bijvoorbeeld door de waarde in te stellen als '*'), kunnen kwaadwillende sites aanvragen voor meerdere oorsprongen zonder beperkingen activeren voor de API, >waardoor de API kwetsbaar wordt voor CSRF-aanvallen.
Opmerking
Als u CORS wilt uitschakelen voor een controller of actie, gebruikt u het kenmerk [DisableCors]..
[DisableCors]
public IActionResult About()
{
return View();
}
Secties van de configuratiebestanden van de web-API versleutelen die gevoelige gegevens bevatten
Titel | DETAILS |
---|---|
Onderdeel | Web-API |
SDL-fase | Implementatie |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | Procedure: Configuratiesecties versleutelen in ASP.NET 2.0 met behulp van DPAPI, het opgeven van een beveiligde configuratieprovider, het gebruik van Azure Key Vault om toepassingsgeheimen te beveiligen |
Stappen | Configuratiebestanden zoals web.config, appsettings.json worden vaak gebruikt voor het opslaan van gevoelige informatie, waaronder gebruikersnamen, wachtwoorden, database-verbindingsreeks s en versleutelingssleutels. Als u deze gegevens niet beveiligt, is uw toepassing kwetsbaar voor aanvallers of kwaadwillende gebruikers die gevoelige informatie verkrijgen, zoals gebruikersnamen en wachtwoorden van accounts, databasenamen en servernamen. Versleutel de gevoelige secties van configuratiebestanden op basis van het implementatietype (azure/on-premises) met behulp van DPAPI of services zoals Azure Key Vault. |
Zorg ervoor dat alle beheerinterfaces zijn beveiligd met sterke referenties
Titel | DETAILS |
---|---|
Onderdeel | IoT-apparaat |
SDL-fase | Implementatie |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | N.v.t. |
Stappen | Alle beheerinterfaces die het apparaat of de veldgateway beschikbaar maakt, moeten worden beveiligd met sterke referenties. Bovendien moeten alle andere blootgestelde interfaces, zoals WiFi, SSH, Bestandsshares, FTP worden beveiligd met sterke referenties. Standaard zwakke wachtwoorden mogen niet worden gebruikt. |
Zorg ervoor dat onbekende code niet kan worden uitgevoerd op apparaten
Titel | DETAILS |
---|---|
Onderdeel | IoT-apparaat |
SDL-fase | Build |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | Beveiligd opstarten en BitLocker-apparaatversleuteling inschakelen in Windows 10 IoT Core |
Stappen | Met UEFI Secure Boot wordt het systeem beperkt tot het alleen uitvoeren van binaire bestanden die zijn ondertekend door een opgegeven instantie. Met deze functie voorkomt u dat onbekende code wordt uitgevoerd op het platform en mogelijk de beveiligingspostuur ervan verzwakt. Schakel UEFI Secure Boot in en beperk de lijst met certificeringsinstanties die worden vertrouwd voor ondertekeningscode. Onderteken alle code die op het apparaat is geïmplementeerd met behulp van een van de vertrouwde autoriteiten. |
Besturingssysteem en andere partities van IoT-apparaat versleutelen met BitLocker
Titel | DETAILS |
---|---|
Onderdeel | IoT-apparaat |
SDL-fase | Build |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | N.v.t. |
Stappen | Windows 10 IoT Core implementeert een lichtgewicht versie van BitLocker-apparaatversleuteling, die sterk afhankelijk is van de aanwezigheid van een TPM op het platform, met inbegrip van het benodigde preOS-protocol in UEFI die de benodigde metingen uitvoert. Deze preOS-metingen zorgen ervoor dat het besturingssysteem later een definitieve record heeft over hoe het besturingssysteem is gestart. Besturingssysteempartities versleutelen met BitLocker en eventuele andere partities, ook voor het geval ze gevoelige gegevens opslaan. |
Zorg ervoor dat alleen de minimale services/functies zijn ingeschakeld op apparaten
Titel | DETAILS |
---|---|
Onderdeel | IoT-apparaat |
SDL-fase | Implementatie |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | N.v.t. |
Stappen | Schakel functies of services in het besturingssysteem die niet vereist zijn voor het functioneren van de oplossing niet in of uit. Als voor het apparaat bijvoorbeeld geen gebruikersinterface is vereist, installeert u Windows IoT Core in de headless-modus. |
Besturingssysteem en andere partities van IoT Field Gateway versleutelen met BitLocker
Titel | DETAILS |
---|---|
Onderdeel | IoT-veldgateway |
SDL-fase | Implementatie |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | N.v.t. |
Stappen | Windows 10 IoT Core implementeert een lichtgewicht versie van BitLocker-apparaatversleuteling, die sterk afhankelijk is van de aanwezigheid van een TPM op het platform, met inbegrip van het benodigde preOS-protocol in UEFI die de benodigde metingen uitvoert. Deze preOS-metingen zorgen ervoor dat het besturingssysteem later een definitieve record heeft over hoe het besturingssysteem is gestart. Besturingssysteempartities versleutelen met BitLocker en eventuele andere partities, ook voor het geval ze gevoelige gegevens opslaan. |
Zorg ervoor dat de standaardaanmeldingsreferenties van de veldgateway tijdens de installatie worden gewijzigd
Titel | DETAILS |
---|---|
Onderdeel | IoT-veldgateway |
SDL-fase | Implementatie |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | N.v.t. |
Stappen | Zorg ervoor dat de standaardaanmeldingsreferenties van de veldgateway tijdens de installatie worden gewijzigd |
Zorg ervoor dat de Cloud Gateway een proces implementeert om de firmware van verbonden apparaten up-to-date te houden
Titel | DETAILS |
---|---|
Onderdeel | IoT Cloud Gateway |
SDL-fase | Build |
Toepasselijke technologieën | Algemeen |
Kenmerken | Gatewaykeuze - Azure IoT Hub |
Naslaginformatie | IoT Hub Apparaatbeheer Overview, Device Update for Azure IoT Hub tutorial using the Raspberry Pi 3 B+ Reference Image. |
Stappen | LWM2M is een protocol van de Open Mobile Alliance for IoT Apparaatbeheer. Met Azure IoT-apparaatbeheer kunt u communiceren met fysieke apparaten met behulp van apparaattaken. Zorg ervoor dat de Cloud Gateway een proces implementeert om het apparaat en andere configuratiegegevens regelmatig up-to-date te houden met behulp van Azure IoT Hub Apparaatbeheer. |
Zorg ervoor dat apparaten eindpuntbeveiligingsbesturingselementen hebben die zijn geconfigureerd volgens het organisatiebeleid
Titel | DETAILS |
---|---|
Onderdeel | Grens van machinevertrouwen |
SDL-fase | Implementatie |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | N.v.t. |
Stappen | Zorg ervoor dat apparaten eindpuntbeveiligingsmechanismen hebben, zoals BitLocker voor versleuteling op schijfniveau, antivirusprogramma's met bijgewerkte handtekeningen, firewall op basis van een host, upgrades van het besturingssysteem, groepsbeleid, enzovoort, zijn geconfigureerd volgens het beveiligingsbeleid van de organisatie. |
Veilig beheer van Toegangssleutels voor Azure Storage garanderen
Titel | DETAILS |
---|---|
Onderdeel | Azure Storage |
SDL-fase | Implementatie |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | Beveiligingshandleiding voor Azure Storage - Uw opslagaccountsleutels beheren |
Stappen | Sleutelopslag: het wordt aanbevolen om de Azure Storage-toegangssleutels in Azure Key Vault op te slaan als geheim en de toepassingen de sleutel uit de sleutelkluis laten ophalen. Dit wordt aanbevolen om de volgende redenen:
|
Zorg ervoor dat alleen vertrouwde origins zijn toegestaan als CORS is ingeschakeld in Azure Storage
Titel | DETAILS |
---|---|
Onderdeel | Azure Storage |
SDL-fase | Build |
Toepasselijke technologieën | Algemeen |
Kenmerken | N.v.t. |
Naslaginformatie | CORS-ondersteuning voor Azure Storage Services |
Stappen | Met Azure Storage kunt u CORS – Cross Origin Resource Sharing inschakelen. Voor elk opslagaccount kunt u domeinen opgeven die toegang hebben tot de resources in dat opslagaccount. CORS is standaard uitgeschakeld voor alle services. U kunt CORS inschakelen met behulp van de REST API of de opslagclientbibliotheek om een van de methoden aan te roepen om het servicebeleid in te stellen. |
De servicebeperkingsfunctie van WCF inschakelen
Titel | DETAILS |
---|---|
Onderdeel | WCF |
SDL-fase | Build |
Toepasselijke technologieën | .NET Framework 3 |
Kenmerken | N.v.t. |
Naslaginformatie | MSDN, Fortify Kingdom |
Stappen | Het niet plaatsen van een limiet voor het gebruik van systeemresources kan leiden tot uitputting van resources en uiteindelijk een Denial of Service.
|
Opmerking
Hier volgt een voorbeeldconfiguratie waarbij beperking is ingeschakeld:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Throttled">
<serviceThrottling maxConcurrentCalls="[YOUR SERVICE VALUE]" maxConcurrentSessions="[YOUR SERVICE VALUE]" maxConcurrentInstances="[YOUR SERVICE VALUE]" />
...
</system.serviceModel>
Openbaarmaking van WCF-informatie via metagegevens
Titel | DETAILS |
---|---|
Onderdeel | WCF |
SDL-fase | Build |
Toepasselijke technologieën | .NET Framework 3 |
Kenmerken | N.v.t. |
Naslaginformatie | MSDN, Fortify Kingdom |
Stappen | Met metagegevens kunnen aanvallers meer te weten komen over het systeem en een vorm van aanvallen plannen. WCF-services kunnen worden geconfigureerd om metagegevens beschikbaar te maken. Metagegevens geven gedetailleerde informatie over de servicebeschrijving en mogen niet worden uitgezonden in productieomgevingen. De HttpGetEnabled / HttpsGetEnabled eigenschappen van de ServiceMetaData-klasse bepalen of een service de metagegevens beschikbaar maakt |
Opmerking
De onderstaande code geeft WCF opdracht om de metagegevens van een service uit te zenden
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri(EndPointAddress);
Host.Description.Behaviors.Add(smb);
Verzend geen servicemetagegevens in een productieomgeving. Stel de eigenschappen HttpGetEnabled/HttpsGetEnabled van de ServiceMetaData-klasse in op false.
Opmerking
De onderstaande code geeft WCF opdracht om de metagegevens van een service niet uit te zenden.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = false;
smb.HttpGetUrl = new Uri(EndPointAddress);
Host.Description.Behaviors.Add(smb);