ここの質問に似ています。https://serverfault.com/questions/387111/inventory-or-audit-installed-linux-software、インストールされているソフトウェアを監査するために、さまざまなLinux / Unixディストリビューションで実行する必要があるコマンドのアイデアを取得したいと思います。少なくとも、次のユースケースに対処する必要があります。
- パッケージからインストールされたソフトウェア
- ソースからインストールされたソフトウェア
- 不明または予期しない場所にインストールされたソフトウェア
また、CentOS/RedHat、SuSE、および Macintosh オペレーティングシステムで実行する必要があります。ソフトウェアのインストールに関して私が考慮したいくつかのアイデアは次のとおりです。しかし、それがどれほど実用的かはわかりません。
- 実行中のプロセスのリストと出力から推論
- リスニングまたはオープンポートを一覧表示し、出力から推論
- さまざまなCLIコマンドを実行して出力を理解してください。
- デフォルトのパッケージマネージャでダンプを実行するか、インストールされているパッケージを一覧表示します。
- findコマンドを実行して特定のファイルまたはファイル名を見つけます。いくつかのソフトウェアが存在すると仮定する構成ファイルもあります。
最終的な目標は、動作するコマンドを持ち、結果の出力をファイルに保存することです。私は、監査、履歴アーカイブ、および特別に発表された脆弱性に対して脆弱なホストを特定するために、ローカルまたはSSHを介してさまざまなシステムで実行するためにこれを使用します。
答え1
CentOS / RedHatとSuSEには1つの共通点があります。どちらもパッケージ形式でRPMを使用しています。したがって、必要なことの1つは、rpm -Va
結果に基づいて保存して後で比較することです(望ましくない変更があるかどうかを確認したい場合)。
これはすべてのrpmのすべてのファイルをスキャンするため、ファイル集約的です。
インストールされている項目のみをリストします。rpm -qa
hr-resourcesソフトウェアのインストールツリーで適切なsnmp-bulkwalkを使用または実行します(Macでsnmpが有効になっている場合はMacでも機能する必要があります)。
もう1つのアイデアは、HIDS(ホストベースの侵入検知システム)を使用することです。たとえばaide
、...fam
samhain
実行中のプロセスの場合、出力はnetstat -tulnp
面白いです。任意のプロセスの関連付けを解決できます。
手動で取り付けた部分(「ソースから」)は扱いにくいです。 IMHO、最善のアプローチは、そのようなことを(少なくとも生産では)禁止する方針を持つことです。または、これらのプログラムをインベントリデータベースに手動で登録する必要があります。