Contenido

Introducción

prerrequisitos

Requisitos

Componentes Utilizados

Antecedentes

Configurar

Ventajas del gateway de SMS

Diagrama de la red y flujo de tráfico

Configuraciones

ISE

Sufijo

Maildrop con Mailfilter

Kannel

Verificación

ISE

Sufijo

Maildrop

Mailfilter

Kannel

Teléfono del invitado

Troubleshooting

ISE

Información Relacionada

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.

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

- Cisco Identity Services Engine - Guía de usuarios 1.2

- Documentación de Kannel

- Documentación del sufijo

- Soporte Técnico y Documentación - Cisco Systems