Linux で AIDE に基づいてファイルシステムの整合性を検出する方法

Linux で AIDE に基づいてファイルシステムの整合性を検出する方法

1. 補助

AIDE (Advanced Instruction Detection Environment) は、ファイルとディレクトリの整合性チェックを実行するプログラムです。Tripwire の代替として開発されました。

AIDEの仕組み

AIDE は、比較基準として指定されたファイルの整合性サンプル ライブラリ (スナップショット) を構築します。これらのファイルが変更されると、対応するチェックサム値も必然的にそれに応じて変化します。AIDE はこれらの変更を識別し、管理者に警告することができます。 AIDE によって監視される属性の変更には、主に権限、所有者、グループ、ファイル サイズ、作成時間、最終変更時間、最終アクセス時間、増加したサイズ、リンクの数などがあり、SHA1 や MD5 などのアルゴリズムを使用して各ファイルの検証コードを生成できます。

このツールはかなり古く、Tripwire などの類似ツールと比較すると操作も簡単です。システムのスナップショットを取得し、HASH 値、変更時刻、および管理者によるファイルの前処理を記録する必要があります。このスナップショットにより、管理者はデータベースを構築し、それを外部デバイスに保存して保管することができます。
管理者がシステムの整合性チェックを実行する場合、管理者は以前に構築したデータベースを現在のシステムからアクセス可能な領域に配置し、AIDE を使用して現在のシステムの状態とデータベースを比較し、最後に現在のシステムで検出された変更を管理者に報告します。さらに、AIDE は、cron などのスケジュール スケジューリング テクノロジを使用してスケジュールに基づいて実行するように構成でき、毎日のシステム検出レポートを生成します。
このシステムは主に運用と保守のセキュリティ検出に使用されます。AIDE はシステム内のすべての悪意のある変更を管理者に報告します。

AIDEの特徴

  • メッセージダイジェストアルゴリズムをサポート: md5、sha1、rmd160、tiger、crc32、sha256、sha512、whirlpool
  • サポートされているファイル属性: ファイルタイプ、ファイル権限、inode、UID、GID、リンク名、ファイルサイズ、ブロックサイズ、リンク数、Mtime、Ctime、Atime
  • Posix ACL、SELinux、XAttrs、拡張ファイルシステム属性をサポート
  • プレーンテキスト構成ファイル、簡素化されたデータベース
  • 監視するファイルやディレクトリを簡単にフィルタリングできる強力な正規表現
  • Gzipデータベース圧縮をサポート
  • 独立したバイナリ静的コンパイルされたクライアント/サーバー監視構成パッケージ

[root@centos7 ~]$ yuminstall-y aide

AIDEをインストールする

ダウンロード: http://sourceforge.net/projects/aide

yum インストール補助
vi /etc/aide.conf
database=file:@@{DBDIR}/aide.db.gz #システム イメージ ライブラリの場所 database_out=file:@@{DBDIR}/aide.db.new.gz #システム イメージ ライブラリを新しく生成します (デフォルトでは /var/lib/aide/ に生成されます)。# 次に、データベースに含めるディレクトリ/ファイルを決定します。
/boot 通常
/bin ノーマル
/sbin 通常
/lib ノーマル
/lib64 ノーマル
#/opt NORMAL #ディレクトリ /usr NORMAL をチェックしないようコメントする
/root 通常
# これらはあまりにも不安定なので、チェックされていない個々のディレクトリを除外します!/usr/src
!/usr/tmp
#要件に応じて、以下に新しい検出ディレクトリ /etc/exports NORMAL を追加します
/etc/fstab 通常
/etc/passwd ノーマル

設定ファイルの詳細説明#データベースパスとログパスの変数を定義します

@@DBDIR /var/lib/aide を定義します。
@@ LOGDIR /var/log/aide を定義します。

# 圧縮を有効にする

gzip_dbout=はい

# 複数の権限をルールとして定義し、後で参照できるように変数に割り当てます

CONTENT_EX = sha256+ftype+p+u+g+n+acl+selinux+xattrs
コンテンツ = sha256+ftype
権限 = p+u+g+acl+selinux+xattrs

# どのルールがどのファイルを監視するために使用されるか

/boot/CONTENT_EX
/bin/CONTENT_EX
/sbin/CONTENT_EX
/lib/CONTENT_EX
/lib64/ CONTENT_EX #監視にはCONTENT_EXで定義されたルールを使用する
/opt/ CONTENT #optディレクトリのチェックサムとファイルタイプのみを監視する
/root/\..* PERMS #PERMS は /root 下のデータが頻繁に変更されるためハッシュチェック値を持ちません

# 監視対象外のファイル

!/etc/.*~
#p: 権限
#i: iノード:
#n: リンクの数
#u: ユーザー
#g: グループ
#s: サイズ
#b: ブロック数
#m: 時刻
#a: 時間
#c: ctime
#S: 成長しているサイズをチェック
#acl: アクセス制御リスト
#selinux SELinux セキュリティコンテキスト
#xattrs: 拡張ファイル属性
#md5: md5 チェックサム
#sha1: sha1 チェックサム
#sha256: sha256 チェックサム
#sha512: sha512 チェックサム
#rmd160: rmd160 チェックサム
#tiger: tiger チェックサム

ルールの定義

設定ファイル /etc/adie.conf を編集し、ルール変数 mon を定義し、/app ディレクトリ内のすべてのファイルを監視し、/app/saomiao.log は監視しないようにします。

[root@centos7 aide]$ vim /etc/aide.conf
 モン = p+u+g+sha512+m+a+c
 /アプリモン
 !/app/juli.sh

データベースを作成する

データベース ファイルを生成し、構成ファイル内の各ファイルのチェックサムを定義して、後で比較できるようにデータベースに格納します。プロンプトから、/var/lib/aide/aide.db.new.gz データベース ファイルが生成されていることがわかります。このデータベース ファイルは初期データベースです。侵入検出を実行すると、/var/lib/aide/aide.db.gz データベース ファイルと比較されます。2 つのデータベースに不一致がある場合は、侵入があったことを示すプロンプトが表示されます。

[root@centos7 aide]$aide --init
AIDE、バージョン 0.15.1
### /var/lib/aide/aide.db.new.gz の AIDE データベースが初期化されました。

ファイルがハッキングされ変更される様子をシミュレートする

シミュレーション ファイルが変更されました: saomiao.sh ファイルに改行を追加し、チェックサム、Mtime、Ctime の変更を促します。

[root@centos7 aide]$ echo >> /app/saomiao.sh

検出: AIDE の検出メカニズムは、現在のデータベースを計算し、それを aide.db.gz と比較することです。 aide.db.gz はデフォルトでは存在しないため、以前に作成した初期化データベース aide.db.new.gz の名前を aide.db.gz に変更する必要があります。

[root@centos7 aide]$mv aide.db.new.gz aide.db.gz

侵入検知

最後に、aide -C (大文字であることに注意してください) を使用して、計算されたデータを aide.db.new.gz と比較し、saomiao.sh ファイルの Mtime と Ctime SHA512 が変更されているかどうかを確認します。

タスクスケジュールを設定し、定期的な検査を実施する

crontab –e
30 08 * * * /usr/sbin/aide --check--report=file:/tmp/aide-check-` date +%Y%m%d `.txt #毎朝8:30に1回実行

情報をメールで送信することもできます:

30 08 * * * /usr/sbin/aide --check| mail –s “AIDE レポート“ [email protected]

2. RKハンター

RKHunter は、システムがルートキットに感染しているかどうかを検出するために特別に設計されたツールです。一連のスクリプトを自動的に実行して、サーバーがルートキットに感染しているかどうかを包括的に検出します。

RKHunterの特徴

  • 脆弱なファイルを検出します。
  • 隠しファイルを検出します。
  • 重要なファイルの権限を確認します。
  • 検出システムのポート番号。

インストール

[root@centos7 aide]$yum install rkhunter

検出

rkhunker -c コマンドを実行してシステムをテストします。 RKHunter の検出はいくつかの部分に分かれています。最初の部分では、主にシステムのバイナリ ツールを検出します。これらのツールはルートキットの主な感染ターゲットであるためです。各テストの後、Enter キーを押して確認する必要があります。

[ ok ] は異常なしを意味します

[ 見つかりません ] はツールが見つからなかったことを意味します。無視してください。

[警告] 赤色の警告の場合は、これらのツールが感染しているか、置き換えられていないかをさらに確認する必要があります。

タスクスケジュールを設定し、定期的な検査を実施する

crontab –e
30 08 * * * /usr/sbin/aide --check--report=file:/tmp/aide-check-` date +%Y%m%d `.txt #毎朝8:30に1回実行

情報をメールで送信することもできます:

30 08 * * * /usr/sbin/aide --check| mail –s “AIDE report“ [email protected]

2. RKハンター

RKHunter は、システムがルートキットに感染しているかどうかを検出するために特別に設計されたツールです。一連のスクリプトを自動的に実行して、サーバーがルートキットに感染しているかどうかを包括的に検出します。

RKHunterの特徴

  • 脆弱なファイルを検出します。
  • 隠しファイルを検出します。
  • 重要なファイルの権限を確認します。
  • 検出システムのポート番号。

インストール

[root@centos7 aide]$yum install rkhunter

検出

rkhunker -c コマンドを実行してシステムをテストします。 RKHunter の検出はいくつかの部分に分かれています。最初の部分では、主にシステムのバイナリ ツールを検出します。これらのツールはルートキットの主な感染ターゲットであるためです。各テストの後、Enter キーを押して確認する必要があります。

[ ok ] は異常なしを意味します
[ 見つかりません ] はツールが見つからなかったことを意味します。無視してください。
[警告] 赤色の警告の場合は、これらのツールが感染しているか、置き換えられていないかをさらに確認する必要があります。

プログラムが毎回検出するたびにユーザーに確認を求めるのではなく、自動的に検出するようにしたい場合は、次のようにします。

rkhunter --check --skip-keypress

同時に、毎週または毎月の自動検出を実現したい場合は、スケジュールされたタスクに追加して自動実行することができます。

crontab -e
1 10 7 * * * ルート /usr/bin/rkhunter --check --cronjob

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux システムで Vim を使用してリモート ファイルを読み書きするコマンドの詳細な説明
  • Linuxシステムにおける仮想デバイスファイルのさまざまな実用的な使用法の詳細な説明
  • Linux で実行可能ファイルを実行するときに「そのようなファイルまたはディレクトリはありません」というプロンプトが表示される場合の解決策
  • Linuxで大きなファイルを素早くコピーする方法
  • Linuxファイル削除後にスペースが解放されない問題の詳しい説明
  • Linux ファイル管理コマンド例の分析 [表示、閲覧、統計など]
  • Linux でのファイル コンテンツの重複排除と交差と差異の実装

<<:  MySQL MGR の利点は何ですか?

>>:  Vue.jsのレンダリング関数の使い方の詳しい説明

推薦する

ドラッグ効果を実現するための純粋なCSSコード

目次1. ドラッグ効果の例2. CSS実装の原則3. CSS実装の詳細4. CSSレイアウト1. 固...

MySQL Null は 5 つの問題を引き起こす可能性があります (すべて致命的)

目次1. カウントデータが失われる解決2. 明確なデータ損失3.データ損失を選択解決4. Nullポ...

MySQL でテーブルを削除する 3 つの方法 (要約)

ドロップテーブルドロップはテーブル情報を直接削除するため、最も高速ですが、データを取得することはでき...

jsは画像切り取り機能を実現する

この記事の例では、画像の切り取りを実現するためのjsの具体的なコードを参考までに共有しています。具体...

Linux で iostat コマンドを使用するチュートリアル

序文運用・保守を行う人がスキルを持っていなければ、サーバーを操作するのに恥ずかしさを感じてしまうと言...

MySQL で binlog を使用する際のフォーマットの選択方法

目次1. binlogの3つのモード1.ステートメントレベルモード2. 行レベルモード3. 混合モー...

MySQL inndbジョイントインデックスを正しく使用する方法を徹底的に理解するためのケーススタディ

最近確認された5件のデータを照会するビジネスがあります。 `id`、`title` を選択 `th_...

Vue はデータの変更をどのように追跡しますか?

目次背景例誤解 - コールスタックを表示するためにウォッチでブレークポイントを設定する正しいアプロー...

ORM モデル フレームワークを使用して MySQL データベースを操作する方法

ORM とは何ですか? ORM は Object Relational Mapping の略で、オブ...

Linuxでホスト名を永続的に変更する方法

ホスト名を変更する場合は、以下の手順に従ってください。ホスト名の使用hostnameコマンドを使用す...

mysql5.6 の無効な utf8 設定の問題を解決する

mysql5.6 のグリーン バージョンを解凍すると、my-default.ini ファイルが作成さ...

XHTML 入門チュートリアル: XHTML Web ページ画像アプリケーション

<br />適度に画像を追加すると、Web ページがより美しくなります。 画像タグ &l...

Dockerはdockerfileを使用してnode.jsアプリケーションを起動します

Dockerfileの作成expressによって自動的に作成されたディレクトリを例にとると、ディレク...

静的ページと動的ページの実行メカニズムの説明

1. 静的ページとは、Web ページ内に HTML タグのみが含まれるページです。WEB 開発者がこ...

CSS 疑似要素と疑似クラスの魔法のような使い方についての簡単な説明

CSS は Web ページで非常に重要な役割を果たします。近年の CSS の発展に伴い、疑似要素/疑...