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

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

現在、サーバーを管理している人は、そのサーバーに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を直接操作できないため、機能しないと思います。

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

ご挨拶