皆さん、こんにちは。
QNAP(QTS)とNginx Proxy Manager(NPM)の間で設定の問題が発生しており、Fail2ban(またはQTSのアクセス保護)がブルートフォース攻撃に対して効果を発揮しなくなっています。
私の構成:
QNAP(QTS):ローカルIP 192.168.10.10(標準のRFC1918 IPアドレスに変更しましたが、ご自身のものを使っても構いません)
Nginx Proxy Manager:ローカルIP 192.168.10.6(Dockerコンテナまたは別のVM上)
目的:NPMを使ってSSLとリバースプロキシを設定し、ドメイン名(例:myqnap.domain.com)経由でQTSにアクセスすること。
問題点:
アクセス自体は完璧に動作しています。ドメイン名はルーターを指し、ルーターはポート80/443をNginx Proxy Manager(100.6)に転送し、NPMがトラフィックをQNAP(100.10)にリダイレクトします。
問題は、QTSが訪問者の本来の送信元IP(パブリックIP)を認識できないことです。
接続試行が失敗した場合(ブルートフォース攻撃)、QTSのセキュリティログには試行元のIPがNginx Proxy ManagerのIP(100.6)として記録されます。
結果として:QNAPでIPアクセス保護やFail2banを有効にして複数回の失敗後にIPをブロックしようとすると、自分のNginx Proxy Manager(100.6)のIPがブロックされます。
結果:
攻撃者は決してブロックされません。
自分のプロキシがブロックされ、全ての正規ユーザーがQTSへアクセスできなくなります。
質問:Nginx Proxy Managerで送信元IPアドレスを正しく転送する(X-Forwarded-ForやX-Real-IPヘッダー経由)にはどう設定すればよいでしょうか?また、QTS側でこのヘッダーを読み取り、信頼するように設定するにはどうすればよいでしょうか?
NPMのオプション(「Forward Client-IP」と「Forward Hostname」にチェック)も確認しましたが、QTSは依然としてプロキシのIPアドレスしか認識しないようです。Nginxの「Advanced」タブでカスタム設定を追加する必要がありますか?それともQTS側にプロキシを「信頼」する隠し設定がありますか?
ご助力いただけますと幸いです!