セキュリティチェックポイント

はじめに

このチェックポイントは、セキュリティに関する私たちの入門記事から学んだことを評価するためのものであり、推奨されるセキュリティの実践方法や一般的に使用されるセキュリティツールを紹介しました。このチェックポイントを使用して、これらのトピックに関する知識を評価し、重要な用語やコマンドを repasoし、継続的な学習のためのリソースを見つけることができます。

クラウドアプリケーションを効率的に実行するためには、サーバーの設定時に業界推奨のセキュリティ対策を実施する必要があります。サーバーのセキュリティを確保することは、ユーザーと個人情報の保護にとって重要です。クラウドサーバー自体とウェブアプリケーションの両方に、効果的なセキュリティ対策を設定することができます。

このチェックポイントでは、サーバーのセキュリティを強化することに焦点を当てます。序文の記事から中心的なアイデアをまとめた2つのセクションがあります。キーセキュリティ用語と実践の簡単な概要、そして特定のセキュリティツールに関連するサブセクションを含むコマンドラインの使用に関するセクションです。これらのセクションは、知識をテストするのに役立つインタラクティブなコンポーネントが備わっています。このチェックポイントの最後には、コンテナについて継続的に学ぶ機会があります。

資源

  • Recommended Security Measures to Protect Your Servers
  • How To Set Up a Firewall with UFW on Ubuntu 22.04
  • How To Set Up WireGuard on Ubuntu 22.04
  • How To Set Up and Configure an OpenVPN Server on Ubuntu 22.04
  • How to Keep Ubuntu 22.04 Servers Updated
  • How To Install Suricata on Ubuntu 20.04

セキュリティとは何ですか?

クラウドサーバーを保護することで、インフラの脆弱性を管理し、潜在的な被害や悪意のある攻撃者から保護することができます。

クラウドコンピューティングのセキュリティプラクティスを理解するためには、いくつかの重要な用語に精通することが重要です。

Info

言葉の意味を理解するために、以下の用語の各定義を説明し、その後、ドロップダウン機能を使って確認してください。

暗号化
暗号化は、アルゴリズムによる情報の変換を通じて情報をエンコードするプロセスのことを指します。その後、安全な送信や保存に使用することができます。必要に応じて対称暗号化または非対称暗号化を使用して目的を達成することができます。

SSH
SSHはSecure Shellプロトコルのことで、暗号化された安全な接続を介してリモートサーバーを安全に管理することができます。SSHの暗号化と接続プロセスの詳細については、「SSHの暗号化と接続プロセスの理解」を参照してください。

ファイアウォール
ファイアウォールは、サーバーの接続を2つの主要な方法で制御します。それは、どの種類のトラフィックがサーバーにルーティングされるか、サーバーがネットワークに公開されるかを定義します。

あなたがサーバーで作業をする際には、そのサーバーがIPv4(32ビットの数値)またはIPv6(128ビットの英数字)のIPアドレスを使用しているかを知っておく必要があります。IPv4とIPv6の両方を使用することができますが、IPv6への移行をおすすめします。

サーバーの設定が完了すると、証明書の管理、識別、通信の暗号化のために公開鍵インフラストラクチャ(PKI)に参加します。TLS/SSLの暗号化は、通常、HTTPからHTTPSサーバーにアップデートするために、信頼性のある証明書機関(CA)から証明書を提供することで、追加のセキュリティレベルを提供するためによく使用されます。

Info

以下は一つのオプションです:

自己確認してください
回答を得るためにドロップダウン機能を使用してください。

TLSハンドシェイクとは何ですか?
TLS(Transport Layer Security)とは、ウェブトラフィックのための暗号化プロトコルです。TLSハンドシェイクでは、クライアントとサーバーがメッセージを交換し、メッセージが正当な送信元から来たものであることを確認し、情報の安全な転送のための暗号化方式(暗号スイート)を決定します。

TLSハンドシェイクと共有鍵暗号化とは何が異なりますか?
TLSプロトコルでは、非対称暗号として知られる公開鍵と秘密鍵の暗号方式を使用します。このプロセスでは、鍵のペアが存在します。
一方、共有鍵暗号化では、送信者と受信者の両方がメッセージを復号するために同じ鍵暗号方式を使用します。このプロセスは対称暗号化と呼ばれ、単一の鍵が使用されます。

以下の文章を日本語で言い換えると、次のようになります。

「無料のTLS/SSL証明書を取得するために、証明機関としてLet’s Encryptを使用することができます。また、自己署名証明書も生成することができます。ただし、自己署名証明書ではユーザーに対してサーバーの正当性を検証することはできませんので、商業的な証明機関からSSL証明書をインストールすることをおすすめします。」

以下のセクションでは、SSHを使用してサーバーに接続するための基本的な原則、VPNの実行、ファイアウォールの使用、およびネットワークセキュリティの監視について確認します。

SSHに接続する

「クラウドサーバーの入門シリーズの中で紹介されたSSH Essentialsの記事では、SSHキーペアを生成しました。そのキーペアは非対称暗号化方式を使用しており、秘密鍵と公開鍵の両方を生成します。このキーペアを使用して、初期のサーバーセットアップで非管理者ユーザーとしてサーバーにアクセスしました。」

Info

自己確認してください
回答を取得するためにドロップダウン機能を使用してください。

SSH鍵は通常どこに保存されていますか?
~/.ssh/authorized_keysフォルダに保存されます。

SSH、HTTP、およびHTTPSは通常どのポートで実行されますか?
SSHは通常ポート22で実行されます。
HTTP/HTTPSはそれぞれポート80と443で実行されます。

デフォルトのポートアクセスをどのように変更できますか?
SSHのポートアクセスを更新するには、サーバのsshd_configファイルでPort 22の指定を使用しないポートに変更し、SSHデーモンを再起動します。
SSHのポートを変更した場合、リモートサーバにログインするたびに新しいポートを指定する必要があります。

サーバーの追加の保護のために、OpenSSHとOpenSSHクライアントを強化することができます。サーバーサイドとクライアントサイドの両方でOpenSSHを強化することで、サーバーへのリモートアクセスのセキュリティを向上させることができます。

SSHを使用するには、ファイアウォールでSSHアクセスを設定する必要があります。

ファイアウォールを使用する

ファイアウォールは、サーバーの内外のトラフィックを制御し、必要に応じて設定することができます。効果的なファイアウォールポリシーを選ぶ際は、サーバーに望むポリシーの種類や異なるファイアウォールプログラムが要求にどのように応答するかを考慮する必要があります。

一部の一般的に使用されるファイアウォールのプログラムには、Uncomplicated Firewall (UFW) と firewalld があります。これらはいずれも iptables や nftables との高レベルのインターフェースとして動作します。もしUbuntuやDebianのディストリビューションを使用している場合、システムには事前にUFWが組み込まれているため、UFWを使用することがより一般的です。CentOSやRocky Linuxを使用している場合、firewalldを使用する可能性が高いです。iptablesについて詳しく知りたい場合は、当社の記事「Iptablesファイアウォールの動作方法」と「Iptables Essentials:一般的なファイアウォールのルールとコマンド」を参照してください。

ファイアウォールの設定時には、IPv4とIPv6の両方を使うことができますが、IPv6を管理するためにファイアウォールを更新する必要があるかもしれません。たとえば、UFWはデフォルトではIPv4のみを管理し、IPv6のルールを書くために手動で設定する必要があります。

VPNを実行する

VPN(バーチャルプライベートネットワーク)は、インターネットに接続するための暗号化されたトンネルを提供し、開発者と消費者の両方にとって有益です。開発者にとっては、VPNを使用することで、様々な場所から独自のインフラにアクセスできるため、センシティブなポートを開放する必要がありません。一方、消費者にとっては、VPNを使用することで、信頼できないネットワーク(例:カフェや図書館のWi-Fi)に接続している場合でも、安全にインターネットにアクセスできます。

Info

自己確認

VPCとVPNの違いは何ですか?
VPCは、リソース用のプライベートなネットワークインターフェースである、Virtual Private Cloudネットワークを指します。VPC内のリソースは、内部ネットワークを介してのみ相互接続でき、インターネットからのアクセスは設定されていない限りはできません。VPCは必要に応じてスケーリングが可能であり、ワークロード管理やセキュアな接続において利点を提供します。
VPN、または仮想プライベートネットワークは、リモートコンピュータ間をインターネット上でローカルプライベートネットワーク上のようにシミュレートします。VPNは共有ネットワーク情報への安全なゲートウェイを提供します。

WireGuardとOpenVPNは、一般的に利用されるVPNソリューションの2つです。私たちの入門記事では、WireGuardのVPNとOpenVPNサーバーの設定を行いました。

ネットワークを設定した後、VPNを使用するかどうかにかかわらず、安全かつ持続可能なプロセスを確保するために、システムの長期的な管理が必要です。

ネットワークセキュリティの管理

サーバー設定の構築は安全なプラクティスを保証するための多くのステップの一つです。サーバーを最新の状態に保ち、ネットワークの強化を行い、ネットワークセキュリティのモニタリングを行うことでサーバーを維持することができます。

Ubuntuサーバーを最新の状態に保つためには、systemdの設定ファイルを更新したり、自動再起動のためにcronジョブを予約することがおすすめです。また、unattended-upgradesサービスをsystemctlで管理できるパッケージマネージャーを設定することで、自動的にアップデートを完了させることもできます。Rocky Linuxサーバーを実行することを好む場合は、弊社の「Rocky Linux 9サーバーを最新の状態に保つ方法」ガイドを参照してください。

システム全体のバグや脆弱性を修正するために、時にはカーネルレベルでのアップデートが必要になることがあります。aptのunattended-upgradesツールを実行することもできますが、システムに一時的なダウンタイムが生じるかもしれません。常に稼働時間を確保する必要がある場合は、負荷分散装置を使用して、異なるサーバーがカーネルのアップデートを実行する間、トラフィックをリダイレクトすることができます。また、Canonical LivepatchサービスやKernelcareのようなライブパッチングサービスをバックグラウンドで実行することもできます。

ネットワークトラフィックのスキャンや監視もできます。脆弱性や不審なパケットを探し出します。ネットワーク監視システムとしてSuricataをインストールし、サービスが管理するためのルールセットを定義しました。

サーバーへの接続と管理は、セキュリティに関するこれらの記事で使用したコマンドラインを通じてよく行われます。

コマンドラインを使用する。

私たちのクラウドサーバーの解説記事でLinuxコマンドラインの使用を始め、WEBサーバーの解決策記事でWEBサーバーを構成し、データベースについての記事でデータベースを管理し、コンテナに関する記事でコンテナの設定を行いました。

セキュリティ手法の導入において、次のようなコマンドを通じてコマンドラインについての理解を深めてきました。

  • add-apt-repository as your sudo-enabled user to add software repository information to your server.
  • cat to output a file’s content to the terminal.
  • chmod to change file permissions.
  • cp to copy files on one server and scp to copy files between servers.
  • cut to remove a section of a file, using the -c option to cut the specified string).
  • date to output a timestamp, using the +%s%N options to output seconds (%s) and minutes (%N).
  • grep to search text and strings in a specified file.
  • jq to read and filter entries as specified by the command syntax.
  • kill as your sudo-enabled user to specify a signal by which a service should be stopped.
  • ln with the -s option to create a symlink between files.
  • printf to display a given string.
  • sha1sum to print and check a checksum.
  • ss to list all TCP/UDP ports in use, paired with the -plunt options for additional information.
  • sysctl as your sudo-user to configure kernel parameters and load new values for your terminal session.
  • systemctl to manage services, including OpenVPN as a systemd service and Suricata as a networking monitoring package.
  • resolvectl dns to identify the DNS resolvers used by your server.
  • tail to output lines from a file specified with the -f option.
  • tee as your sudo-user to redirect an output into a new file.

ネイティブに日本語で言い換えると、以下のようになります:
ネットワークインターフェースの設定には、ipコマンドおよび関連するサブコマンドを使用しました。

  • ip addr to look up your network interfaces. You then used the output with the ufw allow command to enable incoming traffic via the selected network interface.
  • ip address show to find the public IP address for the system.
  • ip route to find the public network interface.

もしもあなたがUbuntuサーバーのカーネルレベルのアップデートのためにライブパッチングサービスを実行することを選択したならば、sudo権限を持つユーザーとしてcanonical-livepatchサービスのサブコマンドを実行しました。

  • canonical-livepatch enable your-key to enable the tool.
  • canonical-livepatch status to check the status of the background service.

あなたはまた、複数のコマンドをつなげるためにパイプ演算子(|)も使用しました。

コマンドラインからのUFWの実行

「初期サーバーセットアップでは、Uncomplicated Firewallを使用して基本的なファイアウォールを設定しました。その後、sudo権限を使用して、Ubuntu 22.04でUFWを使用したファイアウォールの設定方法において、さまざまなサブコマンドを使用してファイアウォールを変更しました。」

  • ufw default deny incoming to deny all incoming connections (this is the default state).
  • ufw default allow outgoing to allow all outgoing connections (this is the default state).
  • ufw allow ssh to allow incoming SSH connections on port 22, such as when you wish to manage a remote server.
  • ufw allow port_number to specify a port for incoming connections.
  • ufw enable to make the firewall active.
  • ufw status to check the status of your firewall and ufw status verbose to see all the rules that are set.
  • ufw allow http or ufw allow 80 to allow incoming connections from unencrypted web servers over HTTP.
  • ufw allow https or ufw allow 443 to allow incoming connections from unencrypted web servers over HTTPs.
  • ufw allow port_number:port_number/tcp and ufw allow port_number:port_number/udp to allow a range of ports, specifying the TCP/UDP protocols.
  • ufw allow from your_ip_address to allow connects from a specific IP address. You can add to any port port_number to direct the IP address to a specific port.
  • subnets
  • ufw deny http to deny HTTP connections and ufw deny from your_ip_address to deny all connections from a specific IP address.
  • ufw status numbered to generate a numbered list of firewall rules.
  • ufw delete to delete rules, using a list number or using the allow rule (such as ufw delete allow http).
  • ufw disable to deactivate all rules you have created.
  • ufw reset to disable UFW and delete any rules you created.

UFWのセットアップについては、UFW Essentials: Common Firewall Rules and Commandsという記事を参考にして作業を続けることができます。

コマンドラインからVPNを実行する

ファイアウォールの設定に加えて、あなたはWireGuardとOpenVPNという2つの異なるVPNツールも管理しました。

WireGuard VPNを設定する際、WireGuardサーバーとその相手サーバーの両方に以下のWireGuardコマンドを実行しました。

  • wg to manage your WireGuard server.
  • wg genkey and wg pubkey to create a private and public key pair for a WireGuard server.
  • wg set with an allowed-ips settings and a list of specific IP addresses to manage access to your WireGuard VPN.
  • wg-quick establish your VPN connection manually with the up argument to start the tunnel and the down argument to disconnect from the VPN.

OpenVPNサーバーを設定する際に、認証証明書を検証するCAサーバーとOpenVPNサーバーに一連の修正されたスクリプトを実行し、tls-cryptディレクティブなどの設定ディレクティブを設定して、暗号通信の向上を図りました。

これらの記事とベストプラクティスによって、クラウドサーバーを守るための基礎を把握することができました。

次は何ですか?

これらの記事では、クラウドサーバーのセキュリティ対策を紹介しています。クラウドサーバーに堅牢なセキュリティ対策を構築するためのベストプラクティスやよく使われるツールについて学びました。インフラストラクチャが安全なベースの設定で始まるようにするために、暗号化、プライベートネットワーキング、セキュリティモニタリング、およびサービス監査に関して、業界のベストプラクティスに従い続けることができます。

次に、サーバーのセキュリティをさらに強化するために、以下のチュートリアルを試してみてください。

  • How To Set Up a Firewall Using firewalld on Rocky Linux 9
  • How to Configure a vServer as a VPC Gateway
  • How To Set Up and Configure a Certificate Authority (CA)
  • How To Harden OpenSSH Client on Ubuntu 20.04

これらのチュートリアルを使えば、システム内でファイルを転送することができます。

  • How To Use SFTP to Securely Transfer Files with a Remote Server
  • How To Use Rsync to Sync Local and Remote Directories

デジタルオーシャンのKubernetesクラスタにセキュリティの実施方法を導入したい場合は、次のチュートリアルを試してみてください。

  • Recommended Steps to Secure a Silicon Cloud Kubernetes Cluster
  • How To Set Up an Nginx Ingress on Silicon Cloud Kubernetes Using Helm
  • How To Secure Your Site in Kubernetes with cert-manager, Traefik, and Let’s Encrypt

もしまだインストールしていなければ、サーバーに関連付けられたドメインのために商用証明書認証局からSSL証明書をインストールすることもできます。

セキュリティの新たな知識を持っているあなたは、クラウドの道を続ける準備ができています。まだご覧になっていない場合は、クラウドサーバー、Webサーバー、データベース、そしてコンテナに関する私たちの入門記事をチェックしてください。

コメントを残す 0

Your email address will not be published. Required fields are marked *