ADC

Caso práctico: filtrar clientes mediante una lista negra de IP

Las llamadas HTTP se pueden utilizar para bloquear solicitudes de clientes que están en la lista de prohibidos por el administrador. La lista de clientes puede ser una lista de prohibidos públicamente conocida, una lista de prohibidos que mantenga para su organización o una combinación de ambas.

El dispositivo NetScaler compara la dirección IP del cliente con la lista negra preconfigurada y bloquea la transacción si la dirección IP figura en la lista negra. Si la dirección IP no está en la lista, el dispositivo procesa la transacción.

Para implementar esta configuración, debe realizar las siguientes tareas:

  1. Habilite el respondedor en el dispositivo NetScaler.
  2. Cree una llamada HTTP en el dispositivo NetScaler y configúrela con detalles sobre el servidor externo y otros parámetros necesarios.
  3. Configure una directiva de respuesta para analizar la respuesta a la llamada HTTP y, a continuación, vincular la directiva de forma global.
  4. Cree un agente de llamada HTTP en el servidor remoto.

Activación del respondedor

Debe habilitar el respondedor antes de poder usarlo.

Para habilitar el respondedor mediante la interfaz gráfica de usuario

  1. Asegúrese de haber instalado la licencia de respuesta.
  2. En la utilidad de configuración, expanda AppExpert, haga clic con el botón secundario del mouse en Respondedor y, a continuación, haga clic en Habilitar la función Respondedor.

Creación de una llamada HTTP en el dispositivo NetScaler

Cree una llamada HTTP, Http_callout, con la configuración de parámetros que se muestra en la tabla siguiente. Para obtener más información sobre cómo crear una llamada HTTP, consulte Configuración de una llamada HTTP pdf.

Configurar una directiva de respuesta y vincularla globalmente

Después de configurar la llamada HTTP, compruebe la configuración de llamada y, a continuación, configure una directiva de respuesta para invocar la llamada. Aunque puede crear una directiva de respuesta en el subnodo Directivas y, a continuación, enlazarla globalmente mediante Responder Policy Manager, esta demostración utiliza Responder Policy Manager para crear la directiva de respuesta y enlazar la directiva de forma global.

Para crear una directiva de respuesta y vincularla globalmente mediante

  1. Vaya a AppExpert > Responder.
  2. En el panel de detalles, en Policy Manager, haga clic en Policy Manager.
  3. En el cuadro de diálogo Responder Policy Manager, haga clic en Anular global.
  4. Haga clic en Insertar directivay, a continuación, en Nombre de la directiva, haga clic en Nueva directiva.
  5. En el cuadro de diálogo Crear directiva de respuesta, haga lo siguiente:

    1. En Nombre, escriba PolicyResponder1.
    2. En Acción , selecciona RESET .
    3. En Acción de resultado no definido, seleccione Acciónglobal de resultado indefinido .
    4. En Expresión, escriba la siguiente expresión de directiva avanzada:

      "HTTP.REQ.HEADER("Request").EQ("Callout Request").NOT && SYS.HTTP_CALLOUT(HTTP_Callout).CONTAINS("IP Matched")"
      <!--NeedCopy-->
      
    5. Haga clic en Crear y, a continuación, en Cerrar .
  6. Haga clic en Aplicar cambios y, a continuación, en Cerrar.

Creación de un agente de llamada HTTP en el servidor remoto

Ahora debe crear un agente de llamadas HTTP en el servidor de llamadas remoto que reciba las solicitudes de llamadas del dispositivo NetScaler y responda adecuadamente. El agente de llamada HTTP es un script diferente para cada implementación y debe escribirse teniendo en cuenta las especificaciones del servidor, como el tipo de base de datos y el lenguaje de scripts admitido.

A continuación se muestra un agente de llamada de ejemplo que verifica si la dirección IP dada es parte de una lista de prohibidos IP. El agente se ha escrito en el lenguaje de scripting Perl y utiliza una base de datos MYSQL.

El siguiente script CGI comprueba si hay una dirección IP determinada en el servidor de llamadas.

#!/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;
<!--NeedCopy-->
Caso práctico: filtrar clientes mediante una lista negra de IP