web-dev-qa-db-ja.com

SSHを保護するために利用できる方法は何ですか?

SSHを保護するために利用できる方法は何ですか?

44
Olivier Lalonde
  • ルートログインを無効にする-ほとんどの自動化された攻撃はルートアカウントに集中するため、そのアカウントからのログインを禁止することから始めます。

  • 特定のグループ/ユーザーのみを許可-システムにSSH接続できるユーザーとグループを制限します。

  • IPまたはIP範囲による制限-SSH攻撃からシステムを保護する最も効果的な方法の1つ。

  • キーベースの認証を使用-Olivierによる説明

  • fail2banを使用- fail2ban は、試行されたSSHログインを監視し、試行された試行の失敗回数の後に、攻撃者のIPアドレスをブロックします設定された期間。これは、攻撃者をスローダウンさせるための非常に効果的な方法です。

34
Mark Davidson

他の回答はserverのセキュリティ保護に焦点を当てています-これは重要ですが、クライアント側にもある程度の保護が必要です。

  • / etc/ssh/ssh_config(または〜/ .ssh/config)で、StrictHostKeyCheckingyesまたはaskに設定します。これにより、接続しているサーバーが想定したものであることを確認することにより、中間者攻撃に対する保護が提供されます。
  • DNSゾーンにレコードを追加できる場合は、SSHFPレコードを公開し、VerifyHostKeyDNSyesまたはaskに設定します。クライアントはDNSからSSHFPをフェッチし、フィンガープリントを確認します。 (攻撃者がDNSを制御している場合は、まだ脆弱です。)
  • プロトコルバージョン2を強制します。セットする Protocol 2 in/etc/ssh/ssh_config-デフォルトは2,1これにより、v2が使用できない場合にv1にフォールバックできます。
  • ログインにはパスワードよりもキーを優先してください。SSHキーには強力なパスワードを使用してください。適切な長さ(ビット数)のキーを使用してください。
    • Sshキーを提供するユーザーがいる場合は、キーに対して john を実行してパスワードの強度を監査します。
  • パスワードを入力する代わりに、ハードウェアトークンを使用してキーのロックを解除します(キーロガーやショルダーサーファーを回避するため)。
  • UseBlacklistedKeysnoであることを確認してください(これがデフォルトです)。これにより、Debianの弱いopensslパッケージで生成された「ブラックリストに登録された」キーを使用できなくなります。 ssh-vulnkeysでホストキーとユーザーキーを確認します。 Debian派生システム(ubuntuなど)では、openssh-blacklistおよびopenssh-blacklist-extraパッケージをインストールできます。
  • CheckHostIPyes(デフォルト)であることを確認してください。これにより、クライアントは既知のホストに対してホストのIPをチェックし、DNSスプーフィングに対する保護を追加します。
  • HashKnownHostsyesに設定します。これにより、known_hostsファイルから情報が漏洩するのを防ぎます。
18
bstpierre

パスワードベースのログインの無効化

パスワードベースの認証を キーベースの認証 に置き換えると、次のことが防止されます。

  • ブルートフォースによるパスワードクラッキングの試み。
  • 肩の攻撃:パスワードを入力している最中に忍び寄る人々。
  • キーロガー。
11
Olivier Lalonde

もう1つ、SSHで許可されている人が少ない場合、誰かがSSHにログインするたびにbashrcに通知を送信します

7
Aviah Laor

まず、パスワードを禁止し、RSAキーを使用した認証のみを許可する必要があります。これは、総当たり攻撃を実行不可能にします。 People willただし、まだ試行するので、ログイン試行を制限し、ポートを変更して帯域幅を節約することをお勧めします。このアプローチは、ユーザーが自分の秘密鍵を暗号化して保護することを信頼することに依存しています。

リモートでrootログインを許可しないでください。ログオンしたら、suまたはSudoを使用します。

人々がsshをゲートウェイサーバー経由で内部サーバーにトンネリングしないようにすることをお勧めします。これにより、内部サーバーがインターネットに公開されなくなる可能性があります。

SSHのバージョン2を使用する必要があります。

6
Magnus

SSHを保護するための非常に重要なポイントについて他のどの回答も述べていないように思います:ユーザーの教育。あなたが何をするにせよ、何か怪しいことが起こったときにユーザーが賢明に反応することを学ばなければ、あなたは運命にあります。少なくとも、ユーザーはサーバーのキー処理ビジネスを知っている必要があります(特定のサーバーに最初に接続するとき、ユーザーはでキーフィンガープリントを確認する必要があります信頼できるソース。SSHが変更されたキーについて警告する場合、それらはしないでください警告をバイパスします)。

テクノロジーはこれまでのところあなたを得るだけです。人間がプロセスに関与している限り、そのユーザーのセキュリティ意識の量は、達成したいと考えているセキュリティレベルのハードリミットです。

6
Thomas Pornin

サーバーには、クライアントキーにパスフレーズを要求する新しいオプションがあります。これは非常に良い考えだと思います。ただし、パスフレーズの複雑さはまだわかっておらず、ユーザーはクライアントを再コンパイルしてこれを偽造する可能性があります。

3
nowen

誰もが言っているように、常にrootログインを無効にし、デフォルトのポート番号を変更し(一部のsftpクライアントの使用が困難になる可能性があります)、キーベースの認証のみを受け入れます。

また、sshd_configでキーサイズを変更したり、ssh-keygenを実行するときにキービットサイズを指定したりする場合は、時々指定するキーサイズを確認する必要があります。

Ssh-keygenがデフォルトで1024ビットのRSAキーを生成するように戻ったとき、私は-bオプションを使用して1536ビットのキーを生成していました。時間の経過とともに、デフォルトは2048ビットのキーを生成するように変更されましたが、それでも1536ビットのキーを生成していました。

2
ewalshe