
可能であれば、ホームページを混乱させずに一部のユーザーアカウントをロックする必要があります。
一般的な方法は、usermod -L user
公開鍵認証(通常はこのサーバーで使用されます)を使用してSSHログインを開いたままにすることです。
私はできることmv /home/user/.ssh /home/user/_ssh
を知っています。しかし、これは正しい方法ですか?
私は何を見逃していますか?
答え1
このマニュアルはman usermod
推奨ソリューションを提供します。
-L
、--lock
ユーザーのパスワードをロックします。これにより、!
暗号化されたパスワードの前に1つが配置され、パスワードが効果的に無効になります。このオプション-p
はまたはで使用できません-U
。注:アカウントをロックするには(パスワードを使用してアクセスするのではなく)
EXPIRE_DATE
に設定する必要があります1
。
それから
-e
、--expiredate EXPIRE_DATE
ユーザーアカウントが無効になる日付。日付は形式で指定されますYYYY-MM-DD
。空
EXPIRE_DATE
のパラメータはアカウントの有効期限を無効にします。
それでは実際のケースに変えてみてください
usermod -L -e 1 someuser # Lock
usermod -L -e '' someuser # Unlock
デフォルトの有効期限を設定した場合は、/etc/default/useradd
ロック解除プロセスにその値(存在する場合)を含めることができます。
usermod -U -e "$( . /etc/default/useradd; echo "$EXPIRE")" someuser
cron
ロックされたアカウントを持つユーザーだけでなく、期限切れのアカウントを持つユーザーに対してもスケジュールされた操作は無効になります。エラーメッセージには、journalctl -u cron
期限切れのユーザーのアカウント名が表示されます(この場合test2
)。
Apr 30 11:47:01 pi CRON[26872]: pam_unix(cron:account): account test2 has expired (account expired)
Apr 30 11:47:01 pi cron[472]: Authentication failure
Apr 30 11:47:01 pi CRON[26872]: Authentication failure
スケジュールされたジョブはat
まだ試行されていません。 (期限が過ぎると実行されるかはわかりませんが、経験上そうではないようです。)
ロックされ、期限切れのアカウントですでに実行されている他のプロセスは、影響を受けずに実行され続けます。
答え2
"usermod -L user"を実行した後、この行を最後に追加してSSHアクセスを拒否できます。/etc/ssh/sshd_config文書:
DenyUsers user
または、ユーザーをグループに追加して、SSH ログインが拒否されるように、この目的のためにグループを作成することもできます。
groupadd deny-ssh
usermod -a -G deny-ssh user
そして最後にグループを追加してください/etc/ssh/sshd_config文書:
DenyGroups deny-ssh
各変更後/etc/ssh/sshd_configファイルは、変更を適用するためにsshdデーモンが再ロードされていることを確認します。
systemctl reload sshd
reloadコマンドは新しい設定をロードし、既存のSSHセッションをすべて開いたままにします。
あるいは、ログインしてもシェルを取得できないようにユーザーシェルを変更できます。
usermod --shell /usr/sbin/nologin user
1つのコマンドで上記のすべてを行う単純なbashスクリプトを作成することをお勧めします。
ログインが拒否されました。sh:
#!/bin/bash
#Lock user account
usermod -L $1
#Deny SSH connections
usermod -a -G deny-ssh $1
#Remove user Shell
usermod --shell /usr/sbin/nologin $1
#Reload sshd
systemctl reload sshd
これで、次のようにスクリプトを実行できます。
./deny-logon.sh user
そして、「ユーザー」に対して上記のすべての変更が自動的に適用されます。
編集:@roaimaのソリューションが最も正確です。アカウントの有効期限が切れると、そのアカウントへのすべてのアクセスが無効になります。これは、ユーザーがログインしないようにしたい場合に実行する必要がある操作です。
答え3
ユーザーのユーザー名またはグループを追加して、ユーザーのSSHログインを無効にできる必要があります。
/etc/ssh/sshd_config
設定DenyUsers
および/またはDenyGroup
。
望むよりman 5 sshd_config
。
sshdを忘れないでくださいHUP
。
答え4
アカウントをロックするのは正しいことです。 SSH を防ぐために、authorized_keys ファイルを削除することもできます。
SSH以外にログインする他の方法もあることを覚えておいてください。
「*rc」ルーチンを使用して何かをするのは厄介ですが、通常は「sftpのみ」アカウントに使用されます(SftpまたはSCPで呼び出されるユーティリティアカウントの場合)。
しかし、!パスワードは良いです変化回復が必要な場合はパスワードを入力してください。
いつものようにバックアップを安全に保管してください。