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

推薦する

Alibaba Cloud ECS サーバーの開始プロセス (初心者必読のチュートリアル)

1. Alibaba Cloudは、個人のニーズに応じて適切なクラウドサーバーを選択し、CPU、メ...

CSS ウェイト値(カスケード)の例の詳細な説明

•CSSには多くのセレクターがあります。複数のセレクターを同じ要素に適用するとどうなるでしょうか? ...

Linuxはlsofコマンドを使用してファイルのオープンステータスを確認します

序文Linux では「すべてがファイル」であることは誰もが知っているので、ファイルのオープン状態を確...

WeChatミニプログラムビデオ集中砲火位置ランダム

この記事では、WeChatミニプログラムのビデオ弾幕の位置をランダム化するための具体的なコードを紹介...

overflow:autoの使い方の詳しい説明

本文に入る前に、オーバーフローとフレックスレイアウトの使い方をいくつか紹介します。 overflow...

nginx.conf ファイルの構文強調表示とフォーマット設定には nginx.vim ツールを使用します。

私はtengineを使用しています。インストールディレクトリは/usr/local/tengineで...

nginx でのリクエストのカウント追跡の簡単な分析

まずは適用方法を説明します。nginxモジュールにはjtxyとjtcmdの2つがあります。 http...

Dockerのローカルイメージ作成方法の分析

コンテナと呼ばれるものは、実際には親イメージに基づいて読み取りおよび書き込み可能なファイル階層を作成...

Linux でファイル権限を変更する chmod コマンドの詳細な分析

Linux chmodコマンドを使用して、ターゲット ファイルにアクセス、読み取り、書き込み、または...

iframeを透明にするパラメータ

<iframe src="./ads_top_tian.html" all...

Linux コマンドを素早く習得する 4 つの方法

Linux マスターになりたいなら、いくつかの Linux コマンドを習得することが不可欠です。 L...

js を使用して画像をモザイク化する方法の例

この記事では、主に js を使用して画像をモザイク化する方法の例を紹介し、次のように共有します。効果...

CSSスクロールバーのスタイルをカスタマイズする方法の詳細な説明

この記事では、CSS スクロールバー セレクターを紹介し、Webkit ブラウザーと IE ブラウザ...

MySQLステートメントを監視する方法の詳細な説明

クイックリーディングSQL ステートメントを監視する必要があるのはなぜか、監視方法と監視手段について...