30.09.2023

Python скрипт, оповещающий об удаленном подключении

У некоторых пользователей Linux, наверняка, есть каике-то свои небольшие сервера, возможно даже работающие на Raspberry Pi. Настроив и запустив сервер на выполнение определенных действий, обычно редко к нему возвращаешься. То есть, первое время, возможно, подключаешься к серверу, смотришь на логи отслеживая ошибки и так далее, но потом забываешь о сервере до тех пор, пока не возникнут неожиданные ситуации. И только тогда снова заходишь на этот сервер.

Конечно, существует множество инструментов для мониторинга сервера с отправкой отчетов, например Cacti. Но установка подобных инструментов не всегда оправдана в условиях домашних серверов. Но что важно, так это то, что бы ваш сервер не был взломан и использован злоумышленником в своих корыстных целях.

Ввиду этого, было написано несколько скриптов на Python, которые производят мониторинг системы, к примеру, загруженность процессора, оперативной памяти, занятость жесткого диска, температуры. А так же, был реализован простой скрипт, который отслеживает подключение по определенным портам. В случае подключения по указанному порту, отправляется сообщение в телеграм о том, что кто-то подключился к вашему серверу. Отслеживается имя пользователя под которым было совершено подключение, IP адрес и порт.

Для его работы необходимо создать телеграм бота, получить токен, а также ID куда будет отсылаться сообщение. В качестве ID, можно использовать как собственный, так и группы. Также необходимо установить дополнительные библиотеки. Скрипт весьма простой и сопровождается комментариями:

import psutil
import telebot
import time # Впишите токен вашего бота (в правильном формате)
TOKEN = 'Токен_Вашего_Бота' # Список портов, которые будем прослушивать
PORTS = [20, 21, 22, 23, 5900, 5901] bot = telebot.TeleBot(TOKEN) # Получаем имя пользователя и IP адрес с которого идет удаленное подключение
username = ''
remote_ip = ''
users = psutil.users()
if users: # Проверяем, что список users не пустой username = users[0].name
for conn in psutil.net_connections(kind='inet'): if conn.status == 'ESTABLISHED' and conn.laddr.port in PORTS: remote_ip = conn.raddr.ip def check_connections(): """Проверяем текущие соединения""" for conn in psutil.net_connections(kind='inet'): if conn.status == 'ESTABLISHED' and conn.laddr.port in PORTS: # Отправляем сообщение в Telegram message = f"Внимание! \nПроизошло удаленное подключение!\nПользователь: {username}\nIP адрес: {remote_ip}\nПорт: {conn.laddr.port}" bot.send_message(chat_id='ID Чата', text=message) while True: check_connections() time.sleep(60) # Время запуска в секундах

В строке “PORTS” вписываем порты, которые будем отслеживать. В строке “TOKEN” вписываем токен бота, который вы получите в телеграм, а в строке “ID чата” вписывает либо свой ID, либо группы. Сообщение можно изменить в строке “message”. По умолчанию, скрипт запускается каждые 60 секунд и монитор подключение, если оно есть, то оповещает вас в телеграм, если нет, то снова так сказать засыпает. Этот параметр можно отрегулировать в строке “time.sleep(60)”. Запустить скрипт на сервере можно при помощи создания так называемого юнита, о чем написано тут. В общем, тут все подписано, исходники скрипта также доступны на GitHub по этой ссылке.

Дополнительные библиотеки которые необходимо установить:

pip install pyTelegramBotAPI
pip install psutil

Конечно, этот скрипт не предотвратит захват сервера, но, сможет оповестить вас, когда кто-то попытается это реализовать. В любом случае, вы узнаете о том, что кто-то произвел удаленное подключение на ваш сервер и сможете уже предпринимать последующие действия.

Этот скрипт работает у меня на сервере видеонаблюдения под управлением MoyionEye и на Raspberry Pi, на которой запущен бот для изучения команд Linux. К первому серверу касаюсь крайне редко, по этому там помимо настроек самого сервера, крутится несколько скриптов, которые в случае чего, отправляют сообщение в телеграм и я знаю что с сервером что-то надо делать.

А на этом сегодня все, если статья оказалась вам полезна, подписывайтесь на социальные сети журнала Cyber-X:

YouTube
ВКонтакте
Telegram
Дзен
Телеграм Бот по изучению команд Linux!

По вопросам работы сайта, сотрудничества, а так же по иным возникшим вопросам пишите на E-Mail. Если вам нравится журнал и вы хотите отблагодарить за труды, вы можете перечислить донат на развитие проекта.

Источник.