Достаточно ли безопасна реализация удаленного доступа?
Реализую софт для удаленного управения парком машин с сервера, в качестве практики программирования и решения некой прикладной задачи на работе, аки агенты мониторинга+управления машинами. Интересует вопрос безопасности, т.к. агент имеет доступ системы на локальных хостах, а с реализацией безопасности приложений подобного рода я опыта не имел.
На данный момент реализуется подобная система обеспечения безопасности:
Сервер генерирует unique id и случайное многозначное число-пароль, генерирует .exe файл агента с необратимой хэш суммой данного пароля и его id. Далее exe скачивается и устанавливается на машину и агент периодически стучит в сетевой сокет сервера(нужно инициацию от агента ибо они могут быть за натом) с попыткой подключения. Если сервер доступен, то агент и сервер отдают сгенерированный RSA открытый ключ, оба генерируют случайное число и шифруют ключом, отдают друг другу, расшифровывают и сумму чисел используют как ключ для AES шифрования, дальнейший обмен происходит с помощью этого ключа. Агент отдает серверу новое сгенерированние число, зашифрованное хэш суммой пароля, сервер, зная пароль вычисляет хэш сумму пароля и вычисляет это число, затем с помощью этого числа шифрует пароль и отправляет агенту, тот проверяет его хэш сумму и, в случае успеха, выдает серверу временный токен,на сутки, после чего процедура повторяется. Насколько это небезопасно с точки зрения передачи данных? условимся что ни к машине, ни к серверу у злоумышленника доступов нет
Lynn «Кофеман», вы имеете ввиду создавать впн соединения между каждым клиент-сервером? разве приложения вроде radmin, teamviewer,anydesk используют что-то подобное?
Угу, золотое правило: не пишите свою крипту, вы обоср...
Достаточно: генерить сервером токен для аутентификации новой тачки, скормить агенту и дальше хранить в открытом виде, сервер может сохранить метаданные агента для дальнейших проверок на подлинность. Ну и общаться по TLS 1.2+.
Миша Шав, только сертификат надо не только сгенерить, но и проверять его отпечаток. А туннель SSH по трудоемкости развертывания полегче будет, если что.
"Ты бы подумал наперед, чем городить свой огород" (С) советский мультик
Зачем придумывать что-то когда есть SSL? Берется nrpe/nsclient++ - бинарник агента для выполнения датчиков мониторгинга nagios и изучается.
Потом создается CA, в нем выпускаются сертификаты для всех точек, расставляются, настраиваются.
БИНГО!
Да, от какеров Ваша система может быть эффективной, потому что ее никто не знает. Но при столкновении с более-менее продвинутым атакующим она тут же рухнет - потому что Вы не можете написать лучше чем вся команда OpenSSL :)
А каким софтом для удаленного доступа пользуетесь? В большинстве современным программ уже есть все, что вы описали, в том числе шифрование 128-битным AES-алгоритмом внутри протоколов WebRTC и SSL. Ну и 2FA никто не отменял.
добрый! это вообще не весь функционал, который я планирую пользовать, но тут больше энтузиазм играет, а не практическая обоснованность написания собственного софта)