서버에 SSH 접속을 하게 되면 Telegram으로 메세지를 받을 수 있게 구성하는 방법이다
1.먼저 작업을 위해서는 telegam에 봇을 만들어 주면 된다
botfather 검색 후 /newbot 이라고 입력하면 bot을 만들거냐고 물어본다 그럼 적당한 이름으로 구성 구성이 다 완료되면 API KEY가 제공됩니다
이제 새로운 채팅이 시작되니 해당 부분에 TEST라고 입력 후 잘 되는지 체크를 한다
사용자 아이디를 체크하기 위해서 웹 주소창에 https://api.telegram.org/botapikey값/geupupdates 를 입력하면 정보가 출력된다 여기서 필요한것은 사용자 ID
GeoIP 를 설치 해준 다 ( client ip를 확인하기 위해서)
1 |
[root@localhost ~]# yum install GeoIP GeoIP-devel GeoIP-data zlib-devel |
그럼 이제 ssh 접속시에 telegram 으로 전송하기 위해서 스크립트를 구성해주면 된다 / ID값과 KEY값을 위에서 받은 정보로 기입해 주면 된다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
[root@localhost ~]# vi /etc/profile.d/ssh-telegram.sh #!/usr/bin/env bash # Telegram Bot send # Dev / jsh # Update / 2018.08.30 # ##################################################################### # ID="xxxxxxxxx" KEY="6636xxxx6:AAHla0wu59Fqnaqa7BPOxxxxxxxxxFJbw" URL="https://api.telegram.org/bot${KEY}/sendMessage" DATE="$( date "+%Y-%m-%d %H:%M")" # #################################################################### CLIENT_IP=$(echo $SSH_CLIENT | awk '{print $1}') SRV_HOSTNAME=$(hostname -f) SRV_IP=$(hostname -I | awk '{print $1}') if [ -n "$CLIENT_IP" ] then GEO=`geoiplookup $CLIENT_IP | grep "Country" | awk -F, '{print $2}'` TEXT="$SRV_IP SSH Connection / User=${USER} / Client IP *${CLIENT_IP}* $GEO / Date: ${DATE}" else TEXT="$SRV_IP SSH Connection / User=${USER} / Date: ${DATE}" fi curl -s -d "chat_id=$ID&text=${TEXT}&disable_web_page_preview=true&parse_mode=markdown" $URL > /dev/null |
이제 SSH를 외부에서 접속을 시도하면 텔레그램으로 메세지가 발송된다.