Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Premesse

Configurazione

Vantaggi di SMS Gateway

Esempio di rete e flusso del traffico

Configurazioni

ISE

Suffisso

Cassetta postale con filtro posta

Canale

Verifica

ISE

Suffisso

Posta

Filtro posta

Canale

Telefono ospite

Risoluzione dei problemi

ISE

Informazioni correlate

Introduzione

Questo documento descrive come integrare soluzioni open source (Postfix, Maildrop, Kannel) con Cisco Identity Services Engine (ISE) per fornire un messaggio SMS (Short Message Service) agli utenti con account guest.

Prerequisiti

Requisiti

Cisco raccomanda la conoscenza dei seguenti argomenti:

- Cisco ISE e Guest Access

- Script Linux e Shell

Componenti usati

Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:

- Cisco ISE versione 1.2 o successive

- Postfix versione 2.10

- Maildrop versione 2.6.0

- Kannel versione 1.5.0

Nota: Si tenga presente che Postfix, Maildrop e Kannel sono soluzioni open source e Cisco non supporta questi prodotti. Questo esempio di configurazione mostra semplicemente come ISE può essere integrata con altri prodotti per fornire una soluzione end-to-end.

Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.

Premesse

ISE consente di creare account guest per l'accesso temporaneo alla rete, in genere per ospiti, visitatori, collaboratori esterni, consulenti e clienti. Tali account vengono creati dagli utenti sponsor tramite il portale degli sponsor. Quando si crea l'account, è possibile inviare una password di accesso generata dinamicamente con un SMS direttamente al cellulare dell'utente guest.

Cisco ISE è in grado di inviare queste credenziali tramite e-mail con Simple Mail Transfer Protocol (SMTP) al gateway Mail2SMS. Questo gateway è responsabile della consegna di SMS.

Configurazione

Vantaggi di SMS Gateway

Sul mercato sono disponibili più soluzioni gateway Mail2SMS. In genere, possono ricevere dati utilizzando diversi protocolli, ad esempio SMTP, SMPP (Short Message Peer-to-Peer), FTP, HTTP (Simple Object Access Protocol (SOAP), servizi Web) e inviare un messaggio SMS al telefono cellulare specifico.

Potrebbe essere meglio costruire il proprio gateway SMS. Consente di:

- Maggiore flessibilità

- Possibilità di creare regole composte sul routing (basate sul tempo, su regole e su contenuti)

- Integrazione con i database locali (ad esempio, criteri di routing diversi per gruppi di Active Directory diversi)

- Riduzione potenziale dei costi operativi (nessuna necessità di pagare per un servizio esterno)

- La possibilità di utilizzare questa soluzione anche per gli avvisi sulla salute generati da ISE e inviati come e-mail

Potrebbe essere utile avere un'installazione mista, ovvero un gateway SMS personale che sia integrato anche con un servizio esterno.

Esempio di rete e flusso del traffico

Ecco il flusso:

1. L'utente sponsor crea un account guest con una notifica SMS e fornisce il numero di telefono cellulare per l'utente. ISE invia un'e-mail al server SMTP configurato. L'indirizzo di origine (Da) appartiene a uno specifico utente sponsor, mentre l'indirizzo di destinazione (A) è configurato globalmente su ISE (nell'esempio, sms@test-cisco.com). Tutti i dettagli relativi all'utente appena creato, ad esempio il nome utente e la password, si trovano all'interno del corpo dell'e-mail.

2. L'e-mail arriva sul server Postfix, configurato con maildrop come agente di recapito locale. Poco prima del recapito alla directory maildir dell'utente SMS, maildrop cerca mailfilter nella home directory per l'utente. Lo script mailfilter analizza l'e-mail e, se vengono trovati tutti i dati necessari, utilizza wget per inviare la richiesta HTTP GET alla smsbox del canale. Le richieste HTTP GET contengono il messaggio di testo con il nome utente, la password e il numero di telefono cellulare dell'utente. La smsbox del canale è il front-end del canale utilizzato per accettare tutte le richieste degli utenti per l'invio di SMS (per passare il canale alla bearerbox del canale).

3. La smsbox del canale invia la richiesta al bearerbox del canale, che ha la responsabilità di inviare l'SMS.

4. Sul bearerbox potrebbero essere configurate più regole e centri SMSC (Short Message Service Center). In questo esempio viene utilizzato un server SMPP esterno. La configurazione di un telefono cellulare collegato localmente è semplice e viene presentata in seguito.

Ogni modulo di questa soluzione (Postfix, Kannel smsbox e Kannel bearerbox) può essere installato su un server separato. Per semplicità in questo esempio, è configurato sullo stesso server.

Configurazioni

ISE

Per configurare l'ISE, attenersi alla seguente procedura.

1. Configurare l'utente del portale sponsor. Nell'esempio viene usata la configurazione ISE predefinita e l'utente viene inserito nel gruppo SponsorAllAccount:

L'e-mail per l'utente sponsor può essere configurata successivamente dal portale degli sponsor.

2. Per poter inviare notifiche SMS, modificare i privilegi predefiniti per il gruppo SponsorAllAccount:

Per impostazione predefinita, il privilegio Invia SMS è disabilitato.

3. Configurare il server SMTP e verificare che le impostazioni DNS siano corrette.

Tutti i messaggi di notifica e-mail vengono inviati all'host smtp.test-cisco.com. ISE non cerca di controllare i record DNS MX per i domini configurati (questo server SMTP viene considerato come un inoltro).

4. Personalizza l'e-mail inviata come notifica SMS.

5. Configurare l'indirizzo e-mail di destinazione, che è l'unica impostazione non mantenuta come predefinito. Tutte le notifiche vengono inviate tramite un server SMTP configurato in precedenza con il campo A impostato su sms@test-cisco.com.

Nota: È possibile configurare ISE per inviare le notifiche di avviso tramite e-mail. Ciò può anche essere integrato con la soluzione proposta per inviare gli allarmi come SMS ai telefoni cellulari. Cisco consiglia di utilizzare un account separato sul server Postfix per questa operazione (ad esempio, alert@test-cisco.com).

Suffisso

Postfix è un server SMTP che riceve e-mail da ISE. Viene utilizzata la configurazione predefinita, ad eccezione di alcune modifiche minori. Completare questa procedura per configurarla.

1. Configurare Postfix come destinazione locale per il dominio test-cisco.com. È inoltre importante configurare un agente di recapito locale: maildrop. Ecco le modifiche necessarie nel file main.cf:

myhostname = smtp.test-cisco.com

mydomain = test-cisco.com

mydestination = $myhostname, $mydomain, localhost

local_transport = maildrop

2. Il passaggio successivo consiste nell'attivare maildrop nel file master.cf. Modificare la riga corretta nel file master.cf:

maildrop  unix  -       n       n       -       -       pipe

flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${user}
Poiché si tratta di una distribuzione semplice senza domini virtuali, viene utilizzato il parametro {user} anziché il parametro predefinito {destination}.

3. Configurare l'SMS dell'account locale utilizzato per ricevere le e-mail:

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/

Al momento, tutte le e-mail dovrebbero essere recapitate correttamente all'utente SMS. La struttura maildir viene creata automaticamente quando riceve per la prima volta un messaggio di posta elettronica.

Cassetta postale con filtro posta

Subito prima della consegna, maildrop cerca .mailfilter nella home directory per l'utente. Se il file viene trovato, lo script viene eseguito. I privilegi per il file devono essere limitati all'utente:

neptun sms # touch /home/sms/.mailfilter

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

Contenuto del file:

# 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/

}

Lo script:

- Controlla se il soggetto è lo stesso configurato sull'ISE

- Legge il nome utente e la password nei campi per il corpo dell'e-mail (viene usato il modello predefinito dall'ISE)

- Chiama un programma esterno se esistono tutti i campi: wget per inviare HTTP GET a Kannel smsbox con tutti i parametri. Si noti che nell'URL vengono utilizzate credenziali specifiche (username=tester&password=foobar). Credenziali dell'utente configurato nel canale con i privilegi per l'invio di SMS.

Sono disponibili due file di log:

- /home/sms/maildrop.log - registra dall'esecuzione dello script

- /tmp/maildrop-kannel.log - log dall'esecuzione di wget

Canale

Sia smsbox che bearerbox possono essere configurati dal singolo file. Questa configurazione utilizza il server SMPP esterno per la distribuzione. È facile trovare più servizi sul Web se si cerca la frase smpp sms service provider. La configurazione è semplice, perché non c'è bisogno di ricevere e indirizzare i messaggi SMS. Questa soluzione viene utilizzata solo per l'invio e utilizza un provider SMPP.

Di seguito è riportato un estratto del /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"

È possibile collegare un telefono cellulare tramite USB e configurare GSM 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

Nella maggior parte dei telefoni, è anche necessario attivare la funzionalità modem; ad esempio, in Android versione 2.2 e successive, è abilitato in Settings/Tethering e Portable Hotspot/USB tethering.

Ricordarsi di eseguire sia bearerbox che smsbox. Di seguito è riportato un esempio:

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

Per avviare Bearbox è necessario che sia configurato almeno un SMSC.

Verifica

Fare riferimento a questa sezione per verificare che la configurazione funzioni correttamente.

ISE

Viene utilizzata la porta predefinita per il portale dello sponsor (8443). Lo sponsor accede a https://ise.test-cisco.com:8443/sponsorportal/.

Assicurarsi che allo sponsor sia assegnato un indirizzo e-mail in Impostazioni personali:

Creare l'account Guest con una notifica SMS:

Si riceve la conferma che l'account guest è stato creato:

ISE deve inviare un'e-mail al server SMTP configurato.

Suffisso

Il server SMTP riceve il messaggio e utilizza la maildrop per recapitarlo all'account locale (sms@test-cisco.com). Di seguito è riportato un estratto del /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=

,

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)

Posta

Prima di inviare l'e-mail all'SMS, la directory maildir esegue /home/sms/.mailfilter, che esegue un'azione specifica.

Di seguito è riportato un estratto del file /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

Filtro posta

Lo script mailfilter legge tutti i dati ed esegue xfilter, che chiama wget per passare tutti i parametri a Kannel.

Di seguito è riportato un estratto della pagina /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]

Richiesta HTTP GET accettata.

Canale

Il canale smsbox riferisce di aver ricevuto una richiesta HTTP dal wget e di averla inviata al bearerbox per consegnare l'SMS.

Di seguito è riportato un estratto della pagina /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

2013-11-30 22:39:47 [18184] [5] INFO: sendsms sender:<tester:12345>

(192.168.112.100) to:<4850xxxxxxx> msg:

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

Il bearerbox del canale si connette al server SMPP remoto e invia il messaggio correttamente.

Di seguito è riportato un estratto della pagina /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)

Si noti che l'indirizzo di origine è impostato su 12345. Questa impostazione è irrilevante. Il server SMPP esterno riscrive tale valore. È possibile acquistare servizi aggiuntivi per essere presentati in modo diverso.

Telefono ospite

L'utente guest riceve un SMS:

Risoluzione dei problemi

Le informazioni contenute in questa sezione permettono di risolvere i problemi relativi alla configurazione.

ISE

È possibile che si verifichi questo errore quando si crea un account guest: Impossibile inviare un SMS ai seguenti utenti guest: xxxx. Devi aggiungere il tuo indirizzo e-mail alla pagina delle impostazioni. Se viene visualizzato questo messaggio di errore, verificare l'indirizzo e-mail dello sponsor.

Informazioni correlate

- Cisco Identity Services Engine - Guida dell'utente 1.2

- Documentazione canale

- Documentazione suffisso

- Documentazione e supporto tecnico – Cisco Systems