Segurança : Cisco Identity Services Engine

Integração da senha do convidado ISE com o gateway de SMS baseado no sufixo e no exemplo de configuração de Kannel

19 Setembro 2015 - Tradução por Computador
Outras Versões: Versão em PDFpdf | Inglês (22 Agosto 2015) | Feedback

Introdução

Este documento descreve como integrar soluções da aberta (sufixo, Maildrop, Kannel) com o Cisco Identity Services Engine (ISE) a fim entregar uma mensagem curto do serviço de mensagem (SMS) aos usuários com contas do convidado.

Contribuído por Michal Garcarz, engenheiro de TAC da Cisco.

Pré-requisitos

Requisitos

A Cisco recomenda que você tenha conhecimento destes tópicos:

  • Cisco ISE e acesso do convidado
  • Linux e script de shell

Componentes Utilizados

As informações neste documento são baseadas nestas versões de software e hardware:

  • Versão 1.2 ou mais recente de Cisco ISE
  • Versão 2.10 do sufixo
  • Versão 2.6.0 de Maildrop
  • Versão 1.5.0 de Kannel

Nota: Seja informado por favor que o sufixo, Maildrop, e Kannel são soluções da aberta, e Cisco não apoia este Produtos. Este exemplo de configuração apresenta simplesmente como o ISE pode ser integrado com o outro Produtos a fim entregar uma solução de ponta a ponta.

As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a sua rede estiver ativa, certifique-se de que entende o impacto potencial de qualquer comando.

Informações de Apoio

O ISE permite que você crie o convidado esclarece o acesso de rede temporária, tipicamente para convidados, visitantes, contratantes, consultantes, e clientes. Tais contas são criadas por usuários do patrocinador através do portal do patrocinador. Quando você cria a conta, é possível enviar uma senha de acesso dinâmico-gerada com SMS diretamente ao telefone celular do usuário convidado.

Cisco ISE pode enviar estas credenciais através do email com o Simple Mail Transfer Protocol (SMTP) ao gateway Mail2SMS. Este gateway é responsável para a entrega de SMS.

Configurar

Benefícios do gateway de SMS

Há umas soluções múltiplas do gateway Mail2SMS no mercado. Podem geralmente receber dados com o uso de protocolos diferentes, tais como o S TP, a mensagem curto peer-to-peer (SMPP), o FTP, HTTP (simple object access protocol (SABÃO), serviços de Web), e enviam uma mensagem de SMS ao telefone celular específico.

Pôde ser o melhor construir seu próprio gateway de SMS. Permite:

  • Maior flexibilidade
  • A capacidade para construir regras compostas sobre o roteamento (com base no período, com base em política, índice-baseado)
  • Integração com bancos de dados locais (por exemplo, políticas de roteamento diferentes para grupos diferentes do diretório ativo)
  • Abaixe potencialmente custos operacionais (nenhuma necessidade de pagar por um serviço externo)
  • A possibilidade para usar igualmente esta solução para os alertas da saúde gerados pelo ISE e enviados como email

Pôde ser de valor ter um desenvolvimento misturado - um gateway pessoal de SMS que fosse integrado igualmente com um serviço externo.

Diagrama da rede e fluxo de tráfego

Está aqui o fluxo:

  1. O usuário do patrocinador cria uma conta do convidado com uma notificação de SMS, e fornece o número de telefone celular para o usuário. O ISE envia um email ao servidor SMTP configurado. O endereço de origem (de) pertence a um usuário específico do patrocinador, visto que o endereço de destino (a) é configurado globalmente no ISE (neste exemplo, sms@test-cisco.com). Todos os detalhes sobre o usuário recém-criado, tal como o nome de usuário e senha, são dentro do corpo desse email.

  2. O email chega no server do sufixo, que é configurado com maildrop como um agente de entrega local. Imediatamente antes da entrega ao diretório do maildir do usuário de SMS, o maildrop procura pelo mailfilter no diretório home para o usuário. O script do mailfilter analisa gramaticalmente o email, e se todos os dados necessários são encontrados, usam o wget a fim enviar o pedido HTTP GET ao smsbox de Kannel. Que os pedidos HTTP GET contêm o mensagem de texto junto com o nome de usuário e senha, e o número de telefone celular do usuário. O smsbox de Kannel é a parte frontal de Kannel que é usado a fim aceitar todos os pedidos dos usuários a fim enviar SMS (para o passar ao bearerbox de Kannel).

  3. O smsbox de Kannel envia esse pedido ao bearerbox de Kannel, que tem a responsabilidade enviar SMS.

  4. Pôde haver umas regras múltiplas e uns centros de serviço de mensagem curtos (SMSCs) configurados no bearerbox. Este exemplo usa um server externo SMPP. A configuração para um telefone celular local-anexado é fácil e é apresentada mais tarde.

Cada módulo desta solução (smsbox do sufixo, do Kannel, e bearerbox de Kannel) pode ser instalado em um servidor separado. Para a simplicidade neste exemplo, é configurado no mesmo server.

Configurações

ISE

Termine estas etapas a fim configurar o ISE.

  1. Configurar o usuário do portal do patrocinador. Neste exemplo, a configuração do padrão ISE é usada, e o usuário é colocado no grupo de SponsorAllAccount:



    O email para o usuário do patrocinador pode ser configurado mais tarde do portal do patrocinador.

  2. A fim poder enviar notificações de SMS, edite os privilégios padrão para o grupo de SponsorAllAccount:



    À revelia, o privilégio de SMS da emissão é desabilitado.

  3. Configurar o servidor SMTP, e certifique-se de que os ajustes DNS estão corretos.



    Todas as notificações de e-mail são enviadas ao host de smtp.test-cisco.com. O ISE não tenta verificar os registros DNS MX para ver se há domínios configurados (este servidor SMTP é tratado como um relé).

  4. Personalize o email que é enviado como a notificação de SMS.



  5. Configurar o endereço email do destino, que é o único ajuste que não é deixado como o padrão. Todas as notificações são enviadas através de um servidor SMTP configurado mais cedo com ao conjunto de campo como sms@test-cisco.com.

    Nota: É possível configurar o ISE a fim enviar notificações de alerta através do email. Isto pode igualmente ser integrado com a solução proposta a fim enviar os alertas como SMS aos telefones celulares. Cisco recomenda que você usa uma conta separada no server do sufixo para esta (por exemplo, alert@test-cisco.com).



Sufixo

O sufixo é um servidor SMTP que receba email do ISE. A configuração padrão é usada à exceção de algumas alterações secundárias. Termine estas etapas a fim configurar-la.

  1. Configurar o sufixo a fim ser o destino local para o domínio de test-cisco.com. É importante configurar igualmente um agente de entrega local: maildrop. Estão aqui as alterações necessárias no main.cf:

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


  2. A próxima etapa é ativar o maildrop no master.cf. Mude a linha correta no master.cf:

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


    Porque é um desenvolvimento simples sem domínios virtuais, o parâmetro {do usuário} é usado em vez do parâmetro do padrão {receptor}.

  3. Configurar a conta local SMS que é usada a fim receber os email:

    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/


    Agora, todos os email devem corretamente ser entregados ao usuário de SMS. A estrutura do maildir está criada automaticamente quando recebe primeiramente o email.

Maildrop com Mailfilter

Imediatamente antes da entrega, o maildrop procura por .mailfilter no diretório home para o usuário. Se esse arquivo é encontrado, o script está executado. Os privilégios para o arquivo devem ser limitados ao usuário somente:

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

Está aqui o índice do arquivo:

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

O script:

  • Verifica se o assunto é o mesmo como o que é configurado no ISE

  • Lê o nome de usuário e senha aos campos para o corpo de e-mail (o molde do padrão do ISE é usado)

  • Chama um programa externo se todos os campos existem: wget a fim enviar HTTP GET ao smsbox de Kannel com todos os parâmetros. Observe que as credenciais específicas estão usadas na URL (username=tester&password=foobar). Estas são as credenciais do configurado pelo usuário em Kannel com os privilégios enviar SMS.

Há dois arquivos de registro aqui:

  • /home/sms/maildrop.log - logs da execução do script
  • /tmp/maildrop-kannel.log - logs da execução do wget

Kannel

O smsbox e o bearerbox podem ser configurados do arquivo único. Esta configuração usa o server externo SMPP para a entrega. É fácil encontrar serviços múltiplos na Web se você procura pela frase do provedor de serviços dos sms do smpp. A configuração é simples, porque não há nenhuma necessidade de receber e distribuir mensagens de SMS. Esta solução é somente enviando e usa um fornecedor SMPP.

Está aqui um trecho 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"

É possível anexar um telefone celular através do USB e 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

Na maioria de telefones, igualmente exige-se para ativar a funcionalidade de modem; por exemplo, na versão 2.2 e mais recente de Android, é permitido nos ajustes/Tethering e em Hotspot/USB portátil que tethering.

Recorde executar o bearerbox e o smsbox. Aqui está um exemplo:

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 deve ter pelo menos um SMSC configurado a fim começar.

Verificar

Use esta seção para confirmar se a sua configuração funciona corretamente.

ISE

A porta padrão para o portal do patrocinador é usada (8443). Os logs do patrocinador em https://ise.test-cisco.com:8443/sponsorportal/.

Certifique-se de que o patrocinador tem um endereço email atribuído em meus ajustes:

Crie a conta do convidado com uma notificação de SMS:

Você recebe a confirmação que a conta do convidado esteve criada com sucesso:

O ISE deve enviar um email ao servidor SMTP configurado.

Sufixo

O servidor SMTP recebe a mensagem e usa o maildrop a fim entregá-lo à conta local (sms@test-cisco.com). Está aqui um trecho 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 que você envie o email a SMS, o diretório do maildir executa /home/sms/.mailfilter, que executa uma ação específica.

Está aqui um trecho do /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

O script do mailfilter lê todos os dados e executa o xfilter, que chama o wget a fim passar todos os parâmetros a Kannel.

Está aqui um trecho 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]

O pedido HTTP GET é aceitado.

Kannel

O smsbox de Kannel relata que recebeu um pedido do HTTP do wget e enviou esse pedido ao bearerbox a fim entregar SMS.

Está aqui um trecho 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

O bearerbox de Kannel conecta ao server remoto SMPP e envia a mensagem com sucesso.

Está aqui um trecho 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)

Observe que o endereço de origem está ajustado como 12345. Este ajuste não importa. As reescritas externos do server SMPP que avaliam. É possível comprar o serviço adicional a fim ser apresentado diferentemente.

Telefone do convidado

O usuário convidado recebe SMS:

Troubleshooting

Esta seção fornece a informação que você pode se usar a fim pesquisar defeitos sua configuração.

ISE

Você pôde encontrar este erro quando você cria uma conta do convidado: Incapaz de enviar um mensagem de texto aos seguintes usuários convidado: xxxx. Você deve adicionar seu endereço email à página dos ajustes. Se você recebe esse Mensagem de Erro, verifique o endereço email do patrocinador.

Informações Relacionadas


Discussões relacionadas da comunidade de suporte da Cisco

A Comunidade de Suporte da Cisco é um fórum onde você pode perguntar e responder, oferecer sugestões e colaborar com colegas.


Document ID: 116918