web-dev-qa-db-ja.com

SSHのゼロデイ攻撃からどのように防御すればよいですか?

脆弱性は毎日発見されます。最近の心臓出血攻撃は多くの人々を油断しました。 SSHへの自由なアクセスを可能にする深刻な欠陥が発見されるのではないかと思っていましたが、サーバーにパッチを当てるのに十分な時間を確保するために、どのようにして自分自身を防御し、そのような攻撃への露出を最小限に抑える必要がありますか?

4

特定のポートが特定の順序で「操作」されたときに、しばらくファイアウォールを開くポートノックデーモンをセットアップします。詳細については、 ポートノッキング を参照してください。

5
martijnbrinkers

ファイアウォールまたはサーバーにIPフィルターをセットアップして、SSH接続が特定の静的IPからのみ受け入れられるようにします。これにより、SSHサーバーに対してゼロデイ攻撃を使用する前に、攻撃者は少なくともクライアントまたはネットワークインフラストラクチャを危険にさらすことになります。

OpenSSHは特権の分離とサンドボックスを使用するため、非常に優れた初期セキュリティを提供します。このように、小規模なネットワークのリッスンと認証の部分は他の部分から分離されます。つまり、別の非特権ユーザーとして実行され、サンドボックスを使用すると、限られたシステムコールしか実行できません。

その場合の主な問題は、ブルートフォースパスワードプローブです。ここで攻撃対象を制限する最も簡単な方法は、パスワード認証を禁止することです。つまり、公開鍵認証のみを許可するか、少なくともパスワード認証を、推測が難しい既知のパスワードを持つ少数のユーザーに制限します。なぜなら、攻撃者がローカルユーザーとしてアクセスできるようになると、特権エスカレーションエクスプロイトを使用して完全なシステムアクセスを取得することが容易になることがよくあります。

また、SSH接続の試行回数を制限すると、非標準のポートに移動する場合と同様に攻撃面が制限されます。私のsshd_configの例:

 Port 22                               # port 22 gets rate limit with iptables
 Port 22922                            # use an uncommon port where nobody probes for unlimited access
 AllowUsers user1 user2 trusted_user   # limit users which might connect
 PasswordAuthentication no             # no password authentication by default
 # allow password authentication only for users which care about their password
 Match User trusted_user
 PasswordAuthentication yes

また、SSHの接続レートを制限するために使用するiptablesルール。

 iptables -N SSH_CHECK
 # limit ssh on default port from same IP to 3/40 sec
 iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_CHECK
 iptables -A SSH_CHECK -m recent --set --name SSH
 iptables -A SSH_CHECK -m recent --update --seconds 40 --hitcount 3 --name SSH -j DROP

また、これらの方法を組み合わせても、重大なセキュリティ問題が発生した場合に対応するのに十分な時間がないと思われる場合は、マルチステージシステムをセットアップできます。たとえば、外部から見えるSSHデーモンをある種のサンドボックス(chroot、コンテナ、仮想マシンまたは実マシン)で実行し、そこにユーザーをログインさせることができます。最初のログインに成功した後、ユーザーはシステムの次の段階などにログインし続ける必要があります。

0
Steffen Ullrich

正直に言って、これまでのポスターのどれもが明白な答えを教えてくれたなんて信じられません。

上記の答えはどちらも間違っています。..ポートをノックする必要はありません。ポートを変更する必要はありません。IPフィルターを設定する必要はありません。ベルトとブレース」。

あなたがする必要があるのは、ほとんどの人がやるのが面倒すぎることをすることです...

(a) Setup public key authentication and disable all other forms of authentication

PasswordAuthentication no
ChallengeResponseAuthentication no
PermitRootLogin no

(b) Keep your system patched and up to date

本当に、それはとても簡単です。すべてのOTTに行く必要はありません。

0
user3083