CentOS ssh 접속시 텔래그램 알림받기

| 2020년 1월 26일 | 0 Comments

안녕하세요. 스마일서브 기술지원팀 신규철입니다.

CentOS 환경에 외부에서 ssh 접근시 텔래그램 알림을 받는 방법에 대해 알아보겠습니다.

테스트 환경은 CentOS 8에서 진행하였습니다.

 

 

텔레그램은 여러 플랫폼을 지원하면서 다양한 기기를 지원하는, 영리를 추구하지 않는 자유 클라우드 기반 인터넷 메신저입니다.

(위키백과 : https://ko.wikipedia.org/wiki/%ED%85%94%EB%A0%88%EA%B7%B8%EB%9E%A8)

해당 메신저의 봇을 통해 ssh 접근시 알림을 받을 수 있습니다.

 

우선 텔래그램에서 BotFather를 검색해줍니다.

BotFather를 클릭하면 자동으로 /start 가 입력되면서 대화가 시작됩니다.

/newbot 을 입력하여 새로운 봇을 만들어준 뒤, 적절한 이름을 설정해줍니다.

 

이후 발급 되는 토큰 값을 따로 저장해둡니다. 또한 값을 통해 chat_id 를 확인할 수 있습니다.

chat_id를 확인하기 전에 생성한 봇을 실행해줘야 하는데요. /mybots 을 입력하여 생성한 봇의 이름을 클릭합니다.

 

 

이후 대화방에서 /start 를 입력하여 봇을 시작합니다.

 

 

이제 익스플로어 url에 api.telegram.org/bot[발급받은 토큰 값]/getUpdates 를 입력해줍니다.(대괄호는 입력하시면 안됩니다.)

위와 같은 페이지에 접속이 될텐데, 해당 페이지에서 id 값을 저장해둡니다.

 

이제 위에서 확인 토큰 값 및 chat_id를 통해 CentOS 8 환경에서 스크립트 파일을 만들어 알림을 받도록 설정해보겠습니다.

우선 접근간에 클라이언트 IP를 받아오기 위해 GeoIP 패키지를 설치해주겠습니다. epel 저장소를 추가한 뒤 설치할 수 있습니다.

 

#dnf install epel-release

#dnf install GeoIP

 

#vi /etc/profile.d/ssh_telegram.sh

#!/bin/bash
server_ip=`curl ifconfig.me`
remote_ip=$(echo $SSH_CLIENT | awk ‘{print $1}’)
access_time=$(date +”%Y-%m-%d %H:%M:%S”)
my_token=”발급 받은 토큰 값”
chat_id=”확인 한 chat id”
msg=`echo -e “접속 서버 : ” $server_ip ” \n접속 IP : ” $remote_ip “\n접속 시간 : “$access_time “\n ${USER} 계정이 접속하였습니다.”`
curl -F text=”$msg” -F chat_id=$chat_id, https://api.telegram.org/bot${my_token}/sendMessage > /dev/null 2>&1

 

해당 스크립트 파일을 만들어준 뒤 ssh 접근을 하면 아래와 같이 알림이 오는 것을 확인할 수 있습니다.

 

이 외의 텔래그램 봇 API 관련한 여러 옵션들은 아래 링크에서 확인하시기 바랍니다.

https://core.telegram.org/bots/api#available-methods

 

이상으로 CentOS 환경에서 외부 ssh 접근시 텔래그램으로 알림 받는 방법에 대해 알아봤습니다.

감사합니다.

Category: LINUX

Avatar

About the Author ()