Bingkai Keamanan: Manajemen Konfigurasi | Mitigasi
Menerapkan Content Security Policy (CSP), dan menonaktifkan javascript sebaris
Judul | Detail |
---|---|
Komponen | Aplikasi Web |
Fase SDL | Build |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | Pengantar Kebijakan Keamanan Konten, Referensi Kebijakan Keamanan Konten, Pengantar kebijakan keamanan konten, Bisakah saya menggunakan CSP? |
Langkah-langkah | Content Security Policy (CSP) adalah mekanisme keamanan pertahanan mendalam, standar W3C, yang memungkinkan pemilik aplikasi web memiliki kontrol pada konten yang disematkan di situs mereka. CSP ditambahkan sebagai header respons HTTP di server web dan diberlakukan di sisi klien oleh browser. Ini adalah kebijakan berbasis daftar yang diizinkan - situs web dapat mendeklarasikan sekumpulan domain tepercaya dari tempat konten aktif seperti JavaScript dapat dimuat. CSP memberikan manfaat keamanan berikut:
|
Contoh
Contoh kebijakan:
Content-Security-Policy: default-src 'self'; script-src 'self' www.google-analytics.com
Kebijakan ini memungkinkan skrip melakukan pemuatan hanya dari server aplikasi web dan server analitik google. Skrip yang dimuat dari situs lain akan ditolak. Ketika CSP diaktifkan di situs web, fitur berikut akan secara otomatis dinonaktifkan untuk mengurangi serangan XSS.
Contoh
Skrip sebaris tidak akan dijalankan. Berikut ini adalah contoh skrip sebaris
<script> some JavaScript code </script>
Event handling attributes of HTML tags (for example, <button onclick="function(){}">
javascript:alert(1);
Contoh
String tidak akan dievaluasi sebagai kode.
Example: var str="alert(1)"; eval(str);
Mengaktifkan filter XSS browser
Judul | Detail |
---|---|
Komponen | Aplikasi Web |
Fase SDL | Build |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | Filter Perlindungan XSS |
Langkah-langkah | Konfigurasi header respons X-XSS-Protection mengontrol filter skrip lintas situs browser. Header respons ini bisa memiliki nilai berikut:
Ini adalah fungsi Chromium yang menggunakan laporan pelanggaran CSP untuk mengirim detail ke URI pilihan Anda. Dua opsi terakhir dianggap sebagai nilai yang aman. |
Aplikasi ASP.NET harus menonaktifkan pelacakan dan penelusuran kesalahan sebelum penyebaran
Judul | Detail |
---|---|
Komponen | Aplikasi Web |
Fase SDL | Build |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | Ringkasan Penelusuran Kesalahan ASP.NET, Ringkasan Pelacakan ASP.NET, Cara: Mengaktifkan Pelacakan untuk Aplikasi ASP.NET, Cara: Mengaktifkan Penelusuran Kesalahan untuk Aplikasi ASP.NET |
Langkah-langkah | Saat menelusuri diaktifkan untuk halaman, setiap browser yang memintanya juga mendapatkan informasi jejak yang berisi data tentang status server internal dan alur kerja. Informasi tersebut bisa bersifat sensitif terhadap keamanan. Ketika penelusuran kesalahan diaktifkan untuk halaman, kesalahan yang terjadi di server menghasilkan data pelacakan tumpukan penuh yang disajikan ke browser. Data tersebut dapat mengekspos informasi sensitif terhadap keamanan tentang alur kerja server. |
Akses JavaScript pihak ketiga hanya dari sumber tepercaya
Judul | Detail |
---|---|
Komponen | Aplikasi Web |
Fase SDL | Build |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | T/A |
Langkah-langkah | JavaScript pihak ketiga harus direferensikan hanya dari sumber tepercaya. Titik akhir referensi harus selalu berada di TLS. |
Pastikan bahwa halaman ASP.NET yang terautentikasi menggabungkan pertahanan Redressing UI atau click-jacking
Judul | Detail |
---|---|
Komponen | Aplikasi Web |
Fase SDL | Build |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | OWASP click-jacking Defense Cheat Sheet, Internet Explorer Internals - Memerangi click-jacking Dengan X-Frame-Options |
Langkah-langkah | click-jacking, yang juga dikenal sebagai "serangan redress UI", terjadi ketika penyerang menggunakan beberapa lapisan transparan atau buram untuk mengelabui pengguna agar mengklik tombol atau tautan di halaman lainnya saat bertujuan ingin mengklik halaman tingkat atas. Lapisan ini dicapai dengan membuat halaman berbahaya dengan iframe, yang memuat halaman korban. Dengan demikian, penyerang "membajak" klik yang dimaksudkan untuk halaman mereka dan merutekannya ke halaman lain, yang kemungkinan besar dimiliki oleh aplikasi lain, domain, atau keduanya. Untuk mencegah serangan click-jacking, tentukan header respons HTTP X-Frame-Options yang sesuai yang menginstruksikan browser untuk tidak mengizinkan pembingkaian dari domain lain |
Contoh
Header X-FRAME-OPTIONS dapat diatur melalui cuplikan kode IIS web.config. Web.config untuk situs yang tidak boleh dibingkai:
<system.webServer>
<httpProtocol>
<customHeader>
<add name="X-FRAME-OPTIONS" value="DENY"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Contoh
Web.config untuk situs yang seharusnya hanya dibingkai oleh halaman di domain yang sama:
<system.webServer>
<httpProtocol>
<customHeader>
<add name="X-FRAME-OPTIONS" value="SAMEORIGIN"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Memastikan bahwa hanya asal yang tepercaya saja yang diizinkan jika CORS diaktifkan di Aplikasi Web ASP.NET
Judul | Detail |
---|---|
Komponen | Aplikasi Web |
Fase SDL | Build |
Teknologi yang Berlaku | Web Forms, MVC5 |
Atribut | T/A |
Referensi | T/A |
Langkah-langkah | Keamanan browser mencegah halaman web untuk membuat permintaan AJAX ke domain lain. Pembatasan ini disebut kebijakan asal yang sama, dan mencegah situs yang berbahaya membaca data yang bersifat sensitif dari situs lain. Namun, terkadang API perlu diekspos dengan aman agar dapat dikonsumsi situs lain. Cross Origin Resource Sharing (CORS) adalah standar W3C yang memungkinkan server untuk melonggarkan kebijakan asal yang sama. Dengan menggunakan CORS, server dapat secara eksplisit mengizinkan beberapa permintaan lintas-asal sekaligus menolak permintaan lainnya. CORS lebih aman dan fleksibel daripada teknik sebelumnya seperti JSONP. Intinya, dengan mengaktifkan CORS, beberapa header respons HTTP (Access-Control-*) akan ditambahkan ke aplikasi web dan hal ini dapat dilakukan dengan beberapa cara. |
Contoh
Jika akses ke Web.config tersedia, maka CORS dapat ditambahkan melalui kode berikut:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="https://example.com" />
</customHeaders>
</httpProtocol>
Contoh
Jika akses ke web.config tidak tersedia, CORS dapat dikonfigurasi dengan menambahkan kode C# berikut:
HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "https://example.com")
Sangat penting untuk memastikan bahwa daftar asal dalam atribut "Access-Control-Allow-Origin" diatur ke dalam asal yang terbatas dan yang tepercaya. Gagal mengonfigurasi ini secara tidak tepat (misalnya, mengatur nilai sebagai '*') akan memungkinkan situs berbahaya memicu permintaan lintas asal ke aplikasi web >tanpa batasan apa pun, sehingga membuat aplikasi rentan terhadap serangan CSRF.
Mengaktifkan atribut ValidateRequest di Halaman ASP.NET
Judul | Detail |
---|---|
Komponen | Aplikasi Web |
Fase SDL | Build |
Teknologi yang Berlaku | Web Forms, MVC5 |
Atribut | T/A |
Referensi | Validasi Permintaan - Mencegah Serangan Skrip |
Langkah-langkah | Validasi permintaan, fitur dari ASP.NET versi 1.1, mencegah server menerima konten yang berisi HTML yang tidak dikodekan. Fitur ini dirancang untuk membantu mencegah beberapa serangan injeksi skrip di mana kode skrip klien atau HTML dapat tanpa sadar dikirimkan ke server, disimpan, dan kemudian diberikan kepada pengguna lain. Kami masih sangat merekomendasikan Anda untuk memvalidasi semua data input dan HTML serta mengodekannya di saat yang tepat. Validasi permintaan dilakukan dengan membandingkan semua data input dengan daftar nilai yang berpotensi berbahaya. Jika ada kecocokan dari perbandingan tersebut, ASP.NET akan mengeluarkan |
Contoh
Namun, fitur ini dapat dinonaktifkan di tingkat halaman:
<%@ Page validateRequest="false" %>
atau, di tingkat aplikasi.
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
Perhatikan bahwa fitur Validasi Permintaan tidak didukung dan bukan bagian dari alur MVC6.
Menggunakan versi terbaru pustaka JavaScript yang dihosting secara lokal
Judul | Detail |
---|---|
Komponen | Aplikasi Web |
Fase SDL | Build |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | T/A |
Langkah-langkah | Pengembang yang menggunakan pustaka JavaScript standar seperti JQuery harus menggunakan versi yang disetujui dari pustaka JavaScript umum yang tidak berisi kelemahan pada keamanan yang telah dikenali. Praktik baiknya adalah menggunakan versi pustaka terbaru, karena berisi perbaikan keamanan untuk kerentanan yang sudah dikenali dalam versi lama. Jika rilis terbaru tidak dapat digunakan karena alasan kompatibilitas, versi minimum di bawah ini harus digunakan. Versi minimum yang dapat diterima:
Jangan pernah memuat pustaka JavaScript apa pun dari situs eksternal seperti CDN publik |
Menonaktifkan pengendusan MIME otomatis
Judul | Detail |
---|---|
Komponen | Aplikasi Web |
Fase SDL | Build |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | Keamanan IE8 Bagian V: Perlindungan yang Komprehensif, jenis MIME |
Langkah-langkah | Header X-Content-Type-Options adalah header HTTP yang memungkinkan pengembang menentukan bahwa konten mereka tidak boleh diendus MIME. Header ini dirancang untuk mengurangi serangan MIME-Sniffing. Untuk setiap halaman yang bisa berisi konten yang dapat dikontrol pengguna, Anda harus menggunakan Header HTTP X-Content-Type-Options:nosniff. Untuk mengaktifkan header yang diperlukan untuk halaman di aplikasi secara global, Anda melakukan salah satu dari berikut |
Contoh
Tambahkan header di file web.config jika aplikasi dihosting oleh Internet Information Services (IIS) 7 dan seterusnya.
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Contoh
Tambahkan header melalui Application_BeginRequest global
void Application_BeginRequest(object sender, EventArgs e)
{
this.Response.Headers["X-Content-Type-Options"] = "nosniff";
}
Contoh
Terapkan modul HTTP kustom
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");
}
}
Contoh
Anda hanya dapat mengaktifkan header yang diperlukan untuk halaman tertentu dengan menambahkannya ke respons individual:
this.Response.Headers["X-Content-Type-Options"] = "nosniff";
Menghapus header server standar di Windows Azure Web Sites untuk menghindari pengambilan sidik jari
Judul | Detail |
---|---|
Komponen | Aplikasi Web |
Fase SDL | Build |
Teknologi yang Berlaku | Generik |
Atribut | EnvironmentType - Azure |
Referensi | Menghapus header server standar di Windows Azure Web Sites |
Langkah-langkah | Header seperti Server, X-Powered-By, X-AspNet-Version mengungkapkan informasi tentang server dan teknologi yang mendasarinya. Sebaiknya hambat header ini sehingga mencegah pengambilan sidik jari dari aplikasi |
Mengonfigurasi Windows Firewall untuk Database Engine Access
Judul | Detail |
---|---|
Komponen | Database |
Fase SDL | Build |
Teknologi yang Berlaku | SQL Azure, OnPrem |
Atribut | N/A, Versi SQL - V12 |
Referensi | Cara mengonfigurasi firewall Database Azure SQL Database, Mengonfigurasi Windows Firewall untuk Database Engine Access |
Langkah-langkah | Sistem firewall membantu mencegah akses tidak sah ke sumber daya komputer. Untuk mengakses instans SQL Server Database Engine melalui firewall, Anda harus mengonfigurasi firewall di komputer yang menjalankan SQL Server untuk mengizinkan akses |
Memastikan bahwa hanya asal yang tepercaya yang diizinkan jika CORS diaktifkan di API Web ASP.NET
Judul | Detail |
---|---|
Komponen | API Web |
Fase SDL | Build |
Teknologi yang Berlaku | MVC 5 |
Atribut | T/A |
Referensi | Mengaktifkan Permintaan Lintas Asal di API Web ASP.NET 2, API Web ASP.NET - Dukungan CORS di API Web ASP.NET 2 |
Langkah-langkah | Keamanan browser mencegah halaman web untuk membuat permintaan AJAX ke domain lain. Pembatasan ini disebut kebijakan asal yang sama, dan mencegah situs yang berbahaya membaca data yang bersifat sensitif dari situs lain. Namun, terkadang API perlu diekspos dengan aman agar dapat dikonsumsi situs lain. Cross Origin Resource Sharing (CORS) adalah standar W3C yang memungkinkan server untuk melonggarkan kebijakan asal yang sama. Dengan menggunakan CORS, server dapat secara eksplisit mengizinkan beberapa permintaan lintas-asal sekaligus menolak permintaan lainnya. CORS lebih aman dan fleksibel daripada teknik sebelumnya seperti JSONP. |
Contoh
Di App_Start/WebApiConfig.cs, tambahkan kode berikut ke metode 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 }
);
}
}
}
Contoh
Atribut EnableCors dapat diterapkan ke metode tindakan di pengontrol sebagai berikut:
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);
}
}
Perhatikan bahwa sangat penting untuk memastikan bahwa daftar asal di atribut EnableCors diatur ke kumpulan asal yang terbatas dan tepercaya. Gagal mengonfigurasi ini secara tidak tepat (misalnya, mengatur nilai sebagai '*') akan memungkinkan situs berbahaya memicu permintaan lintas asal ke API tanpa batasan apa pun, >sehingga membuat API rentan terhadap serangan CSRF. EnableCors dapat dilengkapi di tingkat pengontrol.
Contoh
Untuk menonaktifkan CORS pada metode tertentu di kelas, atribut DisableCors dapat digunakan seperti yang ditunjukkan di bawah ini:
[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);
}
}
Judul | Detail |
---|---|
Komponen | API Web |
Fase SDL | Build |
Teknologi yang Berlaku | 'MVC 6 |
Atribut | T/A |
Referensi | Mengaktifkan Permintaan Lintas-Asal (CORS) di ASP.NET Core 1.0 |
Langkah-langkah | Di ASP.NET Core 1.0, CORS dapat diaktifkan dengan menggunakan middleware atau MVC. Saat menggunakan MVC untuk mengaktifkan CORS, layanan CORS yang sama akan digunakan, namun tidak dengan middleware CORS. |
Approach-1 Mengaktifkan CORS dengan middleware: Guna mengaktifkan CORS untuk seluruh aplikasi, tambahkan middleware CORS ke alur permintaan menggunakan metode ekstensi UseCors. Kebijakan lintas-asal dapat ditentukan saat menambahkan middleware CORS menggunakan kelas CorsPolicyBuilder. Ada dua cara untuk melakukannya:
Contoh
Cara yang pertama adalah dengan memanggil UseCors dengan lambda. Lambda mengambil objek CorsPolicyBuilder:
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"));
}
Contoh
Cara yang kedua adalah dengan menentukan satu atau beberapa kebijakan CORS yang telah diberi nama, lalu memilih kebijakan berdasarkan nama pada durasi.
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!");
});
}
Approach-2 Mengaktifkan CORS di MVC: Pengembang dapat menggunakan MVC untuk menerapkan CORS tertentu per tindakan, per pengontrol, atau secara global untuk semua pengontrol.
Contoh
Per tindakan: Guna menentukan kebijakan CORS untuk tindakan tertentu, tambahkan atribut [EnableCors] ke tindakan. Tentukan nama kebijakan.
public class HomeController : Controller
{
[EnableCors("AllowSpecificOrigin")]
public IActionResult Index()
{
return View();
}
Contoh
Per Pengontrol:
[EnableCors("AllowSpecificOrigin")]
public class HomeController : Controller
{
Contoh
Secara global:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new CorsAuthorizationFilterFactory("AllowSpecificOrigin"));
});
}
Perhatikan bahwa sangat penting untuk memastikan bahwa daftar asal di atribut EnableCors diatur ke kumpulan asal yang terbatas dan tepercaya. Gagal mengonfigurasi ini secara tidak tepat (misalnya, mengatur nilai sebagai '*') akan memungkinkan situs berbahaya memicu permintaan lintas asal ke API tanpa batasan apa pun, >sehingga membuat API rentan terhadap serangan CSRF.
Contoh
Guna menonaktifkan CORS untuk pengontrol atau tindakan, gunakan atribut [DisableCors].
[DisableCors]
public IActionResult About()
{
return View();
}
Mengenkripsi bagian file konfigurasi API Web yang berisi data sensitif
Judul | Detail |
---|---|
Komponen | API Web |
Fase SDL | Penyebaran |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | Panduan: Mengenkripsi Bagian Konfigurasi di ASP.NET 2.0 Menggunakan DPAPI, Menentukan Penyedia Konfigurasi Dilindungi, Menggunakan Azure Key Vault untuk melindungi rahasia aplikasi |
Langkah-langkah | File konfigurasi seperti Web.config, appsettings.json sering digunakan untuk menyimpan informasi sensitif, termasuk nama pengguna, kata sandi, string koneksi database, dan kunci enkripsi. Jika Anda tidak melindungi informasi ini, aplikasi Anda rentan terhadap penyerang atau pengguna jahat yang mendapatkan informasi sensitif seperti nama pengguna akun dan kata sandi, nama database, dan nama server. Berdasarkan jenis penyebaran (azure/lokal), enkripsi bagian sensitif file konfigurasi menggunakan DPAPI atau layanan seperti Azure Key Vault. |
Memastikan bahwa semua antarmuka admin diamankan dengan informasi masuk yang kuat
Judul | Detail |
---|---|
Komponen | Perangkat IoT |
Fase SDL | Penyebaran |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | T/A |
Langkah-langkah | Antarmuka administratif apa pun yang diekspos oleh perangkat atau gateway bidang harus diamankan menggunakan informasi masuk yang kuat. Selain itu, antarmuka lain yang terekspos seperti WiFi, SSH, Berbagi file, FTP harus diamankan dengan informasi masuk yang kuat. Kata sandi lemah default tidak boleh digunakan. |
Memastikan bahwa kode yang tidak diketahui tidak dapat dijalankan pada perangkat
Judul | Detail |
---|---|
Komponen | Perangkat IoT |
Fase SDL | Build |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | Mengaktifkan Boot Aman dan Enkripsi Perangkat BitLocker di Inti IoT Windows 10 |
Langkah-langkah | UEFI Secure Boot membatasi sistem agar hanya mengizinkan eksekusi biner yang ditandatangani oleh otoritas tertentu. Fitur ini mencegah agar kode yang tidak diketahui tidak dijalankan pada platform dan berpotensi melemahkan postur keamanannya. Aktifkan Boot Aman UEFI dan batasi daftar otoritas sertifikat yang dipercaya untuk menandatangani kode. Tanda tangani semua kode yang disebarkan di perangkat menggunakan salah satu otoritas yang tepercaya. |
Mengenkripsi OS dan partisi lain Perangkat IoT dengan BitLocker
Judul | Detail |
---|---|
Komponen | Perangkat IoT |
Fase SDL | Build |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | T/A |
Langkah-langkah | Windows 10 IoT Core mengimplementasikan versi ringan BitLocker Device Encryption, yang memiliki ketergantungan kuat pada keberadaan TPM pada platform, termasuk protokol preOS yang diperlukan di UEFI yang melakukan pengukuran yang diperlukan. Pengukuran preOS ini memastikan bahwa OS nanti memiliki catatan pasti tentang bagaimana OS diluncurkan. Enkripsi partisi OS menggunakan BitLocker dan partisi lain juga jika mereka menyimpan data sensitif. |
Memastikan bahwa hanya layanan/fitur minimum yang diaktifkan di perangkat
Judul | Detail |
---|---|
Komponen | Perangkat IoT |
Fase SDL | Penyebaran |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | T/A |
Langkah-langkah | Jangan mengaktifkan atau mematikan fitur atau layanan apa pun di OS yang tidak diperlukan agar solusi berfungsi. Misalnya, jika perangkat tidak mengharuskan penyebaran antarmuka pengguna, pasang Windows IoT Core dalam mode tanpa induk. |
Mengenkripsi OS dan partisi lain IoT Field Gateway dengan BitLocker
Judul | Detail |
---|---|
Komponen | IoT Field Gateway |
Fase SDL | Penyebaran |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | T/A |
Langkah-langkah | Windows 10 IoT Core mengimplementasikan versi ringan BitLocker Device Encryption, yang memiliki ketergantungan kuat pada keberadaan TPM pada platform, termasuk protokol preOS yang diperlukan di UEFI yang melakukan pengukuran yang diperlukan. Pengukuran preOS ini memastikan bahwa OS nanti memiliki catatan pasti tentang bagaimana OS diluncurkan. Enkripsi partisi OS menggunakan BitLocker dan partisi lain juga jika mereka menyimpan data sensitif. |
Memastikan bahwa informasi masuk default gateway bidang telah diubah selama penginstalan
Judul | Detail |
---|---|
Komponen | IoT Field Gateway |
Fase SDL | Penyebaran |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | T/A |
Langkah-langkah | Memastikan bahwa informasi masuk default gateway bidang telah diubah selama penginstalan |
Memastikan bahwa Cloud Gateway menerapkan proses untuk menjaga firmware perangkat yang tersambung tetap terbaru
Judul | Detail |
---|---|
Komponen | Gateway IoT Cloud |
Fase SDL | Build |
Teknologi yang Berlaku | Generik |
Atribut | Pilihan Gateway - Azure IoT Hub |
Referensi | Ikhtisar Manajemen Perangkat Hub IoT,Pembaruan Perangkat untuk tutorial Azure IoT Hub menggunakan Gambar Referensi Raspberry Pi 3 B+. |
Langkah-langkah | LWM2M adalah protokol dari Open Mobile Alliance untuk IoT Device Management. Manajemen perangkat Azure IoT memungkinkan interaksi dengan perangkat fisik menggunakan pekerjaan perangkat. Pastikan bahwa Cloud Gateway menerapkan proses untuk secara rutin menjaga perangkat dan data konfigurasi lainnya tetap terbaru menggunakan Azure IoT Hub Device Management. |
Memastikan bahwa perangkat memiliki kontrol keamanan titik akhir yang dikonfigurasi sesuai kebijakan organisasi
Judul | Detail |
---|---|
Komponen | Batas Kepercayaan Komputer |
Fase SDL | Penyebaran |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | T/A |
Langkah-langkah | Pastikan bahwa perangkat memiliki kontrol keamanan titik akhir seperti BitLocker untuk enkripsi tingkat disk, anti-virus dengan tanda tangan yang diperbarui, firewall berbasis host, peningkatan OS, kebijakan grup, dll. dikonfigurasikan sesuai kebijakan keamanan organisasi. |
Memastikan bahwa manajemen kunci akses penyimpanan Azure telah aman
Judul | Detail |
---|---|
Komponen | Azure Storage |
Fase SDL | Penyebaran |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | Panduan keamanan Azure Storage - Mengelola Kunci Akun Penyimpanan Anda |
Langkah-langkah | Penyimpanan Kunci: Sebaiknya simpan kunci akses Azure Storage di Azure Key Vault sebagai rahasia dan buat aplikasi agar mengambil kunci dari brankas kunci. Pengaturan ini direkomendasikan karena beberapa alasan berikut:
|
Memastikan bahwa hanya asal yang tepercaya yang diizinkan jika CORS diaktifkan di Azure Storage
Judul | Detail |
---|---|
Komponen | Azure Storage |
Fase SDL | Build |
Teknologi yang Berlaku | Generik |
Atribut | T/A |
Referensi | Dukungan CORS untuk Azure Storage Services |
Langkah-langkah | Dengan Azure Storage, Anda dapat mengaktifkan CORS – Cross Origin Resource Sharing. Untuk setiap akun penyimpanan, Anda dapat menentukan domain yang dapat mengakses sumber daya di akun penyimpanan tersebut. Secara default, CORS dinonaktifkan di semua layanan. Anda dapat mengaktifkan CORS dengan menggunakan REST API atau pustaka klien penyimpanan untuk memanggil salah satu metode guna mengatur kebijakan layanan. |
Mengaktifkan fitur pembatasan Layanan WCF
Judul | Detail |
---|---|
Komponen | WCF |
Fase SDL | Build |
Teknologi yang Berlaku | .NET Framework 3 |
Atribut | T/A |
Referensi | MSDN, Fortify Kingdom |
Langkah-langkah | Tidak memberikan batasan pada penggunaan sumber daya sistem dapat mengakibatkan kelelahan sumber daya dan penolakan layanan.
|
Contoh
Berikut ini adalah contoh konfigurasi dengan pembatasan yang diaktifkan:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Throttled">
<serviceThrottling maxConcurrentCalls="[YOUR SERVICE VALUE]" maxConcurrentSessions="[YOUR SERVICE VALUE]" maxConcurrentInstances="[YOUR SERVICE VALUE]" />
...
</system.serviceModel>
Pengungkapan informasi WCF melalui metadata
Judul | Detail |
---|---|
Komponen | WCF |
Fase SDL | Build |
Teknologi yang Berlaku | .NET Framework 3 |
Atribut | T/A |
Referensi | MSDN, Fortify Kingdom |
Langkah-langkah | Metadata dapat membantu penyerang mempelajari sistem dan merencanakan bentuk serangan. Layanan WCF dapat dikonfigurasi untuk mengekspos metadata. Metadata memberikan informasi deskripsi layanan terperinci dan tidak boleh disiarkan di lingkungan produksi. Properti HttpGetEnabled / HttpsGetEnabled kelas ServiceMetaData menentukan apakah layanan akan mengekspos metadata atau tidak |
Contoh
Kode di bawah ini menginstruksikan WCF agar menyiarkan metadata sebuah layanan
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri(EndPointAddress);
Host.Description.Behaviors.Add(smb);
Jangan menyiarkan metadata layanan di lingkungan produksi. Atur properti HttpGetEnabled / HttpsGetEnabled kelas ServiceMetaData ke false.
Contoh
Kode di bawah ini menginstruksikan WCF agar tidak menyiarkan metadata layanan.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = false;
smb.HttpGetUrl = new Uri(EndPointAddress);
Host.Description.Behaviors.Add(smb);