ポートノッキング:コンピューターまたはサーバーで可能な最高のセキュリティ(展開+構成)

印象的なポート (英語で ポートノッキング)サーバーを管理する私たち全員がよく知っている必要があることは間違いありません。ここでは、これが何であるか、これを実装および構成する方法について詳しく説明します😉

現在、サーバーを管理している人は、そのサーバーにSSHでアクセスできます。 SSHのデフォルトポートを変更します ポート22を使用しなくなり、他のポートはそのままにしておきます(推奨されません)が、サーバーは一部のポートを介したSSHアクセスを有効にしており、これはすでに「脆弱性」です。

とともに ポートノッキング 次のことを実現できます。

1. SSHアクセスはどのポートでも有効になっていません。 たとえば、ポート9191用にSSHを構成している場合、そのポート(9191)はすべてのユーザーに対して閉じられます。
2. 誰かがSSHでサーバーにアクセスしたい場合、ポート9191が閉じているため、明らかにアクセスできません...しかし、「魔法」または秘密の組み合わせを使用すると、そのポートが開かれます。たとえば、次のようになります。

1. サーバーのポート7000にtelnetで接続します
2. サーバーのポート8000​​に別のtelnetを実行します
3. サーバーのポート9000に別のtelnetを実行します
4. サーバーは、誰かが秘密の組み合わせを行ったことを検出し(ポート7000、8000、9000をこの順序でタッチ)、ポート9191を開いて、SSHによってログインが要求されるようにします(組み合わせが行われたIPに対してのみ開きます)。満足のいく)。
5. SSHを閉じるために、ポート3500にtelnetで接続します。
6. ポート4500に別のtelnetを実行します
7. そして最後にポート5500への別のtelnet
8. サーバーが検出するこの他の秘密の組み合わせを実行すると、ポート9191が再び閉じられます。

言い換えれば、これをさらに簡単に説明すると...

とともに ポートノッキング 私たちのサーバーは特定のポートを閉じているかもしれませんが、サーバーがそれを検出したとき X IP正しいポートの組み合わせが作成されました(構成ファイルで以前に定義された構成)明らかにそれ自体で特定のコマンドを実行します(comando 設定ファイルでも定義されています).

分かりませんか? 🙂

ポートノッキング用のデーモンをインストールするにはどうすればよいですか?

私はパッケージでそれをします こわれた、これにより、非常にシンプルで迅速な方法で実装と構成が可能になります ポートノッキング。

パッケージをインストールします。 knockd

ノックでポートノッキングを設定するにはどうすればよいですか?

インストールしたら、構成に進みます。このために、ファイルを(ルートとして)編集します。 /etc/knockd.conf:

nano /etc/knockd.conf

そのファイルでわかるように、すでにデフォルト構成があります。

 デフォルト設定の説明は本当に簡単です。

- 最初、 UseSyslog アクティビティ(ログ)を記録するために使用されることを意味します / var / log / syslog.
-第二に、セクションで [openSSH] これは明らかにSSHを開くための指示が進む場所です。最初に、デフォルトで構成されている一連のポート(秘密の組み合わせ)があります(ポート7000、ポート8000​​、最後にポート9000)。 明らかに、ポートは変更できます(実際、私はそれをお勧めします)。また、ポートは3である必要はなく、多かれ少なかれ変更できます。それはあなた次第です。
- 第三、 seq_timeout = 5 シークレットポートの組み合わせが行われるのを待つ時間を意味します。 デフォルトでは5秒に設定されています。これは、ポートノッキングの実行を開始すると(つまり、ポート7000にTelnetで接続する場合)、5秒が経過して正しいシーケンスを完了するまでに最大5秒かかることを意味します。ポートノッキングが完了していない場合は、シーケンスが無効であるかのようになります。
- 第XNUMX、  command 多くの説明は必要ありません。 これは、サーバーが上記で定義された組み合わせを検出したときに実行するコマンドにすぎません。 デフォルトで設定されているコマンドは、ポート22を開いて(このポートをSSHポートに変更して)、ポートの正しい組み合わせを作成したIPに対してのみ実行します。
-第五に、 tcpflags = syn この行を使用して、サーバーがノッキングポートに対して有効であると認識するパケットのタイプを指定します。

次に、SSHを閉じるセクションがあります。デフォルトの構成は、上記の同じポートシーケンスにすぎませんが、順序が逆です。

いくつかの変更を加えた構成を次に示します。

 ノックデーモンを起動する方法は?

それを開始するには、最初にファイルを(ルートとして)変更する必要があります / etc / default / knockd:

nano /etc/default/knockd

そこで、次のような行番号12を変更します。«START_KNOCKD = 0»そして、その0を1に変更すると、次のようになります。«START_KNOCKD = 1«

これが完了したら、開始するだけです。

service knockd start

そして出来上がり、それは構成され、機能しています。

ノックアップして実行しているポートノック!

前の構成でわかるように、ポート1000、次に2000、最後に3000に対してポートノックが実行されると、ポート2222(私のSSH)が開きます。ここでは、別のコンピューターがポートノックを実行しています。

ノックNo.1、No.2、最後にNo.3で[Enter]を押すと、ポートが開きます。ログは次のとおりです。

ご覧のとおり、ポート1000をノックすると、ステージ1が登録され、2000でステージ2になり、最後に3で3000になります。これを行うと、.confで宣言したコマンドが実行されます。

次に、ポートを閉じるには、9000、8000、最後に7000をノックするだけです。ログは次のとおりです。

そしてここで使用の説明は終わります😀

ご覧のとおり、ポートノッキングは非常に興味深く便利です。ポートの特定の組み合わせの後で単にポートを開く必要はありませんが、サーバーが実行するコマンドまたは順序は異なる場合があります。つまり、...ではなくプロセスを強制終了したり、apacheやmysqlなどのサービスを停止したりすることを宣言できるポートを開くと、制限はあなたの想像力になります。

ポートノッキングは、物理サーバーがある場合、または仮想サーバーがKVMテクノロジーである場合にのみ機能します。 VPS(仮想サーバー)がOpenVZの場合、ポートノッキングiptablesを直接操作できないため、機能しないと思います。

さて、これまでの記事…私はこの問題の専門家ではありませんが、この非常に興味深いプロセスを皆さんと共有したいと思いました。

ご挨拶😀


記事の内容は、次の原則に準拠しています。 編集倫理。 エラーを報告するには、 ここで.

27コメント、あなたのコメントを残してください

コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   エルナモジャズ

    素晴らしい記事、それは非常に興味深いです、そして私はそれが存在することを知りませんでした...あなたがsysadmin初心者のために記事を出し続ければそれは素晴らしいでしょうそしてそれ😀

    ご挨拶と感謝^ _ ^

    1.    KZKG ^我愛羅

      コメントありがとうございます。
      はい... FICOのDNSに関する記事で、私はLOLに取り残されたくないということです!!!

      たいしたことはない。 数ヶ月前にポートノッキングについて何か聞いたのですぐに気になりましたが、当時は非常に複雑になると思っていたので、入ることにしませんでした。昨日、ノックされたレポからいくつかのパッケージを確認しました。試してみることにしました。これがチュートリアルです。

      私はいつも技術的な記事を書くのが好きでした、いくつかは十分に面白くないかもしれませんが…他の人がそうであることを願っています😉

      よろしく

    2.    マリオ

      こんにちは、私はこの記事がしばらく前から出回っていることを知っていますが、誰かが私のためにそれを解決できるかどうかを確認するためにクエリを送信します。
      事実、ローカルネットワークの外部からラズベリーに接続するときのセキュリティを向上させるために、ラズベリーにポートノッキングを実装しました。 これを機能させるには、マシンに接続している7000-9990ルーターのポートの範囲を開く必要がありました。 ルーターでこれらのポートを開くのは安全ですか、それとも逆に、セキュリティを強化しようとするときは、逆のことをしていますか?

      ご挨拶と感謝。

  2.   これまで

    素晴らしいです。私は何年もシステム管理者であり、彼のことを知りませんでした。
    XNUMXつの質問...どのように「ノック」をしますか?
    それらのポートに対してtelnetしますか? telnetはあなたに何を答えますか? または、「ノック」ウェーブコマンドはありますか?
    とてもかっこいい記事です。 壮観です。 どうもありがとう

    1.    KZKG ^我愛羅

      私はtelnetでテストを行いましたが、すべてが不思議に機能しました...しかし、不思議なことに、「ノック」コマンドがあります。 男ノック だからあなたは見ることができます😉

      telnetは実際にはまったく応答しません。DROPポリシーを指定したiptablesは応答をまったく行わず、telnetは応答を待機します(決して到着しません)が、ノックされたデーモンはノックを認識します。 XNUMXつは応答します😀

      コメントありがとうございます。私の記事がまだ^ _ ^のようになっていることを知ってうれしく思います。

  3.   st0rmt4il

    お気に入りに追加! :D!

    ありがとうございます!

    1.    KZKG ^我愛羅

      ありがとう😀

  4.   ハンター

    ああセキュリティ、私たちがPCを下げ振りに固定し、数日/数週間後にファイアウォールが「誰にも誰もいない」モードであるためにアクセスできない遠隔地から接続しようとしたときの心地よい感覚、これは外にいることと呼ばれますsysadminsの観点から城。 😉

    そのため、この投稿は非常に便利です。ノックすると、ローカルネットワークにパケットを送信できる場所ならどこからでもアクセスでき、攻撃者はsshポートが閉じていることを確認すると興味を失い、ブルートをノックすることはないと思います。強制的にポートを開きます。

  5.   マヌエル

    ねえ、記事は素晴らしいです。

    XNUMXつ:ローカルネットワークの外部から接続するのに役立ちますか?

    これは、ポートが閉じているルーターから、サーバーにリダイレクトされるsshに対応するルーターを引いたものがあるためです。

    ローカルネットワークの外部から機能させるには、ポートノッキングに対応するルーターのポートを開いて、サーバーにリダイレクトする必要があると思います。

    うーん…

    これを行うのがどれほど安全かわかりません。

    どう思いますか?

    1.    KZKG ^我愛羅

      よくわかりません。テストは行っていませんが、そうだと思います。ルーターのポートを開く必要があります。そうしないと、サーバーをノックできません。

      ルーターのポートを開かずにテストを実行します。それが機能しない場合は残念です。私はあなたに同意するので、ルーターのこれらのポートを開くことはお勧めできません。

      1.    マヌエル

        実際、ポートを開いて、呼び出しているコンピューターにリダイレクトする必要があります。

        残念。

  6.   Rabba08

    どうもありがとうございました! 私はネットワークのキャリアを勉強し始めたばかりで、これらのチュートリアルは私にとって素晴らしいです! 知識を共有するために時間を割いてくれてありがとう

    1.    KZKG ^我愛羅

      私はグローバルなLinuxコミュニティで何年にもわたって多くのことを学びました...数年の間私も貢献したいと思っていました。それがまさに私が書く理由です😀

  7.   janus981

    どうもありがとうございました。それがどのように役立つかわかりません。サーバーをセットアップしようとしています。これは私にとって素晴らしいことです。

    よろしく

    1.    KZKG ^我愛羅

      それが私たちの目的です😉

  8.   ジャンベンチュラ

    素晴らしい記事です! 私はこれについての知識がなく、それは私に大いに役立ちます(私はKVMを使用するRackSpaceを使用しているので、手袋のように私に合っています!)。 お気に入りに追加されました。

    1.    KZKG ^我愛羅

      コメントありがとうございます🙂

  9.   アルガベ

    いつものように、From Linuxは、共有してくれてありがとう、行動に移すのに本当に役立つチュートリアルを備えた素晴らしい投稿を私たちにもたらします! 🙂

    1.    KZKG ^我愛羅

      コメントありがとうございます🙂
      はい、私たちは常に読者が持っている知識への渇望を満たすように努めています😀

  10.   ティンブレック

    興味深いことに、私はオプションを知りませんでした。
    私のチョップライブラリを肥大化させることに直行してください。
    ありがとうございます!

    1.    KZKG ^我愛羅

      私にとっての喜び😀
      よろしく

  11.   フレデリック。 A.ValdésToujague

    ご挨拶KZKG ^我愛羅!!! あなたは絞った。 サーバーを保護するための素晴らしい記事。 @%*&^そのようなものが存在するという考えはありません。 私はそれを試してみます。 ありがとうございました

  12.   ホワイト^ネックレス

    これは素晴らしい…。 ^-^

  13.   LearnLinux

    こんにちは、CentOS5.xにインストールする方法を説明していただけますか?

    rpmをダウンロードしました:
    http://pkgs.repoforge.org/knock/knock-0.5-3.el5.rf.x86_64.rpm

    インストール済み:
    rpm -i knock-0.5-3.el5.rf.x86_64.rpm

    15秒の時間とsshでvpsに接続するために使用するポートを使用して構成ファイルを構成します

    悪魔が始まります:
    / usr / sbin / knockd&

    私はtelnetを使用し、ポートが閉じないものは何もありません。デフォルトではポートは開いていますが、閉じません。

    私は何か間違ったことをしていますか?

  14.   こんにちは

    うーん、これらのポートへのtelnet要求は、ローカルネットワークの管理者、またはサービスプロバイダーによって学習される可能性があります。外部の人々はブロックされますが、ブロックされないため、ポートをアクティブ化する場合は、私たちが行うリクエスト、mmmはそれが100%ではなく保護するとしましょう

    1.    ロベルト

      可能性はありますが、特定のTelnetがXアクションを実行することを想像するつもりはないと思います。 同じtelnetパターンに従っていることがわからない限り。

  15.   パブロ・アンドレス・ディアス・アランブロ

    興味深い記事ですが、質問があります。 よく分析すると、コマンドの両方の行でIptablesのACCEPTを使用しているため、構成ファイルのイメージにエラーがあると思います。 XNUMXつは受け入れ、もうXNUMXつは拒否する必要があると思います。

    そうでなければ、優れたイニシアチブ。 時間を割いて知識を他の人に説明していただき、ありがとうございます。

    よろしく