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

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

詳細はこちら
Webサイト

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

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

3回答

2530閲覧

.htacessで海外からのアクセスを禁止にしたい

whowhat

総合スコア14

Webサイト

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

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

2クリップ

投稿2019/09/30 03:43

編集2019/10/09 03:01

WEBサイトのお問合せフォームから「qq.com」からの大量スパムメールが発生しました。

送付頻度的にフォームを使わずダイレクトに送られてきます。。困り果ててます。

スパムが無くなればホント良いのですが、、、世の中甘くないですね。迷惑メールの意味を実感中です。。

Googleで調べて「.htaccess」でipを国内のipに設定してみましたが上手くいかず。

現状、私がサイト管理者ですが、サイトの構築には少ししか関わっておらず、また知識もまだまだ乏しく
困ってます。
構築者の連絡先が分からず。。自分のだらし無さを実感してます(汗)

この際、自らの手で管理できるように質問しました。

現状は以下のです。

■ FTPサーバーへは入れます。
■ サイトはwordpressで構築

FTP直下の「.htaccess」の以下を書き換えるとサイトも管理画面にもアクセス出来なくなります。
勿論、日本国のIPからも海外のIPからもです。

***箇所はコメント# です。

***BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteRule ^index.html?$ / [R=301,L]
RewriteRule ^default.html?$ / [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

***END WordPress

***BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteRule ^index.html?$ / [R=301,L]
RewriteRule ^default.html?$ / [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Order deny,allow
deny from all

allow from 1.0.16.0/20
allow from 1.0.64.0/18
allow from 1.1.64.0/18
<省略>

***END WordPress

FTPの下位のフォルダ内(AAA)にindex.phpやらwp関連が入ってます。

乏しい知識で申し訳ないですがどうかヒントを頂けると幸いです。

宜しくお願いします。

《追記》
サーバー環境は以下になります。

Wordpressのバージョンは 4.3.1
Apacheのバージョンは 2.4.6
PHP 5.6.16

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

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

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

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

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

kokemomo.sour

2019/09/30 03:48

質問の意図とずれた回答ですいません。。 wordpressであれば、「IP Geo Block」というプラグインを用いるのがおすすめですが、 もうお試し済みでしょうか。
CHERRY

2019/09/30 04:05

> FTP直下の「.htaccess」の以下を書き換えるとサイトも管理画面にもアクセス出来なくなります。 勿論、日本国のIPからも海外のIPからもです。 ご自身が利用している IP アドレスは、Allow のリストに含まれているのでしょうか? 設定に際して、どのような情報を参考にされたのかと Webサーバのログには、どのようなメッセージが記録されているかを記載していただいたほうが、回答が付きやすいと思います。
whowhat

2019/09/30 04:12

kokemomo.sour 様 ありがとうございます!「IP Geo Block」も視野には入れてます!ただファイアーウォールでIPをブロックしたのですがいたちごっこになるだけだったので、国内以外を排除する方向で考えようと思いました。
kokemomo.sour

2019/09/30 04:15

情報共有ありがとうございます。 IP Geo BlockはIPだけでなく、国コード指定で 日本以外のアクセスを全遮断できますが、これでは不十分でしょうか。
whowhat

2019/09/30 04:15

CHERRY 様 国内のみアクセスできる設定にしていたので、自身のip許可は記述しませんでした。Allowに含めて記述してみます!
whowhat

2019/09/30 04:17

kokemomo.sour 様 !!知りませんでした。「IP Geo Block」について少し調べてみます。ありがとうございます!!
Y.H.

2019/09/30 04:21

> 送付頻度的にフォームを使わずダイレクトに送られてきます これは、Webサーバー経由せずに、受付用のメールアドレス宛にメールが届くということですか? もし、YESならWebサーバーでいくら対策してもダメなんじゃないでしょうか?
t_obara

2019/09/30 04:22

色々と調査されていると思われますので余計なお世話かと思いますが、海外からのアクセスを廃止することがスパム撲滅に直接つながるわけではありません。とりあえず、「スパム フォーム 対策」などでググってみてはいかがですか?
whowhat

2019/09/30 04:33

Y.H. 様 フォームと同じフォーマットでお問合せフォームからメールが来るのですが、1分間毎にきていたので推測としてダイレクトと考えました。フォームは入力項目も多いので時間的に通常では送れないと思います。 内容も毎回違うので、、困りました。現在はゴミ箱行きで対策してますが、金曜日に嫌がらせのように来ています。
whowhat

2019/09/30 04:35

t_obara 様 !?スパム撲滅するにはフォームの対策も必要なんですね!!運営は僕一人ではないので、他運営者と相談してみます!ありがとうございます。
Y.H.

2019/09/30 05:05

> フォームと同じフォーマットでお問合せフォームからメールが来るのですが、1分間毎にきていたので推測としてダイレクトと考えました。 1分間隔ならスクリプトやツールでフォームを操作し自動で送信してる可能性が高いですね。 Webサーバーのアクセスログが見られれば、フォーム送信のログが残っていると思います。
kyoya0819

2019/09/30 05:49

とりあえず送り元を特定してそこからホームページへのアクセスを遮断。 どうやって送られてきたのかの確認。 この2点でしょう。
whowhat

2019/09/30 06:11

Y.H. 様 ありがとうございます!そんな方法あるんですね。スクリプトやツールでコントロールされてしまうフォームにも対策が必要ですね。ログ確認してみます。
whowhat

2019/09/30 06:14

asuchi0819 様 ありがとうございます!ベトナムと香港のipは確認できています。IPをファイアーウォールでブロックしても変更してイタチごっこ状態です。ファイアーウォールブロックはサーバー管理側にやって頂いているので流石にもう頼み辛いのです。知識をつけなければ!って状態です。
whowhat

2019/10/02 03:16

サイトはWordpressベースで構築されていますがカスタマイズされているためか、plug-in「IP Geo Block」を有効化すると『重大なエラーを引き起こしたため、プラグインを有効化できませんでした。』となってしまいます。PHPのverは5.6.16でした。他、原因を色々調中です。
guest

回答3

0

https://kodocode.net/wordpress-plugin-contactform-secure/

メールフォームをContact Form 7で作成し、スパム対策した方が早く解決できると思います。

投稿2019/10/09 02:40

munokura

総合スコア109

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

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

0

ベストアンサー

1.配置場所

.htaccessを配置する場所は、WordPressのトップのindex.phpと同じフォルダに入れてください。

2.htaccessへの追記

WordPressインストールした後の.htaccessに、下記を参考にしたコードを追記することで動作すると思います。

WordPressインストール時に既に.htaccessが入っているので、そこに記載されているものの最後に追記しましょう。

allow from 192.168.xx.xx/24
が抜けているので、ローカルのIPが弾かれている可能性が高いです。
また、このままだとサーチエンジンがクロールするのも拒否していると思います。

以下が追記の参考です。

https://qiita.com/non0311/items/21516b8bdc0a0fca69fb

つまりコードの順が下記になります。

### BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> ### END WordPress ######### 海外IPを許可しないための設定 ######### ### 検索エンジンをまとめて許可するためにenv化する (Must) SetEnvIf User-Agent "Googlebot" allowbot SetEnvIf User-Agent "msnbot" allowbot SetEnvIf User-Agent "bingbot" allowbot SetEnvIf User-Agent "Slurp" allowbot ### いったん全てを拒否する (Must) order deny,allow deny from all ### 検索エンジンからのアクセスを許可 (Must) allow from env=allowbot ### SearchConsoleのプロパティが確認出来るためにの対策 (使っていなければ不要) ### https://support.google.com/webmasters/answer/80553?hl=ja allow from googlebot.com allow from google.com ### vagrantなどのアクセス許可 (使っていなければ不要) ### vagrantなど使っていれば許可にしないと開発環境が使えないため allow from 192.168.xx.xx/24 ### 日本国内のIPを許可 (Must) ### http://www.cgis.biz/tools/access/ ### 2018.12.1時点 割り当て個数 203,957,760 allow from 1.0.16.0/20 allow from 1.0.64.0/18 allow from 1.1.64.0/18 allow from 1.5.0.0/16 allow from 1.21.0.0/16 ( 中略 ) allow from 223.223.164.0/22 allow from 223.223.208.0/21 allow from 223.223.224.0/19 allow from 223.252.64.0/19 allow from 223.252.112.0/20

最後の国内のIPを記事のリンクの通り
http://www.cgis.biz/tools/access/
「.htaccessダウンロード」ボタンをクリックして.htaccessをダウンロードする。
このファイル内の allow from から始まる行を上記の「日本国内のIPを許可」に入れる。
これで問題なくアクセスできると思います。

3.参考ファイル

念のために、最新版のWordPressで上手く動いているファイルを下記にアップロードしておきます。(保存期間7日間)

http://firestorage.jp/download/01ea782e4f3413ca00e8727d383c65db56314ae5
ダウンロードパスワード 9kbw5i7k

投稿2019/10/07 12:46

編集2019/10/07 13:27
munokura

総合スコア109

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

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

whowhat

2019/10/08 00:50

munokura 様 ご丁寧にありがとうございます! 頂きました情報を元に以下ipを追記して.htaccess を設置しました。 参考元(日本国外からのアクセスを制限する.htaccess) index.phpと同じ階層に設置したら何故か、Wordpressにログインできなくなる現象が、、 エラーメッセージは以下です。  (*部分は置き換えてます。) Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator at root@*****.com to inform them of the time this error occurred, and the actions you performed just before this error. More information about this error may be available in the server error log. Wordpress(index.php)はftp直下のフォルダ内に入ってます。 因みにftpサーバー直下にも.htaccessがあり記述は以下になってます。 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteRule ^index.html?$ / [R=301,L] RewriteRule ^default.html?$ / [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress こちらの書き換えが必要なのでしょうか。index.phpもあります。 phpの記述は、Wordpress(index.php)と同じです。 複雑な設置ですみません。お知恵を頂けると幸いです。
munokura

2019/10/08 03:20

サーバーの構造がよく分からなくなってきたのですが… FTP直下:/ WordPressインストール場所:/publich_html/WordPressをインストール という作りでしょうか? そして、その2箇所に.htaccessを置いている? 差し支えなければ、どちらのサーバー・サービスを使用されているのかお知らせいただけると、情報が探しやすくなります。
whowhat

2019/10/08 04:30

munokura 様 ありがとうございます!設置場所はそのとおりでございます。 .htaccessはFTP直下にも設置してあります。 記述は以下 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteRule ^index.html?$ / [R=301,L] RewriteRule ^default.html?$ / [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress 「WordPressインストール場所:/publich_html/WordPressをインストール」 WordPressインストール場所には現状は設置無しです。 ※/publich_html/ ディレクトリの名前は違いますが階層は同じです。 .htaccess上記にも設置してみましたがログイン出来なくなってしまったので削除しました。 サーバー(ハード)は自社で構築は別になります。ややこしくてすみません。
munokura

2019/10/08 08:00

まず、FTP直下の.htaccessを削除してください。 それから、サンプルでアップしてあるファイルをダウンロードして、WordPressが入っているディレクトリに入れてみてください。
whowhat

2019/10/08 08:30

回答ありがとうございます!サンプルが削除されておりダウンロードが出来ませんでした。可能であれば再アップお願いできますでしょうか?何卒、よろしくお願いいたします。 ※先程よりスパムが激増、、、スパムメールってホント辛い。。実感中です。なんとか止めたいです!
whowhat

2019/10/09 00:18

munokura 様 返信が遅くなり失礼しました。再アップありがとうございます! ftp直下を削除して、WordPressと同じ階層に.htaccess設置しました。 お問合せフォームへのアクセスが出来なくなったので、一時的にスパムは止まりました! ただお問合わせフォームには海外IPも国内IPも通らないので現在アクセスできない状態です。 トップページのお知らせで一時的に閉じている旨を記載して対処しています。 因みにwordpressのバージョンも古いままなので、バージョンを上げること事も検討中、テーマをカスタマイズしているのでPHPの書き換えが必要のようですが、何とかしようと思います。 またApacheのバージョンが2.4以降の場合は.htaccessの書き方も違うようなのでApacheのバージョンを調べてみたいと思います。 https://ex1.m-yabe.com/archives/2154 カスタムされた階層や設置の為、今一度冷静に設置図を見直してみたいと思います。 未だに4分に1回のペースでスパムメールがきます。内容は中国語で、広告だと思います。 昨夜から400通程度、、、何とかせねばー。今日一日はお問合せフォームは閉じておこうと思います。
munokura

2019/10/09 02:39

自分のサンプルはApache2.2、WordPress5.2.3で動いていました。 質問の元にWordPressとApacheのバージョンを追記したほうが良いと思います。 フォームはどのようなもので作成されているのかも追記したほうが良いでしょう。
whowhat

2019/10/09 03:05

munokura 様 ご指摘ありがとうございます。追記しました。 教えていただいたバージョンとは、異なっていました。失礼いたしました。
whowhat

2019/10/25 08:23

皆様ご回答ありがとうございました。とても勉強になりました!「.htaccess」でipブロックも考えましたがipをランダムに変更してのアタックだったので仕方なく諦めました。サイトの構築を1から見直しメールフォームのphpに手を加えフォームを通ってこないメッセージはブロックする書き方に変えました。 今後のサイト運営に役立つ情報をありがとうございます!
guest

0

メールフォームのphpに手を加えメールフォームを通らずに直接送信を叩きに来るアクセスは送信できないように書き換えました。
今のところはスパムゼロになりました!

投稿2019/10/25 08:25

whowhat

総合スコア14

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問