Citrix ADC

Anwendungsfall: Filtern von Clients über eine IP-Blacklist

HTTP-Callouts können verwendet werden, um Anfragen von Clients zu blockieren, die vom Administrator auf die Sperrliste gesetzt werden. Die Liste der Kunden kann eine öffentlich bekannte Sperrliste, eine Sperrliste, die Sie für Ihre Organisation pflegen, oder eine Kombination aus beiden sein.

Die Citrix ADC-Appliance überprüft die IP-Adresse des Clients mit der vorkonfigurierten Sperrliste und blockiert die Transaktion, wenn die IP-Adresse auf die schwarze Liste gesetzt wurde. Wenn die IP-Adresse nicht in der Liste enthalten ist, verarbeitet die Appliance die Transaktion.

Um diese Konfiguration zu implementieren, müssen Sie die folgenden Aufgaben ausführen:

  1. Aktivieren Sie den Responder auf der Citrix ADC-Appliance.
  2. Erstellen Sie ein HTTP-Callout auf der Citrix ADC-Appliance und konfigurieren Sie es mit Details zum externen Server und anderen erforderlichen Parametern.
  3. Konfigurieren Sie eine Responder Policy, um die Antwort auf den HTTP-Callout zu analysieren, und binden Sie die Richtlinie dann global.
  4. Erstellen Sie einen HTTP-Callout-Agent auf dem Remoteserver.

Responder aktivieren

Sie müssen den Responder aktivieren, bevor Sie ihn verwenden können.

So aktivieren Sie den Responder über die GUI

  1. Stellen Sie sicher, dass Sie die Responder-Lizenz installiert haben.
  2. Erweitern Sie im Konfigurationsdienstprogramm AppExpert, klicken Sie mit der rechten Maustasteauf Responder, und klicken Sie dann aufResponder-Funktion aktivieren.

Erstellen eines HTTP-Callouts auf der Citrix ADC-Appliance

Erstellen Sie ein HTTP-Callout, HTTP_Callout, mit den Parametereinstellungen in der folgenden Tabelle. Weitere Informationen zum Erstellen einer HTTP-Callout finden Sie unterKonfigurieren einer HTTP-Callout-PDF-Datei.

Konfigurieren einer Responder-Richtlinie und globales Binden

Nachdem Sie das HTTP-Callout konfiguriert haben, überprüfen Sie die Callout-Konfiguration und konfigurieren Sie dann eine Responder Policy, um das Callout aufzurufen. Während Sie eine Responder Policy im Unterknoten Richtlinien erstellen und diese dann mithilfe des Responder-Richtlinien-Managers global binden können, verwendet diese Demonstration den Responder-Richtlinien-Manager, um die Responder Policy zu erstellen und die Richtlinie global zu binden.

So erstellen Sie eine Responder Policy und binden sie global mit

  1. Navigieren Sie zuAppExpert>Responder.
  2. Klicken Sie im Detailbereich unterPolicy ManageraufPolicy Manager.
  3. Klicken Sie im DialogfeldResponder Policy ManageraufOverride Global.
  4. Klicken Sie aufRichtlinie einfügenund dann unterRichtliniennameaufNeue Richtlinie.
  5. GehenSie im Dialogfeld Responder-Richtlinie erstellenwie folgt vor:

    1. Geben Sie in das Feld NamePolicyResponder1ein.
    2. Wählen Sie unterAktionRESETaus.
    3. Wählen Sie inAktion für undefiniertes Ergebnisdie OptionGlobale Aktion mit undefiniertem Ergebnisaus.
    4. Geben Sie unterAusdruckden folgenden erweiterten Richtlinienausdruck ein:

      "HTTP.REQ.HEADER("Request").EQ("Callout Request").NOT && SYS.HTTP_CALLOUT(HTTP_Callout).CONTAINS("IP Matched")" 
    5. Klicken Sie aufErstellenund dann aufSchließen.
  6. Klicken Sie aufÄnderungen übernehmenund dann aufSchließen.

Erstellen eines HTTP-Callout-Agenten auf dem Remoteserver

Sie müssen jetzt einen HTTP-Callout-Agent auf dem Remote-Callout-Server erstellen, der Callout-Anfragen von der Citrix ADC-Appliance empfängt und entsprechend antwortet. Der HTTP-Callout-Agent ist ein Skript, das für jede Bereitstellung unterschiedlich ist und unter Berücksichtigung der Serverspezifikationen wie dem Datenbanktyp und der unterstützten Skriptsprache geschrieben werden muss.

Es folgt ein Beispiel für einen Callout-Agent, der überprüft, ob die angegebene IP-Adresse Teil einer IP-Sperrliste ist. Der Agent wurde in der Perl-Skriptsprache geschrieben und verwendet eine MYSQL-Datenbank.

Das folgende CGI-Skript prüft auf dem Callout-Server nach einer bestimmten IP-Adresse.

#!/usr/bin/perl -w print "Content-type: text/html\n\n"; use DBI(); use CGI qw(:standard); #Take the Client IP address from the request query my $ip_to_check = param('cip'); # Where a MYSQL database is running my $dsn = 'DBI:mysql:BAD_CLIENT:localhost'; # Database username to connect with my $db_user_name = ‘dbuser’; # Database password to connect with my $db_password = 'dbpassword'; my ($id, $password); # Connecting to the database my $dbh = DBI->connect($dsn, $db_user_name, $db_password); my $sth = $dbh->prepare(qq{ select * from bad_clnt }); $sth->execute(); while (my ($ip_in_database) = $sth->fetchrow_array()) { chomp($ip_in_database); # Check for IP match if ($ip_in_database eq $ip_to_check) { print "\n IP Matched\n"; $sth->finish(); exit; } } print "\n IP Failed\n"; $sth->finish(); exit; 
Anwendungsfall: Filtern von Clients über eine IP-Blacklist