tabimoba.net

とあるエンジニアの雑記帳

iptablesのみでリバースプロキシ配下のアプリケーションサーバ(Webサーバ)の接続元IPアドレス制限を実現する方法

Amazon Web Services(AWS)のApplication Load Balancerや、リバースプロキシを構成したNginxなどのリバースプロキシ配下のアプリケーションサーバにて、iptablesのみで接続元IPアドレス制限を実現する方法です。

本手順のメリットは、接続元アクセス制御(接続元IPアドレス制限)のために、ApacheやNginxなどのWebサーバ(HTTPd)を立てる必要が無いことです。また、Linuxが標準で提供する(カーネルに内包される)機能を利用するため、デーモン(サーバ)が落ちるような心配をする必要がありません。

デメリットは、セグメント(サブネット)での制限が行えない、行えても前方一致での制限(例:192.168.1. → 192.168.1.0~255)に限られることです。ただし、膨大なIPアドレスを保有していなければ、それほど影響は無いものと思います。

特定のIPアドレスのみ拒否する

# iptables -A INPUT -m string --algo bm --string 'X-Forwarded-For: <拒否したいIPアドレス>' -j DROP

特定のIPアドレスは許可して、それ以外は拒否する

# iptables -A INPUT -m string --algo bm --string 'X-Forwarded-For: <許可したいIPアドレス>' -j ACCEPT
# iptables -A INPUT -m string --algo bm --string 'X-Forwarded-For: ' -j DROP