====== セキュリティアーキテクチャ ======
{{indexmenu_n>60}}
[[ja:documentation:start|Pandora FMS ドキュメント一覧に戻る]]
===== 概要 =====
**Pandora FMS** の各コンポーネントのセキュリティ要素を、PCI/DSS、ISO 27001、ENS、LOPD などの規制に従って説明しています。
さらに、各 Pandora FMS 要素のセキュリティ メカニズムの具体的な説明、および Pandora FMS で利用可能なツールやその他のメカニズムを使用して発生する可能性のあるリスクとそのリスクを軽減する方法も含んでいます。
===== 一般的なセキュリティの実装 =====
* Pandora FMS コンポーネントの入出力は文書化されているため、**ファイアウォールを使用してコンポーネントとの間のすべてのアクセスを保護する**ことができます。
* **暗号化と証明書による安全なトラフィック**:Pandora FMS は、すべてのレベル(ユーザ操作、コンポーネント間の通信)でSSL / TLS 暗号化と証明書をサポートします。
* **デュアルアクセス認証システム**:[[ja:documentation:pandorafms:management_and_operation:12_console_setup#認証|二段階認証]]システムを実装できます。 1つ目は、オープンソースまたは商用トークンシステムと統合されたアクセスレベル(HTTP)に配置されます。
* **サードパーティシステムとの認証**:Pandora FMS によって管理されるアプリケーションレベルで、[[:ja:documentation:pandorafms:management_and_operation:12_console_setup#認証|LDAP または Active Directory]] による認証ができます。
* SAML による **SSO** (シングルサインオン)。
* **ユーザ管理におけるセキュリティポリシー**:ユーザ管理は、[[:ja:documentation:pandorafms:management_and_operation:11_managing_and_administration#enterprise_acl_システム|拡張 ACL システム]]として定義される、ユーザプロファイルと運用可視性プロファイルの両方のポリシーによって定義されます。
* **監視対象要素の操作に対する監査が可能**:Pandora FMS は、情報または変更、または削除されたフィールドを含むすべてのユーザ操作を監査します。 さらに、これらのレコードに署名できる検証システムが含まれています。
* **外部ログマネージャーへの監査データ転送**:監査ログは、SQL を介してエクスポートでき、セキュリティを高めるためにほぼリアルタイムで外部ソースに統合できます。
* ユーザインタフェースと情報コンテナ(ファイルシステム)を提供するコンポーネントの**物理的な分離**。 データベースに保存されているデータと監視構成情報を保存しているファイルシステムの両方を、境界ネットワークによって保護された、異なるネットワークの別々の物理マシンに置くことができます。
* ユーザがアプリケーション([[ja:documentation:pandorafms:introduction:03_glossary#コンソール|Web コンソール]])にアクセスするための厳密なパスワード管理ポリシーを要求する**アクティブパスワードポリシー**。
* **機密データの暗号化**。 このシステムでは、ログイン資格情報などの最も機密性の高いデータを暗号化された安全な方法で保存できます。
===== コンポーネントごとのセキュリティ =====
==== サーバ ====
* サーバは **root** 権限が必要ですが、(いくつかの制限はありますが)非 root 権限でのインストールが可能です。(Linux システムのみ)
* サーバは、エージェントのリモート設定ファイルへの直接アクセス(読み取りおよび書き込み)が必要です。これらのファイルは、エージェントが定期的にサーバに接続する際に展開されます。 これらのファイルは、標準の権限でのファイルシステムによって保護されています。
* サーバ自体は任意のポートでの待ち受けをしません。待ち受けをするのは Tentacle サーバです。サーバは、Tentacle サーバがディスクに書き込んだファイルにのみアクセスします。
* サーバ自身は詳細のログを持ちます。
* サーバは、通常の MySQL / TCP 接続を用いてメインデータベースに接続します。
* 特定の契約条件下でコードの一部をリクエストすることが可能です(お客様限定)。
=== 考えられる脆弱性と保護手段 ===
* エージェント(エンドポイント)設定ファイルへの不正アクセス。解決策:
//解決策//: NFS を使用して、外部構成ファイル用の外部保護コンテナを実装します。
* 設定コンテナに格納されている設定ファイルの操作によるエンドポイントへのコマンドインジェクション。
//解決策//: 設定後に機密性の高いエージェントのリモート設定を無効にし、完全なセキュリティを確保するために、リモートから設定変更できないようにします。最もデリケートなデバイスのであれば、エージェントを用いないリモート監視をします。
* システムに存在しないエンドポイントをシミュレートしたり、ID を偽装するなど、偽情報攻撃に対して脆弱です。 これを回避するには、いくつかのメカニズムを使用できます。
- (グループごとに機能する)パスワード保護システム。
- エージェントの自動作成を制限し、代わりに手動で作成します。
- すでに設定があるものを除き XML (エンドポイント)から新しい情報を取得しないようにしたり、エージェントの変更を自動検出する機能を制限します。
* サーバとコンソール間の通信の悪意のあるキャプチャ(ネットワークトラフィックキャプチャ)。
//解決方法//: サーバとMySQLデータベース間のTLS通信を有効にします。[[:ja:documentation:pandorafms:technical_annexes:46_mysql_sha|認証方法]] ''caching_sha2_password'' を設定します。
==== Tentacle ====
* [[ja:documentation:pandorafms:technical_reference:09_tentacle|Tentacle]] は公式のインターネットサービスであり、IANA によって文書化されています。 これは、あらゆる境界セキュリティツールで簡単に保護できることを意味します。
* **root** や特別な権限は必要ありません。
* 4つのセキュリティレベルがあります:暗号化なし(デフォルト)、SSL / TLS Basic、両端に証明書がある SSL / TLS、および証明書と CA 検証がある SSL / TLS (**推奨**)。
* 特にブルートフォース攻撃を防ぐために、特定のタイムアウトを使用して、エラーメッセージで侵入者の手がかりを与えないような特別な設計がされています。
* 独自の監査ログがあります。
* コードは 100% 公開されています。(GPL2 ライセンスによるオープンソース)
=== 考えられる脆弱性と保護手段 ===
* ファイルシステムへの攻撃。 設定コンテナにアクセスする必要があります。
//解決策//: セキュアな外部 NFS システムにより、サーバと同じ方法で保護できます。
* DoS 攻撃による過負荷。
//解決策//: バランシングのための TCP サービス、またはアクティブ/アクティブクラスターで HA ソリューションをセットアップします。 標準の TCP サービスであるため、いずれのハードウェアまたはソフトウェアソリューションも利用できます。
==== コンソール ====
* root は必要ありません。権限のないユーザとともにインストールされます。
* エージェント設定リポジトリー(ファイルシステム)へのアクセス権が必要です。
* 標準の HTTP または HTTPS ポートで待ち受けます。
* HTTP アクセスログを介してすべての要求を記録します。
* 資格情報で[[:ja:documentation:pandorafms:technical_reference:02_annex_externalapi#セキュリティ|保護]]された HTTP / HTTPS 経由の公開 API と許可された IP アドレスリストを提供します。
* 各システムオブジェクトの各ユーザの操作を記録するアプリケーション固有の監査があります。
* アプリケーションの任意のセクションへの各ユーザのアクセスを制限できます。また、管理者においてもアクセスが制限されたユーザを作成することもできます。
* このアプリケーションには、二段階認証システムが組み込まれています。
* このアプリケーションには、外部認証システム(LDAP、AD)が組み込まれています。
* 読み取り専用システムを構築できます。デバイス設定にアクセスできません。
* 機密情報(パスワード)を暗号化してデータベースに保存できます。
* アプリケーションは、標準の MySQL / TCP 接続を使用してメインデータベースに接続します。
* コードの一部はアクセス可能(OpenSource)であり、Enterprise 版のコードは特定の契約条件の下で要求できます(お客様のみ)。
* [[ja:documentation:pandorafms:management_and_operation:12_console_setup#パスワードポリシー|パスワードに関するセキュリティポリシー]]の強力な実装があります(長さ、強制変更、履歴、有効な文字のタイプなど)。
=== 考えられる脆弱性と保護手段 ===
* ファイルシステムへの攻撃。 設定コンテナーにアクセスする必要があります。
//解決策//: 保護された外部 NFS システムにより、サーバと同様の方法で保護できます。
* ユーザ認証に対するブルートフォース攻撃または辞書攻撃。
//解決策//:
- 厳格なパスワードポリシーを実装します(ポイント14)。
- 二段階認証システムを実装します(ポイント8)。
* コンソールへのトラフィックのキャプチャ(盗聴)。
//解決策//: SSL/TLS を実装します。
* データベースへのトラフィックのキャプチャ(盗聴)。
//解決策//: SSL/TLS を実装します。
* アプリケーションデータベースから機密情報を取得する SQL インジェクション攻撃。
//解決策//: 暗号化データストレージの実装。
* アプリケーションユーザーの誤用(意図的または意図しない)。
//解決策//:
- 監査ログを有効化し、ユーザにその存在とその正確性を示します。
- 拡張 ACL システムを有効化して、各ユーザの機能をできるだけ制限します。
- 定期的に監査ログを外部システムにエクスポートします。
* ローカルコンソールツールでの悪意のあるコードの実行、バイナリファイルの置き換え。
//解決策//: アプリケーションを含むサーバのセキュリティ強化。
==== エージェント(エンドポイント) ====
* 管理者権限なしで実行できます(機能が制限されます)。
* リモートエンドポイント管理を無効にして(ローカルおよびリモート)、中央システムへの侵入の影響を最小限に抑えることができます。
* エンドポイントはネットワークのポートを待ち受けず、Pandora FMS サーバに接続します。
* 各処理実行の記録があります。
* 設定ファイルは、ファイルシステムのパーミッションによってデフォルトで保護されています。 管理者権限を持つユーザのみがそれらを変更できます。
* コードは 100% 参照可能です(GPL2 ライセンスのオープンソース)。
=== 考えられる脆弱性と保護手段 ===
* 悪意のあるコマンドの実行をエージェントやエンドポイントに配信できる中央システムへの侵入。
//解決策//:
- これらのポリシーまたは設定を変更できるユーザを制限します(通常のコンソール ACL または[[:ja:documentation:pandorafms:technical_annexes:23_pfms_advanced_acl_system|拡張 ACL]] を使用)。
- 特に機密性の高いシステムに対して、エージェントの "読み取り専用" モードを有効化します(リモートからの[[#ks3_1_1|設定の変更]]を許可しない)。
* ファイルの変更を可能にするファイルシステムの脆弱性。
//解決策//: パーミッション設定を正しくします。
* プラグインまたは悪意のあるコマンドの実行。
//解決策//:
- (通常のコンソール ACL または[[:ja:documentation:pandorafms:technical_annexes:23_pfms_advanced_acl_system|拡張 ACL]] を介して)実行可能ファイルをアップロードできるユーザを制限します。
- 新しいプラグインの監査をします。
==== データベース ====
* 標準製品(MySQL)です。
=== 考えられる脆弱性と保護手段 ===
* 盗聴(ネットワークトラフィックキャプチャ。
//解決策//: 安全なTLS接続の実装。 MySQL はそれをサポートしています。
* 不正なパーミッション。
//解決策//: アクセスパーミッション設定の修正。
* 既知の MySQL 脆弱性: MySQL サーバの更新計画を確立して、可能な限り更新することをお勧めします。これにより古いバージョンに存在する可能性のある脆弱性を取り除くことができます。
===== ベースシステムの強化 =====
システムの強化は、企業の全体的なセキュリティ戦略における重要なポイントです。
メーカーとして、私たちは標準の RHEL 8 または Ubuntu server プラットフォームに基づいて、すべての Pandora FMS コンポーネントを安全にインストールするための一連の推奨事項を示しています。
これらの推奨事項は、他の Linux ベースの監視システムにも適用されます。
==== アクセス認証 ====
システムにアクセスするためには、特権のない必要に応じてアクセスを制限した目的に応じたユーザを作成します。
理想的には、各ユーザの認証は、トークンに基づく二段階認証システムと統合します。このガイドの範囲外ですが、Linux に統合可能な **Google 認証システム**® などの無料で安全な代替手段があります。 それらの使用を真剣に検討してください。
アプリケーション用に何らかのユーザを作成する必要がある場合は、リモートアクセス権限のないユーザにする必要があります(そのためには、シェルまたは同等の利用を無効にします)。
==== スーパーユーザアクセス ====
特定のユーザーが管理者権限を持つ必要がある場合は、**sudo** コマンドを使用します。
==== システムを最新の状態に保つ ====
ネットワークに接続するか、プロキシサーバを使用するように **dnf** システムを設定するだけです。
このコマンドは、ライブラリー、設定などの変更で潜在的な問題を引き起こす可能性がありますが、特にシステムを本番環境として利用する場合は、システムのアップグレードを省略しないことが重要です。すでに利用中の本番システムの場合は、これらの重要なコンポーネント、つまり脆弱性のあるコンポーネントのみをアップグレードする必要がある場合があります。
たとえば、RHEL システムで **mysql サーバ** のみをアップグレードする場合は、''dnf update mysql-server'' を実行します。
システムのアップグレードは、定期的に実行する必要がある対応です。 システムパッケージインベントリを使用して、脆弱なバージョンをチェックし、緊急アップグレードを実行します。
==== アクセス監査 ====
セキュリティログ ''/var/log/secure'' を有効化し、それらのログを監視する必要があります。
CentOS ではこれがデフォルトで有効になっています。そうでない場合は、''/etc/rsyslog.conf'' または ''/etc/syslog.conf'' を確認してください。
監査システムのログを取得し、外部のログ管理システムで収集することをお勧めします。Pandora FMS はそれを簡単に行うことができ、必要に応じてアラートを発報したり、一元的に確認したりするのに役立ちます。
==== SSH サーバの保護 ====
SSH サーバを使用すると、Linux システムにリモート接続してコマンドを実行できるため、これは重要なポイントであり、次の点に注意して保護する必要があります(そのためには、ファイル ''/etc/ssh/sshd_config'' を編集し、サービスを再起動します)。
* デフォルトポートの変更 (例: 31122)
#Port22 -> Port 31122
* スーパーユーザである **root ログイン** の無効化
#PermitRootLogin yes -> PermitRootLogin no
* **ポートフォワーディング** の無効化
#AllowTcpForwarding yes -> AllowTcpForwarding no
* **トンネリング** の無効化
#PermitTunnel no -> PermitTunnel no
* リモート **root** アクセスのための SSH 鍵の削除。リモートアクセスに有効なユーザーは 1人だけであると想定します(例: artica)。 他にある場合は、それらもチェックする必要があります。 これを行うには、ファイル ''/home/artica/.ssh/authorized_keys'' の内容を調べて、どのマシンからのものかを確認します。 存在しないはずだと思われる場合は削除します。
* サーバがプライベートアクセスであり、資格情報を持たない人は切断する旨を説明する標準のリモートアクセス警告を設定します。
Banner /etc/issue.net
==== MySQL サーバの保護 ====
MySQL が内部のみにサービスを提供する場合は、**netstat** を使用して、localhost のみで待ち受けていることを確認する必要があります。
netstat -an | grep 3306 | grep LIST
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
この場合、どこからでも接続を受け付けます。制限するには、ファイル ''/etc/my.cnf'' を編集し、セクション ''[mysqld]'' に次の行を追加します。
bind-address = 127.0.0.1
サービスの再起動後、待ち受けを再度確認します。
**MySQL パスワード**
特権ユーザで MySQL コンソールに接続します。
mysql -h host -u root -p
パスワードが安全であり、パスワードの入力を求められていることを確認します。 そうでない場合は、次のコマンドで設定します。
mysqladmin password
このセキュリティ対策は、外部からの攻撃だけでなく、内部ユーザによる誤用からもデータベースを保護するために不可欠です。
==== Apache web サーバの保護 ====
ServerTokens Prod
上記の行を追加すると、サーバ情報ヘッダー内の Web サーバのバージョン (Apache、Nginx) が非表示になります。
* ''/etc/httpd/conf/httpd.conf'' (RHEL).
* ''/etc/apache2/conf-enabled/pandora_security.conf'' (Ubuntu server)
==== PHP アプリケーションエンジン ====
Pandora FMS が実行されるアプリケーションエンジンを保護するために、特にセキュリティが重要な環境では、セッション //クッキー// が SSL でのみ送信されるようにアプリケーションへのアクセスを保護することが必要になる場合があります。
これにより、HTTP (暗号化なし) 経由で使用した場合にアプリケーションが動作しなくなります。
これを行うには、次の設定を ''php.ini'' ファイルに追加する必要があります。
session.cookie_httponly = 1
session.cookie_secure = 1
==== システムサービスの最小化 ====
この手法は非常に網羅的であり、システムに不要なものをすべて排除するだけです。 このようにして、実際には必要のない、誤って設定されたアプリケーションで将来発生する可能性のある問題を回避します。 この方法へのアプローチを単純化するために、マシン上にポートを開いて待ち受けているアプリケーションのみを対象とします。このために、''netstat -tulpn'' を実行します。
各ポートを調査し、その背後にあるアプリケーションを把握する必要があります。これを行うには、**dnf** または **apt** でインストールできる **lsof** コマンドを使用できます。
**localhost** (''127.0.0.1'') で待ち受けているサービスは、すべての IP アドレス (''0.0.0.0.0'') で待ち受けているサービスよりも安全です。また、開いているポートで待ち受けているサービスがある場合は、**localhost** のみで待ち受けるように修正する必要があります。
Pandora FMS プロセスインベントリシステムを使用して、時間の経過とともに新しいプロセスが開始されていないことを確認します。
===== 追加設定 =====
==== NTP 時刻同期 ====
RHEL システムの時刻同期を設定することをお勧めします。
dnf install ntpdate
echo "ntpdate 0.us.pool.ntp.org"> /etc/cron.daily/ntp
chmod 755 /etc/cron.daily/ntp
===== ローカル監視 =====
システムには、[[:ja:documentation:pandorafms:installation:01_installing#ks2|Pandora FMS エンドポイント]]をインストールして起動します。MS Windows® オペレーティングシステムの場合、バージョン 761 以降、インストール実行ファイルは署名されています。
標準チェックに加えて、次のアクティブチェックをお勧めします。
* セキュリティプラグイン
* 完全なシステムインベントリ(特にユーザーとインストール済みパッケージ)。
* システムおよびセキュリティログの収集
module_plugin grep_log_module /var/log/messages Syslog \.\*
module_plugin grep_log_module /var/log/secure Secure \.\*
エンドポイントをインストールしたら、少なくとも次の情報をエージェントタブで手動で定義する必要があります。
* 説明
* IP アドレス(複数ある場合は全て設定します)
* グループ
* 部門、責任者および物理的な場所(カスタムフィールド)
===== Linux におけるセキュリティ監視 =====
[[https://pandorafms.com/library/linux-security-plugin|公式プラグイン]]を使用すると、実行のたびに、ほぼリアルタイムでエージェントのセキュリティをプロアクティブに監視でき、関連するイベントの警告を発することができます。
このプラグインは、最新の Linux マシンで**のみ**実行することを目的としています。これには、32および 64bit 版の John the ripper 1.8 + Contrib パッチのカスタムビルドが含まれています。プラグインの主な概要は、モノリシックであり、強化ポイントを検出し、管理者に何も尋ねることなくディストリビューション間の違いを解決しようとすることです。そのため、バージョン、ディストリビューション、またはアーキテクチャに関係なく、どのシステムでも同じように展開することができます。
このプラグインは以下をチェックします。
* 最も一般的な 500個のパスワードを含む辞書(あらかじめ提供)を使用したユーザパスワードの監査チェック。 通常、これには数秒しかかかりません。 数百人のユーザがいる場合は、プラグインの実行を 2〜6時間ごとにのみ実行するようにカスタマイズする必要があります。 組織の一般的なパスワードを "basic_security/password-list" ファイルに追加するだけで、パスワード辞書をカスタマイズできます。
* SSH がデフォルトのポートで実行されていないことの確認。
* SSH が **root** アクセスを許可していないことの確認。
* FTP がデフォルトのポートで実行されていないことの確認。
* MySQL が **root** パスワード無しで実行されているかどうかの確認。
* その他チェック。
[[ja:documentation:start|Pandora FMS ドキュメント一覧に戻る]]