SSHを保護するために利用できる方法は何ですか?
ルートログインを無効にする-ほとんどの自動化された攻撃はルートアカウントに集中するため、そのアカウントからのログインを禁止することから始めます。
特定のグループ/ユーザーのみを許可-システムにSSH接続できるユーザーとグループを制限します。
IPまたはIP範囲による制限-SSH攻撃からシステムを保護する最も効果的な方法の1つ。
キーベースの認証を使用-Olivierによる説明
fail2banを使用- fail2ban は、試行されたSSHログインを監視し、試行された試行の失敗回数の後に、攻撃者のIPアドレスをブロックします設定された期間。これは、攻撃者をスローダウンさせるための非常に効果的な方法です。
他の回答はserverのセキュリティ保護に焦点を当てています-これは重要ですが、クライアント側にもある程度の保護が必要です。
StrictHostKeyChecking
をyes
またはask
に設定します。これにより、接続しているサーバーが想定したものであることを確認することにより、中間者攻撃に対する保護が提供されます。VerifyHostKeyDNS
をyes
またはask
に設定します。クライアントはDNSからSSHFPをフェッチし、フィンガープリントを確認します。 (攻撃者がDNSを制御している場合は、まだ脆弱です。)Protocol 2
in/etc/ssh/ssh_config-デフォルトは2,1
これにより、v2が使用できない場合にv1にフォールバックできます。UseBlacklistedKeys
がno
であることを確認してください(これがデフォルトです)。これにより、Debianの弱いopensslパッケージで生成された「ブラックリストに登録された」キーを使用できなくなります。 ssh-vulnkeysでホストキーとユーザーキーを確認します。 Debian派生システム(ubuntuなど)では、openssh-blacklistおよびopenssh-blacklist-extraパッケージをインストールできます。CheckHostIP
がyes
(デフォルト)であることを確認してください。これにより、クライアントは既知のホストに対してホストのIPをチェックし、DNSスプーフィングに対する保護を追加します。HashKnownHosts
をyes
に設定します。これにより、known_hostsファイルから情報が漏洩するのを防ぎます。パスワードベースのログインの無効化
パスワードベースの認証を キーベースの認証 に置き換えると、次のことが防止されます。
もう1つ、SSHで許可されている人が少ない場合、誰かがSSHにログインするたびにbashrcに通知を送信します
まず、パスワードを禁止し、RSAキーを使用した認証のみを許可する必要があります。これは、総当たり攻撃を実行不可能にします。 People willただし、まだ試行するので、ログイン試行を制限し、ポートを変更して帯域幅を節約することをお勧めします。このアプローチは、ユーザーが自分の秘密鍵を暗号化して保護することを信頼することに依存しています。
リモートでrootログインを許可しないでください。ログオンしたら、suまたはSudoを使用します。
人々がsshをゲートウェイサーバー経由で内部サーバーにトンネリングしないようにすることをお勧めします。これにより、内部サーバーがインターネットに公開されなくなる可能性があります。
SSHのバージョン2を使用する必要があります。
SSHを保護するための非常に重要なポイントについて他のどの回答も述べていないように思います:ユーザーの教育。あなたが何をするにせよ、何か怪しいことが起こったときにユーザーが賢明に反応することを学ばなければ、あなたは運命にあります。少なくとも、ユーザーはサーバーのキー処理ビジネスを知っている必要があります(特定のサーバーに最初に接続するとき、ユーザーはでキーフィンガープリントを確認する必要があります信頼できるソース。SSHが変更されたキーについて警告する場合、それらはしないでください警告をバイパスします)。
テクノロジーはこれまでのところあなたを得るだけです。人間がプロセスに関与している限り、そのユーザーのセキュリティ意識の量は、達成したいと考えているセキュリティレベルのハードリミットです。
サーバーには、クライアントキーにパスフレーズを要求する新しいオプションがあります。これは非常に良い考えだと思います。ただし、パスフレーズの複雑さはまだわかっておらず、ユーザーはクライアントを再コンパイルしてこれを偽造する可能性があります。
誰もが言っているように、常にrootログインを無効にし、デフォルトのポート番号を変更し(一部のsftpクライアントの使用が困難になる可能性があります)、キーベースの認証のみを受け入れます。
また、sshd_configでキーサイズを変更したり、ssh-keygenを実行するときにキービットサイズを指定したりする場合は、時々指定するキーサイズを確認する必要があります。
Ssh-keygenがデフォルトで1024ビットのRSAキーを生成するように戻ったとき、私は-bオプションを使用して1536ビットのキーを生成していました。時間の経過とともに、デフォルトは2048ビットのキーを生成するように変更されましたが、それでも1536ビットのキーを生成していました。