0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linuxアカウントおよびパスワードのセキュリティ対策

Last updated at Posted at 2025-05-22

アカウント管理について

超基礎

/etc/passwdでデフォルトおよび作成したアカウントは管理されている。
/etc/shadowにパスワードがハッシュ化されて記載されている。

アカウントの作成・削除・ロック

アカウントの作成

bash
$sudo useradd -m -g "グループ" -s "ログインシェル" -d "ホームディレクトリ" -p $(openssl passwd "パスワード") "ユーザー名"
オプション(注意事項あり)
オプション 概要
-m ホームディレクトリ作成 -m
-d ホームディレクトリの指定 -d /home/user01
-s ログインシェルの指定 -s /bin/bash
-u ユーザIDを指定 -u 1500
-g プライマリグループの作成 -g group01
-e アカウントの有効期限 -e 2025-12-31
-r システムユーザとして作成 -r
-p 暗号化済みのパスワード指定 -p $(openssl passwd password)

"-p"オプションはセキュリティ上非推奨(下記参照)

このオプションの引数に渡すのは「ハッシュ化されたパスワード」です。

非推奨の理由

  • コマンド履歴~/.bash_historyに平文がのこってしまう
  • 実行中にps auxで他のユーザーから見えてしまう

推奨

useraddコマンド上ではパスワードをせずにpasswdコマンドを使用する

command
$sudo useradd -m -s /bin/bash user01
$sudo passwd user01

アカウントの削除

bash
sudo userdel -r "ユーザー名"
オプション
オプション 概要
-r ユーザのホームディレクトリごと削除 -r
-f ログイン中でもマウント中でも強制削除 -f

アカウントのロック

方法1(passwdコマンド)

bash
$sudo passwd -l "ユーザー名"
オプション
オプション 概要
-l アカウントのロック -l
-u ロック解除 -u
ロック確認

/etc/shadowの対象ユーザが以下のように!!(エクスクラメーションが2つ)表示されていればロックされている

bash
user1:!!$6$adfsaf7ds858s9d.$fsvHgyiY8YR6...(以降略)

方法2(usermodコマンド)

bash
$sudo usermod -L "ユーザー名"
オプション(infoあり)
オプション 概要
-L アカウントのロック -L
-U ロック解除 -U
-s ログインシェルの変更 -s /sbin/nologin

通常のpasswdusermodによるロックだとsuコマンドでの切り替えは行えてしまう。
ログインシェルの変更が一番安全だと思われる。

ロック確認

/etc/shadowの対象ユーザが以下のように!(エクスクラメーションが1つ)表示されていればロックされている

/bash
$sudo getent shadow user01
user1:!$6$adfsaf7ds858s9d.$fsvHgyiY8YR6...(以降略)

パスワード管理について

/etc/shadowについて

shadowファイルはハッシュ化されたパスワードが格納されています
ハッシュの種類についてはで囲まれた中の数字を見れば判断できる

bash
$sudo getent shadow user01
user1:!$6$adfsaf7ds858s9d.$fsvHgyiY8YR6...(以降略)
ハッシュの種類一覧
数字 ハッシュアルゴリズム
1 MD5
$5$ SHA256
$6$ SHA512

パスワードの詳細設定

デフォルト値

新規アカウント作成時に/etc/default/useradd/etc/login.defs/etc/pam.d/system-auth及び/etc/security/pwquality.confのデータをもとにパスワードの詳細設定がなされます。

/etc/default/useradd
項目 説明
GROUP ユーザ作成時のグループID
HOME ホームディレクトリ
INACTIVE パスワード使用期限が過ぎてから、BANまでの猶予日数
EXPIRE アカウント失効日
SHELL ログインシェル
SKEL ファイルの雛形があるディレクトリ
CREATE_MAIL_SPOOL メールスプールの作成
/etc/login.defs
項目 説明
PASS_ALWAYS_WARN パスワードが弱いときの警告の有無
PASS_MAX_DAYS 同じパスワードが使い続けられる最大日数
PASS_MIN_DAYS パスワード変更間隔の最短日数
PASS_WARN_AGE パスワード変更期限の何日前から警告をだすか
/etc/pam.d/system-auth
項目 説明
minlen パスワードの最小文字数
remenber 過去何世代と異なるものにするか
deny 入力を何回間違えたらアカウントロックするか
unlock_time アカウントロックする時間(秒)
miniclass パスワードに最低限含めるべき文字の種類
maxsequence '12345', 'abcde'などの連続した並びが何文字以上続いたらパスワードを破棄するかを指定
/etc/security/pwquality.conf
項目 説明
difok 過去何世代と異なるものにするか
minlen パスワードの最小文字数
dcredit パスワードに含むべき数字の数(負数で指定)
ucredit パスワードに含むべきアルファベットの大文字の数(負数で指定)
lcredit パスワードに含むべきアルファベットの小文字の数(負数で指定)
ocredit パスワードに含むべき数字・アルファベット以外の数(負数で指定)
dictcheck cracklibの辞書に存在するパスワードを設定不可に(1:有効)

ユーザ毎にパスワード設定する方法

ユーザ毎にパスワードの詳細設定をするにはchageコマンドを使用します

bash
$chage -l user01
オプション
オプション 概要
-l ユーザのパスワード情報一覧 -l user01
-m パスワード変更最短日数 -m 60
-M パスワードの有効期限 -M 60
-W 有効期限前の警告開始日数 -W 5
-I パスワード期限切れ後の無効化猶予日数 -I 3
-E アカウントの有効期限 -E 2025/12/25
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?