セキュアなインストレーションとシステム構成
- 1 セキュアなインストール
- 1.1 概要
- 1.2 すべてのパスワードを確認する
- 1.3 ルートとして実行しない
- 1.4 リバースプロキシを追加する(1)
- 1.5 HTTPS によるセキュアなサーバートラフィック(1)
- 1.6 リポジトリと Solr 間のセキュアなトラフィック(2)
- 1.7 Share Web UI のセキュリティ(3)
- 1.8 Digital Workspace Web UI のセキュリティ(4)
- 1.9 ReST API のセキュアなアクセス(5)
- 1.10 HTML 変換のセキュア化
- 1.11 メタデータの暗号化
- 1.12 外部システムからアクセスする専用ユーザー
- 1.13 ゲストユーザーを無効にする
- 1.14 未使用のプロトコルを無効にする。
- 1.15 セキュリティチェックリスト
セキュアなインストール
このページでは、Content Services のインストールを保護するために必要な推奨事項について説明します。
注:Content Services のソフトウェアがインストールされているシステム(オペレーティングシステム、ActiveMQ、DBMS など)のセキュリティも強化する必要がありますが、ここではその説明は割愛します。
概要
Content Services をセキュアにインストールするには、あらゆる攻撃からシステムを保護する必要があります。しかし、ベストプラクティスにはさまざまなトピックがあり、その中から考えられる構成をすべて列挙することは容易ではありません。そこで、ここではセキュリティに関わる事項について重点的に説明したいと思います。さらに、本番環境ではほとんどの場合、Content Services のインストールには必ずポータル、イントラネット、ビジネスインテリジェンスツール、CMS、ECM、CRM などの他のツールとの連携を伴うため、これらの統合されたシステムも保護することが推奨されます。
また、Content Services のクラスタをインストールした場合は、関係するすべてのノードのセキュリティを確認するようにしてください。
次の図.1に、保護が必要なコンポーネントの概要を示します。
すべてのパスワードを確認する
セキュリティの中で最も重要となるのは、システムにアクセスする際に使用するパスワードです。パスワードは最初の防衛線です。できるだけ強力なパスワードを使用するようにしましょう。パスワードはさまざまな方法で強化することができます。パスワードの強化は必ず実施してください。そうすることで、セキュリティを保護できます。対応しなければ、セキュリティ侵害につながります。
ユーザーと管理者のパスワード
alfrescoNTLM
認証用の暗号化によるパスワードハッシュ化(データベースに保存されているユーザー)
controlRole
およびmonitorRole
パラメータに関連するデフォルトの JMX パスワードを変更します。データベースパスワードや管理者パスワードなど、
alfresco-global.properties
構成ファイルに保存されているパスワードが暗号化されているかどうかを確認します。
ルートとして実行しない
Content Services が侵害されたとしても、そのダメージを最小限にする必要があります。Content Services をルートで実行していると、サーバーに深刻な被害がもたらされる可能性があります。
リバースプロキシを追加する(1)
Content Services のインフラストラクチャの入口部分には必ずリバースプロキシを設置してください。このプロキシには、許可されている URL のホワイトリストが設定され、一覧にない URL はすべてブロックされます。このプロキシは、SSL を実装する場所でもあります。
NGINX の構成例は GitHub project で、対応するイメージは Docker Hub で確認できます。
HTTPS によるセキュアなサーバートラフィック(1)
サーバーへのトラフィックを暗号化しなければ、コンテンツは公開されているも同然です。コンテンツを公開するつもりがなければ、パスワードが平文で流出するのを防ぐために、トラフィックを暗号化する必要があります。
Let's Encrypt というサービスを使用すると、質の高いSSL証明書を無料で利用できます。有料の証明書よりも頻繁に更新する必要がありますが、EFF の certbot を使えば更新を自動化できます。実際、Tomcat の入口部分に Web プロキシを設置すれば、一般に公開されたサーバーであれば、certbot スクリプトを実行するのと同じくらい簡単に、Let's Encrypt を使用してトラフィックを保護できます。すべての通信は SSL(Secure Socket Layer)で行う必要があります。
Configure SSL for production environment を参照してください。
HTTPS トラフィック(Digital Workspace、Share、WebDAV、ReST API)以外にも、次の事項について検討する必要があります。
SharePoint プロトコル
IMAPS
SMTP の受信用 TLS
SMTP の送信用 TLS
FTPS
LDAPS 接続
Hazelcast または JGroups 接続(クラスタリング)の検討
リポジトリと Solr 間のセキュアなトラフィック(2)
リポジトリと Solr は、別々の Web アプリケーションです。これらの Web アプリケーションは、同じ Tomcat サーバーで動いている場合も、異なる Tomcat サーバーで動いている場合も、異なるマシンで動いている場合も、HTTP を使用して通信しています。
注:Solr とリポジトリの間の通信は、デフォルトでは暗号化されていません。Docker Compose と Helm の設定を参照してください。追加設定が必要ない状態でSSL暗号化を提供することには常に問題が伴います。たとえば、デフォルトの証明書を提供したとしても、それはまったく意味をなしません。また、生成された自己署名証明書は、独自の PKI を持っている場合、ポリシーに適合しない可能性があります。当社が Helm チャートとして提供しているのはお客様が構築を行う際の基礎となるビルディングブロックで、本番環境に対応した構成ではありません。
Solr とリポジトリの間で保護された通信が有効になっている場合、Solr の Web アプリケーションは証明書ベースのクライアント認証を使用します(これにより、リポジトリは通信の相手が確かに Solr であることを認識します)。ただしデフォルトの状態では、Solr は、Alfresco が生成して製品に同梱している証明書を使用して、暗号化と認証を行うようになっています。Alfresco が生成したデフォルトのクライアント証明書には一般の人が簡単にアクセスできます。つまり、デフォルトの状態では、Solr ポート(デフォルトでは8983)にアクセスできた人はだれでもコンテンツリポジトリ全体を検索できてしまいます。
この問題を解決するには、Solr とリポジトリの間のセキュアな通信を有効にして証明書を再生成する必要があります。
Windows または Linux での設定方法については、Search Services security documentation に従ってください。
また、各キーストアの説明と設定については、managing Alfresco keystores を参照してください。
Share Web UI のセキュリティ(3)
Alfresco Share Web UI は、Alfresco のユーザーが使用する主要なユーザーインターフェイスの1つです。セキュアなアクセスができるように設定する必要があります。Share security policies and filters を参照してください。
Share への接続は Web プロキシを介して行われるため、Share へのアクセスは常に HTTPS を介して行われます。
Digital Workspace Web UI のセキュリティ(4)
Alfresco Digital Workspace(ADW)Web UI は、Alfresco ユーザーが使用する主要なユーザーインターフェイスの1つです。ADW は Angular のアプリケーションであるため、Angular のセキュリティ文書を参照してください。
ADWへの接続は Webプロキシ を介して行われるため、ADW へのアクセスは常に HTTPS を介して行われます。
ReST API のセキュアなアクセス(5)
Alfresco Repository でフィルタを設定することで、Content Services の ReST API に外部からアクセスがあった際のセキュリティ攻撃を緩和することもできます。
Repository security policies and filters を参照してください。
ReST API への接続は Webプロキシ を介して行われるため、ReST API へのアクセスは常に HTTPS を介して行われます。
HTML 変換のセキュア化
LibreOffice を使用した HTML パイプラインには、BSSRF 攻撃に対する脆弱性があります。このようなパイプラインを無効にするには、こちらの手順に従ってください。
メタデータの暗号化
ノード(ファイルやフォルダ)のプロパティ(メタデータ)を暗号化することが可能です。この詳細については、Manage Alfresco keystores を参照してください。
外部システムからアクセスする専用ユーザー
Content Services を外部システムと統合する場合、外部システムごとに専用ユーザーを作成し、各ユーザーが必要とする情報に応じてリポジトリへのアクセスを許可するようにします。管理者ユーザーとしてアクセスを許可すると、外部からすべてにアクセスできてしまうため、専用ユーザーを作成するようにします。
ゲストユーザーを無効にする
Set up authentication and sync ページの情報を参照してください。特に「Guest user config」の説明を注意して読んでください。
未使用のプロトコルを無効にする。
攻撃対象領域を減らす手段について説明します。Content Services には、リポジトリからコンテンツを出し入れするためのオプションがたくさん用意されています。しかし、たとえば FTP を使用していなければ、FTP を有効にしておく必要はありません。むしろ、FTP が攻撃の足がかりになる可能性があります。Alfresco がサポートしている各プロトコルを目的を持って見直し、使用していないものを無効にします。
Content Services のインストールで使用されるポートの概要
次の表に、Content Services のインストールで使用されるプロトコルとポートを示します。注意事項などの有用なコメントも示しています。
ファイアウォールの受信ポート:
プロトコル / サービス | ポート | TCP/UDP | IN/OUT | Active | コメント |
HTTP | 8080 | TCP | IN | Yes | WedDav を含む |
FTP | 21 | TCP | IN | Yes | Passive モード |
SMTP | 25 | TCP | IN | No |
|
CIFS | 137,138 | UDP | IN | Yes |
|
CIFS | 139,445 | TCP | IN | Yes |
|
IMAP | 143 or 993 | TCP | IN | No |
|
SharePoint Protocol | 7070 | TCP | IN | Yes |
|
Tomcat Admin | 8005 | TCP | IN | Yes | 必要な場合を除いて、ファイアウォールでこのポートを開かないでください |
Tomcat AJP | 8009 | TCP | IN | Yes | 必要な場合を除いて、ファイアウォールでこのポートを開かないでください |
SOLR Admin | 8443 | TCP | IN | Yes | Solr の管理に使用する場合は、証明書をブラウザーにインストールする必要があります。それ以外の場合は、専用のインデックスサーバーを使用する場合に考慮してください。Alfresco リポジトリサーバーは、このポートの IN および OUT にアクセスできる必要があります。 |
NFS | 111,2049 | TCP/UDP | IN | No | これは VFS としてのリポジトリサービス NFS です |
RMI | 50500-50507 | TCP | IN | Yes | JMX 管理に使用されます。必要な場合を除いて、ファイアウォールでこのポートを開かないでください |
Hazelcast | 5701 | TCP | IN | No | 4.2からのクラスターノード間で情報を交換するために hazelcast によって使用されます |
JGroups | 7800 | TCP | IN | No | 4.2より前のノード間のクラスター検出 |
JGroups | 7801-7802 | TCP | IN | No | 4.2より前のクラスターノード間で EhcacheRMI をトラフィックします。 |
OpenOffice/JODconverter | 8100 | TCP | IN | Yes | ローカルホストで動作します。ファイアウォールで開かないでください |
ファイアウォールの送信ポート:
Protocol/Service | Port | TCP/UDP | IN/OUT | Active | コメント |
SMTP | 25 | TCP | OUT | No | Alfresco に通知、招待状、タスクなどを送信させたい場合。Alfresco から企業の MTA へ、このポートを開きます |
DB — PostgreSQL | 5432 | TCP | OUT | Yes* | DB によって異なります |
DB - MySQL | 3306 | TCP | OUT | Yes* | DB によって異なります |
DB - MS SQL Server | 1433 | TCP | OUT | Yes* | DB によって異なります |
DB — Oracle | 1521 | TCP | OUT | Yes* | DB によって異なります |
DB - DB2 | 50000 | TCP | OUT | Yes* | DB によって異なります |
LDAP or AD | 396 | TCP | OUT | No | 認証と同期に必要な場合 |
LDAPs or AD | 636 | TCP | OUT | No | 認証と同期に必要な場合 |
443 | TCP | OUT | No |
| |
JGroups | 7800-7802 | TCP | OUT | No | 4.2より前にクラスター化された場合、ノード間のみ。 |
Hazelcast | 5701 | TCP | IN | No | ノード間でのみ、4.2からのクラスターノード間で |
Remote storage NFS | 111,2049 | TCP/UDP | OUT | No | リモート NFS ドライブがコンテンツストアとして使用されている場合 |
Remote storage CIFS | 137,138 | UDP | OUT | No | リモート CIFS ドライブがコンテンツストアとして使用されている場合 |
Amazon S3 | 443 | TCP | OUT | No | Alfresco が AWS にデプロイされ、AmazonS3 がコンテンツ |
Alfresco Transformation Server | 80,443 or 8080,8443 | TCP | OUT | No | リモートの AlfrescoTransformationServer が使用されている場合 |
Alfresco FSTR | 8080 | TCP | OUT | No | リモート Alfresco ファイルシステム転送レシーバーを使用する場合 |
Alfresco Remote Server | 8080 or 8443 | TCP | OUT | No | Alfresco サーバー間で Alfresco レプリケーション |
Kerberos | 88 | TCP/UDP | OUT | No | KerberosSSO が必要な場合 |
Third Party SSO | 443 | TCP | OUT | No | サードパーティの SSO サービス |
DNS | 53 | UDP | OUT | Yes | 名前解決サービス |
セキュリティチェックリスト
以下に、代表的なセキュリティチェックリストを示します。セキュアなインストールの参考にしてください。
リックソフト株式会社 は、日本でトップレベルのAtlassian Platinum Solution Partnerです。
大規模ユーザーへの対応実績が認められたEnterpriseの認定をうけ、高度なトレーニング要件をクリアし、小規模から大規模のお客様まで対応可能な実績を示したパートナー企業です。
Copyright © Ricksoft Co., Ltd. プライバシーポリシー お問い合わせ