[eccube]このウェブページにはリダイレクト ループが含まれていますのエラー

eccubeの環境を、ローカル構築中できた
と思って、管理画面にアクセスするとエラー発生

「このウェブページにはリダイレクト ループが含まれています」
.htaccessをみたけど、異常無し

調べてみると


vim data/config/config.php

define('ADMIN_FORCE_SSL', true);
↓
define('ADMIN_FORCE_SSL', false);

で直りました

「sudoers ファイル内にありません」のエラー

sudo 実行時にエラーが出た


testuser は sudoers ファイル内にありません。この事象は記録・報告されます。

突然、どうした。

id コマンドをうつと
uid=500(testuser) gid=500(testuser) 所属グループ=500(testuser),48(apache)

wheelグループがいない…

rootで入って
su root

グループを追加する
usermod -G apache,wheel testuser

複数グループのときは、カンマで区切って登録しないと
一つになってしまいます

testuserに戻って
exit;

sudoできたら直りました

シンボリックリンク攻撃を基礎からおさらい

シンボリックリンク攻撃を超基礎から整理します

<環境>
Centos
Apache 2.2.15

まずは、Apacheでのアクセス権限について整理


/var/www/html/test/index.html

というフォルダを参照するとき
apacheグループ所属のapacheユーザーがアクセスにきます

WEBブラウザで参照するときに必要になるのは


/var/www/html/test/ → x 実行権限
/var/www/html/test/index.html → r 読み取り権限

シンボリックリンク攻撃の一例を試してみます

下記の通り、ファイルがあるとして


drwx------   apache apache test
drwx------   apache apache test/index.php
drwx-----x   user   user   test2
drwx---r--   user   user   test2/index.php

http://(server ip)/test/index.php
は見れるし

symlink1

http://(server ip)/test2/index.php
も見れます

symlink2

test/index.phpのソースは普通は見れませんが


cd test2
ln -s ../test/index.php test.txt

とシンボリックリンクを作って


drwx------   apache apache test
drwx------   apache apache test/index.php
drwx-----x   user   user   test2
drwx---r--   user   user   test2/index.php
lrwxrwxrwx   user   user   test.txt -> ../test/index.php

http://(server ip)/test2/index.txt
とすると

symlink3

ソースが見えてしまいます。
恐ろしい…

防ぐにはhttpd.confか.htaccessでのFollowSymLinksを無効にすればいいです


Option -FollowSymLinks

また、SymLinksIfOwnerMatchを有効にすると
所有ユーザーが同じファイルのシンボリックリンクが有効になります


Option -FollowSymLinks SymLinksIfOwnerMatch

上記例での http://(server ip)/test2/index.txt
のアクセスは


drwx------   apache apache test/index.php
lrwxrwxrwx   user   user   test.txt -> ../test/index.php

所有ユーザーが違うので

symlink4

アクセスできなくなります

[Apache]URLを書き換える例

WEBページへアクセスした時のURLを書き換えてみます

<環境>
Centos 6
Apache 2.2

.htaccessを使うか、httpd.confに直接書きます

1.
http://example.com/sample or http://example.com/sample/
のアクセスを
http://example.com/sample.html
にする


RewriteEngine On
RewriteCond %{REQUEST_URI} ^/sample/?$
RewriteRule ^(.*)$ http://example.com/sample.html [L,R]

REQUEST_URIはスラッシュ(/)付きで始まります
RewriteCondの「/?」は、「/」が0個か1個かという意味、
RewriteRuleの[L]=ここで終わり、[R]=リダイレクトの意味です

2.
http://example.com/
のアクセスを
http://blog.example.com/
にする


RewriteCond %{HTTP_HOST} ^example\.com(:80)?
RewriteRule ^(.*)$ http://blog.example/$1 [L,R=301]

3.
http://example.com/
のアクセスを
http://blog.example.com/
にするが
http://example.com/sample.html
は、そのままアクセスさせる


RewriteCond %{HTTP_HOST} ^example\.com(:80)?
RewriteCond %{REQUEST_URI} !^/sample.html?
RewriteRule ^(.*)$ http://blog.example/$1 [L,R=301]

RewriteCondの「!^/sample.html?」の「!」は否定で、sample.htmlへのアクセス以外になります

—-

うまくいかないときはログを見ましょう
ログを出すには
httpd.conf


RewriteLog /var/log/httpd/rewrite.log
RewriteLogLevel 9

と記載


service httpd reload

などして、Apacheに設定を読み込ませます

ログの確認が終われば、httpd.confの記載はとっておきましょう
ログが出続けてしまいます