最近、私は自分のauth-logsを調べ始めました。驚くべきことに、中国のボットがこの方法でブルートフォースしようとしているのを発見しました(一生懸命努力しました)。私はボットがチェックすることのない多くのことを変更することすべてに取り組み、ブルートフォースを難しくしました。
私の質問は:
SSH経由でサーバーにログインできるすべてのユーザーのリストを見つけようとしています。/etc/passwdにはすべてのユーザーのリストがあることは知っていますが、(1を除く)のいずれかがログインできるかどうかはわかりません。
私の目標は、ログインできるユーザーを1人だけにして、そのユーザーに強力な強力なパスワードを持たせることです。
詳細についてはman sshd_config
を参照してください。ただし、/etc/ssh/sshd_config
でAllowUsers
ディレクティブを使用して、ログインできるユーザーのセットを制限できます。
例えば.
AllowUsers boris
boris
ユーザーのみがssh経由でログインできることを意味します。
/etc/passwd
に有効なシェルを持つユーザーは、潜在的にログインできます。セキュリティを向上させる場合は、公開キー認証を使用してSSHを設定し(これを行うにはWebに多くの情報があります)、1人のユーザーの~/.ssh/authorized_keys
ファイルに公開キーをインストールし、パスワードベースの認証を無効にします。これにより、1人のユーザーがログインすることを除いて、だれもがログインできなくなり、ユーザーが所有する一致する秘密キーが必要になります。秘密鍵に適切なパスフレーズが設定されていることを確認してください。
ボットが侵入しようとするのを防ぐには、22(3456など)以外のポートでSSHを実行します。これによりセキュリティは向上しませんが、スクリプトキディやボットが失敗したログで乱雑になるのを防ぎます。
/etc/passwd
のログインシェル設定がインタラクティブシェルであるユーザーはログインできます。プログラムがインタラクティブなシェルであるかどうかを判断する完全に信頼できる方法はないと思います。 /etc/shells
にあるかどうかを確認することは、おそらくあなたが得ることができる限り良いことです。
他のユーザーもログインできますが、実行するプログラムがシステムへの多くのアクセスを許可しないようにする必要があります。また、ログインをまったく許可されていないユーザーは、/etc/false
をシェルとして使用する必要があります。これにより、すぐにログアウトされます。