이 문서에서는 게스트 계정이 있는 사용자에게 SMS(Short Message Service) 메시지를 전달하기 위해 오픈 소스 솔루션(Postfix, Maildrop, Kannel)을 Cisco ISE(Identity Services Engine)와 통합하는 방법에 대해 설명합니다.
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우, 모든 명령어의 잠재적인 영향을 미리 숙지하시기 바랍니다.
ISE에서는 임시 네트워크 액세스를 위한 게스트 계정(일반적으로 게스트, 방문자, 계약업체, 컨설턴트 및 고객)을 생성할 수 있습니다. 이러한 계정은 후원자 포털을 통해 후원자 사용자에 의해 생성 됩니다. 계정을 생성할 때 게스트 사용자 휴대폰에 SMS를 사용하여 동적으로 생성된 액세스 비밀번호를 직접 전송할 수 있습니다.
Cisco ISE는 SMTP(Simple Mail Transfer Protocol)를 사용하여 이메일을 통해 Mail2SMS 게이트웨이로 이러한 자격 증명을 보낼 수 있습니다. 이 게이트웨이는 SMS 전송을 담당합니다.
시장에 여러 Mail2SMS 게이트웨이 솔루션이 있습니다. 일반적으로 SMTP, SMPP(Short Message Peer-to-Peer), FTP, HTTP(SOAP(Simple Object Access Protocol), 웹 서비스) 등 다양한 프로토콜을 사용하여 데이터를 수신하고 특정 휴대폰에 SMS 메시지를 보낼 수 있습니다.
자체 SMS 게이트웨이를 구축하는 것이 가장 좋을 수 있습니다. 다음과 같은 이점을 제공합니다.
외부 서비스와도 통합된 개인 SMS 게이트웨이인 혼합 구축이 유용할 수 있습니다.
흐름은 다음과 같습니다.
이 솔루션의 각 모듈(Postfix, Kannel smsbox 및 Kannel bearbox)은 별도의 서버에 설치할 수 있습니다. 이 예에서는 간소화를 위해 동일한 서버에 구성됩니다.
ISE를 구성하려면 다음 단계를 완료합니다.
Postfix는 ISE에서 이메일을 수신하는 SMTP 서버입니다. 몇 가지 사소한 변경 사항을 제외하고 기본 컨피그레이션이 사용됩니다. 구성하려면 다음 단계를 완료하십시오.
myhostname = smtp.test-cisco.com
mydomain = test-cisco.com
mydestination = $myhostname, $mydomain, localhost
local_transport = maildrop
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${user}
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/
현재 모든 이메일은 SMS 사용자에게 올바르게 전달되어야 합니다. maildir 구조는 처음 이메일을 받으면 자동으로 생성됩니다.
전달 직전에 maildrop은 사용자의 홈 디렉토리에서.mailfilter를 검색합니다. 해당 파일이 발견되면 스크립트가 실행됩니다. 파일에 대한 권한은 사용자로만 제한해야 합니다.
neptun sms # touch /home/sms/.mailfilter
neptun sms # chmod go-rwx /home/sms/.mailfilter
파일의 내용은 다음과 같습니다.
# 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/
}
스크립트:
여기에는 두 개의 로그 파일이 있습니다.
smsbox와 bearerbox는 모두 단일 파일에서 구성할 수 있습니다. 이 구성에서는 외부 SMPP 서버를 사용하여 전달합니다. smpp sms 서비스 공급자 문구를 검색하면 웹에서 여러 서비스를 쉽게 찾을 수 있습니다. SMS 메시지를 수신하고 라우팅할 필요가 없으므로 구성이 간단합니다. 이 솔루션은 한 개의 SMPP 제공자를 전송하고 사용하는 용도로만 사용됩니다.
다음은 /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"
USB를 통해 휴대폰을 연결하고 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
대부분의 전화기에서는 모뎀 기능도 활성화해야 합니다. 예를 들어, Android 버전 2.2 이상에서는 설정/테더링 및 휴대용 핫스팟/USB 테더링에서 활성화됩니다.
bearbox와 smsbox를 모두 실행해야 합니다. 예를 들면 다음과 같습니다.
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에 하나 이상의 SMSC가 구성되어 있어야 합니다.
구성이 올바르게 작동하는지 확인하려면 이 섹션을 활용하십시오.
스폰서 포털의 기본 포트가 사용됩니다(8443). 스폰서는 https://ise.test-cisco.com:8443/sponsorportal/에 로그인합니다.
스폰서가 내 설정에서 이메일 주소가 할당되었는지 확인합니다.
SMS 알림으로 게스트 어카운트를 생성합니다.
게스트 어카운트가 성공적으로 생성되었다는 확인 메시지가 표시됩니다.
ISE는 구성된 SMTP 서버에 이메일을 보내야 합니다.
SMTP 서버는 메시지를 수신하고 maildrop을 사용하여 로컬 계정(sms@test-cisco.com)으로 메시지를 전달합니다. /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)
SMS로 이메일을 보내기 전에 maildir 디렉토리는 특정 작업을 수행하는 /home/sms/.mailfilter를 실행합니다.
다음은 /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 스크립트는 모든 데이터를 읽고 xfilter를 실행합니다. xfilter는 wget을 호출하여 모든 매개변수를 Kannel에 전달합니다.
다음은 /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]
HTTP GET 요청이 수락됩니다.
Kannel smsbox는 wget에서 HTTP 요청을 받았으며 SMS 전송을 위해 해당 요청을 bearerbox로 보냈다고 보고합니다.
다음은 /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
Cannel(커널) 대화 상자가 원격 SMPP 서버에 연결되고 메시지를 성공적으로 전송합니다.
다음은 /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: 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: 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: 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: 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)
소스 주소는 12345로 설정됩니다. 이 설정은 중요하지 않습니다. 외부 SMPP 서버가 해당 값을 다시 씁니다. 다르게 제시하기 위해 부가 서비스를 구매할 수 있다.
게스트 사용자가 SMS를 수신합니다.
이 섹션에서는 설정 문제 해결을 위해 사용할 수 있는 정보를 제공합니다.
게스트 계정을 만들 때 이 오류가 발생할 수 있습니다. 다음 게스트 사용자에게 문자 메시지를 보낼 수 없습니다. xxxx. 설정 페이지에 이메일 주소를 추가해야 합니다. 해당 오류 메시지가 표시되면 스폰서 이메일 주소를 확인합니다.
개정 | 게시 날짜 | 의견 |
---|---|---|
1.0 |
04-Dec-2013 |
최초 릴리스 |