- 元々IP制限をかけているサービスがあったとする。
- そのサービスに対する接続元IPが変わる場合に、新しいIPからアクセス出来るようにしなければならない。
- けど、どこでIP制限かけてるのか分からない...
って事で、IP制限をかけているであろう箇所を調査。
ちなみに環境はこんな感じ。
- CentOS release 6.7
- Apache/2.2.15
#調査内容
外側から順に調査していく。
FW → TCP Wrapper → Web Server → App Server
##1. FW
iptables
などで、特定IPに対して制限(許可/拒否)をしていないか確認。
iptables -L
##2. TCP Wrapper
Wikipedia
TCP Wrapper は、LinuxやBSD系の(Unix系)オペレーティングシステム上のTCP/IPサーバへのネットワークアクセスをフィルタリングするホストベースのACLシステムである。ホストまたはサブネットのIPアドレス、ホスト名、Identプロトコルのクエリ応答などをアクセス制御のためのフィルタのトークンとして使う。
Redhat - 公式
クライアントがサービスへの接続を許可されるかを決定するために、TCP Wrapper は、一般的にホストアクセス (hosts access) ファイルと呼ばれる、以下の 2 つのファイルを参照します。
簡単に言えば、
- ホワイトリスト ( hosts.allow ) に引っかかれば許可
- ブラックリスト ( hosts.deny ) に引っかかれば拒否
という事で、以下の二つのファイルを確認。
cat /etc/hosts.allow
cat /etc/hosts.deny
##3. Web Server(Apache)
ApacheによるWebサーバ構築:IP認証によるアクセス制限のテクニック
Apacheにおけるアクセス制限には、Apacheの設定ファイル(httpd.conf)を使う方法と、制限を設けたいディレクトリに「.htaccess」という名称のファイルを作成する方法の2種類がある。
- httpd.conf
- Apacheの設定ファイル「httpd.conf」を使う方法
- .htaccess
- 制限を設けたいディレクトリに「.htaccess」という名称のファイルを作成する方法
どちらも上記の2.TCP Wrapperと同じような感じ。(allow/denyで制限している)
##4. App Server
上記のどれにも引っかからない場合は、アプリ側で制限しているかも。
DBや設定ファイル、ソースコードを見て確認。
考えられるのは以下かなと。
- DBに保持しているIPアドレス を 接続元IP と照会して、接続許可/接続拒否
- 設定ファイルに保持しているIPアドレス を 接続元IP と照会して、接続許可/接続拒否
- ソースコードに直書きされているIPアドレス を 接続元IP と照会して、接続許可/接続拒否
以上。