🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Amazon CloudFront

Amazon CloudFrontは、AWSの高速且つ高パフォーマンスなコンテンツ配信(CDN) サービス。容量の大きいコンテンツをキャッシュさせてWebサーバの負荷を軽減し、サーバダウンの防止など安定した配信が可能になります。

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

3回答

910閲覧

サイトアクセス端末毎にブロックしたい

rsitkwi

総合スコア14

Amazon CloudFront

Amazon CloudFrontは、AWSの高速且つ高パフォーマンスなコンテンツ配信(CDN) サービス。容量の大きいコンテンツをキャッシュさせてWebサーバの負荷を軽減し、サーバダウンの防止など安定した配信が可能になります。

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/03/30 07:22

編集2021/03/30 09:37

やりたいこと

サイトにアクセスしてくるユーザーの端末毎にアクセスをブロック(制御)したい。

ユーザーエージェント単位でブロックも考えましたが、
端末やOS,ブラウザが同一の場合、他ユーザーにも影響が出たり、
OS,ブラウザをアップデートした場合はすり抜けられることが考えられたため断念しました。

■やりたいこと例

サイト内で悪行が目立つユーザーをブロック
※MEIDでブロックする術があるか否かは別で、あくまで例です

ユーザー情報
1.iPhone11 Proでアクセス(MEID:35683748161113)
2.1のユーザーが悪行
3.MEID:35683748161113 をブロックリストに登録
4.次回アクセス以降はアクセスブロック

条件

ユニークな文字列であること(≒そのユーザーにしか適用されないこと)
が条件だと思っています。
(それ以外にも実装手段があるようでしたら、是非ともご教示いただきたいです)

環境

環境:AWS
利用サービス:Route53,CloudFront,ALB,EC2,Lambda 等

その他

必要な情報がございましたらご指摘下さい。
何卒、お力添えいただけますと幸いです。

2021/03/30 追記
既に幾つか回答いただきありがとうございます。
認識のズレがないように補足を記載致します。
まずは、ユーザーが手動で何度も悪行を働くパターンを制御したいと考えています。
例えば、クレジットカードを拾ったため、それを悪用して決済を何度も試行する等を
イメージしていただければと思います。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

質問の追記を受けての追記

例えば、クレジットカードを拾ったため、それを悪用して決済を何度も試行する等を
イメージしていただければと思います。

この想定だと、
ログインさせずに非所有のクレジットカードの決済試行という犯罪を試行出来るということになってしまうので、
「1ユーザーがちょっとした悪さ程度の悪行を働いた場合を想定していただければと思います。」の範疇から大きく外れるように思いますよ。
(単純な表現の問題だとは思いますが、「ちょっとした悪さ」としては外れすぎている様に思います)

その場合は
クレジットカード情報の正当性を確認するのはサイト側の責任範囲では無いので、
改正割賦販売法とクレジットカード決済代行プラットフォームの求めるサイト仕様を満たしたうえで、
カード情報の正当性自体はクレジットカード決済代行プラットフォーム側で対処させる。
というのが正しい事でしょう。

加えて、

  1. 決済を行うにはログインを必須にする
  2. ログインユーザーを作成する際にSMSやIVR等の認証を挟んで無制限なユーザー作成を防ぐ
  3. 怪しい行動が検知されたらユーザー単位でアクセス制限を行う

と言う様な処理で対応可能なケースになってしまいますね。


既に回答のある通り、本気のアタックに対して完全に解決することは不可能です。

ある程度の不便さとサーバ側のコストを許容できるのであれば、ある程度の対応は可能です。
例えば、

荒らしの自動化の排除

自動化を排除することで、荒らしを行う人間のコストの向上を狙います。
暇人が本気で対応してきた場合や、コストの安い国で人海戦術された場合には役に立ちませんが、
所謂スクリプトキディの悪戯は排除できます。

  1. Bot対策の出来るCDNやWAFを使ってBOTによる不正な行為を排除する
  2. 加えて荒らし対策が必要な機能(投稿等)についてはreCAPTCHA等で人間である事の確認を行う

人力で対応する際のめんどくささの向上を狙う

本気の暇人に対してBOT対策は無力ですが、対応を若干めんどくさくすることで標的から外れるかもしれません。

  • サイト利用にはcookieの利用を必須にした上で、アクセスに対してセッションIDを付与し、セッションIDによりアクセス制御を行う。(悪行を行ったセッションに対してアクセス出来ない様にする。
  • コメント投稿等の悪行をしやすい機能に対してはセッションが確立されていることを必須とする

cookieを削除したり、シークレットモードでアクセスすれば同じことが出来ますが、自動化の排除と組み合わせることでいくらかマシになりそうです。

ブロックする方法を自動化出来ない場合は暇人とリソース対決になってしまうので不利になります。

IP単位でブロックしてしまう

公開されているブラックリスト(オープンなプロキシやAWS等のIP範囲が網羅されているもの)を活用しつつ、悪行のあったIPアドレスやそのIPが属するプロバイダのIP範囲ごとブロックしてしまう事で、(同じIPを使っている人を巻き添えにしつつも)アクセスを防ぐことは出来ます。

こちらも、ブロックする方法を自動化出来ない場合は暇人とのリソース対決になってしまうので不利になります。(IPが固定されていないプロバイダの場合、ONUのリブートでIPが変わるケースも多いため)

副作用について追記

maisumakunさんのコメントを受けての追記

これの副作用として、「巻き添えブロックを発生させるための荒らしが出現する」例もあるようです。

巻き添えが大きくなりすぎると攻撃者の思う壺でもあるので、
短期的なブロックに留める等の工夫と、巻き添えにされた人に対するケアをどうするかという部分を考える必要が出てきますね。
中々難しそうです。

法的な手段に訴える

相手が国内にいることが前提になりますが、法的な手段に訴えることも出来ます。
詳細は法律の専門家に相談して下さい。
近そうな例

投稿2021/03/30 09:21

編集2021/03/30 10:04
tanat

総合スコア18727

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/03/30 09:24

> 悪行のあったIPアドレスやそのIPが属するプロバイダのIP範囲ごとブロックしてしまう事で、(同じIPを使っている人を巻き添えにしつつも)アクセスを防ぐことは出来ます。 これの副作用として、「巻き添えブロックを発生させるための荒らしが出現する」例もあるようです。
tanat

2021/03/30 09:27

> maisumakunさん 補足ありがとうございます。 確かにそうですね。 Twitter等の巨大サービスが割とカジュアルにIP制限をかけていたのをイメージして書いたので、 そこまで考慮できていませんでした。 回答に補足頂いた副作用を追記します。
rsitkwi

2021/03/30 09:40

幾つも具体例を提示していただきありがとうございます! 先程追記させていただきましたが、tanatさんやmaisumakunさんが記載いただいているような、 大規模な攻撃ではなく、1ユーザーがちょっとした悪さ程度の悪行を働いた場合を想定していただければと思います。 それでも、あまり対策内容としては大きく変わらないとは思いますが。。
tanat

2021/03/30 10:05

> rsitkwiさん ただの例の誤認だとは思うのですが「拾ったカード情報で決済を試みる」は普通に重大な犯罪行為なので、もう少し別の例を挙げて頂く方が適切な回答が付くと思いますよ。
tanat

2021/03/30 10:11

もし 「拾ったカード情報で決済を試みるのを防ぎたい」というのが本当に想定しているケースなのであれば、 適切な要件定義とリスク定義に基づいて設計しないといけないケースなので、 teratailの回答の範疇で回答するのは難しくなってきます。
rsitkwi

2021/03/31 06:40

確かにおっしゃる通りですね、例があまりよくなかったです。 伝えたいこととしては規模感の話で、スクリプトなどで数百、数千、数万規模のアクセスがある場合ではなく、 数分間に数回レベルの悪行というイメージを持っていただければと考えておりました。 法的な手段等の対応については、弊社でも既に体制はできているため、 未然に検知して自動で防ぐことができればいいなと思っていました。
tanat

2021/03/31 06:49

> rsitkwiさん そういうイメージでしたら、 (未然に防ぐのは難しいですが) 回答中の「人力で対応する際のめんどくささの向上を狙う」 で提示した内容+条件に引っかかった場合に警告文を表示するとかそういう感じかなと思いますよ。 回答中にも書きましたが、「悪行」を正確に定義してセッションIDによるアクセス制限を自動化できるかがポイントになるでしょうね。
guest

0

今までそれを実装できた例は知りません。
おそらく不可能かと。

投稿2021/03/30 07:32

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rsitkwi

2021/03/30 08:15

不可能なんですね。。 私の知識不足もありますが、現代でもこの制御はできないとは思いませんでした。。
maisumakun

2021/03/30 10:06

> 私の知識不足もありますが、現代でもこの制御はできないとは思いませんでした。。 プライバシー保護などの事情もあって、過去より条件は悪化しています。
rsitkwi

2021/03/31 06:41

私も色々Web上の文献やサイトを見てみたのですが、 おっしゃる通りプライバシー保護の事情がかなり関わっているなと感じました。 過去よりも今の方が情報を得るのが難しいということですね。。
guest

0

ユニークな文字列であること(≒そのユーザーにしか適用されないこと)が条件だと思っています。

ログインさせずにチェックするような方法はありません。

本気の荒らしは、回線も端末も乗り換えて襲いかかってくることがあります。「端末やOS,ブラウザが同一の場合」をチェックしても気休めにしかなりません。

投稿2021/03/30 08:03

maisumakun

総合スコア145963

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rsitkwi

2021/03/30 08:15

ログインさせてユーザーを特定することで、ユーザー単位でブロックということですね。 >本気の荒らしは、回線も端末も乗り換えて襲いかかってくることがあります。「端末やOS,ブラウザが同一の場合」をチェックしても気休めにしかなりません。 これはごもっともな意見だと感じました。 現状、これを実現することはできないんですね。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問