WAF(Web Application Firewall)は、CMSと非常に相性が悪くOneThird CMSでも通常のWAF動作下では動作しないと考えられます
もし、WAFと共存させたい場合は、公開用のURLに加えてアクセスできる更新用のURLをもう一つ作り、BASIC認証をかけそのURLだけWAFをはすず方法があります
URLを2つ作るには、apacheの設定を行った後、config.phpに以下の記述を行います
例
if ($_SERVER["SERVER_NAME"]=="domain1.com") { $config['site_url'] = "https://domain1.com/"; $config['site_ssl'] = "https://domain1.com/"; $config['files_url'] = "https://domain1.com/files/"; $config['canonical'] = "http://domain1.com/"; } else { $config['site_url'] = "http://domain2.com/"; $config['site_ssl'] = "https://domain2.com/"; $config['files_url'] = "http://domain2.com/files/"; }
例では、domain1.comが通常ユーザーが使うWAF付きのURL、domain2.comがBASIC認証をかけたURLとなります
なお、OneThird CMSでは、ローカルPCでサイトを作成しワンタッチで本番環境に転送できるシステムになっています
WAFを有効にしたまま運用するには、URLを2つ作るよりこちらのほうが簡単です
OneThird CMSでは、基本的なセキュリティ対策に加え、以下の点を特に強化しています
WordPressなどのCMSでは wp-login.php をスキャンされ攻撃されるのは有名な話です
また、脆弱性を含むadmin以下のphpファイル郡に直接アクセスされ、サイトを改ざんされるケースも散見されます
本来セキュアに設計されたプラグラムに攻撃は成立しないのですが、プログラムだから100%はありません
そこで保険的対策として、管理プラグラムをすべて隠してしまおうという方法が以下に説明するやり方です
OneThird CMSでは、アクセス可能なphpプラグラムはindex.php及び、admin以下のプログラムだけです
adminフォルダにBASIC認証をかけるだけで外部からの攻撃に強くなりますが、多少面倒です
そこでv1.70よりもっと簡単に、ログインプログラムを含む全ての管理プログラムのURLを隠す方法をCMSの機能としてサポートしました
v1.70以前もログインurlは変更可能でした、以前の方法を、使っている方はこちらの方法に変更してください
変更は簡単、ファイルを2箇所変更するだけです
まず、config.phpに
$config['admin_dir'] = 推測されにくい文字列;
と設定してください
v1.70以降にインストールされた場合は、はじめから$config['admin_dir'] エントリが書かれていますのでコメントアウトしてください
推測されにくい文字列は、運用に差し障りがない長さの文字列にしてください
ここでは、admin01ab
を設定したとします
次に、インストールフォルダ直下の.htaccessを開き、
RewriteEngine On
のすぐ下に
RewriteRule ^.*/?(admin[0-9a-zA-Z]*)/(.*)$ index.php?__admin=$1&__pg=$2&%{QUERY_STRING} [L]
を書き加えてください
これもv1.70以降にインストールされた場合は、該当行をコメントアウトしてください
この修正を行うと、ログインURLが
インストールURL/login
から インストールURL/admin01ab/login
へ変更されます
例ではURLに加えた文字列は4桁となっており少ないと考えられると思う方もいらっしゃると思います
ですが4桁でも破られる確率は1600000分の1程度で、しかもこのURLがわかったところでログインできるわけではありません
URLを変える意味は、ボットによる無差別攻撃を回避するためです
さらに、.htaccessに
RewriteRule ^.*/?(admin[0-9a-zA-Z]*)/(.*)$ index.php?__admin=$1&__pg=$2&%{QUERY_STRING} [L]
と書いてあるため、インストールURL/admin01ab/login 以外の インストールURL/admin??? にアクセスすると、本来のURLでないためボット攻撃とみなします
具体的には、同一IPで、間違ったURLに100程度のアクセスが集中すると次の日までアクセスをシャットアウトするようになります
このため、ログインURLをスキャンによって特定することは困難です
そういうわけでURLはあまり長くなくてもOKです
もちろん、運用上問題なければ長くしても構いません
上記理由より、URLを隠した場合、通常ページにadmin???といったページエイリアスは作成しないでください
更にセキュアに運用したい場合には静的出力を使うことをお勧めします
多くのプラグインが使用できなくなりますが、特に必要ないサイトについては速度面とセキュリティ面から静的出力をおすすめしています
OneThird CMSでは、簡単に静的出力が行え更に出力先も自由に設定できます
ぜひお試しください