Linux のパスワード変更

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

パスワード管理は、Linux 環境におけるシステムセキュリティの維持において重要な側面です。システム管理者は、ユーザーアカウントと機密データを不正アクセスから保護するために、安全なパスワードポリシーを作成して適用する方法を理解する必要があります。

この実験では、passwd コマンドを使用してユーザーパスワードを変更し、基本的なパスワードポリシーを実装する方法を学びます。これらの基本的なスキルは、Linux システムを扱うすべての人にとって、特にユーザーアカウント管理とシステムセキュリティに関わる役割において不可欠です。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/UserandGroupManagementGroup -.-> linux/useradd("User Adding") linux/UserandGroupManagementGroup -.-> linux/passwd("Password Changing") linux/UserandGroupManagementGroup -.-> linux/id("User/Group ID Displaying") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/chmod -.-> lab-271347{{"Linux のパスワード変更"}} linux/cd -.-> lab-271347{{"Linux のパスワード変更"}} linux/grep -.-> lab-271347{{"Linux のパスワード変更"}} linux/useradd -.-> lab-271347{{"Linux のパスワード変更"}} linux/passwd -.-> lab-271347{{"Linux のパスワード変更"}} linux/id -.-> lab-271347{{"Linux のパスワード変更"}} linux/nano -.-> lab-271347{{"Linux のパスワード変更"}} end

passwd コマンドの理解

Linux システムでは、passwd コマンドはユーザーパスワードを変更するために使用されます。このコマンドを使うと、ユーザーは自分自身のパスワードを変更でき、システム管理者はシステム上の任意のアカウントのパスワードを変更することができます。

新しいユーザーの作成

まず、パスワード管理の練習に使用できる新しいユーザーを作成しましょう。ターミナルを開き、デフォルトの作業ディレクトリにいることを確認します。

cd ~/project

次に、useradd コマンドを使用して cyberuser という名前の新しいユーザーを作成します。

sudo useradd cyberuser

このコマンドは新しいユーザーアカウントを作成しますが、パスワードは設定されません。パスワードを指定せずにユーザーを作成すると、アカウントは通常デフォルトでロックされます。

id コマンドを使用してユーザーが作成されたことを確認できます。

id cyberuser

次のような出力が表示されるはずです。

uid=1001(cyberuser) gid=1001(cyberuser) groups=1001(cyberuser)

新しいユーザーのパスワード設定

新しいユーザーを作成したので、passwd コマンドを使用してこのアカウントにパスワードを設定しましょう。

sudo passwd cyberuser

このコマンドを実行すると、新しいパスワードを確認のために 2 回入力するように促されます。

New password:
Retype new password:
passwd: password updated successfully

促されたら、好きなパスワードを入力します。セキュリティ上の理由から、入力したパスワードは画面に表示されません。

passwd コマンドは指定されたユーザーアカウントのパスワードを更新します。sudo 権限で実行すると、システム上の任意のユーザーのパスワードを変更できます。

パスワード情報の表示

ユーザーのパスワードに関する情報(最後に変更された日など)を表示するには、chage -l コマンドの後にユーザー名を指定します。

sudo chage -l cyberuser

このコマンドは、ユーザーのパスワードの有効期限や失効ポリシーに関する情報を表示します。出力は次のようになります。

Last password change                                    : Jul 15, 2023
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

この情報は、ユーザーアカウントに適用されている現在のパスワードポリシーを理解するのに役立ちます。

Linuxにおけるパスワードファイルの理解

Linuxでは、パスワード情報はいくつかの重要なシステムファイルに保存されています。これらのファイルを理解することで、管理者はユーザーアカウントを効果的に管理することができます。

パスワード関連ファイルの探索

プロジェクトディレクトリに移動します。

cd ~/project

パスワードとユーザーアカウント情報を保存している主要なファイルを調べてみましょう。

  1. まず、基本的なユーザーアカウント情報を含む /etc/passwd ファイルを見てみましょう。
grep cyberuser /etc/passwd

次のような出力が表示されるはずです。

cyberuser:x:1001:1001::/home/cyberuser:/bin/sh

この行はコロンで区切られたいくつかのフィールドを含んでいます。

  • ユーザー名: cyberuser
  • パスワードプレースホルダ: x (実際のパスワードは /etc/shadow に保存されています)
  • ユーザーID (UID): 1001
  • グループID (GID): 1001
  • ユーザー情報フィールド: (この場合は空)
  • ホームディレクトリ: /home/cyberuser
  • デフォルトシェル: /bin/sh
  1. 次に、暗号化されたパスワード情報を含むシャドウパスワードファイルを調べてみましょう。
sudo grep cyberuser /etc/shadow

出力には暗号化されたパスワードと関連情報が表示されます。

cyberuser:$6$xxxxxxxxxxxxxxxxxxx:19189:0:99999:7:::

この行のフィールドには以下のものが含まれます。

  • ユーザー名
  • 暗号化されたパスワード
  • パスワードが最後に変更された日 (1970年1月1日からの日数)
  • パスワードを変更できるまでの日数
  • パスワードを変更しなければならない日数
  • パスワードの有効期限が切れる前にユーザーに警告する日数
  • パスワードの有効期限が切れてからアカウントが無効になるまでの日数
  • アカウントが無効になった日 (1970年1月1日からの日数)
  • 予約済みフィールド

この情報は、Linuxシステムでパスワードセキュリティがどのように実装されているかを理解するために重要です。

パスワードポリシーの適用

Linuxには、パスワードポリシーを適用するためのいくつかのツールが用意されています。これらのツールは、ユーザーが強力なパスワードを選択することを保証することで、システムのセキュリティを維持するのに役立ちます。このステップでは、基本的なパスワードポリシーを実装する方法を学びます。

パスワードの有効期限の設定

chage コマンドを使用すると、管理者はパスワードの有効期限ポリシーを設定できます。プロジェクトディレクトリに移動します。

cd ~/project

cyberuser アカウントのパスワードの最大有効期限を90日に設定しましょう。

sudo chage -M 90 cyberuser

このコマンドは、ユーザーがパスワードを変更する必要があるまでの最大日数を設定します。

また、パスワードの最小有効期限を設定することもできます。これにより、ユーザーがパスワードを頻繁に変更することを防ぎます。

sudo chage -m 7 cyberuser

このコマンドは、ユーザーが再度パスワードを変更する前に少なくとも7日間待つことを要求します。

行った変更を確認します。

sudo chage -l cyberuser

更新されたパスワードポリシー情報が表示されるはずです。

Last password change                                    : Jul 15, 2023
Password expires                                        : Oct 13, 2023
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 7
Maximum number of days between password change          : 90
Number of days of warning before password expires       : 7

パスワードポリシースクリプトの作成

次に、より高度なパスワードポリシーを実装するスクリプトを作成しましょう。cyberpolicy.sh という名前の新しいファイルを作成します。

nano ~/project/cyberpolicy.sh

ファイルに以下の内容を追加します。

#!/bin/bash

## Enforce password complexity
echo "password requisite pam_pwquality.so retry=3 minlen=8 difok=3" | sudo tee -a /etc/pam.d/common-password

## Set password expiration policy for all new users
echo "PASS_MAX_DAYS   90" | sudo tee -a /etc/login.defs
echo "PASS_MIN_DAYS   7" | sudo tee -a /etc/login.defs
echo "PASS_WARN_AGE   7" | sudo tee -a /etc/login.defs

echo "Password policy has been updated successfully."

Ctrl+O を押してから Enter を押してファイルを保存し、Ctrl+X でnanoを終了します。

スクリプトを実行可能にします。

chmod +x ~/project/cyberpolicy.sh

このスクリプトは以下のパスワードポリシーを設定します。

  • パスワードの複雑性: 最小8文字、前のパスワードと少なくとも3文字異なり、3回の再試行が許可される
  • パスワードの有効期限: 最大90日
  • パスワード変更制限: 最小7日
  • パスワード警告: パスワードの有効期限が切れる7日前

本番環境では、このスクリプトを実行してこれらのポリシーを適用します。ただし、この実験では、パスワードポリシーがどのように実装されるかを理解するために、内容を確認するだけにします。

まとめ

この実験では、Linuxシステムにおけるパスワード管理の基本的なスキルを学びました。以下のことを練習しました。

  1. useradd コマンドを使用して新しいユーザーアカウントを作成する
  2. passwd コマンドを使用してパスワードを設定および変更する
  3. /etc/passwd/etc/shadow などのシステムファイルでパスワード情報を表示する
  4. chage コマンドを使用してパスワードの有効期限ポリシーを設定する
  5. パスワードの複雑性と有効期限ポリシーを適用するスクリプトを作成する

これらのスキルは、適切なパスワード管理手法を実施してセキュアなシステムを維持する必要があるシステム管理者にとって基本的なものです。強力なパスワードポリシーを適用する方法を理解することで、Linuxシステムのセキュリティを大幅に向上させ、不正アクセスから保護することができます。

学習を続けるにあたって、PAM (Pluggable Authentication Modules) の設定、多要素認証の実装、企業環境におけるユーザーアカウント管理の自動化などのトピックを探索することを検討してください。