ロリポップのサーバーには不正なログインを試みるアクセスと判断された場合に、自動で制限をかける仕組みがあるそうです。
自分自身ではロリポップは借りていないんですが、不正アクセスのためにログインしようとしているとみなされたIPアドレスは自動でアクセス拒否にされる模様。
どうやってアクセス拒否にするかというと .htaccess を書き換えて行うようです。
それが自動で行われるのですが、なんらかの理由でその .htaccess が正しく書き換えられないとアクセスできなくなります。
ただし、一般公開ページを閲覧しようとして403エラー(アクセス拒否)となる場合は、必ずしも.htaccessが原因とは限らないようです。
ロリポップの場合 .htaccess でアクセス制限をかけるのはログインページであって不正アクセス防止のためなので、一般公開ページに制限をかける理由はありません。
先日、ロリポップを借りている方が、管理ページからスタイルシートを編集しようとしたところ、管理画面も一般公開ページもすべて403エラーでアクセスできなくなったそうですが、その時はパーミッションの設定で直ったそうです。
その方はロリポップに問い合わせをしたところ、次の返事が来て設定を修正しました。なぜパーミッションが変更されたのかはわかりませんが、そういうケースもあるようです。
WordPressをインストールされているフォルダのパーミッション(属性)が「770」で設定されており フォルダ内のデータを呼び出すことができない状態でございました。そのため、サイトが403エラーとなっております。
パーミッションの変更は次のページに説明があります。
サイト改ざんへの対策をお願いいたします – ロリポップ!レンタルサーバー
下の表は上記サイトより引用しました。
HTML・画像ファイル | 604 | rw—-r– |
---|---|---|
CGIの実行ファイル | 700 | rwx—— |
CGIのデータファイル | 600 | rw——- |
.htaccessファイル | 604 | rw—-r– |
ディレクトリ | 705 | rwx—r-x |
.htaccess によるアクセス制限
.htaccess を見て次の通り書きこまれていたら、それがアクセス制限の記述部分です。
Order deny,allow
Deny from all
Allow from IPADDRESS
赤字の IPADDRESS の部分は 123.456.789.100 のように 4組の数字を .(ドット)で区切って書いてあります。ここに指定されたIPアドレスからのみアクセスが許可され、それ以外は全て拒否されます。
場合によっては Allow from IPADDRESS の行は複数あるかもしれません。その場合、許可されたIPアドレスが複数あるという事です。
Order deny,allow Deny from all Allow from IPADDRESS Allow from IPADDRESS Allow from IPADDRESS
そのIPアドレスに自分のアドレスがない場合、アクセスは出来ません。解決するためには、これを自分のIPアドレスに書き換えなければいけません。
でも、自分のIPアドレスがわからない!
自分のIPアドレスがわからなければ、それを指定して書き換えることができません。それでもログインしたい時は、一時的にすべてのIPアドレスからのアクセスを許可する設定をします。
具体的には、次のようにします。
- Allow from IPADDRESS の次に Allow from all という行を追記する
Allow from all というのは、全てのIPアドレスを許可するという意味です。Allow from IPADDRESS の行が複数ある場合は、その後に追記します。
- 修正前
-
Order deny,allow Deny from all Allow from IPADDRESS
- 修正後
-
Order deny,allow Deny from all Allow from IPADDRESS Allow from all
これで、全てのIPアドレスからのアクセスが許可されます。
ただし、ログインページは誰でもアクセスできると危険なので、どうしても緊急にログインしたい場合を除き、許可したIPアドレス以外はアクセスできないように、自分のアドレスを調べて訂正しておきましょう。
コメントアウト
上の書き方ですべてのアクセスを許可しますが、この書き方は無駄があります。それは、Allow from IPADDRESS の次に Allow from all としているため、最初の IPADDRESS は2回許可されているという事になります。言い方を変えると Allow from all には、上の行の IPADDRESS も含むので、上の行は冗長だという事です。
ですから、上の行 Allow from IPADDRESS は消してしまって構いません。
ただ、消してしまって後から困らないか不安!という場合には、消さずに無効にする方法があります。それには次のように、行の最初に半角で # (シャープ)を書き加えます。これをコメントアウトと言います。
Order deny,allow Deny from all #Allow from IPADDRESS Allow from all
こうすると # の後は行末まで説明書きという意味になり、設定から無視されます。例えば次の場合、赤字の部分は説明で、消しても設定には影響しません。見た時にわかりやすくなるようにつけているだけです。
# BEGIN Lolipop <Files ~ "wp-login.php"> Order deny,allow Deny from all Allow from 123.456.789.101 </Files> # END Lolipop
<Files ~ “wp-login.php”> と </Files> の行は後で説明します。
Order deny,allow と Order allow,deny
先程の .htaccess の設定は次の意味です。
Order deny,allow
- Order deny,allow
- 順序として、許可しないアドレスを先に指定して、次に許可するアドレスを指定するという断り(宣言)。
- Deny from all
- すべてのIPアドレスを許可しない。
- Allow from 123.456.789.101
- IPアドレスが123.456.789.101の場合だけ、アクセスを許可する。
不許可のアドレスを先に決め、その後に例外として許可するアドレスを1行ずつ列挙します。
例えば、この世にあるIPアドレスが次の10個だけだとします。
- 123.456.789.101
- 123.456.789.102
- 123.456.789.103
- 123.456.789.104
- 123.456.789.105
- 123.456.789.106
- 123.456.789.107
- 123.456.789.108
- 123.456.789.109
- 123.456.789.110
この中で、123.456.789.101だけを許可したい場合は、まず Order deny,allow で指定する順序を宣言します。これは、不許可が先、許可が後という意味です。
その後 Deny from all で全てのIPアドレスを不許可に指定します。この時点ですべてのIPアドレスからのアクセスが遮断されます。
そして Allow from 123.456.789.101 で、IPアドレスが123.456.789.101のものだけ、特別にアクセスを許可します。
では、この書き方でIPアドレスが123.456.789.110以外の9個のアドレスを許可するにはどう書けばいいでしょうか。次のようにすればOKです。
Order deny,allow Deny from all Allow from 123.456.789.101 Allow from 123.456.789.102 Allow from 123.456.789.103 Allow from 123.456.789.104 Allow from 123.456.789.105 Allow from 123.456.789.106 Allow from 123.456.789.107 Allow from 123.456.789.108 Allow from 123.456.789.109
これで、指定していない123.456.789.110は許可されないので残りの9つのアドレスからはアクセスできます。
IPアドレスがこの世に10個しかない場合は簡単です。では1万個のIPアドレスから9999個を許可して1個だけ拒否するにはどうすればいいでしょう。Allow from IPADDRESS を9999行書けばいいだけなので簡単です。でも、ふざけるなです。
そんな場合は、指定する順序を逆にします。
Order allow,deny
- Order allow,deny
- 順序として、許可するアドレスを先に指定して、次に許可しないアドレスを指定するという断り(宣言)。
- Allow from all
- すべてのIPアドレスを許可する。
- Deny from 123.456.789.101
- IPアドレスが123.456.789.110の場合だけ、アクセスを許可しない。
許可するアドレスを先に決め、その後に例外として許可しないアドレスを1行ずつ列挙します。
123.456.789.110以外のアドレスを許可するには次のように書けます。
Order allow,deny Allow from all Deny from 123.456.789.110
この世に存在するIPアドレスが10個しかないのなら、次のどちらでも同じ意味になります。
Order deny,allow Deny from all Allow from 123.456.789.101 Allow from 123.456.789.102 Allow from 123.456.789.103 Allow from 123.456.789.104 Allow from 123.456.789.105 Allow from 123.456.789.106 Allow from 123.456.789.107 Allow from 123.456.789.108 Allow from 123.456.789.109
Order allow,deny Allow from all Deny from 123.456.789.110
指定のページだけアクセス制限をかける方法
ここまでで、IPアドレスを制限する設定は出来ました。ただ、このままだとサイトの全てのページが同じように制限されてしまいます。
一般公開しているページは、誰でも見て構わない。ただ、ログインページだけには制限をかけたい。そういう場合は、次のようにアクセス制限の設定を <Files ~ “FILENAME”> と </Files> で囲みます。
WordPressのログインページ wp-login.php だけ、制限したい場合は、wp-login.php のあるディレクトリで .htaccess に次のように記述します。
<Files ~ "wp-login.php"> Order deny,allow Deny from all Allow from 123.456.789.100 </Files>
こうすると <Files ~ “wp-login.php“> から </Files> までは、wp-login.php のみに適用されます。
参考までに .htaccess に誰もアクセスできないようにするには下のように書きます。これは . (ドット)で始まるファイルには全てのアクセスを拒否するという意味です。
<Files ~ "^\."> deny from all </Files>