Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Red Hat Enterprise Linux 8 の Web Console(Cockpit)
Search
Kazuo Moriwaka
September 04, 2019
Technology
1
1.7k
Red Hat Enterprise Linux 8 の Web Console(Cockpit)
Cockpit関連で書いたスライドを全部入りにして1つにまとめたもの。
Kazuo Moriwaka
September 04, 2019
Tweet
Share
More Decks by Kazuo Moriwaka
See All by Kazuo Moriwaka
システム全体の暗号化ポリシーをカスタマイズ
moriwaka
0
2.1k
Red Hat Enterprise Linux 9のリリースノートを読む前に知りたい最近のキーワードをまとめて復習
moriwaka
0
1.6k
odpからmp4を作る / odp2mp4
moriwaka
0
300
Red Hat Enterprise Linux Web Console を使う / cockpit-rhel8
moriwaka
0
790
systemdエッセンシャル / systemd-intro
moriwaka
46
12k
flatpak
moriwaka
0
2.5k
Red Hat Enterprise Linux 8 の セキュリティトピック
moriwaka
2
1.3k
システム全体の暗号化ポリシー設定
moriwaka
0
1.1k
端末のセッション記録
moriwaka
0
5.4k
Other Decks in Technology
See All in Technology
【re:Invent 2024 アプデ】 Prompt Routing の紹介
champ
0
140
大幅アップデートされたRagas v0.2をキャッチアップ
os1ma
2
540
NW-JAWS #14 re:Invent 2024(予選落ち含)で 発表された推しアップデートについて
nagisa53
0
270
[Ruby] Develop a Morse Code Learning Gem & Beep from Strings
oguressive
1
170
複雑性の高いオブジェクト編集に向き合う: プラガブルなReactフォーム設計
righttouch
PRO
0
110
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
170
生成AIをより賢く エンジニアのための RAG入門 - Oracle AI Jam Session #20
kutsushitaneko
4
230
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
muziyoshiz
3
2.3k
PHPからGoへのマイグレーション for DMMアフィリエイト
yabakokobayashi
1
170
5分でわかるDuckDB
chanyou0311
10
3.2k
Snykで始めるセキュリティ担当者とSREと開発者が楽になる脆弱性対応 / Getting started with Snyk Vulnerability Response
yamaguchitk333
2
180
Postman と API セキュリティ / Postman and API Security
yokawasa
0
200
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
0
98
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
The Language of Interfaces
destraynor
154
24k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
GitHub's CSS Performance
jonrohan
1030
460k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Bash Introduction
62gerente
608
210k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Transcript
1 Red Hat Enterprise Linux 8 の Web Console (Cockpit)
森若 和雄 Solution Architect 2019-09
2 Copyright Red Hat K.K. All rights reserved. このスライドの位置付けと目的 •
対象 • GUIでLinuxを管理できると嬉しい人 • Linuxのデスクトップ環境を持ってないのでXが必要なGUI ツールを使うのは難しい人 • 目的 • RHELに同梱されていて各種サーバ管理に利用できるWeb UI を提供するCockpitを紹介
3 Copyright Red Hat K.K. All rights reserved. 概要 •
Web Console (Cockpit)とは? • Cockpit Packageによる機能拡張 • Cockpitのセキュリティ
4 Copyright Red Hat K.K. All rights reserved. Web Console
サーバ管理用のWeb UIを提供 • サービス管理 • アカウント管理 • ネットワーク管理 • ファイアウォール管理 • ストレージ管理 • ログ閲覧 • 仮想マシン管理 • 仮想端末 などの管理機能を提供 https://cockpit-project.org/
5 Copyright Red Hat K.K. All rights reserved. Cockpitの特長 •
独自のDBや設定ファイルなどをほぼ持たない • dbus、ファイルアクセス、コマンド実行などへのアクセスを 提供するバックエンドとブラウザからアクセスするjavascript APIを基盤とする • アクセス制御はPolicyKitにより実施 • 利用していない時にリソースを事実上消費しない • プラグイン形式での機能追加が容易 • ~/.local/ 以下に配置することで特定ユーザのみ利用可能 • Kerberosを利用したSSOに対応
6 Copyright Red Hat K.K. All rights reserved. Cockpitのインストール •
パッケージ導入 • yum install -y cockpit cockpit-dashboard • 証明書設置 • cp cockpit.cert /etc/cockpit/ws-certs.d/ • ファイアウォール設定 • firewall-cmd --add-port=9090/tcp • firewall-cmd --permanent --add-port=9090/tcp • 起動設定 • systemctl enable cockpit.socket • systemctl start cockpit.socket • ブラウザで接続 • firefox https://rhel8.corp.example.com:9090/ cockpitそのものの 設定をしなくても 動作します TLS用にCA局発行の 証明書を配置します。 なければ自己署名 証明書が自動生成 されます。
7 Copyright Red Hat K.K. All rights reserved. リモート管理 •
cockpitはブラウザが直接接続できないシステムも管理できる (cockpit- dashboardパッケージが必要) • cockpit同士でsshによる通信をおこなう • 踏み台サーバからsshによる接続ができればリモートのcockpitと直接通信 できなくても管理できる • cockpitへログインしたユーザの権限でssh接続 HTTPS port 9090 SSH port 22 踏み台サーバ 管理対象サーバ cockpit-ws cockpit-bridge
Cockpit Packageによる機能拡張
9 Copyright Red Hat K.K. All rights reserved. Cockpitの 基本動作
• cockpit-wsが待受け • ブラウザでログイン • cockpit-bridgeがユーザ 権限で起動 • cockpit-bridgeがdbus, pcp, プロセス実行など を行う • リモートへはsshで 接続 https://raw.githubusercontent.com/cockpit-project/cockpit/master/doc/cockpit-transport.png
10 Copyright Red Hat K.K. All rights reserved. Cockpitを拡張するには? •
プラグイン(Cockpit Package)による拡張に対応 • dbusでのリクエストやコマンド実行、ファイル読み出 し等を行うjavascript用APIを提供 コマンド実行 cockpit.spawn([“ping”, “8.8.8.8”]) ホスト名取得 proxy = cockpit.dbus(“org.freedesktop.hostname1”).proxy() ファイル内容取得 file = cockpit.file(“/etc/motd”, {})
11 Copyright Red Hat K.K. All rights reserved. Cockpit Packageとは?
以下のようなファイル群を配置することでCockpit内で利用する 画面を作成する。 /usr/share/cockpit/ hoge/ パッケージ用ディレクトリ manifest.json メニュー内の場所、 ラベルや関連ファイルなどを指定 hoge.html 表示するhtml hoge.js 操作を実装するjavascript
12 Copyright Red Hat K.K. All rights reserved. Cockpit Packageの配置場所
• ファイルを配置する場所が3箇所あり、オーバーライドできる 1. /usr/share/cockpit/* (rpm用、システム全体用) 2. /usr/local/share/cockpit/* (システム全体用) 3. ~/.local/share/cockpit/* (特定ユーザ用) • cockpit-bridge --packages コマンドで(実行したユーザにとって の) Cockpit Package一覧を表示 • manifest.jsonで同じ名前を宣言した場合、manifest.json内の priorityの値が大きい方が優先される
13 Copyright Red Hat K.K. All rights reserved. 個人用にCockpit Packageを作ってみる
• インストール先ディレクトリ作成 • mkdir -p ~/.local/share/cockpit/ • cockpitのソースコードを取得 • git clone https://github.com/cockpit-project/cockpit.git • シンボリックリンク作成 • cd cockpit/examples/ • ln -s ${PWD}/pinger ~/.local/share/cockpit/ • ブラウザでcockpitへ接続(または再ログイン) • メニュー上の“Pinger”メニューでpingコマンド実行
14 Copyright Red Hat K.K. All rights reserved.
15 Copyright Red Hat K.K. All rights reserved. Cockpit Packageの
参考文献 • cockpit projectのTutorialカテゴリ • https://cockpit-project.org/blog/category/tutorial.html • cockpitプロジェクトのソースコード • https://github.com/cockpit-project/cockpit/ • 本格的なpluginのひな型 “Starter Kit” • rpmパッケージ化、テストケース実行, 一般公開に対応 • https://github.com/cockpit-project/starter-kit • Cockpitドキュメント内 “Developer Guide” • https://cockpit-project.org/guide/latest/development.html
Cockpitのセキュリティ
17 Copyright Red Hat K.K. All rights reserved. よくある(?)「Webコンソール」のイメージ(偏見) •
外部コマンド実行や ファイル変更をroot 権限で実施 • 「root権限で何でも できるプロセス」 • 複雑になり、バグ が深刻な問題につ ながる • 独自の権限管理設定 やDBが必要 root権限で 何でもできる プロセス httpd 権限 管理 外部プロセス 外部プロセス ファイル UI DB
18 Copyright Red Hat K.K. All rights reserved. cockpitは? •
ログインしたユーザの権限で実施 • root権限利用はセッション開始時のみ • OSの権限管理をそのまま使う cockpit-session root権限で動作 ログイン処理 外部プロセス 外部プロセス ファイル UI cockpit-bridge ユーザ権限で 何でもやる cockpit-ws ログインと 接続 pam GSSAPI OSの 権限管理 生成 認証情報 リクエスト
19 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 生成 リクエス ト デフォルトではwheelグループの ユーザのみ成功 cockpit-bridge --privilege rootユーザの 権限で 何でもやる 生 成 認証情報
20 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の 権限管理
21 Copyright Red Hat K.K. All rights reserved. Cockpitに関連したセキュリティ上の注意点 •
SELinuxのポリシーも準備されているのでできれば使う • enforcingで使うことでcockpit-wsやcockpit-sessionに未知の脆弱性があっ た場合にも任意プロセス実行などを予防する • 自己署名証明書の利用はお勧めしません • ブラウザとcockpit-ws間の通信路が信頼できてはじめて安全な仕組み • 後述のIdentity Managementとの統合で証明書の自動発行が可能 • 特権取得にPolicyKitを利用している • systemdでも利用するがサーバ管理時に気にしないケースが多いので注意 • 一部操作を制限したい場合は /etc/polkit-1/rules.d/*.rules でポリシー定義 をおこなう。ポリシー制限の粒度はサービスによる。
22 Copyright Red Hat K.K. All rights reserved. Identity Managementとの統合
• RHEL同梱のRed Hat Identity Managementと統合されています • IdMが管理するドメインにサーバが参加していれば以下が可能 • Web Consoleのリモート管理で利用するssh接続をシングルサ インオン(SSO)で処理 • Web Consoleで利用するサーバ証明書を自動発行し自己署名 証明書の利用なし
23 Copyright Red Hat K.K. All rights reserved. まとめ •
RHELの管理を簡単にするWeb Consoleは、簡単に利用 できるだけでなくセキュリティにも配慮して開発され ています • ログイン時に最小の特権だけを利用 • 特権を利用する範囲についてSELinuxで制限が可能 • 実績があるPolicyKitなど枯れた技術を活用 • Identity Managementと統合されています
24 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 Cockpitのセキュリティ 参考文献
25 Copyright Red Hat K.K. All rights reserved. Thank You