Seguridad : Cisco Identity Services Engine

Integración de la contraseña del invitado ISE con el gateway de SMS basado en el sufijo y el ejemplo de configuración de Kannel

17 Octubre 2016 - Traducción Automática
Otras Versiones: PDFpdf | Inglés (22 Agosto 2015) | Comentarios

Introducción

Este documento describe cómo integrar las soluciones del código abierto (sufijo, Maildrop, Kannel) con el Cisco Identity Services Engine (ISE) para entregar un mensaje corto del servicio de mensajería (SMS) a los usuarios con las cuentas de invitado.

Contribuido por Michal Garcarz, ingeniero de Cisco TAC.

Prerrequisitos

Requisitos

Cisco recomienda que tenga conocimiento sobre estos temas:

  • Cisco ISE y acceso de invitado
  • Linux y shell script

Componentes Utilizados

La información que contiene este documento se basa en las siguientes versiones de software y hardware.

  • Versión 1.2 o posterior de Cisco ISE
  • Versión 2.10 del sufijo
  • Versión 2.6.0 de Maildrop
  • Versión 1.5.0 de Kannel

Nota: Sea por favor informado que el sufijo, Maildrop, y Kannel son soluciones del código abierto, y Cisco no soporta estos Productos. Este ejemplo de configuración presenta simplemente cómo el ISE se puede integrar con otros Productos para entregar una solución de extremo a extremo.

La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si la red está funcionando, asegúrese de haber comprendido el impacto que puede tener cualquier comando.

Antecedentes

El ISE permite que usted cree al invitado explica el acceso de red temporaria, típicamente para los invitados, los visitantes, los contratistas, los consultores, y los clientes. Tales cuentas son creadas por los usuarios del patrocinador vía el portal del patrocinador. Cuando usted crea la cuenta, es posible enviar una contraseña de acceso dinámico-generada con SMS directamente al teléfono móvil del Usuario invitado.

Cisco ISE puede enviar estas credenciales vía el correo electrónico con el Simple Mail Transfer Protocol (SMTP) al gateway Mail2SMS. Este gateway es responsable de la salida de SMS.

Configurar

Ventajas del gateway de SMS

Hay soluciones múltiples del gateway Mail2SMS en el mercado. Pueden recibir los datos con el uso de diversos protocolos, tales como S TP, poner en cortocircuito el peer a peer del mensaje (SMPP), el FTP, HTTP (protocolo de acceso a objetos simple (JABÓN), servicios web), y enviar generalmente un mensaje de SMS al teléfono móvil específico.

Puede ser que sea el mejor construir su propio gateway de SMS. Permite:

  • Mayor flexibilidad
  • La capacidad de construir las reglas compuestas sobre la encaminamiento (time basado, policy basado, contenido-basados)
  • Integración con las bases de datos locales (por ejemplo, diversos políticas de ruteo para diversos grupos del Active Directory)
  • Costos de funcionamiento potencialmente (ninguna necesidad de pagar un servicio externo)
  • La posibilidad para utilizar esta solución también para las alertas de la salud generadas por el ISE y enviadas como correos electrónicos

Puede ser que sea de mérito tener un despliegue mezclado - un gateway personal de SMS que también se integra con un servicio externo.

Diagrama de la red y flujo de tráfico

Aquí está el flujo:

  1. El usuario del patrocinador crea una cuenta de invitado con una notificación de SMS, y proporciona el número de teléfono móvil para el usuario. El ISE envía un correo electrónico al servidor SMTP configurado. La dirección de origen (de) pertenece a un usuario específico del patrocinador, mientras que configuran a la dirección destino (a) global en el ISE (en este ejemplo, sms@test-cisco.com). Todos los detalles sobre el usuario creado recientemente, tal como el nombre de usuario y contraseña, están dentro del cuerpo de ese correo electrónico.

  2. El correo electrónico llega en el servidor del sufijo, que se configura con el maildrop como agente de salida local. Momentos antes de la salida al directorio del maildir del usuario de SMS, el maildrop busca para el mailfilter en el directorio de inicio para el usuario. El script del mailfilter analiza el correo electrónico, y si se encuentran todos los datos necesarios, utilizan el wget para enviar la petición get HTTP al smsbox de Kannel. Las peticiones get ese HTTP contienen el mensaje de texto junto con el nombre de usuario y contraseña, y el número de teléfono móvil del usuario. El smsbox de Kannel es el extremo frontal de Kannel que se utilice para validar todas las peticiones de los usuarios para enviar SMS (pasarlo al bearerbox de Kannel).

  3. El smsbox de Kannel envía esa petición al bearerbox de Kannel, que tiene la responsabilidad de enviar SMS.

  4. Pudo haber reglas múltiples y centros de servicio de mensajería cortos (SMSCs) configurados en el bearerbox. Este ejemplo utiliza un servidor del externo SMPP. La configuración para un teléfono móvil local-asociado es fácil y se presenta más adelante.

Cada módulo de esta solución (smsbox del sufijo, de Kannel, y bearerbox de Kannel) se puede instalar en un servidor separado. Para la simplicidad en este ejemplo, se configura en el mismo servidor.

Configuraciones

ISE

Complete estos pasos para configurar el ISE.

  1. Configure al usuario del portal del patrocinador. En este ejemplo, se utiliza la configuración del valor por defecto ISE, y colocan al usuario en el grupo de SponsorAllAccount:



    El correo electrónico para el usuario del patrocinador se puede configurar más adelante del portal del patrocinador.

  2. Para poder enviar las notificaciones de SMS, edite los privilegios predeterminados para el grupo de SponsorAllAccount:



    Por abandono, se inhabilita el privilegio de SMS del envío.

  3. Configure al servidor SMTP, y aseegurese que las configuraciones DNS están correctas.



    Todos los correos electrónicos de notificación se envían al host de smtp.test-cisco.com. El ISE no intenta marcar los expedientes DNS MX para los dominios configurados (tratan a este servidor SMTP como retransmisión).

  4. Personalice el correo electrónico que se envía como la notificación de SMS.



  5. Configure la dirección de correo electrónico del destino, que es la única configuración que no se deja como valor por defecto. Todas las notificaciones se envían vía un servidor SMTP configurado anterior con al campo definido como sms@test-cisco.com.

    Nota: Es posible configurar el ISE para enviar las notificaciones de alerta vía el correo electrónico. Esto se puede también integrar con la solución propuesta para enviar las alertas como SMS a los teléfonos móviles. Cisco aconseja que usted utilice una cuenta distinta en el servidor del sufijo para esto (por ejemplo, alert@test-cisco.com).



Sufijo

El sufijo es un servidor SMTP que recibe los correos electrónicos del ISE. La configuración predeterminada se utiliza a excepción de algunos cambios menores. Complete estos pasos para configurarla.

  1. Configure el sufijo para ser el destino local para el dominio de test-cisco.com. Es importante también configurar un agente de salida local: maildrop. Aquí están los cambios necesarios en el main.cf:

    myhostname = smtp.test-cisco.com
    mydomain = test-cisco.com
    mydestination = $myhostname, $mydomain, localhost
    local_transport = maildrop


  2. El siguiente paso es activar el maildrop en el master.cf. Cambie la línea correcta en el master.cf:

    maildrop  unix  -       n       n       -       -       pipe
      flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${user}


    Porque es un despliegue simple sin los dominios virtuales, {el parámetro del usuario} se utiliza en vez del parámetro {receptor} predeterminado.

  3. Configure la cuenta local SMS que se utiliza para recibir los correos electrónicos:

    neptun ~ # useradd sms
    neptun ~ # passwd sms
    New password:
    BAD PASSWORD: it is too simplistic/systematic
    Retype new password:
    passwd: password updated successfully
    neptun ~ # chown -R sms:sms /home/sms/


    Ahora, todos los correos electrónicos se deben entregar correctamente al usuario de SMS. La estructura del maildir se crea automáticamente cuando primero recibe el correo electrónico.

Maildrop con Mailfilter

Momentos antes de la salida, el maildrop busca para .mailfilter en el directorio de inicio para el usuario. Si se encuentra ese archivo, se ejecuta el script. Los privilegios para el archivo se deben limitar al usuario solamente:

neptun sms # touch /home/sms/.mailfilter
neptun sms # chmod go-rwx /home/sms/.mailfilter

Aquí está el contenido del archivo:

# Mailfilter script for parsing ISE SMS messages
# Author: Michal Garcarz at cisco.com
# Date: 1 Dec 2013

#DEFAULT="$HOME/.maildir/"
DATE=`date`
SHELL="/bin/bash"

# Our log file
logfile "/home/sms/maildrop.log"

# Our verbosity in the log file
VERBOSE="5"

log "-------------SMS MAILFILTER LOG-----------"
log "Email received at: $DATE"

if (/^Subject:.*Guest.*Text.*Notification.*/)
{
        log "Email processed by script sending SMS via Kannel"

        USERNAME=""
        PASSWORD=""
        TO=""
        if (/^text:Username:(.*)/:b)
        {
            log "Username exists $MATCH1"
            USERNAME=$MATCH1
        }
        if (/^text:Password:(.*)/:b)
        {
            log "Password exists $MATCH1"
            PASSWORD=$MATCH1
        }
        if (/^to:(.*)/:b)
        {
            log "Mobile phone exists $MATCH1"
            TO=$MATCH1
        }

        if ($USERNAME ne "" && $PASSWORD ne "" && $TO ne "")
        {
            log "Sending via HTTP to kannel username=$USERNAME password=$PASSWORD to=$TO"    
            DATA="ISE Guest portal Username: $USERNAME Password: $PASSWORD"
                    
            #also curl can be used instead of wget
            xfilter "wget -O/dev/null \"http://192.168.112.100:13013/cgi-bin/sendsms?username=
tester&password=foobar&to=$TO&text=$DATA
\" >> /tmp/maildrop-kannel.log 2>>
/tmp/maildrop-kannel.log"
        }

        #deliver to maildir (not used since xfilter returns !=0)
        to $DEFAULT/
}

El script:

  • Marca si el tema es lo mismo que lo que se configura en el ISE

  • Lee el nombre de usuario y contraseña a los campos para el cuerpo del correo electrónico (la plantilla predeterminada del ISE se utiliza)

  • Llama un programa externo si existen todos los campos: wget para enviar HTTP GET al smsbox de Kannel con todos los parámetros. Note que las credenciales específicas están utilizadas en el URL (username=tester&password=foobar). Éstas son las credenciales del usuario configurado en Kannel con los privilegios de enviar SMS.

Hay dos archivos del registro aquí:

  • /home/sms/maildrop.log - registros de la ejecución del script
  • /tmp/maildrop-kannel.log - registros de la ejecución del wget

Kannel

El smsbox y el bearerbox se pueden configurar del archivo único. Esta configuración utiliza el servidor del externo SMPP para la salida. Es fácil encontrar los servicios múltiples en la red si usted busca para la frase del proveedor de servicio del SMS del smpp. La configuración es simple, porque no hay necesidad de recibir y de rutear los mensajes de SMS. Esta solución está solamente para enviar y utiliza un proveedor SMPP.

Aquí está un extracto de /etc/kannel/kannel.conf:

#bearerbox   
group = core
admin-port = 13000
admin-password = bar
smsbox-port = 13001
log-level = 0
log-file = "/var/log/kannel/kannel.log"
access-log = "/var/log/kannel/access.log"

# SMSC SMPP
group = smsc
smsc = smpp
host = ****.com
port = 1775
smsc-username = 4ljt7wi3
smsc-password = ******
system-type =
address-range =

# SMSBOX SETUP
group = smsbox
bearerbox-host = localhost
sendsms-port = 13013
sendsms-chars = "0123456789 +-"
global-sender = 12345
log-file = "/var/log/kannel/smsbox.log"
log-level = 0
access-log = "/var/log/kannel/access.log"
white-list =
black-list =
reply-couldnotfetch =
reply-couldnotrepresent =
reply-requestfailed =
reply-emptymessage =

# SEND-SMS USERS, this credentials has been used in wget script
group = sendsms-user
username = tester
password = foobar
user-deny-ip = "*.*.*.*"
user-allow-ip = "192.168.*.*"

# SMS SERVICE Default
# there should be default always (this is for receiving SMS messages - not used)
group = sms-service
keyword = default
text = "No service specified"

Es posible asociar un teléfono móvil vía el USB y configurar GS SMSC:

group = smsc
smsc = at #type = GSM
smsc-id = usb0-modem
my-number = 1234
modemtype = auto #types: wavecom, siemens, siemens-tc35, falcom,
nokiaphone, ericsson
device = /dev/ttyUSB0 #phone device seen on server

En la mayoría de los teléfonos, también se requiere para activar la funcionalidad del módem; por ejemplo, en la versión 2.2 y posterior de Android, se habilita en las configuraciones/el atar y Hotspot/USB portátil que ata.

Recuerde ejecutar el bearerbox y el smsbox. Aquí tiene un ejemplo:

neptun ~ # /etc/init.d/kannel-bearerbox start
 * Starting kannel bearerbox ...                                              [ ok ]
neptun ~ # /etc/init.d/kannel-smsbox start   
 * Starting kannel smsbox ...                                                [ ok ]

neptun ~ # netstat -atcpn              
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address     Foreign Address    State    PID/Program name    
tcp        0      0 0.0.0.0:13013     0.0.0.0:*          LISTEN   24170/smsbox            
tcp        0      0 0.0.0.0:13000     0.0.0.0:*          LISTEN   24151/bearerbox     
tcp        0      0 0.0.0.0:13001     0.0.0.0:*          LISTEN   24151/bearerbox 

Bearerbox debe tener por lo menos un SMSC configurado para comenzar.

Verificación

Utilize esta sección para confirmar que su configuración funcione correctamente.

ISE

El puerto predeterminado para el portal del patrocinador se utiliza (8443). Los registros del patrocinador en https://ise.test-cisco.com:8443/sponsorportal/.

Aseegurese que el patrocinador hace una dirección de correo electrónico asignar en mis configuraciones:

Cree la cuenta de invitado con una notificación de SMS:

Usted recibe la confirmación que la cuenta de invitado fue creada con éxito:

El ISE debe enviar un correo electrónico al servidor SMTP configurado.

Sufijo

El servidor SMTP recibe el mensaje y utiliza el maildrop para entregarlo a la cuenta local (sms@test-cisco.com). Aquí está un extracto de /var/log/messages:

Nov 30 22:39:47 neptun postfix/smtpd[18460]: connect from unknown[192.168.112.1]
Nov 30 22:39:47 neptun postfix/smtpd[18460]: 2B36030B32: client=unknown
[192.168.112.1]
Nov 30 22:39:47 neptun postfix/cleanup[18463]: 2B36030B32: message-id=
<563762958.941385847586377.JavaMail.root@ise2>
Nov 30 22:39:47 neptun postfix/qmgr[32658]: 2B36030B32: from=<sponsor@test-cisco.com>,
size=689, nrcpt=1 (queue active)
Nov 30 22:39:47 neptun postfix/pipe[18464]: 2B36030B32: to=<sms@test-cisco.com>,
relay=maildrop, delay=0.18, delays=0.14/0/0/0.04, dsn=2.0.0, status=sent (delivered
via maildrop service
)

Maildrop

Antes de que usted envíe el correo electrónico a SMS, el directorio del maildir ejecuta /home/sms/.mailfilter, que realiza una acción específica.

Aquí está un extracto del /home/sms/maildrop.log:

-------------SMS MAILFILTER LOG-----------
Email received at: Sat Nov 30 22:39:47 CET 2013
Email processed by script sending SMS via Kannel
Username exists  jsmith02
Password exists  t6ub79_6r
Mobile phone exists 4850xxxxxxx
Sending via HTTP to kannel username= jsmith02 password= t6ub79_6r to=4850xxxxxxx

Mailfilter

El script del mailfilter lee todos los datos y ejecuta el xfilter, que llama el wget para pasar todos los parámetros a Kannel.

Aquí está un extracto de /tmp/maildrop-kannel.log:

--2013-11-30 22:39:47--  http://192.168.112.100:13013/cgi-bin/sendsms?username=
tester&password=foobar&to=4850xxxxxxx&text=ISE%20Guest%20portal%20Username:
%20%20jsmith02%20Password:%20%20t6ub79_6r

Connecting to 192.168.112.100:13013... connected.
HTTP request sent, awaiting response... 202 Accepted
Length: 24 [text/html]
Saving to: `/dev/null'

     0K                                                       100% 1.14M=0s

2013-11-30 22:39:47 (1.14 MB/s) - `/dev/null' saved [24/24]

Se valida la petición get HTTP.

Kannel

El smsbox de Kannel señala que recibió un pedido de HTTP del wget y envió esa petición al bearerbox para entregar SMS.

Aquí está un extracto de /var/log/kannel/smsbox.log:

2013-11-30 22:39:47 [18184] [5] INFO: smsbox: Got HTTP request </cgi-bin/sendsms>
from <192.168.112.100>
2013-11-30 22:39:47 [18184] [5] INFO: sendsms used by <tester>
2013-11-30 22:39:47 [18184] [5] INFO: sendsms sender:<tester:12345>
(192.168.112.100) to:<4850xxxxxxx> msg:<ISE Guest portal Username: 
jsmith02 Password:  t6ub79_6r>

2013-11-30 22:39:47 [18184] [5] DEBUG: Stored UUID fd508632-9408-49e1-9eda-
3ce8d4b939d4
2013-11-30 22:39:47 [18184] [5] DEBUG: message length 57, sending 1 messages
2013-11-30 22:39:47 [18184] [5] DEBUG: Status: 202 Answer: <Sent.>
2013-11-30 22:39:47 [18184] [5] DEBUG: Delayed reply - wait for bearerbox
2013-11-30 22:39:47 [18184] [0] DEBUG: Got ACK (0) of fd508632-9408-49e1-9eda-
3ce8d4b939d4

El bearerbox de Kannel conecta con el servidor del telecontrol SMPP y envía el mensaje con éxito.

Aquí está un extracto de /var/log/kannel/kannel.log:

2013-11-30 22:39:47 [18165] [8] DEBUG: boxc_receiver: sms received
2013-11-30 22:39:47 [18165] [8] DEBUG: send_msg: sending msg to box: <127.0.0.1>
2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP[SMPP:*****.com:1775/0:4ljt7wi3:]:
throughput (0.00,0.00)
2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP[SMPP:*****.com:1775/0:4ljt7wi3:]:
Sending PDU
:
2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP PDU 0x2056bf0 dump:
2013-11-30 22:39:47 [18165] [6] DEBUG:   type_name: submit_sm
2013-11-30 22:39:47 [18165] [6] DEBUG:   command_id: 4 = 0x00000004
2013-11-30 22:39:47 [18165] [6] DEBUG:   command_status: 0 = 0x00000000
2013-11-30 22:39:47 [18165] [6] DEBUG:   sequence_number: 5 = 0x00000005
2013-11-30 22:39:47 [18165] [6] DEBUG:   service_type: NULL
2013-11-30 22:39:47 [18165] [6] DEBUG:   source_addr_ton: 2 = 0x00000002
2013-11-30 22:39:47 [18165] [6] DEBUG:   source_addr_npi: 1 = 0x00000001
2013-11-30 22:39:47 [18165] [6] DEBUG:   source_addr: "12345"
2013-11-30 22:39:47 [18165] [6] DEBUG:   dest_addr_ton: 2 = 0x00000002
2013-11-30 22:39:47 [18165] [6] DEBUG:   dest_addr_npi: 1 = 0x00000001
2013-11-30 22:39:47 [18165] [6] DEBUG:   destination_addr: "4850xxxxxxx"
2013-11-30 22:39:47 [18165] [6] DEBUG:   esm_class: 3 = 0x00000003
2013-11-30 22:39:47 [18165] [6] DEBUG:   protocol_id: 0 = 0x00000000
2013-11-30 22:39:47 [18165] [6] DEBUG:   priority_flag: 0 = 0x00000000
2013-11-30 22:39:47 [18165] [6] DEBUG:   schedule_delivery_time: NULL
2013-11-30 22:39:47 [18165] [6] DEBUG:   validity_period: NULL
2013-11-30 22:39:47 [18165] [6] DEBUG:   registered_delivery: 0 = 0x00000000
2013-11-30 22:39:47 [18165] [6] DEBUG:   replace_if_present_flag: 0 = 0x00000000
2013-11-30 22:39:47 [18165] [6] DEBUG:   data_coding: 0 = 0x00000000
2013-11-30 22:39:47 [18165] [6] DEBUG:   sm_default_msg_id: 0 = 0x00000000
2013-11-30 22:39:47 [18165] [6] DEBUG:   sm_length: 57 = 0x00000039
2013-11-30 22:39:47 [18165] [6] DEBUG:   short_message:
2013-11-30 22:39:47 [18165] [6] DEBUG:    Octet string at 0x205ec70:
2013-11-30 22:39:47 [18165] [6] DEBUG:      len:  57
2013-11-30 22:39:47 [18165] [6] DEBUG:      size: 58
2013-11-30 22:39:47 [18165] [6] DEBUG:      immutable: 0
2013-11-30 22:39:47 [18165] [6] DEBUG:      data&colon; 49 53 45 20 47 75 65 73
74 20 70 6f 72 74 61 6c   ISE Guest portal
2013-11-30 22:39:47 [18165] [6] DEBUG:      data&colon; 20 55 73 65 72 6e 61 6d
65 3a 20 20 6a 73 6d 69    Username:  jsmi
2013-11-30 22:39:47 [18165] [6] DEBUG:      data&colon; 74 68 30 32 20 50 61 73
73 77 6f 72 64 3a 20 20   th02 Password:  
2013-11-30 22:39:47 [18165] [6] DEBUG:      data&colon; 74 36 75 62 37 39 11 36
72                        t6ub79.6r
2013-11-30 22:39:47 [18165] [6] DEBUG:    Octet string dump ends.
2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP PDU dump ends.
2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP[SMPP:******.com:1775/0:4ljt7wi3:]:
throughput (1.00,0.00)
2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP[SMPP:******.com:1775/0:4ljt7wi3:]:
throughput (1.00,0.00)
2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP[SMPP:******.com:1775/0:4ljt7wi3:]:
Got PDU:
2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP PDU 0x2056bf0 dump:
2013-11-30 22:39:47 [18165] [6] DEBUG:   type_name: submit_sm_resp
2013-11-30 22:39:47 [18165] [6] DEBUG:   command_id: 2147483652 = 0x80000004
2013-11-30 22:39:47 [18165] [6] DEBUG:   command_status: 0 = 0x00000000
2013-11-30 22:39:47 [18165] [6] DEBUG:   sequence_number: 5 = 0x00000005
2013-11-30 22:39:47 [18165] [6] DEBUG:   message_id: "4128473611307259"
2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP PDU dump ends.
2013-11-30 22:39:47 [18165] [6] DEBUG: SMPP[SMPP:******.com:1775/0:4ljt7wi3:]:
throughput (1.00,0.00)

Note que fijan a la dirección de origen como 12345. Esta configuración no importa. Las reescrituras del servidor del externo SMPP que valoran. Es posible comprar el servicio adicional para ser presentado diferentemente.

Teléfono del invitado

El Usuario invitado recibe SMS:

Troubleshooting

Esta sección proporciona la información que usted puede utilizar para resolver problemas su configuración.

ISE

Usted puede ser que encuentre este error cuando usted crea una cuenta de invitado: Incapaz de enviar un mensaje de texto a los Usuarios invitados siguientes: xxxx. Usted debe agregar su dirección de correo electrónico a la página de las configuraciones. Si usted recibe ese mensaje de error, verifique la dirección de correo electrónico del patrocinador.

Información Relacionada



Document ID: 116918