web-dev-qa-db-ja.com

Linuxサーバー全体をソース管理下に置く(git)

Linuxサーバー全体をgitを使用してバージョン管理下に置くことを考えています。その背後にある理由は、それが悪意のある変更/ルートキットを検出する最も簡単な方法である可能性があるためです。システムの整合性をチェックするために必要だと私が素朴に思うのは、レスキューシステムを使用してLinuxパーティションを毎週マウントし、gitリポジトリがまだ強化されていないかどうかをチェックしてから、gitステータスを発行してシステムに加えられた変更を検出することです。 。

ディスクスペースの明らかな浪費とは別に、他にマイナスの副作用はありますか?

それは完全にクレイジーなアイデアですか?

少なくとも/ devと/ procを除外しなければならない可能性が高いので、ルートキットをチェックするための安全な方法でさえありますか?

17
Tobias Hertkorn

もう1つの方法は、 tripwire を設定することです。これは、システム上のすべての重要なファイルをスパイダーし、許容できないと定義した方法で変更されたファイルを判別するGPLソフトウェアです。変更は、暗号化された強力なチェックサムに至るまで、iノード番号を介して、mtimeとして簡単に定義できます。

/var/runの変更されたファイル、/etcのDHCPクライアントファイルの変更などに関するレポートを毎晩大量に取得したくない場合は、設定とチューニングが必要ですが、あなたはそのトラブルに行きます、それは確かに非常に役に立ちます。

ファイルプロパティのデータベースは、マシンで認識されているキーnotで署名されているため、悪意を持ってデータベースやトリップワイヤーを変更したツールがないことがわかります。バイナリ。完全なフォレンジック分析が必要な場合は、完全に確実に、tripwireツールとデータベースのコピーを読み取り専用メディアに書き込むことができます。読み取り専用メディアはサーバーにマウントして、ディスクが書き込まれてからのすべての変更を確認するために使用できます。

これを行う場合は、マシンを本番環境にデプロイする前にtripwireをセットアップして実行することが非常に重要です。そうしないと、悪意のあるユーザーがマシンに感染する機会がなかったことを完全に確信することはできません。トリップワイヤードでした。

5
MadHatter

これがうまくいくとは思わないが、実験として、/ etcフォルダーだけでこれを行うとどうなるかを確認したい。ここに、ほとんどの構成情報が保持されます。

3
Joel Coel

@Sirexはすでに非常に良い答えを提供していますが、セキュリティをさらに一歩進めたい場合は、最初に予防してから検出するのが最善の方法です。

/ filesystemが読み取り専用でマウントされたシステムをセットアップしてみてください。/tmpをnoexec、nodevオプションでマウントされた個別のramfsにします。システムが機能するためには、/ varが読み取り/書き込みでマウントされている必要があります。したがって、/ varの下にrw、noexec、nodevを使用してfsをマウントし、/ var/tmpへの書き込み権限を削除します(afaik、デーモンが必要とすることはめったになく、構成可能である必要があります)。また、カーネルのセキュリティパッチを使用して、ユーザーによるリソースへのアクセスをさらに制限します。たとえば、grsecを試してください。可能な限り最も制限の厳しいルールでファイアウォールを使用してください。

一部のディストリビューションは、システムの強化に関する広範なドキュメントを提供しています。例えば:

2
forcefsck

ファイルシステム全体の特定のフォルダーをバージョン管理下に置くことに関心がある場合は、次のアプローチが機能する可能性があります。

まず、/レベルでGitリポジトリを作成します。

$ cd /
# git init

次に、特定のフォルダのみをホワイトリストに登録する/.gitignoreを作成します。たとえば、/path/to/versioned/config/folder/のみをホワイトリストに登録します( https://stackoverflow.com/a/11018557/320594 に基づく):

/*
!/path/
/path/*
!/path/to/
/path/to/*
!/path/to/versioned/
/path/to/versioned/*
!/path/to/versioned/config/
/path/to/versioned/config/*
!/path/to/versioned/config/folder/
!/.gitignore

次に、最初のコミットを作成します。

# git add -A
# git commit -m "Initial commit"

次に、オンデマンドでバージョン管理下に必要な追加のフォルダーを追加します。

PS:

前の方法に加えて、/ etc /をバージョン管理下に置く必要がある場合は、etckeeperhttps://etckeeper.branchable.com/ )を使用することをお勧めします。特定のフォルダをその目的に特化したものとしてバージョン管理する(たとえば、パッケージのインストール後に自動的にコミットする)。

0
Jaime Hablutzel

ツールがシステムに加える変更を分析することは良い考えだと思います:

  1. vMにベアLinuxをインストールする
  2. ルートgitを初期化します
  3. 分析したいツールをインストールする
  4. システムでロールが行ったすべての変更を確認します

... VMを削除します

Procなどのように、.gitignoreファイルに多くのフォルダを追加する必要があります。

0
rubo77