
仮想サーバー インスタンスのセットアップ中に、 を使用していくつかのアプリケーションを構築する必要がありますmake
。インストールするとセキュリティ上のリスクはありますかmake
? または、インスタンスを展開する前にクリーンアップする必要がありますか?
また、gcc
デプロイメント前にアプリケーションをビルドするために使用するコンパイラもサーバー上に存在します。
答え1
実稼働マシンに開発ツールがあれば、攻撃者にとって作業が楽になると主張する人もいます。しかし、これは攻撃者にとって非常に小さな障害であり、開発ツールのインストールに賛成または反対する他の議論の方が重要になります。
攻撃者がシステムに侵入して、サーバーにあるツールを呼び出すことができる場合、すでに深刻なセキュリティ侵害が発生しています。開発ツールがない場合、バイナリ データをファイルに書き込んでそのファイルで chmod を実行する方法は他にもたくさんあります。この時点でシステムでカスタム ビルド実行可能ファイルを使用したい攻撃者は、自分のマシンでそれをビルドしてサーバーに転送することもできます。
他にも注意すべき重要な点がいくつかあります。インストールされたソフトウェアにセキュリティ バグが含まれている場合、攻撃者にさらされる可能性がある方法がいくつかあります。
- パッケージには suid または sgid 実行可能ファイルが含まれている可能性があります。
- パッケージがシステム上でサービスを開始している可能性があります。
- パッケージは、特定の状況下で自動的に呼び出されるスクリプトをインストールできます (これには cron ジョブが含まれますが、ネットワーク インターフェイスの状態が変更されたときやユーザーがログインしたときなど、他のイベントによってスクリプトが呼び出されることもあります)。
- パッケージはデバイスの inode をインストールできます。
開発ツールが上記のいずれかに一致することは期待していないため、高リスクのパッケージではありません。
開発ツールを利用するワークフローがある場合は、まずそれが合理的なワークフローであるかどうかを判断する必要があり、合理的な場合は開発ツールをインストールする必要があります。
サーバー上でこれらのツールが実際に必要ではないことがわかった場合は、いくつかの理由からインストールを控える必要があります。
- サーバー上とバックアップ上のディスク容量を節約します。
- インストールされるソフトウェアが少ないほど、依存関係を追跡しやすくなります。
- パッケージが必要ない場合は、たとえセキュリティ リスクがわずかであったとしても、パッケージをインストールすることで追加のセキュリティ リスクを負う意味はありません。
セキュリティ上の理由から、権限のないユーザーがサーバー上に独自の実行ファイルを配置することを許可しないと決めた場合、回避すべきなのは開発ツールではなく、実行権限でマウントされたファイル システム上の、それらのユーザーが書き込み可能なディレクトリです。そのような状況でも開発ツールが使用される可能性はありますが、可能性は低いでしょう。
答え2
make
は とは異なる構文を持つシェルですbash
。
のようなコンパイラは、標準がサポートしていない一連の置換で構成されたgcc
強力なものです。これは POSIX 非準拠であるか、出力に不要なものを挿入します。これは、起動時に編集を行い、ユーザー インターフェイスを表示する前に終了するように構成された対話型テキスト エディター ( と考えてください) です。awk
awk
sort
cat
vi
cat
これらには本質的に安全でない点は何もなく、bash + シェル リダイレクトがあるマシンよりもマシンの安全性が低下することはありません。
答え3
make
それ自体は問題ありません。make
は、依存関係の追跡と自動化のフレームワークにすぎません。ただし、通常はコンパイラと組み合わせて使用されますが、コンパイラはまったく必要ないため、実稼働システムでは使用できないようにすることをお勧めします。共有ライブラリ、インタープリタなど、不要なパッケージについても同様です。実稼働システムにインストールされるソフトウェアは厳密に管理する必要があり、アプリケーションに必要なパッケージのみが存在する必要があります。
ビルド サーバー上でアプリケーションをビルドし、パッケージ化してから、バイナリ パッケージを運用システムにデプロイする必要があります。
注: ネイティブパッケージングツール吸う理解しようと努力する必要はない。代わりに、ジョーダン・シセルのfpm
梱包作業が本当に楽しくなります。
答え4
make
実稼働サーバーにインストールする必要があるかどうかを尋ねていますが、私の本当の質問は、誰がその実稼働サーバーにアクセスでき、侵入に対処するためにどのような安全策を講じているかということです。make
がインストールされていなくても誰かがroot
アクセスした場合、どうなると思いますか? 手動でインストールできmake
、何でも好きなようにできます。
コンピュータ セキュリティに関する厳しい現実は、望ましくないアクセスを防止したいと思っても、アクセスをブロックすることに執着することよりも、次の点の方が重要であるということです。
- サーバーにアクセスできるのは誰ですか?
- 侵入後の状況から立ち直るために何ができるでしょうか?
これはすべて、どのような仕事をしているかによります。私は主に Web サーバーの世界で働いていますが、私の考え方は基本的に、私から本番サーバーへのアクセスを得る人は、スキル、知識、成熟度を証明する必要があるということです。それだけです。数日かかることもあります。数か月かかることもあります。しかし、基本的に、本番サーバーでのセキュリティの最善策は、サーバーを強化するために行うさまざまなことに加えて、アクセスを制御することです。