MochiuWiki : SUSE, EC, PCB
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
設定 - Cockpitのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
設定 - Cockpit
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == Cockpitは、Linuxサーバを対象としたブラウザベースのWebUIによるシステム管理ツールである。<br> 基本的なシステム設定から、ストレージ管理、ネットワーク設定、ユーザ管理、システムの最新状態の維持まで、多数の管理タスクをWebブラウザから実行できる。<br> <br> 複数のサーバを管理するための機能を備えた管理ユーティリティであるが、自動化機能は持たない。<br> systemd、journald、NetworkManager、firewalld、storaged (udisks2)、realmd、PAMと統合されており、既存のLinuxシステム管理ツールとシームレスに連携する。<br> <br> SUSEがコミュニティと協力している活発なアップストリームプロジェクトである。<br> Cockpitは、Leap MicroとMicroOSにも含まれている。<br> 商用製品であるSUSE Linux Enterprise Microの一部であり、SUSE Linux Enterprise 16にも搭載されている。<br> <br> アーキテクチャは軽量で、systemd socket activationによるオンデマンド起動を採用しており、常時稼働によるリソース消費が少ない。<br> モジュール式の設計により、必要な機能のみをパッケージとして追加インストールできる。<br> <br> [https://cockpit-project.org/documentation アップストリームが管理するドキュメント]があり、[https://documentation.suse.com/cockpit SUSEもドキュメントを管理]している。<br> <br> Webブラウザの対応状況を以下に示す。<br> * Firefox 82以降 * Chrome / Edge 88以降 * Safari 14.5以降 <br><br> == アーキテクチャ == Cockpitは複数のコンポーネントが連携して動作する。<br> 各コンポーネントの役割を理解することで、トラブルシューティングや詳細な設定が容易になる。<br> <br> 主要コンポーネントを以下に示す。<br> <br> <center> {| class="wikitable" |+ Cockpit の主要コンポーネント |- ! コンポーネント !! 説明 |- | cockpit-ws | * 9090番ポートでリッスンするWebサービスコアコンポーネントである。 * ユーザ認証を処理し、ブラウザとバックエンドの通信を仲介する。 * systemd socket activation (cockpit.socket) により、オンデマンドで起動する。 |- | cockpit-bridge | * WebインターフェースとシステムAPI間のメッセージリレーヤーである。 * Webブラウザからのリクエストをシステムコールに変換し、結果をWebUIに返す。 |- | cockpit-tls | * TLS 終端プロキシであり、暗号化された接続を管理する。 * HTTPS通信の暗号化・復号を担当し、cockpit-wsへプレーンテキストで中継する。 |} </center> <br> 動作フローは以下の通りである。<br> <br> # Webブラウザが9090番ポートへHTTPS接続する。 # cockpit-tlsがTLS終端処理を行う。 # cockpit-wsがユーザ認証を処理する。 # cockpit-bridgeがシステムAPIへリクエストを中継する。 # レスポンスが逆順でWebブラウザに返される。 <br><br> == 主要モジュール == Cockpitはモジュール式の設計を採用しており、デフォルトでインストールされるパッケージと追加でインストール可能なパッケージが存在する。<br> <br> ==== デフォルトパッケージ ==== 下表に、デフォルトでインストールされる主要パッケージを示す。<br> <br> <center> {| class="wikitable" |+ デフォルトパッケージ一覧 ! パッケージ名 !! 説明 |- | cockpit-ws || Webサービスコアコンポーネント<br>Webブラウザとの通信を担当する。 |- | cockpit-system || システム情報の表示、基本的なシステム監視、サービス管理を提供する。 |- | cockpit-networkmanager || ネットワークインターフェース設定、ボンディング、ブリッジ、VLAN設定を提供する。 |- | cockpit-storaged || ストレージ設定・監視、ディスク管理、マウント設定を提供する。 |- | cockpit-selinux || SELinux例外の表示・管理インターフェースを提供する。 |- | cockpit-packagekit || パッケージ管理インターフェースを提供する。 |} </center> <br> ==== 追加パッケージ ==== 必要に応じて追加でインストール可能なパッケージを以下に示す。<br> <br> <center> {| class="wikitable" |+ 追加パッケージ一覧 ! パッケージ名 !! 説明 |- | cockpit-podman || Podmanコンテナの管理UIを提供する。 |- | cockpit-machines || 仮想マシン (KVM / libvirt) の管理インターフェースを提供する。 |- | cockpit-kdump || カーネルクラッシュダンプの設定インターフェースを提供する。 |- | cockpit-sosreport || sosreportによるシステム診断・設定情報収集インターフェースを提供する。 |- | cockpit-tuned || Tunedによるシステムパフォーマンスプロファイル設定を提供する。 |- | cockpit-pcp || Performance Co-Pilot統合による詳細なパフォーマンス分析を提供する。 |- | cockpit-session-recording || セッション記録機能を提供する。 |} </center> <br><br> == インストール == ==== RHEL ==== Cockpitをインストールする。<br> <br> sudo dnf install cockpit <br> Cockpitを有効化する。<br> <br> sudo systemctl enable --now cockpit.socket <br> 外部PCから操作する場合は、ファイアウォールのポートを開く。<br> <br> sudo firewall-cmd --permanent --add-service=cockpit sudo firewall-cmd --reload <br> ==== SUSE (SLE 16) の場合 ==== Cockpitをパターンとしてインストールする。<br> <br> sudo zypper install -t pattern cockpit <br> Cockpitを有効化する。<br> <br> sudo systemctl enable --now cockpit.socket <br> 外部PCから操作する場合は、ファイアウォールのポートを開く。<br> <br> sudo firewall-cmd --permanent --zone=public --add-service=cockpit sudo firewall-cmd --reload <br><br> == Cockpitの実行 == Webブラウザを起動して、以下に示すアドレスを入力する。<br> <br> http://<IPアドレス>:9090 # または http://localhost:9090 <br><br> == 設定ファイル == Cockpitの設定ファイルは、<u>/etc/cockpit/cockpit.conf</u> ファイルである。<br> INI形式で記述し、必須ではなく、必要に応じて手動で作成する。<br> <br> ==== [WebService]セクション ==== 下表に、Webサービスに関する設定項目を示す。<br> <br> <center> {| class="wikitable" |+ cockpit.confの主要設定パラメータ |- ! パラメータ !! 説明 |- | Origins || WebSocket 接続を許可するオリジンを指定する。<br>リバースプロキシを使用する場合に設定が必要である。<br><br>例: <u>Origins = https://example.com:443</u> |- | ProtocolHeader || リバースプロキシからのプロトコル情報ヘッダを指定する。<br>デフォルト値は、<code>X-Forwarded-Proto</code> である。 |- | ForwardedForHeader || クライアントIPアドレス取得ヘッダを指定する。<br>デフォルト値は、<code>X-Forwarded-For</code> である。 |- | AllowUnencrypted || 暗号化なしのHTTP接続を許可するかどうかを指定する。(<u>true</u> / <u>false</u>)<br>デフォルト値は、<u>false</u> である。 |- | UrlRoot || リバースプロキシ環境でのURL基底パスを指定する。<br><br>例: <u>UrlRoot = /cockpit</u> |- | LoginTitle || ログイン画面のブラウザタイトルを指定する。 |- | LoginTo || ログイン画面に[リモートホストに接続]オプションを表示するかどうかを指定する。(<u>true</u> / <u>false</u>) |- | AllowMultiHost || 複数ホストへの同時接続を許可するかどうかを指定する。(<u>true</u> / <u>false</u>) |- | MaxStartups || 同時認証試行数の上限を指定する。<br>デフォルト値は、<u>10</u> である。 |} </center> <br> ==== [Log]セクション ==== 下表に、ロギングに関する設定項目を示す。<br> <br> <center> {| class="wikitable" |+ cockpit.confのログ設定パラメータ |- ! パラメータ !! 説明 |- | Fatal || 致命的エラーとするメッセージタイプを指定する。<br>デフォルト値は、<u>criticals, warnings</u> である。 |} </center> <br> ==== [Session]セクション ==== 下表に、セッションに関する設定項目を示す。<br> <br> <center> {| class="wikitable" |+ cockpit.confのセッション設定パラメータ |- ! パラメータ !! 説明 |- | IdleTimeout || 非アクティブ時の自動ログアウト時間を分単位で指定する。<br>デフォルトはタイムアウトなしである。 |- | Banner || ログイン画面に表示するファイルのパスを指定する。<br><br>例: <u>Banner = /etc/issue</u> |} </center> <br> ==== 設定ファイルの記述例 ==== <u>/etc/cockpit/cockpit.conf</u> ファイルの記述例を以下に示す。<br> <br> <syntaxhighlight lang="ini"> [WebService] Origins = https://example.com:443 ProtocolHeader = X-Forwarded-Proto ForwardedForHeader = X-Forwarded-For AllowUnencrypted = false LoginTitle = System Administration LoginTo = false MaxStartups = 10 [Log] Fatal = criticals, warnings [Session] IdleTimeout = 30 Banner = /etc/issue </syntaxhighlight> <br><br> == SSL/TLS証明書の設定 == Cockpitの証明書ファイルは、<u>/etc/cockpit/ws-certs.d/</u> ディレクトリに配置する。<br> <u>.cert</u> ファイルはPEM形式で、サーバ証明書・中間CA証明書・秘密鍵を含む。<br> <br> TLS証明書が存在しない場合、<code>sscg</code> または <code>openssl</code> コマンドで自己署名証明書 (<u>0-self-signed.cert</u>) が自動生成される。<br> <br> 証明書の状態を確認するには、以下のコマンドを実行する。<br> <br> sudo /usr/libexec/cockpit-certificate-ensure --check <br> ==== Let's Encrypt証明書の配置 ==== Let's Encrypt証明書をCockpit用に配置する場合は、証明書と秘密鍵を結合してファイルを作成する。<br> <br> cat /etc/letsencrypt/live/example.com/fullchain.pem \ /etc/letsencrypt/live/example.com/privkey.pem \ > /etc/cockpit/ws-certs.d/example.cert <br> ==== certmongerによる管理 ==== certmongerを使用して証明書を管理する場合は、以下のコマンドを実行する。<br> <br> getcert request -f /etc/cockpit/ws-certs.d/server.cert -k /etc/cockpit/ws-certs.d/server.key <br><br> == ポートの変更 == Cockpitのデフォルトポートは、<code>9090</code> 番ポートである。<br> ポートを変更するには、systemd socketのオーバーライドファイルを作成する。<br> <br> 以下のディレクトリとファイルを作成する。<br> <br> sudo mkdir -p /etc/systemd/system/cockpit.socket.d sudo vi /etc/systemd/system/cockpit.socket.d/listen.conf <br> 設定ファイルに以下の内容を記述する。<br> <u>9090番ポートを無効化する場合は、最初の <code>ListenStream=</code> の空行でデフォルトポート9090をリセットする必要がある。</u><br> <br> <syntaxhighlight lang="ini"> [Socket] ListenStream= ListenStream=443 </syntaxhighlight> <br> 変更を反映する。<br> <br> sudo systemctl daemon-reload sudo systemctl restart cockpit.socket <br> ==== SELinux環境でのポート変更 ==== SELinux環境では、新しいポートにSELinuxコンテキストを付与する追加設定が必要である。<br> <br> 新しいポート (例: 9999) に対してSELinuxコンテキストを付与する場合は、以下のコマンドを実行する。<br> <br> sudo semanage port -a -t websm_port_t -p tcp 9999 <br> 既存ポート (例: 443) に対してSELinuxコンテキストを変更する場合は、以下のコマンドを実行する。<br> <br> sudo semanage port -m -t websm_port_t -p tcp 443 <br><br> == リバースプロキシの設定 == CockpitをNginxやApacheのリバースプロキシ経由で公開する場合は、WebSocket接続の設定が必要である。<br> また、リバースプロキシの背後に配置する場合、<code>/cockpit/</code> および <code>/cockpit+</code> は予約済みパスのため使用禁止である。<br> <br> ==== Nginxの設定 ==== Nginxのリバースプロキシ設定例を以下に示す。<br> <br> <syntaxhighlight lang="nginx"> server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass https://localhost:9090; proxy_http_version 1.1; proxy_buffering off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; } } </syntaxhighlight> <br> ==== Apacheの設定 ==== Apacheのリバースプロキシ設定例を以下に示す。<br> <u>mod_proxy</u>、<u>mod_proxy_http</u>、<u>mod_proxy_wstunnel</u>、<u>mod_ssl</u>、<u>mod_rewrite</u> モジュールが必要である。<br> <br> <syntaxhighlight lang="apache"> <VirtualHost *:443> ServerName example.com SSLEngine on SSLCertificateFile /path/to/cert.pem SSLCertificateKeyFile /path/to/key.pem ProxyPreserveHost On ProxyRequests Off ProxyPass / https://localhost:9090/ nocanon ProxyPassReverse / https://localhost:9090/ RequestHeader set X-Forwarded-Proto "https" RewriteEngine On RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteRule /(.*) wss://localhost:9090/$1 [P,L] </VirtualHost> </syntaxhighlight> <br> ==== cockpit.confの対応設定 ==== リバースプロキシを使用する場合は、<u>/etc/cockpit/cockpit.conf</u> ファイルに以下の設定を追加する。<br> <br> <syntaxhighlight lang="ini"> [WebService] Origins = https://example.com:443 ProtocolHeader = X-Forwarded-Proto ForwardedForHeader = X-Forwarded-For </syntaxhighlight> <br><br> == 認証 == ==== プライマリサーバの認証方法 ==== Cockpitが動作するサーバへの認証方法を以下に示す。<br> <br> * ローカルアカウント *: システム上のローカルアカウント (ユーザ名・パスワード) でログインする方法である。 *: PAM認証ポリシー (<u>/etc/pam.d/cockpit</u>) によって制御される。 *: <br> * Kerberos / SSO *: エンタープライズSSO統合による認証方法である。 *: 有効なKerberosチケットを保持するユーザは自動認証される。 *: 前提として、サーバがドメインに参加済み (<u>realm join example.com</u>) であり、 *: <u>/etc/krb5.keytab</u> または <u>/etc/cockpit/krb5.keytab</u> ファイルに有効なホストキーが存在することが必要である。 *: <br> * クライアント証明書 / スマートカード *: PKI認証による方法である。 *: クライアント証明書またはスマートカードを使用した認証を提供する。 <br> ==== セカンダリサーバの認証方法 ==== Cockpit経由でリモートホストにSSH接続する時の認証方法を以下に示す。<br> <br> * パスワード認証 * Kerberos認証 * 公開鍵認証 (ssh-agent経由) * ホストキー検証 <br><br> == マルチサーバ管理 == Cockpitは、単一のセッションから複数のリモートホストをSSH経由で管理できる。<br> リモートホスト側ではCockpitのWebサーバは不要で、最小限のパッケージのみで管理が可能である。<br> <br> ==== リモートホストの要件 ==== 管理対象のリモートホストに必要な条件を以下に示す。<br> <br> * cockpit-systemパッケージのインストール (最小限の必須パッケージ) * cockpit.socketの有効化は不要 * TLS証明書の設定は不要 * SSHポート (デフォルト: 22/tcp) のみ開放 <br> ==== リモートホストの追加手順 ==== # Cockpit UIで[新規ホスト追加]を選択する。 # リモートサーバのIPアドレスを入力する。 # ログインユーザ名を入力する。 <br><br> == ファイアウォールの設定 == CockpitはfirewalldとUI統合されており、定義済みサービスの表示・追加・削除がWebUIから操作できる。<br> <br> ==== firewalldによる設定 ==== Cockpitサービスをfirewalldに登録する場合は、以下のコマンドを実行する。<br> <br> sudo firewall-cmd --permanent --add-service=cockpit sudo firewall-cmd --reload <br> ==== 手動ポート指定による設定 ==== サービス名ではなくポート番号を直接指定する場合は、以下のコマンドを実行する。<br> <br> sudo firewall-cmd --permanent --add-port=9090/tcp sudo firewall-cmd --reload <br><br> == ルートユーザの使用 == デフォルトでは、セキュリティ上の理由により、rootユーザを使用することはできない。<br> もし、WebコンソールでrootユーザとしてリモートPCへ接続する場合は、<u>/etc/cockpit/disallowed-users</u> ファイルを編集してrootログインを許可する。<br> <br> sudo vi /etc/cockpit/disallowed-users <br> <syntaxhighlight lang="text"> # /etc/cockpit/disallowed-usersファイル # 編集前 root # 編集後 #root </syntaxhighlight> <br><br> == ログインシェルの変更 == ログインシェルを変更している場合、SELinuxのポリシーで <u>cockpit_session_t</u> コンテキストから <u>user_home_t</u> コンテキストのzshの実行が拒否される時がある。<br> <u>これは、ログインシェルとして使用しているシェルのインストールディレクトリがホームディレクトリに存在、または、適切なSELinuxコンテキストを持っていないためである。</u><br> <br> まず、<u>/usr</u> ディレクトリ内にログインシェルをインストールしている場合は、ログインシェルのSELinuxコンテキストを修正する。<br> その他のディレクトリ内にログインシェルをインストールしている場合は、SELinuxポリシーにルールを追加する。<br> <br> ==== ログインシェルのSELinuxコンテキストを修正 ==== まず、ログインシェルのインストールディレクトリを確認する。<br> <br> which <ログインシェル 例 : zsh> <br> 次に、ファイルのSELinuxコンテキストラベルを、システムのデフォルトポリシーに基づいた正しい値に復元する。<br> また、適切なSELinuxラベル (例 : shell_exec_t) を再設定して、cockpit_sessionから実行可能にする。<br> <br> sudo restorecon -v <ログインシェルのインストールディレクトリ 例 : /usr/bin/zsh> <br> ==== SELinuxポリシーにルールを追加 ==== まず、カスタムポリシーモジュールを作成する。<br> <br> # ログからポリシーを生成 sudo ausearch -m avc -ts recent | grep cockpit | audit2allow -M cockpit_zsh <br> 次に、ポリシーモジュールを読み込む。<br> <br> sudo semodule -i cockpit_zsh.pp <br><br> == セキュリティ == Cockpitを安全に運用するための推奨される事柄を以下に示す。<br> <br> ==== 認証とアクセス制御 ==== * rootユーザでの直接ログインは避け、sudo / polkit経由の権限昇格を推奨する。 * SSH鍵認証を推奨する。(パスワード認証より安全) * CockpitはCSPヘッダを送信して、インストール済みコードのみ実行を許可する。 <br> ==== ネットワークセキュリティ ==== * 9090番ポートをネットワークに公開する場合は、ファイアウォールでアクセス元を制限する。 * 自己署名証明書は開発・テスト環境のみに使用して、本番環境ではLet's Encrypt等の正規証明書を使用する。 <br> ==== ログ監視 ==== Cockpitのログを監視するには、以下のコマンドを実行する。<br> <br> sudo journalctl -u cockpit <br><br> == カスタマイズ == Cockpitのログイン画面やUIのブランディングをカスタマイズできる。<br> カスタマイズファイルは <u>/usr/share/cockpit/branding/</u> ディレクトリに配置する。<br> <br> ==== カスタマイズ可能なファイル ==== <center> {| class="wikitable" |+ カスタマイズ可能なファイル |- ! ファイル !! 説明 |- | logo.png || ブランドロゴ画像ファイルである。 |- | favicon.ico || ブラウザのファビコンファイルである。 |- | branding.css || CSS スタイルファイルである。<br>ログイン画面の背景、ロゴ、ブランドカラー等をカスタマイズできる。 |} </center> <br> ==== CSSカスタマイズ ==== <u>branding.css</u> ファイルでは、CSS変数 <code>--ct-color-host-accent</code> を使用してシェルパネルのアクセントカラーを制御できる。<br> <br> <syntaxhighlight lang="css"> :root { --ct-color-host-accent: #0066cc; } </syntaxhighlight> <br><br> == トラブルシューティング == 下表に、Cockpitに関する主な問題と対処法を示す。<br> <br> <center> {| class="wikitable" |+ トラブルシューティング一覧 ! 問題 !! 対処法 |- | cockpit.socketが起動しない || <code>systemctl status cockpit.socket</code> でステータスを確認する。<br><code>sudo journalctl -u cockpit</code> で詳細ログを確認する。 |- | Permission deniedエラーが発生する || ユーザがcockpitグループに属しているか確認する。<br>PAM設定 (<u>/etc/pam.d/cockpit</u> ファイル) を確認する。 |- | SELinuxによるアクセス拒否が発生する || <code>audit2allow</code> コマンドでポリシーを生成する。<br><code>semanage</code> コマンドでポートのSELinuxコンテキストを設定する。 |- | TLS証明書エラーが発生する || <u>/etc/cockpit/ws-certs.d/</u> ファイルの証明書ファイルの形式と権限を確認する。<br><code>sudo /usr/libexec/cockpit-certificate-ensure --check</code> を実行する。 |- | リバースプロキシ経由で接続できない || <u>cockpit.conf</u> ファイルの <code>Origins</code> 設定を確認する。<br>WebSocketヘッダ (<code>Upgrade</code>, <code>Connection</code>) の設定を確認する。 |- | リモートホストに接続できない || SSH接続が疎通しているか確認する。<br>リモートホストにcockpit-systemがインストールされているか確認する。 |} </center> <br><br> == ソースコードと貢献方法 == アップストリームのソースコードはGithubでホストされている。<br> 始めるには、[https://cockpit-project.org/external/wiki/Contributing.html Contributing]を参照すること。<br> <br> アプリケーションを開発するのに役立つ [https://github.com/openSUSE/cockpit-tutorial Cockpitチュートリアル] も存在する。<br> <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:RHEL]][[カテゴリ:SUSE]]
設定 - Cockpit
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse