rootアカウントの推奨される使用方法
- rootを管理者個人のアカウントとして使用しない。(常用しない)
- 運用時はrootで直接ログインせず、一般ユーザーでログインし作業をする。
- root権限が必要な時は
su
で権限昇格し作業を行う。(su
コマンドについても権限を厳しく行う)
1. 3よりもセキュリティレベルを向上させる手段として、su
を全面的に禁止し、sudo root
を特定のユーザーのみ行えるようにする。
今回はrootアカウントに対して様々な制限を行っていきます
ローカルログイン制限
/etc/pam.d/login
ファイルに対してpam_securetty.so
を設定
以下の行を追加する
auth required pam_securetty.so
pam_securetty,so
は/etc/securetty
を読み込み、ファイル内に書かれている端末(例:tty1)からのrootログインを許可する
SSHログイン制限
一般的にリモートログイン用に、OpenSSH(sshd)がインストールされており、デフォルトではrootログインが許可されていますが、サーバ運用時にはセキュリティ的に禁止にすべきです。
ParmitRootLogin=yes
↓
PermitRootLogin=no
設定変更後はsshdを再起動します
$ sudo systemctl restart sshd
su
コマンドの制限
今回はLinuxデフォルトのwheel
グループを使用して制限していきます。
1 wheel
グループ以外はsu
コマンド使用不可にする
#auth ewquired pam_wheel.so use_uid
↓ #を外す
auth ewquired pam_wheel.so use_uid
2 su
コマンドを使用させるユーザをwheel
グループに追加する
usermod -aG wheel user01
su
コマンドのログは以下で確認可能
$ journalctl /usr/bin/su
又は、
$ grep "su" /var/log/secure
sudo
コマンドの制限
sudo
コマンドはsu
代替として使用できコマンドです。不適切な権限の不利かたをするととても危険な状態に陥ります
【su
とsudo
の違い】
su | sudo | |
---|---|---|
設定の範囲 | ユーザ単位 | ユーザ単位、コマンド単位 |
入力するパスワード | rootのパスワード | ユーザのパスワード |
0 設定ファイル
sudo
コマンドの全体の設定ファイルは/etc/sudoers
です。
書き込む際の書式は
ユーザー名 ホスト名=(実行設定ユーザ名) コマンド
各項目の書式
項目 | 概要 | 書式 |
---|---|---|
ユーザ名 | コマンドの実行を許可するユーザ、グループの指定 | user01,%gp01,#uid,ALL |
ホスト名 | 実行を許可するホスト | host.com,8.8.8.8,8.8.8.0/24,ALL |
実行設定ユーザ名 | コマンド実行時のユーザ設定を指定 | user01,%gp01,#uid,ALL |
コマンド | 実行を許可するコマンドの指定 | /usr/bin/passwd |
1 デフォルトの設定
デフォルトの設定として、以下のようにwheel
グループはすべての権限が与えられている。
%wheel ALL=(ALL) ALL
2 個別設定
ここでは例としてuser01
にsudo
コマンドは使えるがsudo passwd root
は使えないように設定する。
$ echo 'user01 ALL=(ALL) NOPASSWD:ALL,!/usr/bin/passwd root' >> /etc/sudoers/user01
$ chmod 440 /etc/sudoers.d/user01
このコマンドで設定することができる。
/etc/sudoers
に直接書き込むコマンドとして、visudo
があるが筆者的におおもとの設定ファイルを触るのは怖かったので、.d
の補助ファイルを使用した。
設定を消すときは、/etc/sudoers.d/user01
を消すだけなのでとても楽。