はじめに
ふとセキュリティについて何か学習を始めたいと思いました。オープンソースのプログラムを解読しながら、理解を深めていきたいと思います。
まずはオープンソースのOSSECについて学習します。まずはドキュメントを読むことから始めます。
https://www.ossec.net/docs/
今回は第五弾としまして、OSSECのAgentsについて読んでいきます。
https://www.ossec.net/docs/docs/manual/agent/index.html
Agent
OSSECのエージェントには、
・インストール型エージェント
・エージェントレス型エージェント
の2種類が存在します。
インストール型エージェント
ホスト上にインストールされ、OSSEC暗号化メッセージプロトコルを介して中央のOSSECサーバーにレポートバックします。
エージェントレスエージェント
リモートホストにインストールする必要はありません。エージェントは、OSSECマネージャから起動されるプロセスで、リモートシステムから情報を収集し、任意のRPCメソッド(例:ssh、snmp rdp、wmi)を使用します。
Agent
Communication between agents and the OSSEC server
エージェントとOSSECサーバー間の通信は、一般的にセキュアモードではポート1514/udpで行われます。ossec-remotedでsyslogモードを使用する場合、ポート514がデフォルトとなります(UDPとTCPの両方がサポートされています)。これらのポートは、ossec.conf の remote セクションで設定可能である。
一般的には、syslogよりもセキュアな接続方式が好まれます。また、ossec-remoted の syslog サポートの代わりに、外部の syslog デーモン (rsyslog や syslog-ng など) を使用することも可能です。
Managing Agents
manage_agentsを使用してOSSECマネージャにエージェントを追加するには、以下の手順で行う必要があります。
1.OSSECサーバーでmanage_agentsを実行する。
2.エージェントを追加する。
3.エージェントのキーを抽出する。
4.そのキーをエージェントにコピーする。
5.エージェント上でmanage_agentsを実行します。
6.マネージャーからコピーした鍵をインポートします。
7.マネージャのOSSECプロセスを再起動します。
8.エージェントを起動します。
Agent systems behind NAT or with dynamic IPs (DHCP)
固定IPアドレスのないシステムやNATデバイスの背後にあるシステムにエージェントをインストールしたい場合、CIDRアドレスまたは任意のIPアドレスを使用してエージェントを設定する必要があります。
Adding an agent with ossec-authd
自動化された方法で鍵を追加することは可能である。ossec-authdとagent-authはこの機能を提供する。
Centralized agent configuration
リモートでエージェントを設定できるようにしたいとお考えでしたら、バージョン2.1からはそれが可能になりますので、ご満足いただけると思います。ファイル整合性チェック(syscheckd)、ルートキット検出(rootcheck)、ログ解析のための一元的な設定が可能になりました。
Agentless
Agentless Monitoring
エージェントレス監視では、エージェントがインストールされていないシステム(ルータ、ファイアウォール、スイッチ、Linux/BSDシステムも含む)で整合性チェックを実行することができます。通常のファイル整合性チェック(チェックサム変更の警告)と同じように実行したり、差分を取って何が変更されたかを正確に表示したりすることが可能です。
・Agentless configuration options
・Getting started with agentless
・Configuring agentless
・Running the completed setup
・Alerts
Writing Agentless Scripts
OSSECエージェントレスセキュリティモニタリングで動作するすべてのスクリプトは、OSSECサーバーへの通信と報告にstdoutを使用します。このため、OSSEC用のスクリプトは、stdoutへのprintやecho以上のことをする必要がないため、簡単に書くことができます。出力の形式は OSSEC の仕様に合わせる必要がありますが、それは非常に簡単なことです。
・Agentless Script Types
・Agentless Script: ssh_integrity_check_linux
・Modifying to make own Agentless Script: ssh_dmz_linux
設定回りのスクリプトが記載されています。ソースコード解析と設定スクリプトを理解していきたいと考えます。
おわりに
今回は以上です。では、また。