著者は、 Write for DOnations プログラムの一環として、 Free and Open SourceFundを選択して寄付を受け取りました。

序章

Cockpit は、サーバーのステータスをリアルタイムで表示できるサーバー管理ダッシュボードです。 CPU負荷、ファイルシステム統計、プロセス、および詳細情報に関する情報を提供します。 コックピットの利点の1つは、コントロールパネルにログインしていないときにサーバーリソースを消費しないことです。サービスは、コントロールパネルを参照したときにのみ開始されます。

ユーザーの管理やネットワークの問題のトラブルシューティングなど、Cockpitを使用してサーバー管理タスクを実行できます。 コンピュータまたは電話のブラウザから端末にアクセスすることもできます。 コックピットは、システムのユーザーを使用してログインとシステム管理を行います。 sudo 特権昇格用。 このように、コックピットは、コックピットのみのユーザーの2番目のセットを作成することによって、サーバーにセキュリティ上の考慮事項の追加レイヤーを導入しません。

このチュートリアルでは、安全なコックピットサーバー管理ダッシュボードをDebian10サーバーにデプロイします。

前提条件

このガイドを開始する前に、次のものが必要です。

  • Debian10による初期サーバーセットアップガイドを使用して構成された1台のDebian10サーバー。 ガイドの説明に従って、UFWファイアウォールを設定して有効にする必要があります。
  • コックピットへのアクセスに使用するサーバーを指すドメイン名。 ドメイン名のポインティングに関する情報が必要な場合は、ドメインとDNSガイドを参照してください。 ドメイン名の例を使用します cockpit.your_domain このチュートリアルでは。 開始する前に、ドメインがサーバーを指している必要があります。

sudo対応の非ルートサーバーとしてサーバーにログインして開始します。

ステップ1—コックピットのインストール

このステップでは、コックピットをインストールし、コックピットがファイアウォールで使用するポートを開きます。

まず、を使用してシステムアップデートを実行します apt. これにより、サーバーに最新のパッケージが確実に追加され、コックピットのインストール中のエラーが回避されます。

  1. sudo apt update
  2. sudo apt upgrade

次に、コックピットをインストールします。

  1. sudo apt install cockpit

次に、mkdirコマンドを使用してディレクトリを作成します。

  1. sudo mkdir -p /usr/lib/x86_64-linux-gnu/udisks2/modules

あなたは -p オプション mkdir 1回の呼び出しで複数レベルのディレクトリを作成します。

このディレクトリは、無害でありながら気が散る警告がコックピットインスタンスに表示されないようにするために作成しました。 この警告は、 udisks2 ユーティリティが見つかりません /usr/lib/x86_64-linux-gnu/udisks2/modules ディレクトリ。追加しない限り、デフォルトでは作成されません。 udisks2 インストールされています。

最後に、コックピットのアクセスポートを開きます 9090 とポート 80 次のステップでSSL証明書を取得するために使用します。

  1. sudo ufw allow 9090
  2. sudo ufw allow 80

これでコックピットがインストールされ、ドメインで署名付きSSL証明書を使用できるようにポートが開かれました。 この証明書は次のステップで取得します。

ステップ2—SSL証明書を取得する

このステップでは、Certbotユーティリティを使用してLet’sEncryptによって発行されたSSL証明書を取得します。 Certbotは証明書を登録してダウンロードし、有効期限が切れると証明書を自動的に更新します。

CertbotはUbuntusnapパッケージとして配布されています。 The snap ユーティリティはデフォルトではDebian10にインストールされていないため、ユーティリティの一部としてインストールする必要があります。 snapd パッケージ:

  1. sudo apt install snapd

次に、次の2つのコマンドを実行して、最新バージョンのを実行していることを確認します。 snap:

  1. sudo snap install core
  2. sudo snap refresh core

次に、次のコマンドを使用してCertbotsnapをインストールします。

  1. sudo snap install --classic certbot

The --classic ここでのオプションは、Certbotスナップをクラシックモードでインストールします。これにより、制限が軽減され、Certbotが正しく機能するために必要なシステムリソースへのアクセスが可能になります。

次に、からシンボリックリンクを作成します /usr/bin/certbot スナップインストールされたCertbotバイナリを指すには /snap/bin/certbot ln ユーティリティを使用すると:

  1. sudo ln -s /snap/bin/certbot /usr/bin/certbot

Linux上のすべてのユーティリティが調査する必要があることを認識しているわけではないため、このシンボリックリンクを作成する必要があります。 /snap/bin/ プログラムファイル用。 一方 /usr/bin/ ユーザーがインストールしたプログラムの標準的な場所です。

注:シンボリックリンクは、ショートカットがWindowsで機能するのと同じように、Linuxで機能します。つまり、場所からファイルへのポインターです。

Certbotユーティリティをインストールしたので、それを使用して、次のコマンドでSSL証明書を登録およびダウンロードします。

  1. sudo certbot certonly --standalone --agree-tos --email your_email -d cockpit.your_domain

次のオプションを使用しました。

  • certonly:システムに他の変更を加えることなく、SSL証明書を登録およびダウンロードします。
  • --standalone:Certbotの組み込みWebサーバーを使用して証明書を登録します。
  • --agree-tos:利用規約(ToS)に自動的に同意します。
  • --email your_email:あなたのメールアドレスを取得して証明書を登録します。 (これは、有効期限の通知とセキュリティ情報にのみ使用されます。)
  • -d cockpit.your_domain:コックピットインスタンスに使用するドメイン名を指定します。

このコマンドを実行すると、Certbotは、重要でない電子メールについて Electronic Frontier Foundation (Certbotユーティリティの開発者)と電子メールアドレスを共有するかどうかを尋ねてきます。 SSL証明書を登録するためにこれに同意する必要はないので、次のように入力します。 Y 「はい」の場合または N 続行して証明書を登録するには「いいえ」。

Certbotユーティリティが登録を完了すると、証明書ファイルが次の場所に保存されます。 /etc/letsencrypt/live/cockpit.your_domain.

コックピットには、SSL証明書を使用するためのいくつかの要件があります。

  1. 証明書ファイルには、同じファイルに証明書と秘密鍵が含まれている必要があります。
  2. この証明書とキーファイルは、 /etc/cockpit/ws-certs.d ディレクトリと終わり .cert.

そのため、コックピットで使用できるように、登録したSSL証明書を使用して証明書とキーファイルを作成する必要があります。 また、証明書が更新されたときにこのファイルを再作成するようにCertbotを構成する必要があります。

まず、次のコマンドを使用して、証明書とキーファイルを組み合わせて作成します。

  1. sudo bash -c "cat /etc/letsencrypt/live/cockpit.your_domain/fullchain.pem /etc/letsencrypt/live/cockpit.your_domain/privkey.pem >/etc/cockpit/ws-certs.d/cockpit.your_domain.cert"

あなたが使う sudo bash -c これがないとコマンドが失敗するためです。 これはリダイレクトが原因です > を持っているものとは異なるシェルで行われます sudo 権限。

The cat コマンドは、証明書とキーファイルの内容を標準出力に出力するため、この内容は次のようにリダイレクトされます。 > 新しいファイルに。

次に、Certbotが実行する更新後のスクリプトを作成します。 このスクリプトは、更新された証明書を使用して証明書とキーファイルを再作成し、コックピットサービスを再起動して使用を開始します。

でスクリプトを開きます /etc/cockpit/certificate-renewal.sh テキストエディタで:

  1. sudo nano /etc/cockpit/certificate-renewal.sh

このファイルに次のコードを追加します。

証明書-renewal.sh
#!/usr/bin/env bash

echo "Recreating Cockpit SSL Certificate"
cat /etc/letsencrypt/live/cockpit.your_domain/fullchain.pem /etc/letsencrypt/live/cockpit.your_domain/privkey.pem > /etc/cockpit/ws-certs.d/cockpit.your_domain.cert

echo "Restarting Cockpit"
systemctl restart cockpit.socket

次のように指定しました。

  • #!/usr/bin/env bash:これは shebang であり、スクリプトの実行に使用するプログラムをLinuxに指示します。 この場合、 GNUBashシェルを規定します。
  • echo:このコマンドは、次のメッセージを出力します。 証明書の更新をテストするときにこれを受け取ります。
  • cat:これは、チュートリアルの前半で認定ファイルとキーファイルを作成するために実行したコマンドと同じです。
  • systemctl restart cockpit.socket:これにより、コックピットが再起動され、新しい証明書が使用されます。

chmod で権限を変更して、この証明書を実行可能にします。

  1. sudo chmod 755 /etc/cockpit/certificate-renewal.sh

Linuxファイルのパーミッションについて不明な点がある場合は、Linuxパーミッションの概要で詳細を参照してください。

次に、SSL証明書を更新するときにこのスクリプトを実行するように、Certbotを構成します。 /etc/letsencrypt/renewal/cockpit.your_domain.conf.

このファイルをテキストエディタで開きます。

  1. sudo nano /etc/letsencrypt/renewal/cockpit.your_domain.conf

の最後に次の行を追加します [renewalparams] セクション:

cockpit.your_domain.conf
post_hook = /etc/cockpit/certificate-renewal.sh

次に、次のコマンドを使用して、新しい構成が機能していることをテストします。

  1. sudo certbot renew --dry-run

The --dry-run オプションは、Certbotに証明書の更新を実行するように指示しますが、証明書に変更を加えることはありません。 出力の下部に次の行が表示されます。

Output
Running post-hook command: /etc/cockpit/certificate-renewal.sh Output from post-hook command certificate-renewal.sh: Recreating Cockpit SSL Certificate Restarting Cockpit

これは、SSL証明書の更新が発生したときに、更新スクリプトプロセスが正しく機能していることを示しています。

最後に、コックピットを再起動してSSL証明書をロードします。

  1. sudo systemctl restart cockpit.socket

これでコックピットインスタンスが完全に構成され、ログインする準備が整いました。

ステップ3—コックピットへのアクセス

ポートでリッスンするようにコックピットインターフェイスを構成しました 9090、したがって、ブラウザに入力するURLの最後にこのポートを指定する必要があります。 コックピットインスタンスのURLは次のとおりです。

Cockpit Login URL
https://cockpit.your_domain:9090

コックピットはユーザーの個別のリストを保持しませんが、代わりにシステムのユーザーを使用します。 これらは、で作成するユーザーです。 adduser 指図。

初期設定ガイドで作成したユーザーでログインするか、同じ手順で新しいユーザーを作成することができます。

ログインフォームには、特権タスクにパスワードを再利用するというラベルの付いたチェックボックスがあります。

このオプションをチェックすると、必要なコマンドを実行できるようになります sudo ユーザーが持っている限りコックピット内 sudo アクセス権。

コックピットのインターフェースには、3つの主要な領域があります。 1つ目はリアルタイムのシステム情報ページです。 左側のナビゲーションパネルを見つけてメーターアイコンをクリックして、このページを参照します。

これをクリックすると、サーバーのCPU、メモリ、ネットワーク、およびディスクI/Oを示すリアルタイムのグラフが表示されます。

次のセクションは、詳細情報と管理セクションです。 左側のナビゲーションパネルのサーバーアイコンをクリックして、このセクションに移動します。

コックピットのこのセクションでは、ログやシステムファイルなど、システムのさまざまな側面に関する詳細情報を提供します。 ユーザーの追加と削除、システムのストレージの管理など、サーバーの一部を管理することもできます。 このセクションには、ブラウザのbashターミナルがあります。

ユーザーのコックピット設定を編集するには、インターフェースの上部にあるユーザーアイコンをクリックし、アカウント設定を選択します。 ここで、インターフェースの言語、パスワード、および電子メールアドレスを変更できます。

これで、ブラウザからコックピットインスタンスにアクセスできました。

結論

このチュートリアルでは、コックピットをインストールし、ドメインのSSL証明書を使用して接続を保護しました。 これで、ブラウザを使用して、コマンドプロンプトからリアルタイムのリソース使用状況を表示し、管理し、サーバーにアクセスできます。

公式ドキュメントを使用して、コックピットインスタンスの拡張について詳しく読むことができます。