SSHデーモンで考えられるセキュリティ上の問題は何ですか?


14

Ubuntu 10.04オフィスPCに外部からSSH接続できるようにしたいのですが。したがって、PCでSSHデーモンを起動することを考えています。セキュリティの問題、起こりうる不具合、特定の構成設定などは何ですか?

重要な場合には、これは基本的に私自身の使用のみのためであり、他の人がそれを使用することはないと思います。ほとんどがWindows 7 / Vista / XP環境のUbuntu 10.04 PCです。


1
OpenVPNのインストールも検討し、ssh接続用にPCにVPNトンネルを作成することをお勧めします。この方法では、sshポートを世界に開く必要はありません。
リンカー3000

@ Linker3000ありがとう!ちょっと考えてみます---少し前にVPNについてかなり不愉快な経験をしていましたが。
ev-br

@Zhenya「@」とユーザー名の間にスペースを入れないと、ユーザーに返信する通知が届きます。;)あなたはコメントを受けますので、私は@Zhenyaを使用しますが、私はジェーニャ@使用しないとき
BloodPhilia

@Zhenyaそして今、あなたは再びそれをやっていますXD
BloodPhilia

@ Linker、OpenVPNがSSHよりも安全である理由について少し詳しく説明していただけますか?
アルジャン

回答:


20

最大の懸念は、SSH経由でコンピューターの管理者としてログインする人々です。推測しやすいパスワードを持っている場合、これはブルートフォースによって実行できます。

あなたがとることができるいくつかの安全対策があります。以下は、SSHサーバーをセットアップする際に私が常に取るもののいくつかであり、いくつかの追加もあります。

  1. 少なくとも10個の大文字と小文字、数字、その他の文字で構成される強力なパスワードを使用します。

  2. ユーザーをホームディレクトリに投獄します。投獄されたユーザーは、ホームディレクトリの外部にあるファイルにアクセス/編集することはできません。そのため、ユーザーは主要なシステムファイルにアクセス/編集できません。ユーザーを投獄する方法に関する多くのチュートリアルをオンラインで見つけることができます。それらのほとんどはJailKitを使用します。このようなチュートリアルの例は、ここにあります。または、OpenSSHサーバーのネイティブChrootDirectoryディレクティブを使用することもできます。これに関するチュートリアルの例はここにあります

  3. Fail2Banをインストールします。Fail2Banは、間違ったエントリの認証ログをチェックするプログラムです。特定の制限に達すると、事前設定された期間、その特定のIPのファイアウォールブロックが追加されます。SSHでFail2Banをセットアップする方法についてオンラインで見つけられるオンラインチュートリアルもいくつかあります。例はこれです。Fail2Banホームページには、すてきで完全なHOWTOもあります。

  4. SSHを介したルートログインを無効にします。これは、システム上のほとんどすべてのファイルにアクセスできるユーザーであるため、シェルログインを無効にすることをお勧めします。Ubuntuの最新バージョンでは、rootユーザーは自動的に無効になりますが、SSHアクセスを無効にしても問題はありません。これは、ファイルを編集することによって行われます/etc/ssh/sshd_config次の行を探し、作るには、必ずその前には#はありません。

    #PermitRootLogin no
    
  5. 非標準ポートを使用(22ではなく)これは、ルーターのポート転送(例:22-> 22の代わりに16121-> 22)を介して、またはSSHデーモンを別のポートでリッスンさせることにより行われます。これにより、悪意のあるユーザーがSSHサービスを簡単に検出できなくなります。これは、ファイルを編集することによって行われます/etc/ssh/sshd_config 22あなたが好きなポートに次の行や変更を探します。その後、ルーターの正しいポートを転送することを忘れないでください。

    Port 22
    
  6. ログインにパスワードを使用しないでください。パスワードに加えて、SSHは秘密鍵を使用したログインも許可します。これは、SSHマシンのSSHにアクセスするコンピューターにキーが保存されることを意味します。接続が試行されると、SSHクライアントはパスワード認証ではなくキーを使用してサーバーにログインします。認証キーは、パスワードよりも暗号的にはるかに強力であるため、簡単に解読することはできません。また、SSHを使用したキーベースの認証の設定方法についてのオンラインチュートリアルがいくつかあります。例はこの1つです。(PuTTYを使用してWindowsからSSHを実行する場合は、PuTTYの使用方法についてこのリンクを確認してください。)キーベース認証を設定したら、ファイルを編集してパスワード認証を無効にできます/etc/ssh/sshd_config 次の行を探し、その前に#がないことを確認してください。

    #PasswordAuthentication no
    
  7. オプションで、@ Linker3000が彼のコメントで述べたように、SSH経由でアクセスしたいPCへのVPNトンネルを設定し、SSHサーバーでの非ローカルネットワークアクセスを禁止できます。これにより、VPN接続のない外部デバイスはSSHサーバーにアクセスできなくなります。これは、すべてのホストを拒否し、ローカルネットワークIPのみにログインを許可することで実行できます。これは/etc/hosts.deny、次を編集して追加することにより行われます。

    sshd: ALL
    

    そして/etc/hosts.allow、次を追加します:

    sshd: 192.168.1.*
    

    ここで、IPはローカルネットワークのものと一致します。*はワイルドカードであるため、で始まるすべてのIPアドレス192.168.1.が受け入れられます。これが機能しない場合、ディストリビューションはのssh代わりにを使用する可能性がありますsshd。その場合、あなたは試してみてくださいssh: 192.168.1.*ssh: ALL代わりに。

  8. 特定のホストのみを許可し、6で説明したように/etc/hosts.allowとで同じことを行うことができますが、次の行とすべてのホストを追加してスペースで区切ることができます:/etc/hosts.deny/etc/hosts.allow

    sshd: {IP OF HOST TO ALLOW 1} {IP OF HOST TO ALLOW 2} {IP OF HOST TO ALLOW 3} {ETC.}
    
  9. 特定のユーザーのみがSSHサーバーにアクセスできるようにします。これは、ファイルを編集することによって行われます/etc/ssh/sshd_config次の行を探し、作るには、必ずその前には#はありません。存在しない場合は作成します。たとえば、john、tom、maryのみを許可する場合は、次の行を追加/編集します。

    AllowUsers john tom mary
    

    たとえば、特定のユーザーを拒否することもできます。john、tom、maryへのアクセスを拒否する場合は、次の行を追加/編集します。

    DenyUsers john tom mary
    
  10. 着信接続に対してプロトコルSSH2のみを許可します。SSHプロトコルには2つのバージョンがあります。SSH1はセキュリティの問題の影響を受けるため、SSH 2の使用をお勧めします。これは、ファイルを編集することで強制できます/etc/ssh/sshd_config次の行を探し、作るには、必ずその前には#はありません。存在しない場合は作成します。

    Protocol 2,1
    

    行を

    Protocol 2
    
  11. パスワードが設定されていないユーザーのログインを許可しないでください。これは、ファイルを編集することで強制できます/etc/ssh/sshd_config次の行を探し、作るには、必ずその前には#はありません。存在しない場合は作成します。

    PermitEmptyPasswords no
    
  12. そして、言うまでもなくシンプルですが、複数のケースで重要であることが証明されていますが、ソフトウェアを最新の状態に保ちます。インストール済みのパッケージ/ソフトウェアを定期的に更新します。


= SSH構成ファイルを編集した後、変更を適用するためにデーモンを再起動することを忘れないでください。次を実行してデーモンを再起動します。

sudo /etc/init.d/ssh restart

または

sudo /etc/init.d/sshd restart

使用しているLinuxのディストリビューションによって異なります。


2
sudo service ssh restartUbuntuで。
-ulidtko

@ulidtkoこの質問はより一般的な質問と統合されたため、回答をより一般的で、さまざまな分布に適したものにしました。これは、ほぼすべてのディストリビューションで機能しますが、あなたは正しいです。
ブラッドフィリア

@BloodPhiliaこのような詳細でアクセスしやすい回答に感謝します!あなたのポイントに関するいくつかのさらなる質問:1.許可を制限するだけでユーザーを投獄する利点は何ですか?「ユーザー」としてログインすると、/ home以外の項目への読み取りアクセスのみが許可されますが、書き込みアクセスまたは実行アクセスは許可されません(Ubuntuのデフォルトに従って)。それは投獄よりも良い/悪いですか?2.認証ログは通常どこにありますか?時々/ grepを使用して手動で検査できるようにしたいと思います。
ev-br

@BloodPhilia 4. sshdに1234などのサーバー上の非標準ポートをリッスンさせる場合、クライアントのlinuxコマンドラインからこのサーバーに接続する方法は何ですか?つまり、標準のsshコマンドには何らかのスイッチが必要ですか?
ev-br

1
@ulidtko:Upstartでsudo restart ssh
Hello71

7

いくつかのヒント:

  1. パスワードよりもはるかに安全なキーベースの認証を使用します
  2. SSH 2のみ
  3. ルートログインを無効にする
  4. 偏執病の場合、ポートを標準ポート22から変更します
  5. 便宜上、ツールを使用してIPをDyndnsやそのilkなどのDNS名にマッピングします。同じIPを使用して長時間移動できますが、一度旅行してそれを必要とすると、新しいIPが発行されていることがわかります。
  6. もちろん、SSHに必要なポート(ポート22、または選択した場合は非標準)のみをファイアウォール経由で許可してください。

1
日時5:自宅以外のマシンに電子メールアカウントがある場合、cronジョブを設定して、自宅のマシンからそのアドレスに定期的にメッセージを送信できます。ホームIPはヘッダーにあります。DNSほど便利ではありませんが、使用できます。
ゲイリージョン

ISPに連絡して、静的IPアドレスの価格を尋ねることもできます。これは
群を抜いて

2

主なリスクは、sshサーバーを実行していることを忘れ、アカウントに弱いパスワードを設定することです。一般的なアカウント名(webmasterやなどbob)と弱いパスワードを体系的に試す攻撃者がいます。パスワードのログインを禁止することにより、このリスク排除(置くことができるPasswordAuthentication noにしsshd_configて、また入れどちらかUsePAM NoSSHのPAM設定で無効またはパスワード認証)。中間的な手段は、sshログインを、AllowUsersまたはのユーザーのホワイトリストに制限AllowGroupsすることsshd_configです。

パスワードによるログインの許可自体はセキュリティ上の問題ではないことに注意してください。弱いパスワードとスヌープされたパスワードが問題であり、sshサーバーでパスワード認証を許可することは可能です。パスワードのスヌーピングから保護するために、完全に信頼できないマシンにはパスワードを入力しないでください(ただし、マシンを信頼する場合は、秘密キーをインストールすることもできます。パスワード認証は不要です)。

マシン上でsshクライアントを使用するための最小要件は、ssh通信のアクティブなハイジャックがないことを信頼することです(クライアントマシンで実行されている場合、man-in-the-middle攻撃が可能です—そのままのsshクライアントにコマンドを入力していますが、クライアントは実際には認証データを忠実に送信しますが、その後の通信にトロイの木馬を挿入しています)。これは、パスワードスヌーパーがないことを信頼するよりも弱い要件です(通常はキーロガーを介して実行されますが、ショルダーサーフィンなどの自動化されていない他の方法があります)。最低限の信頼はあるが、スヌーパーを恐れる場合は、ワンタイムパスワードを使用できます(OpenSSHはPAMサポートを通じてサポートしています)。

もちろん、管理外のマシン(ネットワークサーバーだけでなくクライアントも)とやり取りする他のプログラムと同様に、セキュリティ更新プログラムについていく必要があります。


2

私の頭に浮かんだ3つのことがありました。

  1. デフォルトのポート22を開くとすぐに検出され、ブルートフォース攻撃によってPCが攻撃されます。sshdを設定して、他のポートをリッスンするか、ファイアウォールでポートマッピングを行うことをお勧めします。これは魔法の弾丸ではありませんが、少なくとも同じCPUサイクルを節約できます。

    ポート12345

  2. パスワード認証を明示的に無効にし、キーのみを使用します。どのキーも、覚えられる最も複雑なパスワードよりも優れています。

    パスワード認証

  3. Ubuntuではデフォルトでrootユーザーが無効になっていますが、明示的にrootログインを無効にします

    PermitRootLogin no

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.