В /etc/ssh/sshd_config
, есть опция под названием AcceptEnv
который позволяет ssh-клиенту отправлять переменные среды. Мне нужно иметь возможность отправлять большое количество переменных среды. Они меняются при каждом подключении от клиента, поэтому добавить их в сценарий входа на сервер будет сложнее.
Я читал это "AcceptEnv *"
небезопасно. Я хотел бы понять, почему, прежде чем пытаться получить список всех переменных среды, которые пытались установить туда.
Почему это считается небезопасным? Могу я привести пример?
Включение обработки среды может позволить пользователям обходить ограничения доступа в некоторых конфигурациях с помощью таких механизмов, как LD_PRELOAD.
Не все версии справочных страниц для sshd_config упоминают это. Если переменные среды изменяются заранее и определенные привилегированные процессы выполняются с новыми библиотеками, указанными в них, могут возникнуть проблемы.
Взгляни на http://www.dankalia.com/tutor/01005/0100501004.htm и выполните поиск по запросу "LD_PRELOAD Exploit". К сожалению, на странице нет якорных ссылок.
См. Также этот вопрос на StackOverflow "Что такое трюк с LD_PRELOAD?"
Установка переменных среды после подключения - это нормально, но когда эти переменные интерпретируются демоном ssh, как установлено AcceptEnv, могут возникнуть плохие вещи.
Не принимать переменные окружения:
Видеть эксплойт Shellshock это появилось недавно ... если вы принимаете переменные окружения, вы открываете действительно неприятный эксплойт.