特定のユーザーだけがsshdを介してログインできるようにし、リストにないユーザーへの接続を拒否します。

特定のユーザーだけがsshdを介してログインできるようにし、リストにないユーザーへの接続を拒否します。

CentOSサーバー(7.0)を実行していて、sshdを介してroot以外のユーザーとしてログインしたいと思います。だからPermitRootLogin no設定ファイルに設定し、su -ログイン後に設定しました。ハッキング活動がたくさんあり、sshdを介して1人のユーザーだけがログインできるようにすることにしました。ユーザー名は私の本名ではないか一般的な名前ではないので、それで十分だと思いました。 「hkbjhsqj」と仮定しましょう。

nixCraftで説明されている両方の方法を試しました。sshd_configで許可されたユーザーまたはPAMのpam_listfile.so。私にとって唯一の問題は、他の人がまだパスワードを入力し、/var/log/secureにログインを残す機会があることです。これらのタスクは、パスワードの確認やその他のタスクを実行するためにサーバーリソースを消費すると仮定します。

ユーザー名「admin」を使用してログインしようとするとします。

www$ ssh [email protected]
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

そしてセキュリティログから:

Aug  8 08:28:40 www sshd[30497]: pam_unix(sshd:auth): check pass; user unknown
Aug  8 08:28:40 www sshd[30497]: pam_listfile(sshd:auth): Refused user admin for service sshd
Aug  8 08:28:43 www sshd[30497]: Failed password for invalid user admin from 192.168.0.1 port 52382 ssh2
Aug  8 08:28:47 www sshd[30497]: pam_unix(sshd:auth): check pass; user unknown
Aug  8 08:28:47 www sshd[30497]: pam_listfile(sshd:auth): Refused user admin for service sshd
Aug  8 08:28:50 www sshd[30497]: Failed password for invalid user admin from 192.168.0.1 port 52382 ssh2
Aug  8 08:28:52 www sshd[30497]: pam_unix(sshd:auth): check pass; user unknown
Aug  8 08:28:52 www sshd[30497]: pam_listfile(sshd:auth): Refused user admin for service sshd
Aug  8 08:28:55 www sshd[30497]: Failed password for invalid user admin from 192.168.0.1 port 52382 ssh2
Aug  8 08:28:55 www sshd[30497]: Connection closed by 192.168.0.1 [preauth]
Aug  8 08:28:55 www sshd[30497]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.0.1

/etc/hosts.denyにIPを追加すると、これは発生しません。

www$ ssh [email protected]
ssh_exchange_identification: Connection closed by remote host

そしてセキュリティログから:

Aug  8 08:35:11 www sshd[30629]: refused connect from 192.168.0.1 (192.168.0.1)
Aug  8 08:35:30 www sshd[30638]: refused connect from 192.168.0.1 (192.168.0.1)

だから私の質問は、パスワードを確認せずにどこにも関係しないすべてのユーザーのsshリクエストを拒否する方法はありますか?たとえば、ホスト拒否リストに入れているようです。ただし、同時にユーザー名 "hkbjhsqj"を使用してどこからでもすべてのSSH要求を許可し、パスワードを確認する必要があります。

ベストアンサー1

私はあなたが求めていることをすることは不可能だと思います。可能であれば、誰かがあなたのサーバーで有効なユーザー名を「無差別代入」して見つけることができます。また、ユーザー名とパスワードがクライアントによって同時に送信されると確信しています。暗号化されていないSSH接続でWiresharkを使用してパケットをキャプチャしてそれを確認できます。

「ハッキング」とは、パスワードに対する無差別代入の試みについて話していると仮定します。これから自分を保護する方法はいくつかあり、最も一般的な方法を説明します。

ルートログインを無効にする SSHを使用してルートログインを拒否することで、攻撃者は有効なユーザー名を知っているか推測する必要があります。ほとんどの自動化された無差別代入攻撃は、rootとしてのみログインしようとします。

認証失敗時のIPブロック fall2banやsshguardなどのデーモンはログファイルを監視し、ログイン失敗を検出します。複数のログイン試行が失敗した後にログインしようとしているIPアドレスをブロックするように設定できます。あなたの状況についてこれが私が提案するものです。これにより、このIPからのすべてのパケットがsshdデーモンに到達する前にブロックされるため、ログスパムとサーバーのストレスが軽減されます。たとえば、過去5分間に3回のログインに失敗したIPを60分間ブロックするようにFail2banを設定できます。最悪のシナリオでは、攻撃者が放棄せずに続行すると仮定すると、60分ごとにログに3つの失敗したログインが表示されます。

公開鍵認証 パスワード認証を完全に無効にし、特定のキーを持つクライアントのみを許可できます。これは通常、最も安全なソリューションと見なされます(クライアントが鍵を安全で暗号化されたままにしていると仮定)。パスワード認証を無効にするには、公開鍵をサーバーに追加して~/.ssh/authorized_keyssshd_configで設定PasswordAuthenticationしますno。これを達成するのに役立つ多くのチュートリアルとツールがあります。

おすすめ記事