以前の2つの記事でご存知のように、Linuxのトラブルシューティング:ncatとncatコマンドを使用したTCPリスナーの設定は、Linuxシステム管理者の netcat
にとって問題のあるセキュリティツールです。 あなたの親友であり、あなたの最悪の敵でもあるコマンドです。そして、この記事は、 ncat
がどのように行われるかを調べて、この事実をさらに永続させます。 ポートリダイレクションリンクを作成するための便利な、しかし潜在的に危険なオプションを提供します。ポートまたはサイト転送リンクを設定して、顧客にサービスを提供しながらサイトのメンテナンスを実行できるようにする方法を説明します。
シナリオ
server1のApacheインストールでメンテナンスを実行する必要があります ただし、顧客に対してサービスをオフラインで表示したくない場合。このシナリオでは、リモートユーザーの労働時間を記録する労働ポータルの内部企業ユーザーです。ポータルが6〜8時間オフラインになることを通知するのではなく、別のシステム server2への転送サービスを作成することにしました。 、 server1の世話をしている間 のニーズ。
この方法は、DNSや企業ファイアウォールのNAT設定をいじくり回すことなく、特定のサービスを存続させる簡単な方法です。
サーバー1:ポート8088
Server2:ポート80
手順
このサイト/サービスを転送するには、次の前提条件を満たしている必要があります。
-
ncat-nmap
パッケージ(デフォルトでインストールする必要があります) - server1の機能的な複製 server2のポータル
- ルートまたは
sudo
ファイアウォールの変更のためのサーバー1および2へのアクセス
これらのハードルをクリアしたら、この変更を行うときが来ました。
実装
ncat
の構成 このように、名前付きパイプを利用します。これは、ホームディレクトリ内のファイルに書き込んだり、ファイルから読み取ったりすることで、この双方向通信リンクを作成するための効率的な方法です。これを行うには複数の方法がありますが、このタイプのポート転送に最適な方法を使用します。
名前付きパイプを作成
名前付きパイプの作成は、 mkfifo
を使用して簡単に行えます。 コマンド。
$ mkfifo svr1_to_svr2
$ file svr1_to_svr2
svr1_to_svr2: fifo (named pipe)
ファイル
を使用しました ファイルがそこにあり、名前付きパイプであることを示すコマンド。このコマンドは、サービスが機能するために必要ではありません。ファイルにsvr1_to_svr2
という名前を付けました 、ただし、任意の名前を使用できます。 server1 から転送しているため、この名前を選択しました server2へ 。
転送サービスを作成する
正式には、これはリスナーからクライアントへのリレーの設定と呼ばれていました。 、しかし、これをファイアウォールの用語で考えると、もう少し意味があります。したがって、私の「フォワード」の名前と説明です。
$ ncat -k -l 8088 < svr1_to_svr2 | ncat 192.168.1.60 80 > svr1_to_svr2 &
このコマンドを発行すると、&
を使用してサービスをバックグラウンドに置くため、プロンプトに戻ります。 。ご覧のとおり、名前付きパイプとサービスはどちらも標準ユーザーとして作成されています。この制限の理由については、前回の記事で説明しました。ncatコマンドは、Linuxシステム管理者にとって問題のあるセキュリティツールです。
コマンドの内訳
コマンドの最初の部分、 ncat -k -l 8088
、通常は server1上のApacheサービスによって応答される接続のリスナーを設定します 。そのサービスはオフラインなので、それらの要求に応答するリスナーを作成します。 -k
オプションはキープアライブ機能であり、複数のリクエストを処理できることを意味します。 -l </ code> リッスンオプションです。
ポート8088
模倣したいポート、つまりカスタマーポータルのポートです。
パイプ演算子の右側の2番目の部分( |
)、要求を受け入れて、ポート80の192.168.1.60に中継します。名前付きパイプ(svr1_to_svr2
)データの入出力を処理します。
使用法
リレーを設定したので、簡単に使用できます。ブラウザで元のホストとカスタマーポータル( http:// server1:8088
)を指定します 。これにより、ブラウザが自動的に server2にリダイレクトされます。 ポート80で。ブラウザには引き続き元のURLとポートが表示されます。
繰り返しのリクエストが多すぎると、このサービスが失敗し、 server1でパイプが壊れたメッセージが表示される可能性があることがわかりました。 。これは常にサービスを強制終了するわけではありませんが、強制終了することはできます。私の提案は、 forward
をチェックするスクリプトを設定することです。 コマンドを実行し、存在しない場合は再起動します。 svr1_to_svr2
の存在を確認することはできません 常に存在するため、ファイル。 mkfifo
で作成したことを忘れないでください コマンド。
注意事項
このncat
の欠点 機能は、ユーザーが自分の重複サイトにトラフィックを転送し、ユーザー名とパスワードを収集できることです。悪意のあるアクターは、これを機能させるために現在のポートリスナー/ Webサービスを強制終了する必要がありますが、rootアクセスがなくてもこれを実行することは可能です。システム管理者は、この種のセキュリティの抜け穴を回避するために、監視と警告を通じて警戒を維持する必要があります。
まとめ
ncat
コマンドには非常に多くの用途があるため、各機能を説明するために機能ごとに1つの記事が必要です。この記事では、リスナーからクライアントへのリレー、つまりサービス転送の概念を紹介しました。短いメンテナンス期間には便利ですが、永続的なリダイレクトには使用しないでください。その場合は、DNSおよび企業ファイアウォールのNATルールを編集して、新しい宛先に要求を送信する必要があります。 ncat
をオフにすることを忘れないでください 彼らは妥協するためにシステムを開くので、あなたがそれらを使い終わったときのリスナー。 rootユーザーアカウントでこれらのサービスを作成しないでください。
[Red Hatの無料の本である、すべての人のためのネットワーク自動化により、ネットワークの管理がこれまでになく簡単になります。 ]