web-dev-qa-db-ja.com

Apacheバックエンドアクセスをnginxリバースプロキシのみに制限しますか?

ポート8080でリッスンしているApache(LAMP)バックエンドのグループのリバースプロキシとしてnginxをセットアップしています。

また、nginxサーバーのプロキシIPを含めるように各バックエンドサーバーのmod_rpaf.confファイルを構成しました。

<IfModule mod_rpaf.c>
  RPAF_Enable       On
  RPAF_ProxyIPs     127.0.0.1 192.168.0.1 # <- nginx server IP
  RPAF_Header       X-Forwarded-For
  RPAF_SetHostName  On
  RPAF_SetHTTPS     On
  RPAF_SetPort      On
</IfModule>

Nginxからの接続を拒否するようにhttpd.confを構成するにはどうすればよいですか?

私は以下を試しました:

<Directory "/var/www/html">

    Order allow,deny
    Allow from 192.168.0.1
    Allow from 127
    Deny from all

</Directory>

しかし、これはnginxプロキシ自体と他のIPへのアクセスを制限しているようです。

これはmod_rpafがクライアントIPを転送するためですか?もしそうなら、どうすればこれを回避できますか?

2
Elijah Paul

Mod_rpafモジュールは実際のクライアントIPを転送するため、独自のhttpd.confファイルを介したApacheバックエンドサーバーへのパブリックアクセスをブロックすることはできません。

いくつかのIPtablesルールを設定すると、クライアントの実際のIPの転送に影響を与えることなく、nginxリバースプロキシを除くすべてのユーザーのポート8080へのアクセス(パブリックアクセス)がブロックされます。

実行:

#iptables -A INPUT -p tcp --dport 8080 -s 192.168.0.1 -j ACCEPT
#iptables -A INPUT -p tcp --dport 8080 -j DROP

#service iptables save
#service iptables restart

ポート8080でのApacheバックエンドサーバーへのアクセスは、nginxプロキシのみに制限されるようになりました。

2
Elijah Paul

次のように、allow/deny_statementsの順序を変更する必要があると思います。

<Directory "/var/www/html">

    Order deny,allow
    Deny from all
    Allow from 192.168.0.1
    Allow from 127

</Directory>

なぜなら( order-docs

  • 注文は次のいずれかです。

    Allow、Deny-最初に、すべてのAllowディレクティブが評価されます。少なくとも1つが一致する必要があります。一致しない場合、要求は拒否されます。次に、すべてのDenyディレクティブが評価されます。一致するものがある場合、リクエストは拒否されます。最後に、AllowまたはDenyディレクティブに一致しない要求は、デフォルトで拒否されます。

    Deny、Allow-最初に、すべてのDenyディレクティブが評価されます。一致するものがある場合、Allowディレクティブにも一致しない限り、要求は拒否されます。 AllowまたはDenyディレクティブに一致しないリクエストはすべて許可されます。

docs からの例:

Orderを使用すると、DenyディレクティブとAllowディレクティブを組み合わせて、実際に入れたいグループに制限していることを確認できます。

Order deny,allow
Deny from all
Allow from dev.example.com