메뉴 닫기

telegram bot을 이용한 실시간 프롬프트 명령어 알람 받기

“telegram bot을 이용한 실시간 프롬프트 명령어 알람 받기”


telegram bot을 이용한 실시간 프롬프트 명령어를 알람을 받을 수 있습니다. 

이 포스팅에서는 EoS를 지난서버를 제외한 Rocky Linux 8 (Redhat 8)계열 이상에서 명령프롬프트 설정하는 방법을 설명합니다.

[개 요]

✅종    류 : 엔지니어링 
✅난이도 : ⭐ 
✅내용요약 : telegram bot을 이용한 실시간 프롬프트 명령어를 알람 받기
✅테스트 환경 : Rocky Linux 9 (Redhat 9)
✅관련직무 : 시스템&클라우드 엔지니어

[기초이론&용어설명]

[관련 기술자료]


 

“시작하며”


 이 포스트는 Telegram bot을 이용한 명령프롬프트 모니터링입니다.

    1. 환경 변수 설정 및 rsyslog 설정

    2. 스크립트 및 서비스 데몬 화

 

1) 환경 변수 설정과 기본 설정


서버 IP 와 접속한 IP를 정확하게 로그로 남기기위해 관련 geoip 관련 라이브러리 설치를 진행합니다.

1️⃣ 라이브러리 설치

ip 설정과 geoip 관련 부분을 확인하기 위해서 패키지 라이브러리를 설치합니다.

Redhat

# dnf install -y epel-release rocky-release 

# dnf install -y https://rpms.remirepo.net/enterprise/remi-release-$(source /etc/os-release && echo $VERSION_ID).rpm

# dnf update -y

# dnf install -y GeoIP GeoIP-devel GeoIP-data zlib-devel

 

Ubuntu

# add-apt-repository ppa:maxmind/ppa

# apt-get update -y 

# apt-get upgrade -y

# apt install -y libgeoip-dev libgeoip*

2️⃣ 기존 환경 변수 설정

/etc/profile 전역 환경변수에 설정합니다.

해당 설정은 접속한 IP와 서버 IP 그리고 입력한 명령어에 대한 부분입니다.

# vi /etc/profile

remoteip=$(curl -s ifconfig.me)
if [[ -z $remoteip ]]; then remoteip=localhost; fi
export PROMPT_COMMAND=’RETRN_VAL=$?;
logger -p local6.debug “$(whoami) $remoteip [$$] [$RETRN_VAL] [$PWD]: $(history 1 | sed “s/^[ \t]*[0-9]\+[ \t]*//”)”‘
#readonly PROMPT_COMMAND

 

저장 후 

# source /etc/profile

 

 

 

 

3️⃣ rsyslog.conf 설정

rsyslog.conf 에 설정하기

이 설정은 명령프롬프트에 입력된 부분을 따로 로그로 기록하는것 입니다.

.cmg.log 로 기록하는 이유는 숨김파일로 로그가 저장되는것을 보여주지 않기 위해서 설정합니다.

# vi /etc/rsyslog.conf 💡

맨아랫줄에 추가

local6.* /var/log/.cmd.log

-> .cmd.log로 한 이유는 .파일로 숨김파일로 진행

# systemctl restart rsyslog

# touch /var/log/.cmd.log

# cat /var/log/.cmd.log

아래는 해당 내용입니다.

 

 

 

 

2) 스크립트 및 서비스 데몬화 


1️⃣ 스크립트 생성

# mkdir /root/bin
# touch /root/bin/command_history_telegram.sh
# chmod 755 /root/bin/command_history_telegram.sh
# vi /root/bin/command_history_telegram.sh

여기서 텔레그램 ID와 telegram bot API 키값이 중요합니다.

#!/bin/bash

# 여러 사용자의 텔레그램 ID를 쉼표로 구분하여 추가합니다.
# 예: IDS=”12345678,87654321,98765432″

# Telegram Bot 설정
IDS=”66666666,9999999,555555555″ # 여러 사용자의 텔레그램 ID를 쉼표로 구분하여 추가합니다.
KEY=”6924120937:AAEU903UZ_XH9Ny0Q4XMixwzuY6MGWASDFw” # 텔레그램 봇 API 키
URL=”https://api.telegram.org/bot${KEY}/sendMessage”

# inotifywait로 파일 시스템 이벤트를 실시간으로 모니터링합니다.
tail -n0 -F /var/log/.cmd.log | while read -r line; do
# 새로운 라인을 읽어와서 텔레그램으로 전송합니다.
log=”$line”

# 로그를 전송합니다.
for ID in $(echo $IDS | tr ‘,’ ‘\n’); do
curl -s -d “chat_id=$ID&text=${log}&disable_web_page_preview=true&parse_mode=markdown” $URL > /dev/null
done
done

2️⃣ 서비스 데몬화

# touch /etc/systemd/system/command_history_telegram.service

# vi /etc/systemd/system/command_history_telegram.service

 

[Unit]
Description=Command History Telegram Service
After=network.target

[Service]
Type=simple
ExecStart=/root/bin/command_history_telegram.sh

[Install]
WantedBy=multi-user.target

 

# systemctl enable –now command_history_telegram.service

 

3️⃣  telegram bot 실행

텔레그램 bot에서 /start를 입력합니다.

 

 

 

 

 

💡 유의사항

해당 부분은 서버내에서 관리자, 담당자가 아닌 해커가 명령프롬프트에서 무슨 명령어를 입력하는지 확인하는 용도 입니다.

이부분으로 단순 모니터링 알람이지 보안조치는 아닙니다.

 
아래 파일은 profile이 특수문자 문제로 첨부파일입니다.
 
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x