SSH・FTP パスワード攻撃対策

あなたの Linux サーバー への SSH ブルートフォースを止める

SSH Protector は、SSH・SFTP・FTP への総当たり攻撃を止める軽量な Linux エージェントです。ホスト自身の認証ログ(journald または auth.log)を読み、失敗を重ねる攻撃元をその /24 全体ごと 1 つの nftables 規則で遮断します。この遮断は再起動後も残ります。判断はサーバー上で行われるため、パネルとの接続が切れても防御は動き続けます。導入は数分で、設定は不要です。

1 つのコマンドでインストール
curl -fsSL https://sshprotector.com/download/installer | sudo sh

無料版は1台のサーバーの完全な保護を含みます。

すべての Linux ディストリビューションに対応する単一エージェント

Debian · Ubuntu · FedoraRHEL · Alma · Rocky · Alpinex64 · x86 · ARM64CPU 負荷はほぼゼロ
00

エージェントをインストール

全員が同じ 1 つのバイナリを使い、ダウンロードにアカウントは不要です。先にインストールして、サーバーの接続は後からでも構いません - エージェントはパネルの登録トークンを求め、貼り付けるまでは何も保護しません。

インストールスクリプトをダウンロード

systemd ベースの最新の Linux - Debian、Ubuntu、RHEL/CentOS/Alma/Rocky、Fedora - の x86-64 または ARM64 に対応。スクリプトは同じサービスをインストールし、多数のサーバーに展開する場合に向いています。

01理由

開いた SSH ポートは 24 時間攻撃され続ける

ボットはインターネット全体のアドレス空間をスキャンし、到達できるすべてのサーバーでパスワードを試します。企業のマシンでも、たった 1 台の VPS でも関係ありません。

1 日に数千回のログイン試行
サーバーを公開して数時間もすると、世界中からログイン試行が届き始めます。SSH ポートを開けた一般的なマシンでは、失敗ログインが 1 日に数千件も記録されます。
サーバーリソースの無駄な消費
1 回の試行ごとに CPU 時間、メモリ、イベントログへの書き込み、ネットワーク帯域が消費されます。絶え間ない総当たりリクエストは常時のバックグラウンド負荷となり、サーバーを遅くしログを肥大化させます。
パスワードが 1 つ当たれば侵害
たった 1 回の的中でマシンへの完全なアクセスを許します。ランサムウェア、データ窃取、あなたのアドレスからのスパム送信。弱いパスワードや使い回しは数日で辞書攻撃に破られます。
攻撃者が管理者アカウントをロックできる
Linux は(PAM faillock により)ログイン失敗が続くとアカウントをロックします。有効なユーザー名を推測されると、攻撃者はこの上限に達して本物の管理者をロックアウトできます。パスワードを当てなくても発生するサービス拒否(DoS)です。

SSH Protector はファイアウォール層で攻撃を遮断

エージェントが連続するログイン失敗を検知すると、攻撃者のサブネット全体を nftables 規則 1 つでブロックします。ブロックされたパケットはシステムがリソースを費やす前に破棄されるため、CPU 負荷とログのノイズが減り、サーバーは速くなり、ボットはパスワードを当てるだけの試行回数を稼げません。

02止め方

Linux で SSH ブルートフォースを止める 3 つの方法

sshd に届く量を実際に減らす変更は 3 つです。互いに積み上がるので、この順序で進めてください。

  1. 01パスワードではなく鍵で認証する

    sshd がパスワードを受け付けなくなれば、総当たりには当てるものがありません。まず鍵を配置し、次に別のセッションで鍵ログインできることを確認し、それからパスワードを無効にします。この順序なら打ち間違いで締め出されることはありません。

    # /etc/ssh/sshd_config.d/10-keys-only.conf
    PasswordAuthentication no
    KbdInteractiveAuthentication no
    PermitRootLogin prohibit-password
    詳しいガイド
  2. 02ポートに届くインターネットの範囲を狭める

    sshd を 22 番から動かすと無差別スキャンの大半は消えますが、それ以外の防御にはなりません。ポートを VPN や既知のアドレス一覧に限定することで、雑音ではなく攻撃者そのものが消えます。管理者が固定なら両方行ってください。

    # /etc/ssh/sshd_config.d/20-exposure.conf
    Port 2202
    AllowGroups ssh-admins
    
    # nftables: only the VPN and the office reach it at all
    nft add rule inet filter input tcp dport 2202 \
      ip saddr { 10.8.0.0/24, 203.0.113.7 } accept
    詳しいガイド
  3. 03十分な試行回数を与える前に発信元を遮断する

    fail2ban は最初の答えとして正しく、認証ログを読み、失敗を数え、一定時間アドレスを遮断します。限界は構造的です。一度に 1 アドレス、状態は期限切れ、ホスト間で共有なし、ログ形式が変わると jail が黙って一致しなくなる。SSH Protector は攻撃元の /24 全体を 1 つの nftables 規則で遮断し、再起動後も維持し、ある保護対象サーバーが学んだことを他のサーバーにも渡します。

    # /etc/fail2ban/jail.d/sshd.local
    [sshd]
    enabled  = true
    backend  = systemd
    maxretry = 4
    findtime = 10m
    bantime  = 1h
    詳しいガイド

サブネット 1 規則で覆える範囲

スライダーを動かしてください。これはベンチマークではなく算数です。

1 アドレスずつ遮断する場合

32 個のファイアウォール規則

128 回の試行が今も sshd に届く

/24 全体を遮断する場合

1 個のファイアウォール規則

4 回の試行が今も sshd に届く

/24 には 256 個のアドレスが入ります。アドレス単位で遮断すると、ボットは次のアドレスへ移るたびに割り当てを取り戻します。範囲ごと遮断すれば一度も取り戻せません。ここに測定値は 1 つもなく、エージェントが行うのと同じ計算です。

03仕組み

ダウンロードから保護完了まで数分

設定ファイルもコマンドラインも不要:インストーラーをダウンロードして実行し、sudo の確認を承認するだけです。

  1. アカウントを作成

    メールアドレスまたは Google/GitHub で登録。クレジットカードは不要です。

  2. インストーラーをダウンロード

    アクセストークンが埋め込まれた、あなた専用の署名済みインストーラーが提供されます。

  3. サーバーで実行

    エージェントが SSH ポートを自動検出し、現在の IP をホワイトリストに追加するため、自分自身を締め出す心配はありません。

  4. 完了

    数秒でサーバーがパネルにオンライン表示され、適切な初期設定で攻撃者のブロックを開始します。

04機能

サーバーの保護と管理に必要なすべて

総当たり攻撃対策を核に、攻撃者情報の共有、地域ルール、一時アクセス、集中管理で拡張。

SSH・FTP の総当たり対策01

エージェントが systemd ジャーナル(journald)と FTP サーバーのログからログイン失敗を読み取り、攻撃者をローカルで即座にブロック。クラウドに接続できなくても動作します。

単一アドレスではなくサブネット全体をブロック02

攻撃者は自分のネットワーク内でアドレスを変えてきます。SSH Protector は ASN データに基づきサブネット全体を、統合された 1 つのファイアウォール規則でブロックします。

攻撃者データベースの共有03

ある顧客への攻撃が全員を守ります。サブネットの評価はプラットフォーム全体で集約され、悪質なネットワークはあなたに到達する前にブロックされます。

地域ルール04

実際に作業する国からのみ SSH を許可。すべてエージェント上でローカルに判定されるため、高速でオフラインでも機能します。

一時アクセス05

ポートは通常閉じたままにし、MFA 承認後に特定アドレスへ一時開放。タイマー付きで自動的に閉じます。

ホワイトリストと厳格モード06

信頼済みアドレスとダイナミック DNS 名は決してブロックされません。厳格モードではホワイトリストの送信元だけがポートに到達できます。

通知と監査07

ブロックの急増、サーバーのオフライン、設定の変化--メール、Telegram、Slack、Webhook で通知。すべての操作は監査ログに記録されます。

軽量な単一エージェント08

サービスとして動く小さな実行ファイル 1 つ。メモリは数 MB、CPU 負荷はほぼゼロ、すべての主要な Linux ディストリビューションとアーキテクチャに対応。

集中管理09

サーバー一覧、ポリシー、バージョンのロールバック、グループと一括操作--すべてパネルから。サーバー側で受信ポートを開く必要はありません。

Always-On ロックアウト保護10

総当たり攻撃でもアカウントをロックされないことを保証します。エージェントは PAM faillock のロックアウトしきい値より前に攻撃者をブロックし、保護対象アカウント(管理者+指定リスト)を自動で解除します。すべてのプランで既定で有効です。

05料金

サーバー数による追加課金のない定額プラン

Free は永久無料でカード不要。有料プランは定額で、含まれるサーバー数が決まっています。

Free

サーバー 1 台
$0/月

1 台のサーバー向けの基本的な SSH 保護。

  • SSH 総当たり対策
  • ソフトホワイトリスト
  • 最小限の統計

Solo

サーバー 1 台
$9/月

本番サーバー 1 台の完全な保護。

  • Free のすべて
  • FTP 総当たり対策
  • 完全な統計
  • メール通知
  • 基本監査

Pro

人気サーバー 5 台まで
$15/月

チームや小規模なサーバー群に。

  • Solo のすべて
  • 厳格ホワイトリストとグループ
  • エクスポート付き完全監査
  • 拡張統計
  • 共有の行動ブロックリスト

Enterprise

サーバー 50 台まで
$99/月

多数のサーバーを持つ企業向け。

  • Pro のすべて
  • 管理者・モデレーター権限の付与
  • 優先サポート
  • 共有の行動ブロックリスト

プランに含まれる台数をあと 1 台だけ超えたいときは、上位プランに移らず 1 台 $3/月 で追加できます。

Pro を 14 日間無料で - カード不要

登録すればご自身のサーバーでサブネット単位のブロック、Telegram 通知、GeoIP、共有脅威データベースを試せます。期間終了後はアカウントが自動で Free に戻り、保護は動き続けます。請求は発生せず、解約手続きもありません。

無料トライアルを開始
06利用シーン

Linux サーバーの保護が本当に必要になるとき

Linux マシンへのリモートアクセスが、理論上のリスクではなく日常のリスクに変わる15の状況です。このうちのどれかにご自身のサーバーが当てはまるなら、そのパスワードはすでに試されています。

0.0.0.0/022 · 21LISTEN 0.0.0.0$sshduptime 412dno consoleone host · always on

Linux の SSH サーバーを保護する必要があるとき

最初のグループは、マシンそのものについてです。どこに置かれ、誰が到達でき、ほかに何が待ち受けているか。ここに挙げる状況のどれも間違いではありません。いずれも Linux サーバーのごく普通で妥当な運用形態であり、そのすべてがパスワード入力欄をインターネット全体の前に置いています。

  1. 01

    SSH がどこからでも届き、パスワード認証もまだ有効になっている

    ポート 22 が、前段の VPN も踏み台もないまま、世界中のどのアドレスにも応答します。レンタルマシンではこれが既定の状態です。事業者はグローバルアドレスを渡し、サーバーの設定はまさに SSH で行い、設定が終わってもポートはそのまま残ります。しかも多くの場合、鍵認証と並んでパスワード認証が有効なままです。

    IPv4 の全範囲を走査するのに要するのは数日ではなく数分です。割り当てられたばかりのアドレスは、ネットワークに現れてから数時間で接続試行を受け始めます。サーバーに名前も証明書も実在の利用者も存在しないうちからです。その瞬間から、マシンは見知らぬ相手に24時間応答し続けます。

    • グローバルアドレスで到達できる VPS またはクラウドインスタンス
    • ルーターの内側にあり、ポート 22 が転送されているオフィスのマシン
    • 移行作業のため「一時的に」開けたまま閉じ忘れたサーバー
    • アドレスをどこにも公開していないのに、走査対象の範囲に含まれているマシン
  2. 02

    クラウドイメージには、誰もが知っているユーザー名が最初から入っている

    ディストリビューションや事業者のイメージには、既知の最初のアカウントが付いてきます。素の VPS なら root、Ubuntu なら ubuntu、ほかにも ec2-user、debian、admin、pi。推測作業の半分、つまり有効なユーザー名を見つける工程は、マシンが初回起動を終える前にすでに片付いています。

    だからこそ、公開されたサーバーのログには一日中、同じ短い名前の並びが現れます。攻撃者は何も調べる必要がありません。そのアカウントは標準であり、インターネット上の Linux ホストの相当な割合に存在し、その多くでは今も直接ログインに使えるからです。

  3. 03

    借りた VPS 1台にサイトもデータベースもバックアップも載っている

    小規模な会社や個人開発のプロジェクトでは、ウェブサーバー、データベース、キュー、夜間ダンプを1台にまとめていることがよくあります。切り替え先の2台目はなく、専任の管理者もいません。デプロイのためにログインする人が、そのまま保守も担っています。

    事業者側の保護はここまで届きません。ホスティング会社が遮断するのは大量のトラフィックであってパスワード推測ではありません。絶えず入れ替わるアドレスからの毎秒数回の試行は、ネットワークから見ればごく普通の通信であり、不正利用の窓口が気づくことはありません。

    • 余裕がない:侵害されればプロジェクトは遅くなるのではなく止まる
    • バックアップも同じディスク上にあることが多く、ランサムウェアはまさにそこを狙う
    • auth.log を読む担当は誰もおらず、試行は気づかれないまま積み上がる
  4. 04

    その Linux 機はルーター・NAS・機器であって、誰もサーバーだと思っていない

    ファイアウォール機器、ネットワークストレージ、店舗の POS を動かす Raspberry Pi、機械室の制御装置、机の下でバックアップを回すミニ PC--どれも Linux であり、どれも SSH が有効で、そしてどれも誰かの「サーバー一覧」には載っていません。

    忘れられるのは、まさにこういうマシンです。一度設定され、そのまま動き続け、パスワードを決めた日と次に誰かが目を向ける日とのあいだに何年も流れます。その間ずっと、ポートはインターネットに応答し続けています。

  5. 05

    同じホストで FTP も待ち受けている

    Linux サーバーが公開するサービスは1つとは限りません。顧客やデザイナーとファイルをやり取りする FTP と、管理用の SSH が同じアドレスに同居しているのはよくある構成で、しかも FTP のアカウントはたいていマシン上のどれよりも古いものです。

    開いているポートはそれぞれ独立した扉で、それぞれに認証画面があります。攻撃側は分業しません。同じ走査基盤が2つを順に試し、弱いほうがホスト全体の帰趨を決めます。どちらの扉から入っても、立っているのは同じオペレーティングシステムの上だからです。

    • 取引先のために一度作られ、その後見直されていない FTP アカウント
    • 平文の FTP は資格情報をそのままネットワークに流す
    • オフィスの半分がパスワードを知っている共有のアップロード用アカウント
users triedrootadminubuntudeploypostgrestestpassword:PasswordAuthentication yesfailed9 999

アカウントと鍵が管理下から外れていくとき

2つ目のグループは、そのマシンの資格情報を誰が持っているかという話です。鍵、デプロイ用アカウント、取引先、古いパスワードは、誰かが見直す速さより早く積み上がり、そのすべてが同じ入力欄に行き着きます。実際の侵入の多くは、ここから始まります。

  1. 06

    開発者や取引先がそれぞれのログインを持っている

    外部の開発者、ビルドをアップロードする必要のあるデザイナー、サイトを保守する制作会社、業務アプリケーションのベンダー。それぞれがアクセスを求め、それぞれにアカウントが作られるか authorized_keys に鍵が追加され、その大半は作業が終わって何年も経った今も生きています。

    その資格情報がどう保管されているかは見えません。秘密鍵が暗号化されないままノートパソコンに置かれているかもしれませんし、共有のクラウドフォルダーかもしれませんし、1年前にその会社を辞めた社員のホームディレクトリかもしれません。一度与えたアクセスは、たいていプロジェクトよりも、そして与えた相手本人よりも長く生き残ります。

    • 一度のデプロイのために追加され、その後削除されていない鍵
    • 個人ごとのアカウントではなく、取引先全員で共有された1つのアカウント
    • 取引先の担当者が入れ替わっても、こちらには知らされない
  2. 07

    デプロイや自動化のアカウントは二要素認証を使えない

    CI パイプライン、バックアップスクリプト、監視エージェント、rsync のジョブ、構成管理ツールは、人がいない状態でサインインしなければなりません。したがって、人にコードを尋ねる仕組みでは保護できません。そのうえ、これらは通常どの担当者よりも広い権限を持っています。

    そのため、こうしたアカウントはそのまま残ります。予測しやすい名前、何年も変わっていない鍵やパスワード、そして誰にも気づかれずに午前3時でも通るログイン経路。攻撃者が狙うのはまさにここです。決して変わらないからこそです。

  3. 08

    パスワード認証を「念のため」有効なままにしてある

    鍵認証は設定済みで、パスワードは予備として有効なままにしてある--鍵を失くした日のため、鍵を持たない同僚のため、1年誰も試していないコンソールのため。意図は妥当です。しかし結果として、鍵の運用方針は攻撃者から見れば任意のものになります。

    鍵が存在することは、推測攻撃には関係ありません。マシン上のどれか1つのアカウントでも PasswordAuthentication が yes である限り、辞書攻撃には入り口があり、サーバー上でいちばん強い鍵もそれを1秒たりとも遅らせません。

  4. 09

    そのパスワードはすでに流出リストに載っている

    侵入の成功例の多くは、巧妙でも何でもありません。掲示板や通販サイト、古いメールアカウントで使っていたパスワードを使い回していて、それらが流出し、同じ文字列が今、走査ボットのめくる辞書に載っている--それだけです。

    そうなると推測は確率の問題ではなく、時間割の問題になります。正しいパスワードはすでにリストにあり、残る問いはボットがいつあなたのアドレスに到達するかだけです。ここでは複雑さの要件は助けになりません。そのパスワードは、あなたが定めた規則をすべて満たしている可能性が高いからです。

    • サーバーのアカウントと個人サービスで同じにしているパスワード
    • 自社ではなく取引先のシステムから流出した資格情報
    • ポリシーは通すのに辞書にはすでに載っている型:Summer2024!、会社名1
  5. 10

    パスフレーズなしの秘密鍵が誰かのノートパソコンにある

    鍵がパスワードより強いのは、鍵ファイルがコピーされるその瞬間までです。盗まれたノートパソコンの中の暗号化されていない id_rsa、同期されたクラウドフォルダー、公開レジストリに push されたコンテナイメージ、うっかりコミットされたリポジトリ--いずれも、推測する必要すらない有効な資格情報です。

    サーバーには区別がつきません。署名は正当で、アカウントは実在し、セッションは開発者本人のものとまったく同じに見えます。だから有用な問いは、誰が鍵を持っているかだけではなく、その開発者が一度も行ったことのない場所から接続が来たときに何が起きるか、でもあるのです。

/var/log/auth.log22:0023:0124:0225:0326:0427:0528:0629:07this month12 480blockedexported · signed

ログ、監査人、あるいは事業者が問いを突きつけるとき

3つ目のグループは、侵害が起きるより前に届いてしまう影響の話です。成功しなかった試行も、ディスクと CPU と注意力と信用を確実に消費します。そして遅かれ早かれ、技術チームの外にいる誰かが、保証ではなく証拠で答えなければならない問いを投げかけてきます。

  1. 11

    監査人・保険会社・取引先から、リモートアクセスの保護状況を問われる

    サイバー保険の申込書、法人顧客のセキュリティ質問票、決済データや個人データに関する規制。いずれも言葉を変えて同じことを尋ねています。リモートアクセスへの反復的なパスワード推測を何が止めているのか、そしてそれが機能していることをどう確認しているのか。

    「鍵を使っています」は次の一問に耐えません。次に問われるのは、まだパスワードを受け付けるアカウントと、いずれにせよポートまで届いている試行だからです。求められているのは、個々の資格情報とは独立に存在する対策と、対象期間を通じてそれが有効だったことを示す記録です。

    • 保険証券の発行・更新前に提出するサイバー保険の質問票
    • 契約締結前に大口顧客が行う取引先セキュリティ審査
    • リモートアクセスへの総当たり対策を求める決済・個人データの規則
  2. 12

    auth.log とディスクがログイン失敗で埋まっていく

    拒否された試行はすべて記録されます。公開されたサーバーでは1日あたり数万行になり、影響は積み重なります。ローテーションが本物のイベントを数時間で捨て、ログ転送は取り込み量で課金され、小さなルートファイルシステムは、どうせ通すつもりのなかった通信のせいで本当に容量を使い切ることがあります。

    コストは保存領域だけではありません。1回の試行ごとに TCP 接続、鍵交換、資格情報の検証が走るため、マシンは一日のうち計測できるだけの時間を、決して通すつもりのない相手への応答に費やします。1コアの VPS では、その割合はサーバー本来の仕事が体感できるほど大きくなります。

  3. 13

    手作業で維持しているブロックリストが、それ自体保守作業になっている

    最初の対応はたいてい、ローカルのフィルターと膨れていくファイアウォール規則です。しばらくはうまくいきます。やがて規則は数千行になり、半分は何のためにあるのか誰も覚えておらず、忙しい朝に自社の拠点が締め出され、新しいマシンを立てるたびに同じアドレス範囲を一から突き止め直すことになります。

    本当に必要なのは、一度決めてどこにでも適用される方針、記憶ではなく記録として残る例外、そしてサーバーを作り直すたびに手で組み立て直さずに済むブロックです。

  4. 14

    1人の管理者が多くの顧客のサーバーを見ている

    マネージドサービス事業者、フリーランスのシステム管理者、小規模なホスティング会社は、顧客も事業者もネットワーク構成も異なる数十台の Linux マシンを抱えています。それぞれに固有の規則、固有のアカウント、固有の停止許容度があります。

    1台ずつ手で設定するやり方は規模に耐えませんし、顧客からの電話で初めて問題を知るやり方も同じです。こうした台数には、どこにでも適用される共通の基準、顧客が本当に異なる場合のマシン単位の例外、そしてすべてを一望できる1か所が要ります。

    • 複数の事業者とアドレス範囲にまたがるマシン群
    • どれほど不自然に見えても決してブロックしてはならない顧客の拠点
    • 設定した理由を失わずに管理者間で引き継げること
  5. 15

    サーバーへの回線が不安定でも、保護は効き続けなければならない

    回線は落ち、事業者は経路を変え、DNS は壊れ、遠隔のラックにあるマシンは何時間も外への経路を失うことがあります。攻撃はその間も止まりません。むしろネットワーク障害こそ、サーバーが最も見られていない時間帯です。

    したがってログインを守るものは、外部サービスへの到達に依存せず、マシン上でローカルに判断し続けなければなりません。インターネットが使えないと適用が止まるものは、必要がなかった日にだけ守ってくれる保護です。

07FAQ

よくある質問

本番サーバーに入れても安全ですか?

本番サーバーに入れても安全ですか?

はい。エージェントは自分の OS のセキュリティログを読み取り、同じマシンの保護対象ポートへの受信接続をブロックするだけです。通信は送信方向の HTTPS のみで、受信ポートは一切開きません。

インターネットがなくても保護は機能しますか?

インターネットがなくても保護は機能しますか?

はい。ブロックの判断はエージェント上でローカルに行われるため、クラウドに到達できなくても最後に適用されたポリシーで保護が継続します。

SSH ポートを変更している場合は?

SSH ポートを変更している場合は?

エージェントが sshd_config と待ち受けソケットから実際の SSH ポートを自動検出し、ポート変更時には規則を再構築します。FTP ポートも同様に検出されます。

自分自身を締め出してしまいませんか?

自分自身を締め出してしまいませんか?

いいえ。インストール時に現在の IP アドレスがホワイトリストへ追加され、ホワイトリストの送信元はどのブロックよりも常に優先されます。

対応する Linux ディストリビューションは?

対応する Linux ディストリビューションは?

systemd ベースの最新ディストリビューション(Debian、Ubuntu、RHEL/CentOS/Alma/Rocky、Fedora)。x86-64 と ARM64 に対応。追加ランタイム不要の単一の静的バイナリです。

支払い方法は?

支払い方法は?

国際決済は PayPro Global、ロシア国内は YooKassa、予備手段として暗号資産にも対応しています。Free プランは永久に有効でカード不要です。

パスワード認証を有効にした SSH 保護

私の状況では、PasswordAuthentication を有効にしたままにし、SSH は Linux サーバーのパブリック アドレスでリッスンしました。 auth.log には、さまざまな IP やログインからの失敗したパスワードが何千件も記録されており、ポート 22 を移動しても役に立たず、アクセスを完全にブロックすることはできません。ログインに成功する前に、パスワードの総当たり攻撃に対する SSH 保護を設定するにはどうすればよいですか?

私はSSH Protector を使用して、エージェントを systemd サービスとしてインストールします。エージェントはローカルで認証ログを読み取り、実際の sshd ポートを決定し、一定の時間枠のしきい値が経過すると、システム ファイアウォールでソース ネットワークをブロックします。事前にアドレスまたは VPN をホワイトリストに追加し、パネルで履歴を管理し、インターネットに接続できなくなったときに最新のポリシーを保存します。

私はSSH Protector なしで無料 PasswordAuthentication と PermitRootLogin を無効にし、キーを Ed25519 のままにし、AllowUsers/AllowGroups を制限し、VPN または信頼できる CIDR からのポートのみを許可します。一時的にパスワードが必要な場合は、journald/auth.log を使用してfail2ban を構成し、nftables/iptables を確認し、findtime、maxretry、bantime を設定し、バックアップ コンソールから例外を定期的にテストします。

クラウド Linux イメージの標準ログインの保護

私の状況では、Ubuntu/Debian/RHEL をパブリック クラウド イメージからデプロイしたため、ユーザー名 ubuntu、debian、ec2-user、または root は事前にボットに認識されています。たとえ適切なパスワードを使用していても、ログは対象を絞った試行でいっぱいになり、パスワードを 1 つ間違えるとアカウントが脆弱になります。標準ログインを使用してクラウド VPS で SSH を保護するにはどうすればよいですか?

私はSSH Protector を使用すると、どのような名前を試行しても、実際にログインに失敗した場合にソースをブロックし、攻撃者のネットワークまで禁止を拡張できます。見つかった SSH ポートを確認し、管理 VPN をホワイトリストに追加し、保護がパネルの可用性に依存しないようにローカル エージェント ソリューションを使用します。

私は無料で、パスワードと root ログインを無効にし、sudo で別のユーザーを作成し、cloud-init 経由で一意のキーをアップロードし、VPN/ネットワークへのセキュリティ グループを閉じます。未使用のauthorized_keysを削除し、要塞でMFAを有効にし、fail2banと未知のソースに対する承認されたパスワード/公開キーのアラートを構成します。ノイズを減らすためだけにポートの変更を検討します。

Web サイトとデータベースを使用して単一の Linux VPS を保護する

私は Linux VPS を 1 つ持っており、Web サイト、データベース、バックアップが同時に動作し、管理には SSH が必要です。 sudo ユーザーとしてログインに成功すると、攻撃者にすべてのレイヤーへのアクセスが許可され、ローカル バックアップ ファイルを削除できるようになります。最小限の負荷で重要な VPS 上で SSH を保護するにはどうすればよいですか?

SSH Protector を使用して、ローカル イベントを読み取り、アカウントが侵害されるまでファイアウォール内のソースをブロックする静的エージェントをインストールします。私は無料の最初のサーバー保護を使用し、チャンネルをホワイトリストに登録し、エージェントがオフラインで動作し続けることを確認します。バックアップと最小権限は別のレイヤーとして残しておきます。

私は無料で、WireGuard/Tailscale の背後で SSH をロックし、パスワードと root を無効にし、パスフレーズ付きのキーを要求し、sudo に制限します。別の認証情報を使用してバックアップを VPS の外部に保存し、自動セキュリティ更新、fail2ban、成功したログインの監査を有効にしています。ファイアウォールを強化する前に、プロバイダーの緊急コンソールを確認します。

ルーター、NAS、Linux デバイスの SSH 保護

私は Linux ルーター、NAS、または ARM デバイスを管理しています。これらは本格的なサーバーとは考えていませんが、sshd を実行しており、ポートは外部ネットワークからアクセスできます。デバイスはめったに更新されず、リソースが不足しているため、侵害されるとローカル ネットワーク内に足場ができてしまいます。低電力 Linux デバイスで SSH を保護するにはどうすればよいですか?

私はSSH Protector では、適切なアーキテクチャと systemd でサポートされている静的バイナリを使用し、受信制御ポートなしでローカル ログ解析とファイアウォール ブロックを有効にします。インストール前に OS とファイアウォールの互換性をチェックし、管理ホワイトリストを設定して、エージェントが限られたデバイス リソースを圧迫しないようにしています。

私は無料ではありますが、SSH を外部にはまったく公開しません。デバイスを VPN 経由で接続し、パスワードと root を無効にし、1 つのキーと 1 つの制御サブネットを許可します。ファームウェアを更新し、未使用のサービスを無効にし、十分なメモリがある場合にのみ最小のfail2banを設定し、ファイアウォール構成を保存します。サポートされていない OS の場合は、不明なバイナリではなく外部ゲートウェイを選択します。

Linux 上の統合 SSH および FTP セキュリティ

私の状況では、Linux ホストで SSH と FTP を開いていて、ボットが異なるログを介して両方のサービスを行き来しています。 sshd スクリプトによってブロックされた IP が FTP を攻撃し続け、手動の iptables チェーンが分岐します。 SSH および FTP 経由のパスワード推測を一元的にブロックするにはどうすればよいですか?

私はSSH Protector を使用すると、サポートされている SSH および FTP ログの読み取りを有効にし、エージェントにポートを決定させ、ソース ネットワークに単一のローカル ルールを適用します。信頼できる統合をホワイトリストに追加し、ダッシュボードで履歴を確認し、高度な FTP 保護と追加機能が料金に依存する可能性があることを考慮します。

私はプロトコルが本当に必要な場合は、通常の FTP を SFTP over SSH または FTPS に無料で置き換え、インターネット全体からサービスを終了します。 sshd と FTP 用に個別のfail2ban ジェイルを作成し、タイムアウトを設定した 1 つの nftables に誘導し、更新後にログ形式を確認し、共有アカウントを無効にします。

開発者と請負業者の SSH ログインの制御

私の状況では、開発者と請負業者に個別の Linux ログインと SSH キーを発行しましたが、キーの一部は個人のラップトップにコピーされ、所有者のリストは最新のものではありませんでした。総当り攻撃を止め、共通のキーを使用せずに人物をすぐに呼び出し、誰が入力したかを理解する必要があります。マルチユーザー SSH アクセスを保護するにはどうすればよいですか?

私はSSH Protector では、すべての外部ソースに対する自動ネットワーク ブロックをそのままにし、すべてのホーム IP ではなく、制御された VPN のみをホワイトリストに登録します。攻撃にはパネルを使用しますが、ID は別の Unix アカウントとキーに保存します。エージェントが境界を保護し、特定のキーを削除することでアクセスを取り消します。

私は無料で、Ansible を通じてauthorized_keys を一元管理し、明確なコメント付きで個人およびデバイスごとに 1 つのキーを発行し、共有アカウントを無効にして sudo を制限します。要塞で VPN/MFA を有効にし、インベントリでアクセス期間を設定し、SIEM で指紋付きの承認された公開キーを収集し、契約終了時にキーを自動的に削除します。

MFA なしでビジネス SSH アカウントを保護する

私の状況では、CI と自動化で使用されるデプロイメント/バックアップ アカウントがあるため、インタラクティブ MFA はそれらに適用されません。これらのキーはオペレーターなしで機能するはずですが、ランナーを侵害したり、パスワードを繰り返したりすると、サーバーが開く可能性があります。導入を中断せずにマシンの SSH アクセスを保護するにはどうすればよいですか?

SSH Protector を使用すると、正確なホワイトリストを通じて信頼できるランナー アドレスを分離し、失敗したログインによって他のすべてのソースがブロックされたままになります。私はこれがキー制御の代替であるとは考えていません。エージェントは外部からのブルート フォースを軽減しますが、サービス アカウント自体の制限には認証成功の影響が含まれています。

私は無料で、ジョブに別の Ed25519 キーを使用し、それをシークレット ストアに保存し、from=、command=、no-port-forwarding、no-agent-forwarding、および no-pty を介して Authorized_keys で制限します。ランナー ネットワークからの SSH のみを許可し、最小限の sudo コマンドを発行し、キーを定期的にローテーションし、デプロイメント ログにフィンガープリントを記録します。

SSH経由のパスワードログインを安全に無効にする

私の状況では、sshd_config を変更した後にキーを紛失したりロックアウトされたりするのが怖いので、「念のため」SSH ログインのパスワードを残しました。その結果、PasswordAuthentication yes が何年も残り、auth.log には常に選択内容が表示されます。サーバーにアクセスできなくなるリスクを負わずに SSH キーに切り替えるにはどうすればよいですか?

私はSSH Protector では、移行を実行する際に、最初に追加の保護層をインストールし、現在の管理アドレスをホワイトリストに登録します。エージェントはアクティブなブルート フォースをブロックし、実際のポートを自動的に考慮してポリシーをオフラインのままにしますが、キーの検証に成功した後も、パスワード ログインは無効のままです。

私は無料で、2 番目の SSH セッションとプロバイダー コンソールを開き、一意のキーを追加し、~/.ssh 700 とauthorized_keys 600 の権限を確認し、sshd -t を実行して、最初のセッションを閉じずにリロードします。次に、PasswordAuthentication を no、KbdInteractiveAuthentication を no、PermitRootLogin を no に設定し、新しいログインを確認し、緊急キーを個別に保存します。

SSHパスワード漏洩への対応

私の状況では、Linux ユーザーのパスワードが漏洩し、いくつかの国から彼の名前を使った試みが auth.log に記録されていることがわかりました。サーバーが別のネットワークから使用されているため、ログインが成功したかどうかわかりません。 SSH 検索を緊急に終了して侵害を確認するにはどうすればよいですか?

私はSSH Protector を使用すると、アクティブなソースとネットワークを即座にブロックし、攻撃の履歴を確認し、信頼できるホワイトリスト経由でのみアクセスを許可します。次に、パスワード/キーを変更し、セッションを終了し、受け入れられたパスワード/公開キーを個別に分析します。ブロックすると攻撃ウィンドウが短縮されますが、すでに成功したログインがないことは証明されません。

私は無料で、SSH セキュリティ グループまたは VPN への nftable を一時的に閉じ、ユーザーをブロックし、キーを取り消し、関連するシークレットを変更します。 last/lastlog、journalctl、sudo、新しいユーザー/キー、cron/systemd ユニット、プロセス、ネットワーク接続をチェックし、キーのみのアクセスを復元し、再利用されたパスワードを無効にします。

パスフレーズを使用しない SSH 秘密キー保護

私の状況では、従業員のラップトップでパスフレーズのない秘密 SSH キーを見つけました。このキーは複数のサーバーで許可されており、バックアップやマルウェアに組み込まれる可能性があります。このようなログインでは、一連の間違ったパスワードが作成されることはないため、通常のブルート フォース対策では阻止できません。被害を最小限に抑え、SSH キーを適切に保護するにはどうすればよいですか?

SSH Protector を使用して、外部のブルート フォースをブロックし続け、疑わしいソースを確認しますが、正しい盗まれたキーに対してこれに依存しないでください。私はすぐにすべてのサーバーから指紋を削除し、パスフレーズを含む新しいキーを発行し、VPN のみのホワイトリストを残します。成功したエントリについては別途調査します。

私は無料で、すべてのauthorized_keys全体で古い公開鍵を検索し、構成管理によってそれを取り消し、フィンガープリントとソースによって受け入れられた公開鍵を確認します。パスフレーズと ssh エージェント タイムアウトを含むハードウェア FIDO2/ed25519-sk またはキーを発行し、必要な場合を除きエージェント転送を無効にし、所有者、デバイス、ローテーションの日付のレジストリを保持します。

監査用の SSH セキュリティの確認

私は監査人、クライアント、または保険会社に、管理 SSH アクセスがどのように保護されているか、どのポートとホストが制御されているか、自動選択がどのようにブロックされているか、ホワイトリストに誰が含まれているか、インターネットが失われた場合に何が起こるかを示す必要があります。 SSH ブルート フォース保護の検証可能な証拠を収集するにはどうすればよいですか?

私はSSH Protector を使用して、攻撃とブロックの履歴、ポリシー設定、保護されたサービスのリスト、および承認された例外を添付します。エージェントのローカル ソリューション、送信 TLS チャネル、受信制御ポートの欠如を文書化してから、制御された不正なログインを実行し、ログ行、ファイアウォール ルール、および通知を保存します。

無料で、sshd_config、nftables/ufw、fail2banjail、および変更ログを Git からエクスポートし、auth.log/journald を安全なストレージに送信します。私は、PasswordAuthentication、PermitRootLogin、MFA/VPN をチェックし、キーの取り消しを毎月テストし、結果に署名し、証拠を必要な期間保存します。

SSH ブルート フォースによる auth.log ボリュームの減少

私の状況では、auth.log または Journald が失敗したパスワードと無効なユーザーでいっぱいになり、ローテーションにより有用な履歴が失われ、ログ パーサーがリソースを浪費します。成功したログインを調査する必要があるため、監査を無効にしたくありません。 SSH ブルート フォース イベントのフローを減らすにはどうすればよいですか?

SSH Protector では、一連の失敗後にファイアウォールでソースをブロックするため、次の TCP 接続は sshd に到達せず、多くのエントリが作成されません。私はシステム監査を保持し、ジャーナルドのサイズと保持を個別に制御し、パネル内の攻撃履歴を元のログの代わりとしてではなくインデックスとして使用します。

私は無料で、VPN/許可リストへの SSH を閉じ、パスワードと標準ログインを無効にし、タイムアウトを設定した nftables にfail2banを送信します。 SystemMaxUse とjournald/rsyslog ローテーションを構成し、Accepted イベントと主要な Failed イベントを外部 syslog に送信し、LogLevel を調査に必要な値以下に下げません。

手動ブラックリストの代わりに Linux ブロックを自動化

私の状況では、IP を auth.log から ufw/iptables に手動でコピーしますが、アドレスはすぐに変わり、古いルールは削除されず、チェーンは増大し、一歩間違えばアクセスが閉じられてしまう可能性があります。ブラックリストのサポートは、別個の日常業務になりました。 SSH ブルート フォース ブロッキングを安全に自動化するにはどうすればよいですか?

SSH Protector を使用して、しきい値とウィンドウを一度設定すると、エージェントがローカルでロックを作成して解放し、ホワイトリストが優先されます。私は、攻撃者が隣接するアドレスをローテーションするネットワーク禁止を使用し、パネルの変更を確認し、最初のポリシーの前にバックアップ コンソールを保存します。

私は無料で、個々の永続的な iptables ルールを、タイムアウトまたはfail2banアクションが設定されたnftablesに置き換え、VPNのmaxretry/findtime/bantimeとignoreipを設定します。実際のログ行でフィルターをテストし、慎重に recidive を有効にし、設定サイズを制限し、ディストリビューションの更新後のリロード エラーを監視します。

複数のクライアントにわたる SSH セキュリティの管理

私は、Debian、Ubuntu、RHEL、ARM 上で複数の顧客の Linux サーバーを保守しています。それぞれに独自のポート、信頼できるネットワーク、連絡先があります。ローカルのfail2banとファイアウォールの構成が異なり、クライアント間の共通のホワイトリストは受け入れられません。マルチテナント フリートで SSH セキュリティを一元化するにはどうすればよいですか?

SSH Protector を使用すると、サポートされているエージェントにホストを接続し、検出されたポートと攻撃を 1 つのパネルから確認できますが、例外とポリシーは目的のサーバー/クライアントの境界内に保持されます。私はベースライン値を適用し、逸脱を個別に文書化し、担当顧客に通知します。

私は無料で、クライアントごとに個別のインベントリとボールトを使用して、Ansible ロールで sshd、fail2ban、nftables を記述し、CI の変更を確認し、テナント タグ付きの Wazuh/中央 syslog でログを収集します。構成をベースラインと自動的に比較し、異なる顧客からのキー、CIDR、シークレットを組み合わせることはありません。

不安定なインターネット上のオフライン SSH 保護

私の Linux サーバーはブランチ オフィスまたは不安定なチャネルの背後にあります。クラウド パネルと DNS は時々利用できないことがありますが、内部または転送ポートを介した SSH は応答し続けます。セキュリティは、すべてのソリューションのリモート API を待つ必要はありません。 SSH ブルート フォース ブロックをオフラインに保つにはどうすればよいですか?

私はSSH Protector を使用すると、事前にエージェントにポリシーを適用します。パネルとの通信が失われた場合でも、引き続きローカル ログを読み取り、システム ファイアウォールを最新の構成に変更します。シャットダウン前にホワイトリストを同期し、復元後に蓄積された履歴を確認し、受信エージェント制御ポートは開きません。

私は無料で、制御を完全にローカルにします。nftables/ufw は VPN または必要なサブネットからのみ SSH を許可し、fail2ban は外部ネットワークなしで Journald 経由で機能します。ロード用のルールを保存し、通知用のローカル キューを設定し、DNS を使用せずに再起動をテストし、物理/プロバイダー コンソールを離れて、誤ったルールを復元します。

防御を切らさずに fail2ban を置き換える

この Linux サーバーでは fail2ban が 2 年動いていて、sshd の jail も正常です。代わりにマネージドエージェントを試したいのですが、22 番ポートを数分でも無防備にはできませんし、2 つのツールが同じファイアウォール規則を取り合うのも避けたい。停止なしで fail2ban を SSH Protector に置き換えるにはどうしますか。

fail2ban を動かしたまま SSH Protector のエージェントを導入します。エージェントは専用の nftables テーブル(inet sshprotector、古いホストでは接頭辞付きの ipset 名前空間)を持ち、そこだけを再構築するので fail2ban のチェインには一切触れず、どちらも相手を巻き戻しません。導入時にまず自分のアドレスをホワイトリストへ入れ、その後 1 日パネルを見て、jail と同じ送信元をエージェントが捕らえているか確認します。そこまで済んでから fail2ban を停止し、その規則を削除します。気が変わった場合、エージェントをアンインストールすれば自分の規則も一緒に消え、ファイアウォールは元のまま残ります。

エージェントを使わない場合でも、ログを読む 2 つのツールの切り替え方は同じです。古いほうを動かしたまま、新しいほうに独自のチェイン名かテーブル名を与えて規則が衝突しないようにし、丸 1 日の実トラフィックでそれぞれ何を捕らえたか比べ、新しいほうの遮断件数が 2 つのうち少ないほうでなくなってから古いほうを止めます。動いているツールを先に外してはいけません。公開された SSH ポートで無防備な数分間は、すでにあなたを走査しているボットネットには十分です。

CrowdSec とマネージドエージェントの選び方

小規模な Linux 群の SSH ブルートフォース対策を比較していて、CrowdSec が何度も候補に挙がります。オープンソースで、コミュニティのブロックリストがあり、SSH 以外もカバーします。SSH Protector には CrowdSec にない何がありますか。どう選べばよいでしょう。

両者は重なる問題を別の端から解いており、私は点数ではなく形で選びます。CrowdSec はエンジンです。シナリオ言語があり、遮断コンポーネントは自分で導入して接続し、ブロックリストは運用者全員が育てます。射程は SSH をはるかに超えます。SSH Protector は 1 つのことだけを行うバイナリです。SSH・SFTP・FTP の認証ログを読み、攻撃元の /24 全体を自前の nftables テーブルで遮断し、再起動後もその遮断を保ち、22 番と決めつけずに実際の sshd ポートを検出し、保護対象サーバーが沈黙したときに知らせるパネルへ報告します。評判は公開インターネットではなく、保護対象アカウント間で共有されます。

つまり決め手は、手元に実際に何があるかです。HTTP、データベース、任意のログ源、自作の検知シナリオといった広さが要るなら、CrowdSec にはその余地があり、動かすこと自体は無料です。一方、SSH ポートを公開した Linux が数台あるだけで、検知基盤を保守する人がいないなら、設定なしで正しく動く狭い道具のほうが欲しい。同じホストで両者を走らせ比べたことはないので、性能の数字では選びません。その数字を持ち出す人も、そうすべきではありません。

今日、最初のサーバーを保護しましょう

Free プランは永久無料。必要になったらワンクリックでアップグレードできます。

08信頼

誰が作っているか、誰に支払うのか、エージェントはサーバーで何ができるのか

本番サーバーに管理者権限で何かを入れる前に、答えを知っておく価値のある三つの問いです。

誰が作っているか01

SSH Protector を書いているのは Recovery Toolbox の主任サーバーセキュリティスペシャリスト Victor G. Bobrov です。システム開発とセキュリティで20年以上、Microsoft MCSD/MCDBA 認定。検知ルールもブロックのロジックもこのサイトの記事も彼の仕事であり、匿名のブランドではなく本人の名前で公開されています。 著者について →

誰に支払うのか02

提供元はブルガリア(EU)登記の File Master LLC です。Bulstat/VAT 180842207、オフィスはヴァルナ、電話とメールで連絡できます。決済は PayPro Global が merchant of record として処理します。利用規約、プライバシーポリシー、データ処理契約は要約ではなく全文を公開しています。 利用規約 · プライバシーポリシー · DPA

エージェントにできること・できないこと03

エージェントは自分がいるホストの SSH 認証ログを読み、同じホストに nftables の規則を書きます。受信ポートは開かず、リモートコマンドの経路も持たず、外部との通信は HTTPS のみです。攻撃機能はありません - 他のマシンを攻撃できる仕組みは含まれていません。ブロックの判断はローカルで行われるためクラウドに繋がらなくても保護は続き、インストール時に現在の IP がホワイトリストに入るので、自分のサーバーから締め出されることはありません。インストーラーには署名があります。 仕組み →

09リソース

リソース:この話が置かれているプロトコル・攻撃・標準

SSH のブルートフォース対策は独立した話題ではなく、プロトコルと攻撃の一類型と公開された標準が交わる場所です。以下はそれぞれを定義している情報源です。

リンク先は情報源そのものです。エンティティに ID があれば Wikidata、なければ一次情報へ。

Recovery Toolbox / File Master LLC

Recovery Toolbox へのお問い合わせ

Recovery Toolbox と File Master LLC の連絡先、および同社の主任セキュリティスペシャリスト Victor G. Bobrov のプロフィール。

会社オフィス

File Master LLC は、Recovery Toolbox のオンラインサービスおよびソフトウェア製品を提供する法人です。

File Master LLC
Serena app., office C13
Golden Sands, Varna, 9007
ブルガリア、欧州連合
Bulstat/VAT
180842207

Recovery Toolbox について

File Master LLC は、破損したファイル・データベース・メール保存形式を修復するための Recovery Toolbox のオンラインサービスとソフトウェア製品を開発・サポートしています。当社は、破損データへのアクセスを回復する必要があるユーザー、IT 専門家、企業向けの実用的な復元ツールに注力しています。

ご意見・ご提案を歓迎します。ウェブサイトへのご意見は電子メールでお送りください: webmaster@recoverytoolbox.com

Victor G. Bobrov, server security specialist and author of SSH Protector
セキュリティスペシャリスト

Victor G. Bobrov

サーバーセキュリティスペシャリスト・システム開発とセキュリティで20年以上

Victor G. Bobrov は File Master LLC / Recovery Toolbox でセキュリティ開発を統括しています。SSH Protector の検知とブロックのロジック - SSH 認証ログの解析、ブルートフォースやパスワードスプレーと単なる打ち間違いの判別、nftables の 1 ルールでの攻撃元サブネット遮断、保護対象サーバー群での攻撃者レピュテーション共有 - を設計しています。

  • ブルートフォース対策
  • Linux と SSH の要塞化
  • nftables とネットワークポリシー
  • MCSD
  • MCDBA
著者について →

Microsoft 認定資格

Microsoft Certified Solutions Developer - MCSD。Microsoft Certified Database Administrator - MCDBA。

MCSD MCDBA