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

推薦する

SSL を実装するために nginx を設定する方法の例

環境説明サーバーシステム: Ubuntu 18.04 64ビットnginx: 1.14この記事では主...

Web開発で使用される基本的な概念と技術の紹介

本日は、Web 開発で使われる基本的な概念と技術を初心者向けに紹介します。A から Z まで合計 2...

Vue は QR コード スキャン機能を実装します (スタイル付き)

必要: vue を使用して QR コードのスキャンを実現します。プラグイン: QRコードリーダー;プ...

MySQL 5.7.17 のインストールと設定方法のグラフィック チュートリアル (Windows)

1. ソフトウェアをダウンロードする1. MySQL の公式サイトにアクセスし、Oracle アカ...

LinuxはNetworkManagerを使用してMACアドレスをランダムに生成します

今では、自宅のソファーに座っていても、外の喫茶店にいても、ノートパソコンの電源を入れてWi-Fiに接...

MySQL で 1000 万件のレコードをすばやくクエリする方法

目次通常のページングクエリ最適化する方法大きなオフセット使用ID制限大量データ問題の最適化通常のペー...

Gitlab実践チュートリアルでは、関連する設定操作にgit configを使用します。

この記事では、実際に発生した問題をもとに、git の設定に関する内容を紹介します。コマンド: git...

CSS3 列を使用したカード ウォーターフォール レイアウトを実装するためのサンプル コード

この記事では、カード ウォーターフォール レイアウトを実現するための CSS3 列のサンプル コード...

explainコマンドがMySQLデータを変更する理由

クエリで EXPLAIN を実行するとデータベースが変更されるかどうかを尋ねられた場合、おそらく「い...

MySql ストアド プロシージャ パラメータの初歩的な使用法の詳細な説明

パラメータでのストアドプロシージャの使用IN パラメータは、プロシージャに情報を渡すためにのみ使用さ...

ウェブページ制作と饅頭の関係(体験の共有)

昨日は遅くまで寝ていて、一日中起きていました。私の年齢では、夜更かしして本を書くのはもう無理のようで...

ページに間隔を空けてグリッドレイアウトを完璧に実装する方法

典型的なレイアウト例上の写真のように、正方形の真ん中に一定の隙間があり、その隙間は固定されています。...

レスポンシブなカードホバー効果を実現するための HTML+CSS

目次成し遂げる:要約:言うことはあまりありませんが、まずは効果を見てみましょう。 カードホバー、レス...

MySQLで判定文を書く方法のまとめ

MySQL で判断文を書く方法:方法1. CASE関数case関数の構文: CASE条件 値1の場合...

HTML コマンドラインインターフェースの実装

HTML部分コードをコピーコードは次のとおりです。 <!DOCTYPE html> &l...