はじめに
Linux システムにおいて、ユーザーの権限管理とアクセス制御は、システム管理とセキュリティの基本的な要素です。sudo コマンドは "superuser do" の略で、承認されたユーザーが通常はスーパーユーザーまたはルートアカウントのような高い権限でコマンドを実行できるようにします。
この実験では、Linux 環境においてユーザーに権限を付与し、制限するプロセスを案内します。ユーザーを sudo グループに追加して管理タスクを実行できるようにする方法や、特定のコマンドに対する権限を制限する方法を学びます。これらのスキルは、機密性の高い操作へのアクセスを慎重に管理する必要があるセキュアなシステムを維持するために不可欠です。
ユーザー管理と sudo の基本を理解する
このステップでは、Linux のユーザー管理と sudo コマンドの基本について学びます。新しいユーザーを作成し、そのユーザーに管理権限を付与する方法を理解します。
sudo とは何ですか?
sudo コマンドは、承認されたユーザーが他のユーザー、通常はスーパーユーザー(root)のセキュリティ権限でコマンドを実行できるようにします。これにより、root ユーザーとしてログインすることなく管理タスクを実行する方法が提供され、これはセキュリティ上のベストプラクティスとされています。
新しいユーザーの作成
まず、新しいユーザーアカウントを作成しましょう。ターミナルを開き、次のコマンドを実行します。
sudo adduser trusted_advisor
新しいユーザーのパスワードといくつかのオプション情報を入力するように求められます。この実験では、password123 のような簡単なパスワードを設定し、他のフィールドは Enter キーを押して空白のままにしておくことができます。
出力は次のようになるはずです。
Adding user `trusted_advisor' ...
Adding new group `trusted_advisor' (1001) ...
Adding new user `trusted_advisor' (1001) with group `trusted_advisor' ...
Creating home directory `/home/trusted_advisor' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for trusted_advisor
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
ユーザー情報の確認
ユーザーが正常に作成されたことを確認するには、/etc/passwd ファイルの内容を調べることができます。
grep trusted_advisor /etc/passwd
これにより、ユーザー情報を含む行が表示されるはずです。
sudo 権限の付与
ユーザーに sudo 権限を付与するには、そのユーザーを sudo グループに追加する必要があります。Ubuntu では、sudo グループのメンバーは sudo コマンドを使用できます。次のコマンドを実行します。
sudo usermod -aG sudo trusted_advisor
このコマンドは、ユーザー trusted_advisor を sudo グループ (-G sudo) に追加 (-a) します。これで、ユーザーは管理権限でコマンドを実行できるようになります。
sudo アクセスの確認
新しいユーザーが sudo アクセスを持っていることを確認するには、そのユーザーアカウントに切り替えて、通常は root ユーザーのみがアクセスできる /root ディレクトリの内容を表示してみましょう。
su - trusted_advisor
求められたら、このユーザーに設定したパスワードを入力します。次に、次のコマンドを実行します。
sudo ls /root
再度パスワードを求められます(初回の sudo 使用時)。パスワードを入力した後、/root ディレクトリの内容が表示されるはずで、これによりユーザーが sudo 権限を持っていることが確認できます。
最後に、trusted_advisor ユーザーのセッションを終了して、元のユーザーに戻ります。
exit
sudoers ファイルで sudo アクセスを制限する
このステップでは、sudoers ファイルを使用して、ユーザーの sudo 権限を特定のコマンドに制限する方法を学びます。これは最小特権の原則を実装するもので、ユーザーはタスクを実行するために必要な最小限の特権のみを持つべきであるという原則です。
sudoers ファイルの理解
/etc/sudoers ファイルは、誰が sudo コマンドを使用できるか、およびどのコマンドを実行できるかを制御します。このファイルは、通常のテキストエディタで直接編集しないでください。構文エラーがあるとシステムからロックアウトされる可能性があります。代わりに、常に visudo コマンドを使用してください。このコマンドは保存前に構文エラーをチェックします。
sudoers ファイルの編集
sudoers ファイルを安全に編集するには、visudo コマンドを使用します。
sudo visudo
これにより、sudoers ファイルがデフォルトのエディタ(通常は nano または vi)で開きます。
sudoers 構文の理解
sudoers ファイルの sudo エントリの基本構文は次の通りです。
user_or_group host=(run_as_user:run_as_group) NOPASSWD: commands
ここで:
user_or_group:このルールが適用されるユーザーまたはグループhost:このルールが適用されるホスト名(通常は ALL)run_as_user:コマンドが実行されるユーザー(通常は ALL、つまり root)run_as_group:コマンドが実行されるグループ(省略可能)NOPASSWD:パスワードを入力せずにコマンドを実行できるオプションのタグcommands:sudo で実行できる特定のコマンド
制限付き sudo アクセスの追加
ファイルの末尾までスクロールし、次の行を追加して、trusted_advisor にパスワードなしで cp と mv コマンドのみを実行する権限を付与します。
trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv
nano でファイルを保存するには、Ctrl+O を押してから Enter を押し、終了するには Ctrl+X を押します。
制限付き sudo アクセスのテスト
では、制限付き sudo アクセスが期待通りに機能するかテストしましょう。まず、現在のディレクトリにテストファイルを作成します。
echo "This is a test file" > important_file.txt
次に、trusted_advisor ユーザーに切り替えます。
su - trusted_advisor
求められたらパスワードを入力します。
ファイルをルートディレクトリにコピーしてみましょう。これは許可されているはずです。
sudo cp /home/labex/project/important_file.txt /root/
これはパスワードを求めずに成功するはずです。
次に、許可されたリストにないコマンド、たとえば cat を実行してみましょう。
sudo cat /root/important_file.txt
cat は許可されたコマンドのリストにないため、許可が拒否されるエラーが表示されるはずです。
最後に、ファイルがルートディレクトリにコピーされたことを確認します。
sudo ls /root/
出力に important_file.txt が表示されるはずです。
trusted_advisor ユーザーのセッションを終了します。
exit
テストファイルの削除
後片付けとして、テストファイルを削除します。
sudo rm important_file.txt
sudo ログとセキュリティに関する考慮事項を理解する
このステップでは、sudo のログ記録とセキュリティのベストプラクティスについて学びます。sudo の使用状況を監視することは、セキュリティと監査の目的で重要です。
sudo のログ記録
ユーザーが sudo でコマンドを実行すると、それらのアクションがログに記録されます。これにより、セキュリティ監視やトラブルシューティングに役立つ監査証跡が提供されます。
Ubuntu では、sudo のログは通常、/var/log/auth.log のシステム認証ログに保存されます。最近の sudo アクティビティを調べてみましょう。
sudo grep sudo /var/log/auth.log | tail -n 10
このコマンドは、sudo に関連する最後の 10 件のログエントリを表示します。出力には、タイムスタンプ、ユーザー名、および sudo で実行されたコマンドが含まれるはずです。
sudo のセキュリティベストプラクティス
sudo 権限を管理するためのいくつかのベストプラクティスを以下に示します。
- 最小特権の原則:ユーザーはタスクを実行するために必要な最小限の特権のみを持つべきです。
- 特定のコマンドを使用する:完全な sudo アクセスを付与する代わりに、ユーザーが実行できるコマンドを正確に指定します。
- パスワード要件を設定する:機密性の高い操作については、ユーザーが sudo を使用する際にパスワードを入力する必要があることを確認します。
- 定期的な監査:定期的に sudo ログと sudoers ファイルを確認し、適切な設定が行われていることを確認します。
- 不要なアクセスを削除する:ユーザーが昇格した特権を必要としなくなったら、すぐに sudo グループから削除します。
sudo アクセスの削除
ユーザーがもはや sudo 権限を必要としない場合、sudo グループから削除することができます。
sudo deluser trusted_advisor sudo
ユーザーがもはや sudo グループに属していないことを確認します。
groups trusted_advisor
出力のグループリストに "sudo" が含まれなくなっているはずです。
取り消された sudo アクセスのテスト
ユーザーがもはや sudo でコマンドを実行できないことを確認しましょう。
su - trusted_advisor
求められたらパスワードを入力します。
sudo でコマンドを実行してみましょう。
sudo ls /root
これで、許可が拒否されるエラーが表示されるはずです。
trusted_advisor ユーザーのセッションを終了します。
exit
sudo アクセスの再付与
この実験の目的で、ユーザーを再度 sudo グループに追加しましょう。
sudo usermod -aG sudo trusted_advisor
ユーザーが再度 sudo グループに属していることを確認します。
groups trusted_advisor
出力のグループリストに "sudo" が含まれるはずです。
まとめ
この実験では、重要な Linux ユーザー管理と特権制御の技術を学びました。以下の概念と操作に関する実践的な経験を積みました。
- ユーザーの作成:
adduserコマンドを使用して新しいユーザーアカウントを作成する方法を学びました。 - sudo 特権の付与:ユーザーを sudo グループに追加することで、ユーザーに管理者機能を付与する方法を学びました。
- sudo アクセスの制限:sudoers ファイルを使用して、ユーザーの sudo アクセスを特定のコマンドに制限することで、最小特権の原則を実践しました。
- sudo のログ記録と監視:sudo のアクティビティがどのようにログに記録されるか、およびセキュリティ上の理由からこれらのログを監視する重要性を調べました。
- sudo アクセスの管理:必要に応じてユーザーから sudo 特権を追加および削除する方法を学びました。
これらのスキルは、Linux システム管理とセキュリティにとって基本的なものです。ユーザー特権を適切に管理することで、ユーザーが必要なリソースにアクセスできる一方で、システムの整合性やセキュリティを損なうことなく、安全なシステムを維持することができます。



