Apacheでセキュリティのため限られたIPのみのアクセスにしたい場合、PHPを使って.htaccessにアクセス元のグローバルIPを追加する方法

apacheなどのWEBサーバーを運用さしているときにプライベートのサーバーだと外部からのアクセスがあるとあまり宜しくない時がある。

その時は

order deny,allow
deny from all

で全部を拒否さして

allow from xxx.xxx.xxx.xxx

などで個別にアクセス出来るようにすると非常に安全になる。

でもIPが定まらないときすごくめんどくさい。

どうしようかなと思ったら.htaccessにPHPから追加出来ることがわかった。

これだと特定のディレクトリのURLにアクセスすることで、Apache全体にアクセス許可を与える事になってセキュリティがアップする。

簡単に言うと

http://yoursite.com/

にアクセス

403エラーForbidden あなたがアクセスしたページはインターネット上に存在はするが閲覧することが許可されていません。

http://yoursite.com/allowaccess.php

にアクセス

200 アクセス許可を与えました!

http://yoursite.com/

にアクセス

200 成功 ようこそ!

となる

これを応用してWordpressのログイン画面のwp-login.phpだけのアクセスを制限さしたり出来る。

特定のファイルだけアクセス制限したい場合は

すでにある.htaccessに

<Files wp-login.php>
Order deny,allow
Deny from all
</Files>

を最後に追加しましょう。

ディレクトリ全部の場合は

order deny,allow
deny from all

だけでいいです。でもその場合違うサブディレクトリを新しく作ってそこの.htaccessで

allow from all

をしてあげてね

アクセス権限を与えるやり方

ホームディレクトリの

.htaccess

# BEGIN WordPress
&amp;amp;lt;IfModule mod_rewrite.c&amp;amp;gt;
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
&amp;amp;lt;/IfModule&amp;amp;gt;

# END WordPress
&amp;amp;lt;Files wp-login.php&amp;amp;gt;
Order deny,allow
Deny from all
allow from 101.140.66.155
&amp;amp;lt;/Files&amp;amp;gt;

と同じディレクトリに新規でファイルを作成

allowaccess.php

 

&amp;amp;lt;?php
$file = dirname(__FILE__) . "/.htaccess"; // 一つ上のディレクトリなら /../.htaccess です。
$remainLastLetter = 8; // 最後に&amp;amp;lt;/Files&amp;amp;gt;などある場合は8を入力して文字を保護をしてください。

if (! file_exists($file)) {
    exit(".htaccessファイルが存在しないかアクセスできません。");
}
$ip = $_SERVER["REMOTE_ADDR"];

$addAllowIP = "allow from " . $ip;
$originalHtaccess = file_get_contents($file);
if (strpos($originalHtaccess, $addAllowIP) !== false) {
    exit("すでにIPが登録されています。");
}

$lastLetters = "";
if ($remainLastLetter &amp;amp;gt; 0)
    $lastLetters = substr($originalHtaccess, - $remainLastLetter);
$startLetters = substr($originalHtaccess, 0, strlen($originalHtaccess) - $remainLastLetter);
$newHtaccess = $startLetters . $addAllowIP . "\n" . $lastLetters;
if (file_put_contents($file, $newHtaccess)) {
    echo $ip . "のアクセス許可を与えました";
} else {
    exit(".htaccessファイルの書き込みに失敗しました。アクセス権を確認してください。");
}

 

上をコピーして貼り付けてください。

自作なので汚くてすいません。

$remainLastLetterと$file は適宜変更してください。

これでhttp://yoursite.com/allowaccess.phpにアクセスするだけでアクセス権を得られてセキュリティがアップします!

※↑のPHPファイルと.htaccessファイルがおかしいのでサーバーにアップロードしました。

こちらからダウンロード

 

 

 

 

↓弊社で開発、販売しているソフトウェアです↓

MediMonitor無料ダウンロード  

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です