Vorgehensweise: Aktivieren der Nachrichtenreplay-ErkennungHow to: Enable Message Replay Detection

Ein Replay-Angriff tritt auf, wenn ein Angreifer einen Nachrichtenstrom zwischen zwei Parteien kopiert und den Strom für eine oder mehrere Parteien wiedergibt.A replay attack occurs when an attacker copies a stream of messages between two parties and replays the stream to one or more of the parties. Wenn der Angriff nicht abgeschwächt wird, verarbeiten die angegriffenen Computer den Strom als zulässige Meldungen, was zu einer Reihe negativer Konsequenzen führt, wie z. B. redundanten Bestellungen eines Artikels.Unless mitigated, the computers subject to the attack will process the stream as legitimate messages, resulting in a range of bad consequences, such as redundant orders of an item.

Weitere Informationen zu nachrichtenreplay-Erkennung, finden Sie unter Replay-Erkennung Nachrichten.For more information about message replay detection, see Message Replay Detection.

Das folgende Verfahren veranschaulicht verschiedene Eigenschaften, die Sie verwenden können, um Replay-Erkennung, die mithilfe von Windows Communication Foundation (WCF) zu steuern.The following procedure demonstrates various properties that you can use to control replay detection using Windows Communication Foundation (WCF).

So steuern Sie die Replay-Erkennung für den Client mithilfe von CodeTo control replay detection on the client using code

  1. Erstellen Sie ein SecurityBindingElement zur Verwendung in einer CustomBinding.Create a SecurityBindingElement to use in a CustomBinding. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen einer benutzerdefinierten Bindung mit dem SecurityBindingElement.For more information, see How to: Create a Custom Binding Using the SecurityBindingElement. Im folgenden Beispiel wird eine SymmetricSecurityBindingElement verwendet, die mithilfe der CreateKerberosBindingElement der SecurityBindingElement-Klasse erstellt worden ist.The following example uses a SymmetricSecurityBindingElement created with the CreateKerberosBindingElement of the SecurityBindingElement class.

  2. Verwenden Sie die LocalClientSettings-Eigenschaft, um einen Verweis auf die LocalClientSecuritySettings-Klasse zurückzugeben und die folgenden Eigenschaften nach Bedarf festzulegen:Use the LocalClientSettings property to return a reference to the LocalClientSecuritySettings class and set any of the following properties, as appropriate:

    1. DetectReplayDetectReplay. Ein boolescher Wert.A Boolean value. Dieser bestimmt, ob der Client Replays vom Server erkennen sollte.This governs whether the client should detect replays from the server. Die Standardeinstellung ist true.The default is true.

    2. MaxClockSkewMaxClockSkew. Ein TimeSpan-Wert.A TimeSpan value. Bestimmt die Zeitverschiebung, die der Replay-Mechanismus zwischen dem Client und dem Server tolerieren kann.Governs how much time skew the replay mechanism can tolerate between the client and the server. Das Sicherheitsverfahren untersucht den gesendeten Zeitstempel und bestimmt, ob er zu weit in der Vergangenheit zurückliegend gesendet wurde.The security mechanism examines the time stamp sent and determines whether it was sent too far back in the past. Der Standardwert beträgt fünf Minuten.The default is 5 minutes.

    3. ReplayWindowReplayWindow. Ein TimeSpan-Wert.A TimeSpan value. Dieser bestimmt, wie lange eine Nachricht im Netzwerk bleiben kann, nachdem sie vom Server (durch Vermittler) gesendet worden ist, bevor sie den Client erreicht.This governs how long a message can live in the network after the server sends it (through intermediaries) before reaching the client. Der Client verfolgt die Signaturen der Nachrichten, die innerhalb des letzten ReplayWindow gesendet wurden, zur Replay-Erkennung.The client tracks the signatures of the messages sent within the latest ReplayWindow for the purposes of replay detection.

    4. ReplayCacheSizeReplayCacheSize. Ein Ganzzahlwert.An integer value. Der Client speichert die Signaturen der Nachricht in einem Cache.The client stores the signatures of the message in a cache. Diese Einstellung gibt an, wie viele Signaturen der Cache speichern kann.This setting specifies how many signatures the cache can store. Wenn die Zahl der Nachrichten, die innerhalb des letzten Replay-Fensters gesendet wurden, das Cachelimit erreicht, werden neue Nachrichten zurückgewiesen, bis die ältesten zwischengespeicherten Signaturen das Zeitlimit überschreiten.If the number of messages sent within the last replay window reaches the cache limit, new messages are rejected until the oldest cached signatures reach the time limit. Der Standardwert ist 500000.The default is 500000.

So steuern Sie die Replay-Erkennung für den Dienst mithilfe von CodeTo control replay detection on the service using code

  1. Erstellen Sie ein SecurityBindingElement zur Verwendung in einer CustomBinding.Create a SecurityBindingElement to use in a CustomBinding.

  2. Verwenden Sie die LocalServiceSettings-Eigenschaft, um einen Verweis auf die LocalServiceSecuritySettings-Klasse zurückzugeben, und legen Sie die Eigenschaften fest, wie zuvor beschrieben.Use the LocalServiceSettings property to return a reference to the LocalServiceSecuritySettings class, and set the properties as described previously.

So steuern Sie die Replay-Erkennung in der Konfiguration für den Client oder den DienstTo control replay detection in configuration for the client or service

  1. Erstellen einer <CustomBinding >.Create a <customBinding>.

  2. Erstellen Sie ein <security>-Element.Create a <security> element.

  3. Erstellen einer <LocalClientSettings > oder <LocalServiceSettings >.Create a <localClientSettings> or <localServiceSettings>.

  4. Legen Sie die folgenden Attributwerte nach Bedarf fest: detectReplays, maxClockSkew, replayWindow und replayCacheSize.Set the following attribute values, as appropriate: detectReplays, maxClockSkew, replayWindow, and replayCacheSize. Im folgenden Beispiel werden sowohl die Attribute eines <localServiceSettings>- als auch eines<localClientSettings>-Elements festgelegt:The following example sets the attributes of both a <localServiceSettings> and a <localClientSettings> element:

    <customBinding>  
      <binding name="NewBinding0">  
       <textMessageEncoding />  
        <security>  
         <localClientSettings   
          replayCacheSize="800000"   
          maxClockSkew="00:03:00"  
          replayWindow="00:03:00" />  
         <localServiceSettings   
          replayCacheSize="800000"   
          maxClockSkew="00:03:00"  
          replayWindow="00:03:00" />  
        <secureConversationBootstrap />  
       </security>  
      <httpTransport />  
     </binding>  
    </customBinding>  
    

BeispielExample

Im folgenden Beispiel wird ein SymmetricSecurityBindingElement mithilfe der CreateKerberosBindingElement-Methode erstellt, und die Replay-Eigenschaften der Bindung werden festgelegt.The following example creates a SymmetricSecurityBindingElement using the CreateKerberosBindingElement method, and sets the replay properties of the binding.

private SecurityBindingElement CreateSymetricBindingForClient()
{
    SymmetricSecurityBindingElement b = SecurityBindingElement.CreateKerberosBindingElement();
    b.LocalClientSettings.DetectReplays = true;
    b.LocalClientSettings.MaxClockSkew = new TimeSpan(0, 3, 0);
    b.LocalClientSettings.ReplayWindow = new TimeSpan(0, 2, 0);
    b.LocalClientSettings.ReplayCacheSize = 10000;
    return b;
}
Private Function CreateSymetricBindingForClient() As SecurityBindingElement
    Dim b = SecurityBindingElement.CreateKerberosBindingElement()
    With b.LocalClientSettings
        .DetectReplays = True
        .MaxClockSkew = New TimeSpan(0, 3, 0)
        .ReplayWindow = New TimeSpan(0, 2, 0)
        .ReplayCacheSize = 10000
    End With
    Return b
End Function

Replay-Bereich: Nur NachrichtensicherheitScope of Replay: Message Security Only

Beachten Sie, dass die folgenden Prozeduren nur für den Nachrichtensicherheitsmodus gelten.Note that the following procedures apply only to Message security mode. Für den Transportmodus und den Transportmodus mit Nachrichtenanmeldeinformationen erkennen die Transportmechanismen Replays.For Transport and Transport with Message Credential modes, the transport mechanisms detect replays.

Hinweise für die sichere KonversationSecure Conversation Notes

Bei Bindungen, die sichere Konversationen ermöglichen, können Sie diese Einstellungen sowohl für den Anwendungskanal als auch für die sichere Konversationsbootstrap-Bindung anpassen.For bindings that enable secure conversations, you can adjust these settings both for the application channel as well as for the secure conversation bootstrap binding. Sie können z. B. Replays für den Anwendungskanal deaktivieren, sie jedoch für den Bootstrapkanal aktivieren, der die sichere Konversation aufbaut.For example, you can turn off replays for the application channel but enable them for the bootstrap channel that establishes the secure conversation.

Wenn Sie keine Sitzungen für sichere Konversation verwenden, kann die Replay-Erkennung nicht garantieren, dass Replays in Serverfarmszenarien und bei der Wiederverwendung des Prozesses erkannt werden.If you do not use secure conversation sessions, replay detection does not guarantee detecting replays in server farm scenarios and when the process is recycled. Dies gilt für die folgenden vom System bereitgestellten Bindungen:This applies to the following system-provided bindings:

Kompilieren des CodesCompiling the Code

Siehe auchSee Also

LocalClientSecuritySettings
LocalServiceSecuritySettings
Sichere Unterhaltungen und sichere Sitzungen.Secure Conversations and Secure Sessions
<LocalClientSettings ><localClientSettings>
Vorgehensweise: Erstellen einer benutzerdefinierten Bindung mit dem SecurityBindingElementHow to: Create a Custom Binding Using the SecurityBindingElement