web-dev-qa-db-ja.com

SSH経由で接続できるすべてのユーザーのリスト

最近、私は自分のauth-logsを調べ始めました。驚くべきことに、中国のボットがこの方法でブルートフォースしようとしているのを発見しました(一生懸命努力しました)。私はボットがチェックすることのない多くのことを変更することすべてに取り組み、ブルートフォースを難しくしました。

私の質問は:

SSH経由でサーバーにログインできるすべてのユーザーのリストを見つけようとしています。/etc/passwdにはすべてのユーザーのリストがあることは知っていますが、(1を除く)のいずれかがログインできるかどうかはわかりません。

私の目標は、ログインできるユーザーを1人だけにして、そのユーザーに強力な強力なパスワードを持たせることです。

40
tommydrum

詳細についてはman sshd_config を参照してください。ただし、/etc/ssh/sshd_configAllowUsersディレクティブを使用して、ログインできるユーザーのセットを制限できます。

例えば.

AllowUsers boris

borisユーザーのみがssh経由でログインできることを意味します。

37
dave4420

/etc/passwdに有効なシェルを持つユーザーは、潜在的にログインできます。セキュリティを向上させる場合は、公開キー認証を使用してSSHを設定し(これを行うにはWebに多くの情報があります)、1人のユーザーの~/.ssh/authorized_keysファイルに公開キーをインストールし、パスワードベースの認証を無効にします。これにより、1人のユーザーがログインすることを除いて、だれもがログインできなくなり、ユーザーが所有する一致する秘密キーが必要になります。秘密鍵に適切なパスフレーズが設定されていることを確認してください。

ボットが侵入しようとするのを防ぐには、22(3456など)以外のポートでSSHを実行します。これによりセキュリティは向上しませんが、スクリプトキディやボットが失敗したログで乱雑になるのを防ぎます。

26
Jim Garrison

/etc/passwdのログインシェル設定がインタラクティブシェルであるユーザーはログインできます。プログラムがインタラクティブなシェルであるかどうかを判断する完全に信頼できる方法はないと思います。 /etc/shellsにあるかどうかを確認することは、おそらくあなたが得ることができる限り良いことです。

他のユーザーもログインできますが、実行するプログラムがシステムへの多くのアクセスを許可しないようにする必要があります。また、ログインをまったく許可されていないユーザーは、/etc/falseをシェルとして使用する必要があります。これにより、すぐにログアウトされます。

7
Barmar