
ネットワーク セキュリティに関する知識があまりない者として、次の点を知りたいと思います。(1) MySQL サーバー、(2) 任意のサービスを備えた Docker コンテナー、(3) 逆 DNS としての Apache または nginx を標準的な家庭内 LAN で実行し、インターネットに公開することは「安全」ですか? 私のネットワーク設定は非常にシンプルです。1 台のルーターがインターネットに接続し、家にあるすべてのデバイスがそのルーターに直接接続されています。ポート転送と DDNS を使用して、LAN 内の任意のデバイスをサーバーにすることができます。現在、DMZ は構成されておらず、物理ファイアウォールも使用していません。
このような LAN 内のデバイスに 80 などのポートを転送するのは安全でしょうか、それともルーターのパブリック IP を DDNS に登録しないほうがよいでしょうか。言い換えると、説明した設定によって、(1) ポートが転送されるデバイスが脆弱になる可能性 (マルウェアの挿入、データの盗難など) があるか、(2) サーバーとは何の関係もない LAN 上の他のデバイスが脆弱になる可能性はありますか。
もちろん、これは本番環境ではありません。私は、自宅の外からアクセスしたい複数のプロジェクトを同時に作業することが多く、AWS、GCP などに多額のお金を払いたくありません。そのため、MySQL、Mongo、Neo4J などのサーバーを常に稼働させ、個人的なデモやテストの目的でいくつかの Web アプリをデプロイしたいと考えていました。
答え1
[...] 説明した設定により、(1) ポートが転送されるデバイスが脆弱になる可能性 (マルウェアの挿入、データの盗難など) や、(2) サーバーとは何の関係もない LAN 上の他のデバイスが脆弱になる可能性はありますか?
はい、そうです。
安全ですか?
これはおそらく、何を「安全」と呼ぶかによって変わる個人的な意見です。ただし、実際的には、考慮すべき点が 2 つあると考えられます。
現代のサーバーは常に自動化されたエクスプロイト スクリプトの集中攻撃によって (通常、ほとんどの攻撃者は被害者をこのようにターゲットにします)。
これらの脅威のほとんどは、定期的なソフトウェア更新、最小限の予防策、適切なセキュリティ設定(適切に調査できます)によって軽減できます。
要するに、この方法を採用すると、ネットワークのアマチュア システム管理者の役割を担うことになります (ログの読み取り、ソフトウェア更新の確認など)。この役割を引き受けることに抵抗がなければ、自宅のセットアップでも比較的安全です。そうでない場合は、従来のサードパーティ サービスの方が適しているかもしれません。
私のネットワーク設定は非常にシンプルです。1 台のルーターがインターネットに接続し、家中のすべてのデバイスがそのルーターに直接接続されます。
適切なファイアウォール設定を行えば、比較的安全です。とはいえ、安価なPC(古いものやRaspberry Piでも可)をファイアウォール専用にすると良いでしょう。プフセンス。
このような LAN 内のデバイスに 80 などのポートを転送するのは安全でしょうか、それともルーターのパブリック IP を DDNS に登録しないほうがよいのでしょうか?
これは確かに逸話的な話ですが、テストや個人使用のために長年非常によく似た設定を行ってきましたが、セキュリティ上の問題は一度もありませんでした。
Apache/Nginx と MySQL に関して、ちょっとした豆知識として:
Apache/Nginx がオープンプロキシとして動作していないことを確認してください(これは悪用されやすく、サーバーをターゲットにします)。この危険性は、通常、いくつかの簡単な設定コマンドで軽減されます(ここでApacheについて詳しく説明されているもの)。
Apache の場合は、.htaccess ファイルを無効にすることをお勧めします。
MySQL の場合、phpMyAdmin などのブラウザベースの管理ツールの使用が大きな問題です。ログを確認すると、WordPress と並んで、これは私が見た中で最も攻撃されているソフトウェアの 1 つです (SQL インジェクションが潜在的に非常に強力である可能性があるためと思われます)。データベースに接続する Web アプリはすべて適切に保護する必要がありますが、このようなツールを実行すると (潜在的に) トラブルを招くことになります。
上記は、データベース サーバーへのアクセスを、選択されたローカル コンピューターのみに制限し、データベース権限を制限することと密接に関連していることに注意してください。
SQLインジェクション攻撃は、Webアプリケーションファイアウォール(WAF)によって軽減することができます。CloudFlareなどのサードパーティのサービスでは、このようなサービスを提供しています(現在、他の機能も含めて月額20ドル)は「設定して忘れる」ソリューションです。しかし、ApacheやNginxのモジュールを使って、このような機能を自分で追加するのはかなり簡単です。モッドセキュリティ。
最後に、Web サーバーと MySQL をセキュリティ保護するための基本事項は十分に文書化されており、通常、調査も非常に簡単です (例: 「Linux で Apache をセキュリティ保護する方法」や「SQL インジェクション攻撃を防ぐ方法」)。これらはどちらも、ほとんどの悪意のあるユーザーがシステムを混乱させるのを防ぐための一般的なヒントを提示します。
もちろん、凝ったことをして、追加のセキュリティ(真の DMZ など)を追加することもできますが、これにはさらに多くの作業が必要になる可能性があります。