背景:昨日、シンプルなメトリックダッシュボードの作成を開始しました。社内ネットワークにVBScriptがあり、ベンダーからVPNを介してデータベースにクエリを実行しています。次に、ポート8000でリッスンしているnode.jsサーバーに単純なHTTP投稿を行います。セキュリティはゼロです。スクリプトが送信するのは、http://myserver.com:8000/name1,value2
のような形式のURLだけです。次に、サーバーはこれらを取得し、存在しない場合は最初の値に基づいて新しいtimeseriesを作成し、2番目の値に基づいてポイントをプロットします。これを昨日の午後2時頃に公開サーバーにプッシュしました。
私が入ってきた今朝、次のURLを名前として持つ新しい時系列がありました:http://testp2.czar.bielawa.pl/testproxy.php
明らかに、データが自分のネットワークからのものであることを検証する必要がありますが、これについて一般的に心配する必要がありますか?他にどのような手順を実行する必要がありますか? node.jsサーバーはURLのみを解析します。ペイロードの処理も試みません。このデータは機密ではありません。これは、お客様の取引数とお客様の名前(公開されているもの)にすぎません。
彼らが要求したURLはすべてを説明しています。 Node.jsサーバーはパブリックインターネットに公開されており、HTTPプロキシで一般的に使用されるポートでリッスンします。プロキシを探すためにインターネットをスキャンするサービスがそれに遭遇し、URLをリクエストしてNode.jsがそのURLのコンテンツを返します(含まれている場合、それはオープンプロキシであり、データベースにそのようにリストされます)。
この特定の試みは悪意があるとは思われません。もちろん、オープンプロキシを実行していることを発見した場合、悪意のある目的(スパムなど)で使用する可能性が高いですが、スキャンは単にURLを要求するだけであり、バグやサーバーのDoSを悪用しようとはしていません。それは、誰かがサーバーを攻撃して危害を加えようとしないことを意味するわけではありません。DoSは、アプリケーションのDBに不要なデータを入れたり、サーバーの帯域幅を使い果たして、正当なHTTPリクエストがサーバーに到達しないようにします。
今、あなたはまだセキュリティについて考えなければなりません、そして本当にあなたがこれが本当に必要であるかどうかNodeインターネット全体から到達可能である...あなたが気にするデータがあなたの内部ネットワークから来ていると言うなら、それからNodeサーバーを同じネットワーク上に置いてみませんか?こうすることで、インターネットへのデータの不必要な漏えいを防ぎ、正当な理由がないため、会社のネットワークのEdgeファイアウォールがスキャンの試みから保護します。 Nodeサーバーがインターネットからアクセスできるようになり、インターネット全体からのDoS攻撃に対して脆弱ではなくなりました。
Nodeサーバーをプライベートネットワークに配置できない場合は、TLSクライアント証明書に正当なデータソースの認証を要求して、クライアントが確立する前に有効な証明書を取得する必要があることを検討してください。 TLSトンネルを使用してHTTPリクエストを発行します。また、ファイアウォール自体、SSHの強化(キー認証のみ、スキャナーがログをいっぱいにしないようにポートを変更)などのセキュリティのベストプラクティスに従ってください。自分のNodeアプリは世界で最も安全なアプリかもしれませんが、誰かがブルートフォースパスワードでSSHでログインしたり、rootとして実行されている他のアプリを悪用したりしてrootになることはできません。
ほとんどの場合、新しいサーバーは、そのホストに属していたIPを受信した可能性があります。このホストには、このDNSレコードと一致した古いIPを記憶する別のシステム(ウォッチドッグまたはクライアント)があります。
私の推測はtestp2.czar.bielawa.pl
はサーバーのホスト名ではありません。アクセス可能であり、応答としてIPアドレスが表示されるためです。これにより、そのDNSレコードが新しいIPで更新されたという理論が強化されます。
ログにtestp2.czar.bielawa.pl
ホストとしては、URLでこのホストを使用したマシンを意味しますが、代わりにIPに解決されます。本当に悪意のあるものである場合は、ホスト名ではなくIPアドレス、または実際のホスト名が表示されます。
たとえば、AWSのエラスティックIPとかなり一般的です。