Распространено ли устанавливать zsh на производственных серверах?

Распространено ли устанавливать zsh на производственных серверах?

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

Некоторое время назад я попросил установить zsh на наш продакшн-сервер. Мои компании-администраторы ответили, что это невозможно, так как это продакшн-сервер, а не dev-сервер.

Я использовал zsh и oh-my-zsh последние 5 лет и очень к ним привязан, zsh делает мою работу проще и быстрее. Но это был недостаточный аргумент.

Я не силен в вопросах безопасности или других вопросах, которые могут здесь быть затронуты, поэтому мои вопросы:

  1. Безопасна ли установка zsh на рабочем сервере для системы?
  2. Разрешите ли вы установку zsh в этом случае и почему?
  3. Имеет ли смысл ограничивать пользователей bash на рабочем сервере?

решение1

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

Если бы это было не таккачество продукции, можно утверждать, что использование его в качестве оболочки входа для пользователя-администратора приведет к некоторому риску, но с его гораздо более разумным синтаксисом, чем у других оболочек, таких как bashили tcsh, я бы сказал, что это значительно улучшит ситуацию.

Хотя его основное применение — интерактивная оболочка, я бы сказал, что написание скриптов на , zshскорее всего, сделает их более безопасными и надежными, чем bashскрипты (посмотрите, как много людей неосознанно пишут bashскрипты на zshсинтаксисе, когда забывают заключать переменные в кавычки, и как изменение шебанга с #! /bin/bashна #! /bin/zsh -исправит многие ошибки в их скриптах).

В любом случае, установка zsh— это одно из первых действий, которые я выполнял при развертывании всех серверов во всех местах, где я работал.

Однако я обычно не делаю его оболочкой входа для любого пользователя по умолчанию, поскольку для некоторого программного обеспечения нередко требуется среда, ориентированная на bash.

решение2

Как и у остальных, вот мое мнение:

  1. Безопасна ли установка zsh на рабочем сервере для системы?

Определите «безвредный». Строго говоря, он не наносит прямого вреда. Однако любой код, который находится в вашей производственной системе, является потенциальным вектором атаки. В этом смысле он не является по-настоящему «безвредным», поскольку онмогбыть использовано для атаки на систему. Есть также некоторые другие способы, которыми это косвенно может вызвать проблемы. ZSH немного более прожорлив по ресурсам, чем, например, bash, что может иметь значение в системе, работающей на пределе возможностей.

  1. Разрешите ли вы установку zsh в этом случае и почему?

В зависимости от конкретных обстоятельств, возможно, он у меня уже установлен.

На всех моих персональных системах ZSH установлен и установлен как оболочка по умолчанию для всех, включая root. Это просто потому, что я довольно часто работаю из локальной оболочки на этих системах, и я активно использую ZSH во многих случаях.

Однако все системы, которые я администрирую на работе, не имеют установленного. Около 95% административной работы, которую я для них выполняю, не требуют от меня когда-либо прикасаться к оболочке на этих системах (я делаюмногочерез Ansible на работе), поэтому нет смысла делать его привычной средой. Я также вряд ли устанавливал бы его на что-либо, кроме наших реальных систем разработки, и нет ни единого шанса, что я бы установил его на что-либо, что напрямую доступно вне офиса.

  1. Имеет ли смысл ограничивать пользователей bash на рабочем сервере?

Я бы усомнился в целесообразности предоставления обычным пользователям доступа к производственным системам, за исключением некоторых очень ограниченных случаев, не предполагающих фактического доступа к оболочке.

Например, там, где я работаю, только ИТ-отдел и люди, напрямую отвечающие за поддержку нашего веб-сайта, имеют доступ к нашим веб-серверам по протоколу HTTPS, кроме обычного. ИТ-специалисты (включая меня) должны входить в систему с помощью специальной учетной записи, используемой только для администрирования веб-серверов, и даже тогда у них ограниченный доступ к системам, если они не сидят за физической консолью в серверной. Веб-дизайнеры имеют доступ только по протоколу SFTP к корневой папке веб-сайта, аничегоиначе. Учитывая это, нет необходимости в какой-либо оболочке, кроме bash (которая является нашим внутренним стандартом для административного использования).

Аналогично, для наших внутренних файловых серверов только ИТ-отдел имеет фактический доступ к оболочке. Другие пользователи имеют специально ограниченный доступ к определенным каталогам, обычно разрешая обычные протоколы файловых серверов (SMB, NFS и т. д.), плюс SFTP, а в некоторых случаях rsync, но ни у кого из них нет реального доступа к оболочке, потому что он им на самом деле не нужен.

решение3

По моему опыту, да, zsh редко устанавливают на рабочем сервере. При этом я работаю в основном с более «консервативными» клиентами (банками, администрациями и т. д.), поэтому ваши результаты могут отличаться.

  1. Сам Zsh являетсябезвредный. Это «просто еще одна оболочка», как bash, ksh,... Однако во многих корпорациях политика безопасности заключается в том, чтобымаксимально ограничить поверхность атаки, т.е. не устанавливайте ничего, если это не требуется. Несмотря на то, что zsh безвреден,его кодовая база может содержать ошибки. Прочитать оКонтузияесли вы еще не знаете об этом. :)
    При этом есть определенная снисходительность к «товарам», таким как vim вместо просто vi. Zsh может попасть в эту категорию.

  2. Не в производстве, не происходит. Помимо уменьшения поверхности атаки, есть еще и тот факт, что вам придется дважды тестировать свои скрипты — один раз с zsh, один раз с bash. Это требует времени и денег.

  3. Я бы не назвал это ограничением для bash:есть ли что-то, что можно сделать с помощью zsh, чего нельзя сделать с помощью bash?

Заключительное замечание:bash — это практически отраслевой стандарт. Это оболочка по умолчанию для большинства корпоративных дистрибутивов (RHEL, SUSE,...), а также для многих очень популярных дистрибутивов, таких как Debia, Ubuntun...
За эти годы я попробовал "новые" оболочки: zsh и fish — две из них, которые мне действительно понравились. Для домашнего использования, возможно, но на работе это bash (и ksh при работе с AIX и т. д.). В итоге я использую bash и дома, старые привычки трудно искоренить.

решение4

Есть и другие мнения, но вот мое.

  1. Безопасна ли установка zsh на рабочем сервере для системы?

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

  1. Разрешите ли вы установку zsh в этом случае и почему?

Нет. Хотелось бы, чтобы была выявлена ​​ощутимая выгода.

  1. Имеет ли смысл ограничивать пользователей bash на рабочем сервере?

Да, bashэто здорово :-) А если какая-то узкая группа пользователей в компании начнет писать zshскрипты, не имея об этом представления у более широкой группы поддержки, то они окажутся в проигрыше.

Связанный контент