web-dev-qa-db-ja.com

特定のSSHユーザーが1つのIPまたはホスト名からのみ接続するように制限するにはどうすればよいですか?

監視する各ボックスの非SudoユーザーアカウントのSSH接続の詳細を必要とする監視サーバーがあります。 specificユーザーアカウントを設定して、特定のIP(またはより良いホスト名)からのみログインできるようにする方法はありますか)?サーバー上の他のユーザーが他のアドレスから接続できるように制限したくない(そうでない場合は単にファイアウォールを使用する)、または 使用監視サービスのパスワード認証のみ

6
Programster

man sshd_configを参照してください。次のようにユーザーとホストの両方を指定できるAllowUsersブロックを追加する可能性があります。

AllowUsers user@Host # or IP

もちろん、ログインを許可する他のユーザーも指定する必要があります(ある場合)。

別の解決策(バグ修正に依存!)

もう一度考えてみると、次のようにsshd_configを変更する可能性があります。

Match Host !hostname
    DenyUsers user
Match Host hostname
    AllowUsers user

これは、userからhostnameを除くすべてのユーザーを簡単にブロックし、他のすべてのユーザーからuserをブロックします。

しかし、アップストリームで報告されたバグがほとんどないため、動作しません[1] [2]。しかし、次のリリースで修正されると約束しました。

7
Jakuje

/etc/ssh/sshd_configファイルのAllowUsers行にワイルドカードを使用できます。したがって、次の行を追加することが可能です。

AllowUsers *@192.168.1.100

または:

AllowUsers *@hostname

そのIPアドレスまたはホスト名からの全員のアクセスを許可するため。

忘れないでください:

service ssh restart

15.04より前のバージョンを使用している限り、変更を行った後。 15.04は現在systemdを使用しているため、サービスを制御するための異なるメカニズムがあります。

6
Arronical

man pages によると、これは動作するはずです:

DenyUsers user@"!Host,*"

これをDebianでテストしましたが、正しく機能しているようです。

3
Roman Hocke

これはgoogleのトップの検索結果であるため、人々は/etc/hosts.allowファイル(Cameron Oltmannの ブログ投稿 に関して)のアクセス許可の設定にも注意する必要があると思います。

発信元IPアドレスに基づいてLinuxボックスへのsshアクセスを制限するには、/ etc/hosts.allowを編集します。

sshd : localhost : allow
sshd : 192.168.0. : allow
sshd : 99.151.250.7 : allow
sshd : mydomain.net : allow
sshd : ALL : deny

上記のエントリは、localhost、192.168.0.xサブネット、単一IPアドレス99.151.250.7、およびmydomain.netからのsshアクセスを許可します(mydomain.netには逆引きを容易にするためにptrレコードがあると仮定します)。他のすべてのIPアドレスは、sshdへのアクセスを拒否されます。

注:IPアドレス、サブネット、またはホスト名に基づいて許可または拒否できます。ルールを最も具体的なものから順にリストします。ファイルは一致する行が見つかるまでしか読み取られないため、ssdh:ALL:denyで開始すると、ssh接続は許可されません。

そして、このファイルでuser@addressを使用できるようになるはずです lifewire.com link

より複雑なフォーム「daemon @ Host」および「user @ Host」については、それぞれサーバーエンドポイントパターンとクライアントユーザー名ルックアップのセクションで説明しています。

2
Gregory Martin