LoginSignup
1
1

More than 3 years have passed since last update.

cockpit (Linux サーバ管理ツール) のローカルユーザを制限する

Posted at

cockpit は PAM(8) を使ってローカルユーザの認証を行っています。
PAM は access.conf(5) でユーザ/グループ/IP 制限がかけられるのでこれを利用することで cockpit にログインできるユーザを制限することができます。

PAM の設定

インストールすると /etc/pam.d/cockpit ができているので
適当なエディタで編集してpam_access.so の行を追加します.
accessfile=path/to/access.config はなくてもかまいません。指定しなければ /etc/security/access.conf が利用されます。

/etc/pam.d/cockpit
#%PAM-1.0
# this MUST be first in the "auth" stack as it sets PAM_USER
# user_unknown is definitive, so die instead of ignore to avoid subsequent modules mess up the error code
-auth      [success=done new_authtok_reqd=done user_unknown=die default=ignore]   pam_cockpit_cert.so
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
auth       optional     pam_ssh_add.so
account    required     pam_nologin.so
account    required     pam_access.so accessfile=/etc/security/cockpit_access.conf ★この行を追加
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    optional     pam_keyinit.so force revoke
session    optional     pam_ssh_add.so
session    include      password-auth
session    include      postlogin

追加する箇所は account include password-auth より前にする必要があります。
この順序を逆にすると、account include password-auth で読み込まれている password-auth に sufficient 行が含まれているため、そこで認証に成功しているとそのあとに書いた制限が評価されません。

access.conf の設定

accessfile に指定したパスに access.conf(5) の書式でファイルを用意します。
例えば、 cockpit グループを作ってそのグループに入っているユーザのみログインできるようにする場合は以下のようにします。

/etc/security/cockpit_access.conf
-:ALL EXCEPT (cockpit):LOCAL

書き方は <permission>:<user or group>:<access>
- <permission> は '-' (許可) または- (拒否) のどちらか
- user または group 名、ALL は全ユーザまたは全グループにを表していて、 EXCEPT は続くユーザ・グループの除外を指定します
- group の時は () をつけたほうがいいらしい?
- ALL EXCEPT (cockpit) は cockpit に属するユーザを除く全ユーザが対象
- <from> はアクセス元
- cockpit の場合は LOCALのみ利用している(?)

確認

ログインしてみて Permission Denied が出れば成功
codkpit.png

1
1
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
1
1