Slide 1

Slide 1 text

1 Red Hat Enterprise Linux 8 の Web Console を守る技術 森若 和雄 Solution Architect 2019-11-19

Slide 2

Slide 2 text

2 Copyright Red Hat K.K. All rights reserved. このスライドの位置付けと目的 ● 対象 ● RHELのWeb Console(cockpit)に興味があるがセキュリティに 不安がある人 ● 目的 ● cockpitがどのように実装されているかの情報提供

Slide 3

Slide 3 text

3 Copyright Red Hat K.K. All rights reserved. 概要 ● Web Console(cockpit) ● ログイン時の動作 ● TCPポートの制限 ● Identity Managementとの統合

Slide 4

Slide 4 text

4 Copyright Red Hat K.K. All rights reserved. Web Console サーバ管理用のWeb UIを提供 ● サービス管理 ● アカウント管理 ● ネットワーク管理 ● ファイアウォール管理 ● ログ閲覧 ● 仮想マシン管理 ● 仮想端末 などの管理機能を提供 https://cockpit-project.org/

Slide 5

Slide 5 text

5 Copyright Red Hat K.K. All rights reserved. インストール ● パッケージ導入 ● yum install -y cockpit ● ファイアウォール設定 ● firewall-cmd --add-service=cockpit --permanent ● firewall-cmd --reload ● サーバ証明書配置 ● /etc/cockpit/ws-certs.d/に証明書を配置(なければ自己署名証明書を自動生成) ● 起動設定 ● systemctl enable --now cockpit.socket ● ブラウザで接続 ● firefox https://example.com:9090/

Slide 6

Slide 6 text

6 Copyright Red Hat K.K. All rights reserved. よくある(?)「Webコンソール」のイメージ(偏見) ● 外部コマンド実行 やファイル変更を root権限で実施 ● 「root権限で何で もできるプロセ ス」を実行 ● 独自の権限管理設 定やDBが必要 root権限で 何でもできる プロセス httpd 権限 管理 外部プロセス 外部プロセス ファイル UI DB

Slide 7

Slide 7 text

7 Copyright Red Hat K.K. All rights reserved. cockpitは? ● ログインしたユーザの権限で実施 ● root権限はセッション開始のみ ● OSの権限管理をそのまま使う cockpit-session root権限で動作 ログイン処理 外部プロセス 外部プロセス ファイル UI cockpit-bridge ユーザの 権限で 何でもやる cockpit-ws ログインと 接続 pam GSSAPI OSの 権限管理 生成 認証情報 リクエスト

Slide 8

Slide 8 text

8 Copyright Red Hat K.K. All rights reserved. ログイン時の動作 1. cockpit-wsがログイン 画面を表示 2. 認証情報を送付 • ID+Password • GSSAPI 3. cockpit-sessionを実行 4. PAMで認証 5. 認証ユーザでcockpit-bridgeを実行 6. 以下チェックのある場合pkexecで root権限のcockpit-bridgeを起動 cockpit-session root権限で動作 ログイン処理 cockpit-bridge ユーザの 権限で 何でもやる cockpit-ws ログインと 接続 pam GSSAPI 生成 リクエスト PolicyKit経由でroot権限で実行する デフォルト設定ではwheelグループの ユーザのみ成功 cockpit-bridge --privilege rootユーザの 権限で 何でもやる 生 成 認証情報

Slide 9

Slide 9 text

9 Copyright Red Hat K.K. All rights reserved. ログイン後 ● ブラウザ上のjavascriptとcockpit-bridge(およびcockpit-bridge --privilege)が通信 ● cockpit-bridge本体と、packageと呼ばれるプラグインがdbus, REST API, プロセス 実行など各種の操作を実施。通常のユーザ権限管理をそのまま利用。 cockpit-session セッション管理 だけ 外部プロセス 外部プロセス ファイル UI cockpit-bridge ユーザの 権限で 何でもやる cockpit-ws ログインと 接続 OSの 権限管理

Slide 10

Slide 10 text

10 Copyright Red Hat K.K. All rights reserved. ログイン関連について ● 権限を必要最小限に制限したプロセスに分割 ● cockpit-wsプロセスはcockpit-wsユーザで待ちうけと接続、cockpit-session の起動とcockpit-bridgeとの通信を実行 ● cockpit-sessionは認証を行いセッションを開始。ユーザ自身の権限(指定 によりroot権限も)で動作するcockpit-bridgeを起動するだけ ● SELinuxのポリシーも準備されている ● enforcingで使うことでcockpit-wsやcockpit-sessionに未知の脆弱性がある 場合にも任意プロセス実行などを予防 ● 自己署名証明書の利用はお勧めしません ● ブラウザとcockpit-ws間の通信路が信頼できてはじめて安全

Slide 11

Slide 11 text

11 Copyright Red Hat K.K. All rights reserved. TCPポートを制限したい ● Cockpitは通常9090番ポートをlisten ● Cockpit同士でsshによる通信を行う ● cockpit-wsはssh経由で他サーバのcockpit-bridgeを起動・通信 ● 踏み台サーバからsshで数珠繋ぎにすることで直接通信できない サーバを管理 HTTPS port 9090 SSH port 22 踏み台サーバ 管理対象サーバ cockpit cockpit

Slide 12

Slide 12 text

12 Copyright Red Hat K.K. All rights reserved. Identity Managementとの統合 ● RHEL同梱のRed Hat Identity Managementと統合されています ● IdMが管理するドメインにサーバが参加していれば以下が可能 ● Web Consoleを含めたシングルサインオン(SSO) ● Web Consoleで利用するサーバ証明書を自動発行 ● ドメイン内ではsshの鍵配布が不要になるため、sshを経由し て他サーバを参照する場合に準備が不要

Slide 13

Slide 13 text

13 Copyright Red Hat K.K. All rights reserved. まとめ ● RHELの管理を簡単にするWeb Consoleは、簡単に利用 できるだけでなくセキュリティにも配慮して開発され ています ● ログイン時に最小の特権だけを利用 ● 長期間に渡る実績があるPolicyKitなど枯れた技術を活用 ● ネットワーク接続ポートを増やせない場合はsshのみ許 可されていれば踏み台から接続可能 ● Identity Managementと統合されています

Slide 14

Slide 14 text

14 Copyright Red Hat K.K. All rights reserved. ● RHEL8ドキュメント「Web コンソールを使用したシステムの管理」 ● https://bit.ly/rhel8-webconsole-ja2 ● Cockpitプロジェクトblog「Is Cockpit Secure?」 ● https://cockpit-project.org/blog/is-cockpit-secure.html ● Cockpitプロジェクトドキュメント「Single Sign On」 ● https://cockpit-project.org/guide/latest/sso.html See also

Slide 15

Slide 15 text

15 Copyright Red Hat K.K. All rights reserved. Thank You