はじめに:
SSH接続を許可するユーザーをグループ単位で設定する必要があり、そのとき設定方法を勘違いしていたため、ここに備忘録として残す。
SSH接続をグループ単位で許可:
グループ単位で許可するには、SSH設定ファイルで「AllowGroups」ディレクティブを定義する必要がある。
/etc/ssh/sshd_config
AllowGroups [group1] [group2] ...
例えば:
「takenoko」というグループを指定するには
AllowGroups takenoko
設定した後は、SSHサービス再起動または定義ファイルのリロードをする必要がある。
# サービスの再起動
systemctl restart sshd
# 定義ファイルの再読み込み(サービス停止はされない)
systemctl reload sshd
私が誤ったこと:
SSH定義ファイルに「AllowUsers」ディレクティブがすでに定義されており、これを考慮せずに「AllowGroups」を設定してしまったため、すべてのユーザーがSSH接続できなくなった。
「AllowUsers」ディレクティブ:
ユーザー単位でSSH許可を指定する設定値
「AllowUsers」と「AllowGroups」を設定すると、それぞれの設定(条件)に完全一致していなければ、対象ユーザーまたはグループでのログインができない。ログインするためには、それぞれの設定の条件を満たすように設定する必要がある。要するに「&」条件。
下記のユーザーとグループがあるとする。
ユーザー:
マイタケ(きのこ)、シイタケ(きのこ)、緑茶(お茶)、烏龍茶(お茶) ← ユーザー(所属グループ)
グループ:
きのこ、お茶
マイタケとお茶グループとSSH接続できるようにするため、
「AllowUsers」と「AllowGroups」の設定が下記の通りにされたとする。
AllowUsers マイタケ
AllowGroups お茶
しかしこの設定では、マイタケはお茶グループに所属していないため、SSH接続はできない。
また、お茶グループの緑茶、烏龍茶は、AllowUsers に設定されていないため、SSH接続はできない。
「AllowUsers」と「AllowGroups」の2つを使って設定するならば、下記のようにする必要がある。
AllowUsers マイタケ、緑茶、烏龍茶
AllowGroups お茶、きのこ
この設定だと、シイタケ以外はSSH接続できるようになる。
だがこの設定の方法は手間がかかるため、
「AllowUsers」と「AllowGroups」どちらかを使用して制限をかけるべき。
運用としては、対象グループに所属しているユーザーのみSSH許可するとか。
AllowGroups SSHグループ
または、SSH接続させたいユーザーを都度「AllowUsers」に追加していくとか。
AllowUsers マイタケ、緑茶、烏龍茶
引用:【1.6. OpenSSH のセキュリティーの強化】
OpenSSH サーバーは、/etc/ssh/sshd_config 内のすべての Allow および Deny ディレクティブを渡す接続のみを許可します。たとえば、AllowUsers ディレクティブに、AllowGroups ディレクティブにリストされているグループの一部ではないユーザーがリストされている場合、そのユーザーはログインできません。
参考URL:
その他:
PermitRootLogin no
useradd -g プライマリグループ名 ユーザー名
sudo userdel -r ユーザー名
groupadd グループ名
groupdel グループ名
usermod -G セカンダリグループ名 -a ユーザ名
/etc/passwd
/etc/group