Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
OrganizationAdvent CalendarQiitadon (β)
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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 が利用されます。

# 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 グループを作ってそのグループに入っているユーザのみログインできるようにする場合は以下のようにします。

-:ALL EXCEPT (cockpit):LOCAL

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


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

Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away


No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
Help us understand the problem. What is going on with this article?