質問が不明で過度に広範囲になる可能性がありますが、簡単または広範な回答をいただければ幸いです。
しばらく前に、本番サーバーにzshをインストールしてもらいました。管理会社では開発サーバーではなく、本番サーバーなのでできないと答えました。
私は5年間zshとoh-my-zshを使ってきました。 zshを使用すると、作業がより簡単で高速になります。しかし、これだけでは十分ではありません。
私はここで扱うことができるセキュリティやその他の問題に精通していません。だから私の質問は次のとおりです。
- 本番サーバーにzshをインストールするのは安全ですか?
- この場合、zshのインストールを許可しますか?なぜ?
- 本番サーバーでbashを使用するユーザーを制限するのは妥当ですか?
答え1
zsh
これはシェルに過ぎず、サービスを開始せず、setuidコマンドも付属していません。したがって、パッケージをインストールするだけでは、誰かまたは何かが実際にパッケージを使用するまで何もしません。いかなる権限も必要ないため、すべてのユーザーは自分のホームディレクトリまたはアクセス可能な任意の場所に直接インストールできます。
そうでない場合生産品質、管理者用のログインシェルとして使用すると、多少のリスクが伴うと言えるかもしれませんが、構文が他のシェルbash
よりも合理的であるため、tcsh
多くの改善があると思います。
主な用途はインタラクティブシェルですが、スクリプトを書くことはzsh
おそらくより安全で信頼性が高いと思います(変数の引用を忘れたときに、自分が知らないように構文を含むスクリプトを書く人がどれだけ多いか、そして多くの人を修正するするためにshebangを変更する方法をbash
見てください(スクリプトにバグがあります)。bash
zsh
#! /bin/bash
#! /bin/zsh -
それにもかかわらず、インストールはzsh
私が働いたすべてのサーバー展開で最初に行うことの1つです。
ただし、一部のソフトウェアでは、bash中心の環境を期待するのが一般的であるため、通常はすべてのユーザーのデフォルトのログインシェルとして設定されていません。
答え2
他の人と同様に、私の意見は次のとおりです。
- 本番サーバーにzshをインストールするのは安全ですか?
「無害」を定義します。厳密に言えば、直接的なダメージはありません。ただし、本番システムのすべてのコードは潜在的な攻撃ベクトルです。そういう意味では、実際に「無害な」というわけではありません。できるシステムを攻撃するために使用されます。間接的に問題を引き起こすいくつかの異なる方法があります。たとえば、ZSHはbashよりもリソースが集中しているため、キャパシティの近くで実行されているシステムにとって重要です。
- この場合、zshのインストールを許可しますか?なぜ?
状況によってはインストールした可能性があります。
すべてのプライベートシステムにZSHをインストールし、すべての人(ルートを含む)のデフォルトシェルとして設定しました。これは、私がしばしばこれらのシステムでローカルシェルを使用して作業し、多くの状況でZSHを積極的に使用するためです。
しかし、私が職場で管理しているシステムにはこの機能はインストールされていません。私が行った管理作業の約95%は、実際にそのシステムのシェルに触れることとは関係ありませんでした。たくさんAnsibleを使って作業するので、おなじみの環境にする必要はありません。また、実際の開発システム以外のシステムにインストールすることはできず、オフサイトから直接アクセスできるシステムにインストールする方法もありません。
- 本番サーバーでbashを使用するユーザーを制限するのは妥当ですか?
実際のシェルアクセスに関連していないいくつかの非常に厳しい状況を除いて、一般ユーザーに本番システムへのアクセスを許可することは実用性に疑問を投げかけます。
たとえば、私が働いている場所では、IT部門とWebサイトのメンテナンスを直接担当する従業員だけが、Webサーバーへの定期的なHTTPSアクセス権を持っています。 ITスタッフ(私を含む)はWebサーバー管理専用アカウントでログインする必要があります。 Webデザイナーは、SFTPを介してのみWebサイトのルートディレクトリにアクセスできます。何もない他のもの。これを考えると、bash(内部的に使用される標準)以外のシェルは必要ありません。
同様に、IT部門だけが内部ファイルサーバーへの実際のシェルアクセス権を持っています。他のユーザーは特定のディレクトリへのアクセスを特に制限するため、通常は通常のファイルサーバープロトコル(SMB、NFSなど)とSFTP、および場合によってはrsyncを許可しますが、実際には必要ないため、実際にシェルアクセス権を持つユーザーはありません。 。
答え3
私の経験では、本番サーバーにzshをインストールすることは一般的ではありません。つまり、私は主に「保守的な」顧客(銀行、政府機関など)と協力しているので、あなたの状況は異なる場合があります。
Zsh自体は害のない。 bash、kshのような「別のシェル」だけです。しかし、多くの企業のセキュリティポリシーは次のとおりです。攻撃面をできるだけ制限してください。つまり、必要でなければ何もインストールしないでください。 zshは無害ですがコードベースにバグがある可能性があります。。読むシェルショックまだ分からないなら。 :)
しかし、viの代わりにvimを使用するように、「商品」にある程度の慣用があります。 Zshはおそらくこのカテゴリに属します。生産に投入されない、起こりませんでした。攻撃面を減らすことに加えて、スクリプトを2回テストする必要があります。一度はzshで、一度はbashでテストする必要があります。時間とお金が必要です。
私はそれをbash制限と呼びません。zshではできますが、bashではできないものはありますか?
最終注意事項:bashはほぼ業界標準です。これは、ほとんどのエンタープライズレベルのディストリビューション(RHEL、SUSEなど)だけでなく、広く使用されている多くのディストリビューション(Debian、Ubuntunなど)のデフォルトシェルです。
長年にわたって私は「新しい」シェルzshとFishを試してみましたが、どちらも私が本当に好きです。しかし、家庭で使用する場合、職場では常にbash(またはAIXなどで作業するときはksh)になります。結局、自宅でもbashを使うようになりましたが、古い習慣は簡単に消えません。
答え4
他の意見もあるがこれは私だ。
- 本番サーバーにzshをインストールするのは安全ですか?
新しいソフトウェアの導入が無害な場合はほとんどありません。たとえば、これに関連するすべての脆弱性を特定してパッチを適用する必要があります。
- この場合、zshのインストールを許可しますか?なぜ?
いいえ。実質的な利点を確認したいと思います。
- 本番サーバーでbashを使用するユーザーを制限するのは妥当ですか?
はいbash
。zsh