Hinzufügen von ausgeblendeten Segmenten für FTP: <add>-Element
Übersicht
Das <add>
-Element der <hiddenSegments>
-Sammlung gibt ein eindeutiges URL-Segment an, das der Sammlung ausgeblendeter Segmente für FTP 7 hinzugefügt werden soll.
Hinweis
Wenn die Anforderungsfilterung eine FTP-Anforderung aufgrund eines ausgeblendeten URL-Segments blockiert, gibt FTP 7 einen FTP-Fehler an den Client zurück und protokolliert den folgenden FTP-Unterstatus, der den Grund für die Verweigerung der Anforderung angibt:
FTP-Unterstatus | Beschreibung |
---|---|
8 |
Im angeforderten Pfad wurde ein ausgeblendetes Segment erkannt. |
Mit diesem Unterstatus können FTP-Administratoren ihre IIS-Protokolle analysieren und potenzielle Bedrohungen identifizieren.
Kompatibilität
Version | Hinweise |
---|---|
IIS 10.0 | Das <add> -Element wurde in IIS 10.0 nicht geändert. |
IIS 8.5 | Das <add> -Element wurde in IIS 8.5 nicht geändert. |
IIS 8.0 | Das <add> -Element wurde in IIS 8.0 nicht geändert. |
IIS 7.5 | Das <add> -Element des <hiddenSegments> -Elements wird als Feature von IIS 7.5 bereitgestellt. |
IIS 7.0 | Das <add> -Element des <hiddenSegments> -Elements wurde in FTP 7.0 als separater Download für IIS 7.0 eingeführt. |
IIS 6.0 | Der FTP-Dienst in IIS 6.0 hat die Anforderungsfilterung nicht unterstützt. |
Hinweis
Die Dienste FTP 7.0 und FTP 7.5 waren nicht im Lieferumfang von IIS 7.0 enthalten, daher mussten die Module unter der folgenden URL heruntergeladen und installiert werden:
Bei Windows 7 und Windows Server 2008 R2 wird der FTP 7.5-Dienst als Feature für IIS 7.5 bereitgestellt, sodass das Herunterladen des FTP-Diensts nicht mehr erforderlich ist.
Setup
Um die FTP-Veröffentlichung für Ihren Webserver zu unterstützen, müssen Sie den FTP-Dienst installieren. Führen Sie dazu die folgenden Schritte aus:
Windows Server 2012 oder Windows Server 2012 R2
Klicken Sie auf der Taskleiste auf Server-Manager.
Klicken Sie im Server-Manager auf das Menü Verwalten und dann auf Rollen und Features hinzufügen.
Klicken Sie im Assistenten zum Hinzufügen von Rollen und Features auf Weiter. Wählen Sie den Installationstyp aus, und klicken Sie auf Weiter. Wählen Sie den Zielserver aus, und klicken Sie auf Weiter.
Erweitern Sie auf der Seite Serverrollen den Eintrag Webserver (IIS), und wählen Sie dann FTP-Server aus.
Hinweis
Um die Authentifizierung mittels ASP.NET-Mitgliedschaft oder IIS-Manager für den FTP-Dienst zu unterstützen, müssen Sie die Option FTP-Erweiterbarkeit zusätzlich zu FTP-Dienst auswählen.
.Klicken Sie auf Weiter, und wählen Sie dann auf der Seite Features auswählen erneut Weiter aus.
Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
Klicken Sie auf der Seite Ergebnisse auf Schließen.
Windows 8 oder Windows 8.1
Klicken Sie auf dem Startbildschirm in der unteren linken Ecke mit der rechten Maustaste auf die Schaltfläche Start, und klicken Sie dann auf Systemsteuerung.
Klicken Sie in der Systemsteuerung auf Programme und Features, und klicken Sie dann auf Windows-Features aktivieren oder deaktivieren.
Erweitern Sie Internetinformationsdienste, und wählen Sie dann FTP-Server aus.
Hinweis
Um die Authentifizierung mittels ASP.NET-Mitgliedschaft oder IIS-Manager für den FTP-Dienst zu unterstützen, müssen Sie auch FTP-Erweiterbarkeit auswählen.
Klicken Sie auf OK.
Klicken Sie auf Schließen.
Windows Server 2008 R2
Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltung, und klicken Sie dann auf Server-Manager.
Erweitern Sie im Hierarchiebereich des Server-Managers den Eintrag Rollen, und klicken Sie dann auf Webserver (IIS).
Scrollen Sie im Bereich Webserver (IIS) zum Abschnitt Rollendienste, und klicken Sie dann auf Rollendienste hinzufügen.
Erweitern Sie auf der Seite Rollendienste auswählen des Assistenten zum Hinzufügen von Rollendiensten den Eintrag FTP-Server.
Wählen Sie FTP-Dienst aus.
Hinweis
Um die Authentifizierung mittels ASP.NET-Mitgliedschaft oder IIS-Manager für den FTP-Dienst zu unterstützen, müssen Sie auch FTP-Erweiterbarkeit auswählen.
Klicken Sie auf Weiter.
Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
Klicken Sie auf der Seite Ergebnisse auf Schließen.
Windows 7
Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
Klicken Sie in der Systemsteuerung auf Programme und Features und dann auf Windows-Features aktivieren oder deaktivieren.
Erweitern Sie Internetinformationsdienste und dann FTP-Server.
Wählen Sie FTP-Dienst aus.
Hinweis
Um die Authentifizierung mittels ASP.NET-Mitgliedschaft oder IIS-Manager für den FTP-Dienst zu unterstützen, müssen Sie auch FTP-Erweiterbarkeit auswählen.
Klicken Sie auf OK.
Windows Server 2008 oder Windows Vista
Laden Sie das Installationspaket unter der folgenden URL herunter:
Befolgen Sie die Anweisungen in der folgenden exemplarischen Vorgehensweise, um den FTP-Dienst zu installieren:
Gewusst wie
Hinweis
Für die FTP-Anforderungsfilterung war im Release FTP 7.0 keine Benutzeroberfläche verfügbar. Die Benutzeroberfläche für die FTP-Anforderungsfilterung wurde im Release FTP 7.5 hinzugefügt.
Hinzufügen eines ausgeblendeten Segments für FTP
Öffnen Sie Internetinformationsdienste-Manager (IIS):
Vorgehensweise unter Windows Server 2012 oder Windows Server 2012 R2:
- Klicken Sie auf der Taskleiste auf Server-Manager, dann auf Tools und danach auf Internetinformationsdienste-Manager (IIS).
Vorgehensweise unter Windows 8 oder Windows 8.1:
- Halten Sie die Windows-Logo-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf Systemsteuerung.
- Klicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS).
Vorgehensweise unter Windows Server 2008 oder Windows Server 2008 R2:
- Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltung, und klicken Sie dann auf Internetinformationsdienste-Manager (IIS).
Vorgehensweise unter Windows Vista oder Windows 7:
- Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
- Doppelklicken Sie auf Verwaltung und dann auf Internetinformationsdienste-Manager (IIS).
Wechseln Sie im Bereich Verbindungen zu der Site oder dem Verzeichnis, für die bzw. das Sie die Einstellungen für die Anforderungsfilterung ändern möchten.
Doppelklicken Sie im Bereich Start auf FTP-Anforderungsfilterung.
Klicken Sie im Bereich FTP-Anforderungsfilterung auf die Registerkarte Ausgeblendete Segmente.
Klicken Sie im Bereich Aktionen auf Ausgeblendetes Segment hinzufügen.
Geben Sie im Dialogfeld Ausgeblendetes Segment hinzufügen den Pfad ein, den Sie ausblenden möchten.
Klicken Sie auf OK.
Konfiguration
Das <add>
-Element des <hiddenSegments>
-Elements wird auf globaler, Site- oder URL-Ebene konfiguriert.
Attribute
Attribut | Beschreibung |
---|---|
segment |
Erforderliches Zeichenfolgenattribut. Gibt den Teil des Dateisystems an, auf den Clients niemals Zugriff haben sollen. Hinweis: Es gibt keinen Standardwert. Der FTP-Zugriff auf das virtuelle Verzeichnis „_vti_bin“ wird jedoch blockiert, wenn der FTP-Dienst installiert ist. |
Untergeordnete Elemente
Keine.
Konfigurationsbeispiel
Das folgende Beispiel veranschaulicht mehrere sicherheitsbezogene Konfigurationseinstellungen im <system.ftpServer>
-Element für eine FTP-Site. Insbesondere zeigen die <location>
-Einstellungen in diesem Beispiel, wie Sie:
- eine FTP-Autorisierungsregel für Lese- und Schreibzugriff für die Administratorengruppe festlegen
- Optionen für die FTP-Anforderungsfilterung festlegen, die Dateien mit den Dateiendungen „*.exe“, „*.bat“ und „*.cmd“ verweigern
- FTP-Anforderungsgrenzwerte für eine maximale Inhaltslänge von 1.000.000 Bytes und eine maximale URL-Länge von 1.024 Bytes festlegen
- den FTP-Zugriff auf das virtuelle Verzeichnis „_vti_bin“ blockieren, das mit den FrontPage-Servererweiterungen (FPSE) verwendet wird
- IP-Filterungsoptionen für FTP festlegen, die den Zugriff von 127.0.0.1 zulassen und den Zugriff vom IP-Adressbereich 169.254.0.0/255.255.0.0 verweigern
<location path="ftp.example.com">
<system.ftpServer>
<security>
<authorization>
<add accessType="Allow" roles="administrators" permissions="Read, Write" />
</authorization>
<requestFiltering>
<fileExtensions allowUnlisted="true">
<add fileExtension=".exe" allowed="false" />
<add fileExtension=".bat" allowed="false" />
<add fileExtension=".cmd" allowed="false" />
</fileExtensions>
<requestLimits maxAllowedContentLength="1000000" maxUrl="1024" />
<hiddenSegments>
<add segment="_vti_bin" />
</hiddenSegments>
</requestFiltering>
<ipSecurity enableReverseDns="false" allowUnlisted="true">
<add ipAddress="127.0.0.1" allowed="true" />
<add ipAddress="169.254.0.0" subnetMask="255.255.0.0" allowed="false" />
</ipSecurity>
</security>
</system.ftpServer>
</location>
Beispielcode
Die folgenden Beispiele fügen der Standardwebsite zwei ausgeblendete Segmente für FTP hinzu. Das erste ausgeblendete Segment verweigert den Zugriff auf den Pfad „bin“, und das zweite Segment verweigert den Zugriff auf den Pfad „App_Code“.
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.ftpServer/security/requestFiltering /+"hiddenSegments.[segment='bin']" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.ftpServer/security/requestFiltering /+"hiddenSegments.[segment='App_Code']" /commit:apphost
Hinweis
Sie müssen den commit-Parameter auf apphost
festlegen, wenn Sie „AppCmd.exe“ verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen in den entsprechenden Location-Abschnitt der Datei „ApplicationHost.config“ committet.
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 requestFilteringSection = config.GetSection("system.ftpServer/security/requestFiltering", "Default Web Site");
ConfigurationElementCollection hiddenSegmentsCollection = requestFilteringSection.GetCollection("hiddenSegments");
ConfigurationElement addElement = hiddenSegmentsCollection.CreateElement("add");
addElement["segment"] = @"bin";
hiddenSegmentsCollection.Add(addElement);
ConfigurationElement addElement1 = hiddenSegmentsCollection.CreateElement("add");
addElement1["segment"] = @"App_Code";
hiddenSegmentsCollection.Add(addElement1);
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 requestFilteringSection As ConfigurationSection = config.GetSection("system.ftpServer/security/requestFiltering", "Default Web Site")
Dim hiddenSegmentsCollection As ConfigurationElementCollection = requestFilteringSection.GetCollection("hiddenSegments")
Dim addElement As ConfigurationElement = hiddenSegmentsCollection.CreateElement("add")
addElement("segment") = "bin"
hiddenSegmentsCollection.Add(addElement)
Dim addElement1 As ConfigurationElement = hiddenSegmentsCollection.CreateElement("add")
addElement1("segment") = "App_Code"
hiddenSegmentsCollection.Add(addElement1)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var requestFilteringSection = adminManager.GetAdminSection("system.ftpServer/security/requestFiltering", "MACHINE/WEBROOT/APPHOST/Default Web Site");
var hiddenSegmentsCollection = requestFilteringSection.ChildElements.Item("hiddenSegments").Collection;
var addElement = hiddenSegmentsCollection.CreateNewElement("add");
addElement.Properties.Item("segment").Value = "bin";
hiddenSegmentsCollection.AddElement(addElement);
var addElement1 = hiddenSegmentsCollection.CreateNewElement("add");
addElement1.Properties.Item("segment").Value = "App_Code";
hiddenSegmentsCollection.AddElement(addElement1);
adminManager.CommitChanges();
VBScript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set requestFilteringSection = adminManager.GetAdminSection("system.ftpServer/security/requestFiltering", "MACHINE/WEBROOT/APPHOST/Default Web Site")
Set hiddenSegmentsCollection = requestFilteringSection.ChildElements.Item("hiddenSegments").Collection
Set addElement = hiddenSegmentsCollection.CreateNewElement("add")
addElement.Properties.Item("segment").Value = "bin"
hiddenSegmentsCollection.AddElement(addElement)
Set addElement1 = hiddenSegmentsCollection.CreateNewElement("add")
addElement1.Properties.Item("segment").Value = "App_Code"
hiddenSegmentsCollection.AddElement(addElement1)
adminManager.CommitChanges()