IP 以外の名前で特定のクライアントへの SSH アクセスを制限します。

IP 以外の名前で特定のクライアントへの SSH アクセスを制限します。

最近、私のサーバーの1つをRHEL8に対応するサーバーに移行しました。これは、(i)tcp_wrappersが後ろに残り(opensshがlibwrapに対してコンパイルされなくなり)、(ii)もはや単にホスト、拒否、およびホストと許可を調整する柔軟性がないことを意味します。 、(iii)ファイアウォールのようなものと戦い始める。

ただし、この特定のボックスのセキュリティ要件は非常に簡単です。

  1. sshdが代替ポート(1234など)でリッスンするようにします。

  2. 2人の「リモート」ユーザーがいます(サーバーのユーザーID「fred」と「barney」)。

  3. ユーザー「fred」は日当たりの良いカリフォルニアに住んでおり、各接続にIPが動的に割り当てられるISPを使用しています。 「バーニー」は湿ったテキサスに住んでいます。 DHCPの話も同じです。

  4. そのISPは一定の頻度でIPブロックを変更するため、通常はHosts.allowファイル内のワイルドカードでISP名を使用します。例えば

    sshd : .calif.isp.net : ALLOW
    sshd : .texas.isp.com : ALLOW
    

(それぞれ「fred」と「barney」用)

  1. 難しいようです - >ファイアウォールで名前でフィルタリングすることは不可能です。しかし、私は(理論的には)この種のことを処理するためにsshd_configを調整できると確信しています。

理論的には...しかし、これを行うためにsshd設定ファイルを調整する方法がわかりません。ユーザーがバーモントISP(.ver​​mont.com)を使用する「wilma」など、自分自身(fred)、およびbarneyを制限できるように設定しました。

 AllowUsers wilma fred barney

しかし、これは玉ねぎの一重だけです。パスワード認証を使用しているので、推測する(誰かが確認または修正できることを願っています)は、(i)まずパスワード認証をオフにし、

 PasswordAuthentication no

次に、(ii) sshd 構成ファイルの一番下に以下を追加します。

 Match Address *.calif.isp.net, *.texas.isp.com, *.vermont.com
   PasswordAuthentication yes

これは(リモートでも)正しいですか?そして、正しい場合は、一致するアドレスをリストするより効率的な方法はありますか?私の例では3つしかありませんが、3つではなく300があるとします。これらすべてのアドレスをいくつかの「ブロック」(「おなじみ」と呼ぶ)に入れて、次のようなものを簡単に使用する方法はありますか?

 Match Address friendly
   PasswordAuthentication yes

よろしくお願いします。

ベストアンサー1

あなたの家は正しいです

PasswordAuthentication no

そして

Match Address *.calif.isp.net, *.texas.isp.com, *.vermont.com
  PasswordAuthentication yes

そのような概念はありません。彫刻しかし、だからこれはいいえ存在するfriendly

ただし、規模(300のISP?外勤スタッフ?)を考えると、2FAまたは同様のVPNを設定し、SSHを強制し、SSH設定をより快適にすることができます。

おすすめ記事