前書き

OSSECは、ログ分析、整合性チェック、Windowsレジストリの監視、ルートキットの検出、時間ベースのアラート、アクティブな応答を実行する、オープンソースのホストベースの侵入検知システム(HIDS)です。 サーバー内で何が起こっているかを監視したい場合、サーバーにインストールするアプリケーションです。

OSSECは、インストール先のサーバー(OSSECの用語では_local_インストール)のみを監視するようにインストールすることも、1つ以上の_agents_を監視する_server_としてインストールすることもできます。 このチュートリアルでは、OSSECをインストールして、インストールされているDebian 8サーバー、つまり_local_ OSSECインストールを監視する方法を学びます。

前提条件

このチュートリアルを実行するには、次のものが必要です。

ステップ1-必要なパッケージのインストール

この手順では、OSSECに必要なパッケージをインストールします。 まず、パッケージデータベースを更新します。

sudo apt-get update

次に、利用可能なアップデートをインストールします。

sudo apt-get -y upgrade

最後に、OSSECの依存関係( + build-essential +`および `+ inotify-toops +)およびNetwork Time Protocolサービスである `+ ntp +`をインストールします。

sudo apt-get install build-essential inotify-tools ntp

最後に、NTPサービスを有効にします。 これにより、サーバーは自動的に正確な時間を維持できます。

sudo systemctl start ntp

ステップ2-ファイアウォールを有効にする

Debian 8サーバーの新規インストールには、アクティブなファイアウォールアプリケーションがありません。 この手順では、IPTablesファイアウォールアプリケーションを有効にし、再起動後も実行時ルールが維持されるようにする方法を学習します。

それを達成する最も簡単な方法は、次を使用して `+ iptables-persistent +`パッケージをインストールすることです:

sudo apt-get install -y iptables-persistent

認証後、IPv4およびIPv6ファイアウォールルールを個別のファイルに保存するように求められます。 両方のプロンプトで* ENTER *を押して、デフォルトの場所である `+ / etc / iptables / rules.v4 `および ` / etc / iptables / rules.v6 +`を受け入れます。

デフォルトでは、これらのファイルにはルールがないため、サーバーを保護し、開いているSSH接続を維持するためにそれらを作成する必要があります。 IPv4ルールのみに関心があるため、 `+ rules.v4 +`ルールファイルのみを変更します。

`+ nano `またはお気に入りのテキストエディターを使用して、 ` rules.v4 +`ルールファイルを開きます。

sudo nano /etc/iptables/rules.v4

そのファイルの完全な内容は次のようになります。

オリジナルの/etc/iptables/rules.v4

# Generated by iptables-save v1.4.21 on Sat May  9 01:27:00 2015
*filter
:INPUT ACCEPT [5722:416593]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [4372:503060]
COMMIT
# Completed on Sat May  9 01:27:00 2015

次のデフォルトのルールセットは、サーバーを保護し、SSH接続を維持するのに十分であるため、:OUTPUT ACCEPT [4372:503060] *と COMMIT *行の間でコピーして貼り付けてください。 これらのルールはhttps://wiki.debian.org/iptables [公式Debianドキュメント]から取られました。インラインコメントで各ルールの機能を確認できます。

#  Allow all loopback traffic. Drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -j REJECT

#  Accept all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#  Allow all outbound traffic
-A OUTPUT -j ACCEPT

#  Uncomment the next two lines to allow HTTP and HTTPS connections
#-A INPUT -p tcp --dport 80 -j ACCEPT
#-A INPUT -p tcp --dport 443 -j ACCEPT

#  Allow SSH connections. If you changed your SSH port, do same here.
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

#  Allow ping
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT

#  Log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

#  Drop all other inbound - default deny unless explicitly allowed policy
-A INPUT -j DROP
-A FORWARD -j DROP

ファイルを保存して閉じます。 次に、新しいルールセットを適用するには、 `+ iptables-persistent +`を再起動します。

sudo systemctl restart netfilter-persistent

これで、このコマンドを使用してルールが設定されていることを確認できます。

sudo iptables -L

出力は次のようになります。

iptables -L出力

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
REJECT     all  --  anywhere             loopback/8           reject-with icmp-port-unreachable

. . .

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

ステップ3-OSSECのダウンロードと検証

OSSECは、圧縮されたtarballとして提供されます。 この手順では、ファイルとそのチェックサムファイルをダウンロードします。このファイルは、tarballが改ざんされていないことを確認するために使用されます。 http://www.ossec.net/?page_id=19 [プロジェクトのウェブサイト]で最新バージョンを確認できます。 この記事の執筆時点では、OSSEC 2.8.1が最新の安定版リリースです。

tarballをダウンロードするには、次を入力します。

wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1.tar.gz

次に、チェックサムファイルをダウンロードします

wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1-checksum.txt

両方のファイルをダウンロードしたら、圧縮されたtarballのmd5sumを確認します。

md5sum -c ossec-hids-2.8.1-checksum.txt

出力は次のようになります。

md5sum出力

ossec-hids-2.8.1.tar.gz: OK
md5sum: WARNING: 1 line is improperly formatted

続いて、SHA1チェックサムを確認します。

sha1sum -c ossec-hids-2.8.1-checksum.txt

出力は次のようになります。

sha1sum出力

ossec-hids-2.8.1.tar.gz: OK
sha1sum: WARNING: 1 line is improperly formatted

いずれの場合も、* WARNING *行を無視します。 * OK *行は、ファイルが正常であることを確認するものです。

ステップ4-OSSECのインストール

このステップでは、OSSECをインストールします。 開始するには、まず解凍します。

tar xf ossec-hids-2.8.1.tar.gz

`+ ossec-hids-2.8.1 +`と呼ばれるディレクトリに展開されます。 そのディレクトリに移動します。

cd ossec-hids-2.8.1

`+ / etc / hosts.deny `バグを修正するには、ダウンロードしたtarballからOSSECを抽出した後、 ` / var / ossec / active-response `ディレクトリの ` host-deny.sh +`ファイルを開きます。

nano active-response/host-deny.sh

ファイルの終わりに向かって、以下のコードで、「#hosts.deny +」から削除するコメントの下にある「 TMP_FILE = 」で始まる2行を探します。 コードブロックが次のようになるように、両方の行を編集して ` = +`記号の両側のスペースを削除します。

変更されたhost-deny.shコードブロック

# Deleting from hosts.deny
elif [ "x${ACTION}" = "xdelete" ]; then
  lock;

  if [ "X${TMP_FILE}" = "X" ]; then
    # Cheap fake tmpfile, but should be harder then no random data

  fi

ファイルを保存して閉じます。 これでバグ修正は終了です。

次に、インストールを開始します。

sudo ./install.sh

インストールプロセス全体を通して、入力を求められます。 最初にインストール言語を選択するように求められます。デフォルトでは、インストール言語は英語(en)です。 ご希望の言語の場合は、* ENTER を押します。 それ以外の場合は、最初にサポートされている言語のリストから2文字を入力します。 次に、もう一度 ENTER *を押してインストールを開始します。

質問1では、どのようなインストールが必要ですか(サーバー、エージェント、ローカル、ハイブリッド、またはヘルプ)。 * local と入力し、 ENTER *を押します。

以下のすべての質問については、* ENTER *を押してデフォルトを受け入れますが、質問3.1で電子メールアドレスの入力が求められることに注意してください。 これを入力すると、インストーラーはそれを使用して、対応するSMTPサーバーを自動的に検索します。

インストールが成功した場合、インストール後の出力の最後の数行は次のようになります。

OSSECの正常なインストール出力

- Configuration finished properly.

- To start OSSEC HIDS:
               /var/ossec/bin/ossec-control start

- To stop OSSEC HIDS:
               /var/ossec/bin/ossec-control stop

- The configuration can be viewed or modified at /var/ossec/etc/ossec.conf

. . .

ステップ4-OSSECのメール設定のカスタマイズ

ここでは、前の手順で指定した電子メール資格情報と、OSSECが自動構成したものが正しいことを確認します。

メール設定はOSSECのメイン設定ファイル-「+ ossec.conf 」にあり、「 / var / ossec / etc +」ディレクトリにあります。 OSSECファイルにアクセスして変更するには、最初にrootユーザーに切り替える必要があります。

sudo su

rootになったので、OSSECの構成ファイルがあるディレクトリに移動します。

cd /var/ossec/etc

次に、構成ファイルのバックアップコピーを作成します。

cp ossec.conf ossec.conf.00

`+ nano +`テキストエディターまたは任意のテキストエディターを使用して元のファイルを開きます。

nano ossec.conf

メール設定はファイルの上部にあり、次のようになっています。

/var/ossec/etc/ossec.conf

<global>
   <email_notification>yes</email_notification>
   <email_to></email_to>
   <smtp_server></smtp_server>
   <email_from></email_from>
</global>
  • <email_to> は、インストール時に指定したメールです。 アラートはその電子メールアドレスに送信され、 <smtp_server> *はインストールスクリプトによって自動検出されたSMTPサーバーです。 これらの値を変更する必要はありません。

  • <email_from> は、OSSECのアラートの送信元と思われるメールアドレスです。 デフォルトでは、OSSECのメールユーザーアカウントとサーバーのホスト名に基づいて作成されます。 これを有効なメールアドレスに変更して、メールプロバイダーのSMTPサーバーによってスパムとしてタグ付けされる確率を減らす必要があります。 受信SMTPサーバーに厳格なスパムポリシーがない場合、 <email_to> <email_from> *は同じになる場合があります。

メール設定を変更した後、ファイルを保存して閉じます。 次に、OSSECを起動します。

/var/ossec/bin/ossec-control start

OSSECが開始されたことを知らせるメールを受信トレイで確認します。 OSSECインストールから電子メールを受け取った場合、今後のアラートも受信トレイに届くことがわかります。 そうでない場合は、スパムフォルダーを確認してください。

ステップ6-アラートの追加

デフォルトでは、OSSECはファイルの変更やサーバー上のその他のアクティビティについてアラートを発行しますが、新しいファイルの追加についてアラートを発行せず、リアルタイムでアラートも発行しません-スケジュールされたシステムスキャン(79200秒(または22時間)デフォルトで。 このセクションでは、OSSECを変更して、ファイルの追加時にリアルタイムで警告できるようにします。

まず、 `+ ossec.conf +`を開きます。

nano ossec.conf
  • <syscheck> *セクションまでスクロールダウンします。 `+ <frequency> `タグの下に、 ` <alert \ _new \ _files> yes </ alert \ _new \ _files> +`を追加します。

<syscheck>

   <frequency>79200</frequency>

`+ ossec.conf `を開いたまま、OSSECが監視するシステムディレクトリのリストを見てください。これは、変更した最後の行のすぐ下にあります。 ` report_changes =” yes “realtime =” yes “+`を両方のディレクトリタグに追加します。

<directories  check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
<directories  check_all="yes">/bin,/sbin</directories>

OSSECが監視するように設定されているディレクトリのデフォルトリストの他に、監視したいディレクトリを追加することもできます。 たとえば、ホームディレクトリを追加できます。 これを行うには、他のディレクトリ行のすぐ下にこの新しい行を追加し、ユーザー名を置き換えます。

<directories report_changes="yes" realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
<directories report_changes="yes" realtime="yes" check_all="yes">/bin,/sbin</directories>
</directories><^>

次に、 `+ ossec.conf +`を保存して閉じます。

変更する次のファイルは `+ / var / ossec / rules +`ディレクトリにあるため、そのディレクトリに変更します。

cd /var/ossec/rules

`+ / var / ossec / rules `ディレクトリには、OSSECのデフォルトのルール定義を含む ` ossec_rules.xml `や、カスタムルールを追加できる ` local_rules.xml +`など、多くのXMLファイルが含まれています。

`+ ossec ruleset.xml`では、監視対象ディレクトリにファイルが追加されたときに起動するルールはルール554です。 デフォルトでは、OSSECはそのルールがトリガーされたときにアラートを送信しないため、ここでのタスクはその動作を変更することです。 デフォルトでルール554は次のようになります。

/var/ossec/rules/ossec_rules.xmlのルール554

<rule id="554" level="0">
<category>ossec</category>
<decoded_as>syscheck_new_entry</decoded_as>
<description>File added to the system.</description>
<group>syscheck,</group>
</rule>

ルールがレベル0に設定されている場合、OSSECはアラートを送信しないため、そのルールをlocalrules.xmlにコピーし、アラートをトリガーするように変更します。 それを行うには、 `localrules.xml`を開きます。

nano local_rules.xml

ファイルの末尾、</ group>タグのある行の前に次を追加します。

</group>

ファイルを保存して閉じ、OSSECを再起動して変更を適用します。

/var/ossec/bin/ossec-control restart

これで、ファイルまたは追加、変更、削除されるたびにアラートを受信するはずです。 OSSECは、システムのフルスキャン後にのみ、ファイルの追加をリアルタイムで警告しません。

ステップ6(オプション)-IPTables Denied Alertsの停止

この手順はオプションですが、強くお勧めしますが、IPTables拒否メッセージについて警告しないようにOSSECを構成します。

このチュートリアルの最初に、IPTablesファイアウォールを有効にしました。 OSSECのインストール後、ルール1002でアラートが発生します。これは、IPTablesが攻撃者を拒否し、発生をsyslogに記録するときにトリガーされます。 攻撃者がいつ攻撃されたのかを知るのは良いことですが、そのようなアラートは毎日数百件に上り、受信トレイを詰まらせる可能性があります。

これらのアラートを削除するには、ルール1002をカスタマイズする必要があります。 このルールは `+ / var / ossec / rules / syslog ruleset.xml`にあり、次のようになります。

/var/ossec/rules/syslog_rules.xmlのルール1002

<rule id="1002" level="2">
   <match>$BAD_WORDS</match>
   <options>alert_by_email</options>
   <description>Unknown problem somewhere in the system.</description>
</rule>

編集のために「+ syslog ruleset.xml」を開きます。

nano /var/ossec/rules/syslog_rules.xml

`+ BAD_WORDS +`変数を見つけます。この変数は、そのファイルの上部で定義され、多くのキーワードが含まれています。 それはこのように見えます:

/var/ossec/rules/syslog_rules.xmlのBAD_WORDS定義

<var name="BAD_WORDS">core_dumped|failure|error|attack|bad |illegal |denied|refused|unauthorized|fatal|failed|Segmentation Fault|Corrupted</var>

「+ BAD_WORDS 」の定義の下に、この新しい変数「 IGNORED_WORD +」をコピーして貼り付けます。 変数にはキーワードが1つだけ含まれています。

<var name="BAD_WORDS">core_dumped|failure|error|attack|bad |illegal |denied|refused|unauthorized|fatal|failed|Segmentation Fault|Corrupted</var>

次に、ルール1002のカスタマイズバージョンで新しい変数「+ IGNORED_WORD +」を使用します。これをルール100031と呼びます。 完全なルールを以下に示します。 グループタグのある行の前に、ファイルの下部にコピーして貼り付けます。

</group>

ファイルを保存して閉じます。 変数とカスタマイズされたルールを設定したら、OSSECを再起動します。

/var/ossec/bin/ossec-control restart

これにより、OSSECはIPTables拒否メッセージのアラートの送信を停止する必要があります。

結論

Debian 8サーバーにローカルOSSECをインストールして設定するのに必要なことはそれだけです。 さらに多くのカスタマイズが利用可能です。これらは、プロジェクトhttp://ossec-docs.readthedocs.org/en/latest/manual/index.html [公式ドキュメント]で調べることができます。