banner
xingli

xingli

猫娘爱好者

linuxセキュリティ

Linux ユーザーの追加と権限昇格#

サーバーを取得したばかりの場合、通常は root ユーザーのログインを無効にし、他の一般ユーザーを使用します。そのために新しいユーザーを作成する必要があります。

ユーザーの追加#

新しいユーザーを作成します。

$ useradd  boo

パスワードを設定します。

$ passwd  boo

権限昇格#

この時点で、ユーザーは正常に使用できるようになりましたが、まだ権限昇格が行われていないため、多くの作業ができません。そのため、このユーザーをsudoグループに追加し、sudoコマンドを使用して権限昇格を行うことができます。

$ usermod  -G  sudo  boo

通常、これで正常に追加されますが、一部のディストリビューションではデフォルトでsudoグループが存在しないため、まずユーザーグループを追加する必要があります。

image-20230125133746199

$ groupadd  sudo

上記の図は、sudoユーザーグループを持つ Linux ディストリビューションのvisudo設定ファイルです。

ユーザーグループを手動で追加した後、sudoers設定ファイルを変更する必要があります。これにはいくつかの方法がありますので、状況に応じて選択してください。

  1. sudoグループのメンバーに任意のコマンドを実行する権限を与える
$ sudo  visudo  // または sudo  vim  /etc/sudoers

// 以下の内容を追加

# the 'sudo' group has all the sudo privileges
%sudo ALL=(ALL:ALL) ALL
  1. 特定のユーザーに任意のコマンドを実行する権限を直接与える
$ sudo  visudo

// 以下の内容を追加(注意:%はありません)
# Allow boo to run any commands anywhere
boo ALL=(ALL:ALL) ALL

通常、ユーザーをsudoユーザーグループに追加し、sudoグループのメンバーに権限を与えることをお勧めします。特定のユーザーに直接権限を与える代わりに。

まとめ#

すべてのユーザーのリストを表示する:

$ cat  /etc/passwd

すべてのユーザーグループを表示する:

$ cat  /etc/group

現在のログインユーザーのグループを表示する:

$ groups

指定したユーザーが所属するグループを表示する:

$ groups  usernmae

ユーザーを追加する:

$ useradd  username

パスワードを設定(リセット)する:

$ passwd  username

ユーザーグループを追加する:

$ groupadd  group_name

特定のユーザーを特定のグループに追加する:

$ usermod  -G  group_name  username

visudo 設定ファイルを編集する:

$ sudo  visudo

root ユーザーのログインを無効にする#

1. root ユーザーのシェルを変更する#

root ユーザーのログインを無効にする最も簡単な方法は、そのシェルを /bin/bash または /bin/bash(またはユーザーログインを許可する他のシェル)から /sbin/nologin に変更することです。/etc/passwd ファイルで、お好きなコマンドラインエディタを使用してファイルを開きます。

> vim /etc/passwd

次の行を変更します。

root:x:0:0:root:/root:/bin/bash
to
root:x:0:0:root:/root:/sbin/nologin

root ユーザーがログインすると、This account is currently not available というメッセージが表示されます。これはデフォルトのメッセージですが、/etc/nologin.txt ファイルにカスタムメッセージを設定することもできます。

この方法は、sudo、ftp、およびメールクライアントなど、ユーザーシェルを必要とするプログラムにのみ有効です。

2. コンソールデバイス(TTY)を使用して root ログインを無効にする#

2 番目の方法は、PAM モジュールを使用して pam_securetty を呼び出すことで、ユーザーが secure TTY にログインした場合にのみ適用されます。securetty で定義されているリストのような TTY に root ユーザーのログインを許可するためのファイル /etc/securetty。

上記のファイルでは、root ユーザーがシステム上のどのデバイスに対してもログインできないようにするため、このファイルを空にすることができます。

空のファイルを作成します。

> mv /etc/securetty /etc/securetty.orig
> touch /etc/securetty
> chmod 600 /etc/securetty

この方法には制限があり、ログイン、ディスプレイマネージャー(gdm、kdm、xdm など)、および他の起動 TTY のネットワークサービスにのみ影響を与えます。su、sudo、ssh などのプログラムやその他の関連するオープンシェルツールは引き続き root アカウントにアクセスできます。

3. Sshell Root ログインを無効にする#

リモートサーバーや VPS へのアクセスの最も一般的な方法は、Sshell を使用して root ユーザーのログインをブロックすることです。/etc/ssh/sshd_config ファイルを編集する必要があります。

image-20230125133357020

> vim /etc/ssh/sshd_config

次に、PermitRootLogin(コメントアウトされている場合)をコメント解除し、その値を no に設定します。

変更が完了したら、ファイルを保存して閉じます。その後、最新の設定変更を適用するために ssh デーモンを再起動します。

> systemctl restart sshd
OR
> service sshd restart

この方法は、openshell ツールセットにのみ影響を与え、ssh、scp、sftp などのプログラムが root アカウントにアクセスできなくなります。

4. PAM を使用してサービスへの root アクセスを制限する#

Pluggable Authentication Modules(PAM)は、Linux システム上での集中認証のための柔軟でモジュール化された方法です。PAM は、/lib/security/pam_listfile.so モジュールを使用して、特定のサービス(ログイン、ssh など)へのログインを許可しないユーザーリストを参照するための非常に柔軟な方法を提供します。

上記のモジュールは、ログインおよび sshd サービスへのアクセスを制限するために使用できます。まず、対象のサービスのファイルを開いて編集します。/etc/pam.d/ ディレクトリ内のファイルを参照してください。

> vim /etc/pam.d/login
OR
sudo vim /etc/pam.d/sshd

次に、両方のファイルに次の設定を追加します。

auth required pam_listfile.so \
onerr=succeed item=user sense=deny file=/etc/sshd/deniedusers

変更が完了したら、各ファイルを保存して閉じます。次に、純粋なファイル /etc/sshd/deniedusers を作成します。各行には 1 つの項目を含める必要があり、世界から読み取り可能ではありません。

その中に root という名前を追加し、保存して閉じます。

> vim /etc/sshd/deniedusers

また、必要なアクセス許可を設定する必要があります。

> chmod 600 /etc/sshd/deniedusers

この方法は、PAM をサポートしているプログラムとサービスにのみ影響を与えます。ftp やメールクライアントなど、システムへの root アクセスをブロックすることができます。

詳細については、関連するマニュアルページを参照してください。

$ man pam_securetty
$ man sshd_config
$ man pam
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。