2017年10月5日木曜日

海外からの不正利用を防ぐサーバ設定



こんな事ないでしょうか?

・なんだかサーバの負荷が高い
・情報がでたらめな会員登録が増えた
・決済代行からの請求額が上がった(オーソリ料)
・決済代行会社から連絡が来てお宅のサーバからクレジットカードの総当たり攻撃が来てますのような連絡を受けた。

上記の場合だと大体踏み台にされてクレカ情報の有効性チェックをやられてると想定されます。

WAFとかEBでIP制限出来ればそれで完了ですが、利用サービスによってはIP制限が出来なかったりします。

そうするとサーバ側で対応する必要が出てきます。

IP制限するならiptableかhtaccessになるかと思います。
iptableが分かる方も特に問題ないので説明省略します。



htaccessはサーバのドキュメントルートにあると思いますので、下記の様な設定を追加すればOKです。


  # REMOTE_ADDRで接続元IPが取得できますが、ロードバランサーやプロキシがあるとちゃんと取れなかったりしますので、その場合はヘッダ情報のHTTP:X-Forwarded-Forから取得しましょう。
 RewriteCond %{REMOTE_ADDR} ^192\.168\.0\.100$ [OR]
 RewriteCond %{HTTP:X-Forwarded-For} ^192\.168\.0\.100$ [OR]
  # 192.168.0.100は仮のIPなので、除外したいIPアドレスを入れてください。

  #除外したいIPを範囲で指定する場合は下記の通り途中まで記載すればOK。先頭が192.168で始まるIPを除外できます。
  RewriteCond %{HTTP:X-Forwarded-For} ^192\.168 [OR]
  #正規表現なので下記のように"^"が付いてないとIPアドレスのいずれかに192.168が入るという意味になりますので注意です。例えば100.192.168.1もヒットします。
  RewriteCond %{HTTP:X-Forwarded-For} 192\.168 [OR]

  #連続(コメント行や空行除いて)でRewriteCondを記載する時は[OR]を最後につけますが、最後は無しでOKです。
  RewriteCond %{HTTP:X-Forwarded-For} ^192\.168\.0\.100$
  #再度にRewriteRuleでどのURLの時どこに飛ばすか記載します。任意のURL(.*)の時、https://xxx.com/に302リダイレクトをするという意味です。
  RewriteRule .* https://xxx.com/ [R=302,L]


最後に上記をまとめた記載例です。

 RewriteCond %{REMOTE_ADDR} ^192\.168\$ [OR]
 RewriteCond %{REMOTE_ADDR} ^192\.167\.0\.100$ [OR]
 RewriteCond %{REMOTE_ADDR} ^192\.167\.0\.200$
 RewriteRule .* https://xxx.com/ [R=302,L]


リダイレクト先は自由ですが、他人のサイトは迷惑が掛かりますのでやめておきましょう。
自社サイトであればSorryページなんかを作って、海外のお客様はご利用できませんと記載しておけばいいと思います。