Dynamic IP Security <dynamicIpSecurity>
Gambaran Umum
Elemen ini <dynamicIpSecurity>
menyediakan cara dinamis untuk memblokir permintaan Web berbahaya. Menggunakan pembatasan IP dinamis berarti administrator tidak perlu mengidentifikasi alamat IP yang perlu diblokir. Sebagai gantinya, administrator dapat mengonfigurasi sistem sehingga memblokir alamat IP apa pun yang memenuhi kriteria yang ditetapkan. Ini dapat mencakup pemblokiran klien jarak jauh jika jumlah permintaan koneksi HTTP bersamaan dari klien tersebut melebihi angka tertentu, atau memblokir klien jika jumlah permintaan yang diterima selama periode waktu melebihi angka tertentu. Pembatasan IP dinamis dapat dikonfigurasi di tingkat server atau situs.
Administrator dapat menentukan kode status respons HTTP mana yang akan dikembalikan jika klien diblokir: Tidak sah (401); Terlarang (403); atau Tidak Ditemukan (404). Anda juga dapat mengatur Tolak Jenis Tindakan ke Batalkan untuk menghilangkan koneksi tanpa mengembalikan indikasi mengapa.
Jika Anda mengaktifkan mode proksi, permintaan dapat diblokir dengan mengidentifikasi alamat IP asal klien yang terhubung ke server web melalui proksi HTTP atau load balancer. Ini dilakukan dengan memeriksa header x-forwarded-for-HTTP.
Kompatibilitas
Versi | Catatan |
---|---|
IIS 10.0 | Elemen <dynamicIpSecurity> tidak dimodifikasi dalam IIS 10.0. |
IIS 8.5 | Elemen <dynamicIpSecurity> tidak dimodifikasi dalam IIS 8.5. |
IIS 8.0 | Elemen ini <dynamicIpSecurity> diperkenalkan di IIS 8.0. |
IIS 7.5 | T/A |
IIS 7.0 | T/A |
IIS 6.0 | T/A |
Siapkan
Windows Server 2012 atau Windows Server 2012 R2
- Pada taskbar, klik Manajer Server.
- Di Manajer Server, klik menu Kelola , lalu klik Tambahkan Peran dan Fitur.
- Di wizard Tambahkan Peran dan Fitur , klik Berikutnya. Pilih jenis penginstalan dan klik Berikutnya. Pilih server tujuan dan klik Berikutnya.
- Pada halaman Peran Server , perluas Server Web (IIS), perluas Server Web, perluas Keamanan, lalu pilih Pembatasan IP dan Domain. Klik Berikutnya.
. - Pada halaman Pilih fitur, klik Berikutnya.
- Pada halaman Konfirmasi pilihan instalasi, klik Instal.
- Pada halaman Hasil , klik Tutup.
Windows 8 atau Windows 8.1
- Pada layar Mulai, pindahkan penunjuk ke sudut kiri bawah, klik kanan tombol Mulai, lalu klik Panel Kontrol.
- Di Panel Kontrol, klik Program dan Fitur, lalu klik Aktifkan atau nonaktifkan fitur Windows.
- Perluas Layanan Informasi Internet, perluas World Wide Web Services, perluas Keamanan, lalu pilih Keamanan IP.
- Klik OK.
- Klik Tutup.
Bagaimana Caranya
Cara menambahkan pembatasan IP dinamis untuk menolak akses untuk situs Web
Buka Pengelola Layanan Informasi Internet (IIS):
Jika Anda menggunakan Windows Server 2012 atau yang lebih baru:
- Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik Pengelola Layanan Informasi Internet (IIS).
Jika Anda menggunakan Windows 8 atau yang lebih baru:
- Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
- Klik Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
Di panel Koneksi , pilih nama server untuk menambahkan pembatasan IP dinamis untuk server, atau perluas Situs lalu pilih situs untuk menambahkan pembatasan IP dinamis untuk situs tersebut.
Di panel Beranda , klik dua kali fitur Alamat IP dan Pembatasan Domain .
Di panel Tindakan , klik Edit Pengaturan Pembatasan Dinamis....
Dalam kotak dialog Pengaturan Pembatasan IP Dinamis , tentukan apakah akan menolak alamat IP berdasarkan jumlah sampel bersamaan dan/atau tingkat permintaan, tentukan apakah akan mengaktifkan mode khusus pengelogan, lalu klik OK.
Konfigurasi
Elemen <dynamicIpSecurity>
dikonfigurasi di tingkat server atau situs.
Atribut
Atribut | Deskripsi | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
denyAction |
Atribut enum opsional. Menentukan respons mode tolak default yang harus dikirim IIS kembali ke klien. Nilai defaultnya adalah Forbidden .
|
||||||||||
enableLoggingOnlyMode |
Atribut Boolean opsional. Menentukan bahwa IIS akan mencatat permintaan dari klien yang akan ditolak tanpa benar-benar menolaknya. Nilai defaultnya adalah false . |
||||||||||
enableProxyMode |
Atribut Boolean opsional. Memungkinkan IIS tidak hanya memblokir permintaan dari IP klien yang dilihat oleh IIS, tetapi juga untuk memblokir permintaan dari alamat IP yang diterima di header HTTP x-forwarded-for. Header ini memungkinkan Anda mengidentifikasi alamat IP asal klien yang terhubung melalui proksi HTTP atau load balancer. Ini disebut sebagai mode proksi. Nilai defaultnya adalah false . |
Elemen Anak
Elemen | Deskripsi |
---|---|
denyByConcurrentRequests |
Elemen opsional. Menentukan bahwa klien jarak jauh tertentu akan diblokir berdasarkan jumlah permintaan yang diterima dari waktu ke waktu. |
denyByRequestRate |
Elemen opsional. Menentukan bahwa klien jarak jauh tertentu akan diblokir berdasarkan jumlah permintaan koneksi HTTP bersamaan dari klien. |
Sampel Konfigurasi
Sampel konfigurasi berikut menunjukkan cara mengatur pembatasan alamat IP dinamis.
<system.webServer>
<security>
<dynamicIpSecurity enableLoggingOnlyMode="true">
<denyByConcurrentRequests enabled="true" maxConcurrentRequests="10" />
<denyByRequestRate enabled="true" maxRequests="30"
requestIntervalInMilliseconds="300" />
</dynamicIpSecurity>
</security>
</system.webServer>
Kode Sampel
Contoh berikut mengonfigurasi <dynamicIpSecurity> untuk situs.
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/security/dynamicIpSecurity /denyAction:"Unauthorized" /enableProxyMode:"True" /enableLoggingOnlyMode:"True" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/security/dynamicIpSecurity /denyByConcurrentRequests.enabled:"True" /denyByConcurrentRequests.maxConcurrentRequests:"10" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/security/dynamicIpSecurity /denyByRequestRate.enabled:"True" /denyByRequestRate.maxRequests:"25" /denyByRequestRate.requestIntervalInMilliseconds:"210" /commit:apphost
Catatan
Anda harus memastikan untuk mengatur parameter penerapan ke apphost
saat menggunakan AppCmd.exe untuk mengonfigurasi pengaturan ini. Ini menerapkan pengaturan konfigurasi ke bagian lokasi yang sesuai dalam file ApplicationHost.config.
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample {
private static void Main() {
using(ServerManager serverManager = new ServerManager()) {
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection dynamicIpSecuritySection = config.GetSection("system.webServer/security/dynamicIpSecurity", "Default Web Site");
dynamicIpSecuritySection["denyAction"] = @"Forbidden";
dynamicIpSecuritySection["enableProxyMode"] = true;
dynamicIpSecuritySection["enableLoggingOnlyMode"] = true;
ConfigurationElement denyByConcurrentRequestsElement = dynamicIpSecuritySection.GetChildElement("denyByConcurrentRequests");
denyByConcurrentRequestsElement["enabled"] = true;
denyByConcurrentRequestsElement["maxConcurrentRequests"] = 10;
ConfigurationElement denyByRequestRateElement = dynamicIpSecuritySection.GetChildElement("denyByRequestRate");
denyByRequestRateElement["enabled"] = true;
denyByRequestRateElement["maxRequests"] = 10;
denyByRequestRateElement["requestIntervalInMilliseconds"] = 10;
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim dynamicIpSecuritySection As ConfigurationSection = config.GetSection("system.webServer/security/dynamicIpSecurity", "Default Web Site")
dynamicIpSecuritySection("denyAction") = "Forbidden"
dynamicIpSecuritySection("enableProxyMode") = true
dynamicIpSecuritySection("enableLoggingOnlyMode") = true
Dim denyByConcurrentRequestsElement As ConfigurationElement = dynamicIpSecuritySection.GetChildElement("denyByConcurrentRequests")
denyByConcurrentRequestsElement("enabled") = true
denyByConcurrentRequestsElement("maxConcurrentRequests") = 10
Dim denyByRequestRateElement As ConfigurationElement = dynamicIpSecuritySection.GetChildElement("denyByRequestRate")
denyByRequestRateElement("enabled") = true
denyByRequestRateElement("maxRequests") = 10
denyByRequestRateElement("requestIntervalInMilliseconds") = 10
serverManager.CommitChanges
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var dynamicIpSecuritySection = adminManager.GetAdminSection ("system.webServer/security/dynamicIpSecurity", "MACHINE/WEBROOT/APPHOST/Default Web Site");
dynamicIpSecuritySection.Properties.Item("denyAction").Value = "Unauthorized";
dynamicIpSecuritySection.Properties.Item("enableProxyMode").Value = true;
dynamicIpSecuritySection.Properties.Item("enableLoggingOnlyMode").Value = true;
var denyByConcurrentRequestsElement = dynamicIpSecuritySection.ChildElements.Item("denyByConcurrentRequests");
denyByConcurrentRequestsElement.Properties.Item("enabled").Value = true;
denyByConcurrentRequestsElement.Properties.Item("maxConcurrentRequests").Value = 10;
var denyByRequestRateElement = dynamicIpSecuritySection.ChildElements.Item("denyByRequestRate");
denyByRequestRateElement.Properties.Item("enabled").Value = true;
denyByRequestRateElement.Properties.Item("maxRequests").Value = 25;
denyByRequestRateElement.Properties.Item("requestIntervalInMilliseconds").Value = 210;
adminManager.CommitChanges();
Vbscript
Set adminManager = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set dynamicIpSecuritySection = adminManager.GetAdminSection ("system.webServer/security/dynamicIpSecurity", "MACHINE/WEBROOT/APPHOST/Default Web Site")
dynamicIpSecuritySection.Properties.Item("denyAction").Value = "Unauthorized"
dynamicIpSecuritySection.Properties.Item("enableProxyMode").Value = true
dynamicIpSecuritySection.Properties.Item("enableLoggingOnlyMode").Value = true
Set denyByConcurrentRequestsElement = dynamicIpSecuritySection.ChildElements.Item ("denyByConcurrentRequests")
denyByConcurrentRequestsElement.Properties.Item("enabled").Value = true
denyByConcurrentRequestsElement.Properties.Item("maxConcurrentRequests").Value = 10
Set denyByRequestRateElement = dynamicIpSecuritySection.ChildElements.Item("denyByRequestRate")
denyByRequestRateElement.Properties.Item("enabled").Value = true
denyByRequestRateElement.Properties.Item("maxRequests").Value = 25
denyByRequestRateElement.Properties.Item("requestIntervalInMilliseconds").Value = 210
adminManager.CommitChanges()
PowerShell
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/security/dynamicIpSecurity" -name "denyAction" -value "Unauthorized"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/security/dynamicIpSecurity" -name "enableProxyMode" -value "True"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/security/dynamicIpSecurity" -name "enableLoggingOnlyMode" -value "True"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/security/dynamicIpSecurity/denyByConcurrentRequests" -name "enabled" -value "True"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/security/dynamicIpSecurity/denyByConcurrentRequests" -name "maxConcurrentRequests" -value 20
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/security/dynamicIpSecurity/denyByRequestRate" -name "enabled" -value "True"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/security/dynamicIpSecurity/denyByRequestRate" -name "maxRequests" -value 20
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/security/dynamicIpSecurity/denyByRequestRate" -name "requestIntervalInMilliseconds" -value 20