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のレンダリング関数の使い方の詳しい説明

推薦する

MySQL ログトリガー実装コード

SQL文 ドロップトリガー もし sys_menu_edit が存在します。 各行のsys_menu...

Reactを使用する際の7つの落とし穴のまとめ

目次1. コンポーネントの肥大化2. 状態を直接変更する3. プロパティは数値を渡す必要があるが文字...

Kafka の Docker デプロイメントと Spring Kafka 実装

この記事は主にDockerによるKafkaのデプロイとSpring Kafkaの実装について紹介しま...

HTML の iframe と frame の違いを例を使って説明します

プロジェクトで frameset 属性を使用したことがあるかどうかはわかりません。昨年、オンライン ...

Vue+ElementUI Treeの使い方

Vue+ElementUI Treeの使い方は参考までに。具体的な内容は以下のとおりです。 フロント...

Vueの監視プロパティの詳細な説明

目次Vue モニターのプロパティリスナープロパティとは何ですか?リスニングプロパティと計算プロパティ...

音楽プレーヤーアプリ(アプリケーションソフトウェア)の分析と再設計 美しい音楽プレーヤーインターフェースの設計方法

無線インタラクションにずっと興味があったので、今回は実践してみようと思います〜この分析と評価は iO...

ReactとReduxの関係を詳しく説明

目次1. reduxとreactの関係2. Reactのマルチコンポーネント共有3. reduxの3...

Vueキャッシュ機能の使い方

目次vue2のキャッシュ機能Vue キャッシュ関数の変換最適化要約するvue2のキャッシュ機能vue...

LinuxサーバーにGRUBをインストールする手順

Linux サーバーに GRUB をインストールする方法クラウド移行ツールを使用して、CentOS ...

vue+element を使用した Google プラグインの開発プロセス全体

シンプルな機能: ブラウザの右上隅にあるプラグイン アイコンをクリックすると小さなポップアップ ウィ...

ubuntu20.04 上の CLion2020.1.3 での ROS のインストールと設定の詳細な説明

1. CLionをダウンロード、インストール、アクティベートするオンラインで提供されるチュートリアル...

MySQLデータベースについて学びましょう

目次1. データベースとは何ですか? 2. データベースの分類は? 3. データベースとデータ構造の...

Power Shell に vim 実装コード例を追加する方法

1. Vimの公式ウェブサイトにアクセスして、オペレーティングシステムに適した実行ファイルをダウンロ...

MySQLのバッファプールの詳細な説明

MySQL のデータはディスクに書き込む必要があることは誰もが知っています。ディスクの読み取りと書き...