そのため、ローカルネットワークにOpenSSHサーバーを実行しているサーバーがあります。サーバーは、予想される外部ネットワークのSSHを許可するように構成されています。しかし、私のLANの外でログインできない特定のユーザー(localUser)を作成したいと思います。
現在、SSH経由でログインできる唯一のグループであるsshusersというグループがあります。
マニュアルページによると、ユーザーを「許可/拒否」することは可能でなければなりませんが、どうすればよいかわかりません。私が試したことは次のとおりです。
最初の試み:
AllowGroups sshusers
AllowUsers [email protected].* # 2 is not a typo
# localUser not in group sshusers. Intention: AllowUsers should override
# previous configuration, allowing access for localUser, even if he is
# not member of sshusers
2回目の試み:
AllowGroups sshusers
DenyUsers localUser@!192.168.2.*
# localUser is member of sshusers. Intention: Access is granted, but with
# the negotiation of the match-expression for the LAN, access should be
# denied for external login.
# Also tried "[email protected].*"
LANへのユーザーアクセスを拒否しますが、外部アクセスを許可することは可能であることに注意する必要があります。
# localUser member of sshusers
AllowGroups sshusers
DenyUsers [email protected].*
ところで、私はこの構成を逆にしたいと思います。
助けてくれてありがとう。しかし、私はこのためにPAMやiptablesを使うのが好きではありません。
答え1
次のことを試すことができます。
AllowGroups sshusers
DenyUsers localuser@!192.168.2.*,
アスタリスクの後のカンマを参照してください。したがって、ホスト名の一致を否定する構文は次のように!
なります。
DenyUsers localuser@!192.168.2.*,!10.8.0.*,
これは、ホストがリスト内のものと異なる場合、ローカルユーザーが接続できないことを意味します。
コメントで述べたように、この機能はOpenSSH_7.4p1
。だから私は次のことを試しました(testを使用openssh-7.5p1
)。完璧に動作します。
DenyUsers localuser@*,!10.8.0.*
このようにして、ローカルユーザーは10.8.0。*を除くすべての場所で拒否されます。