徒然なるままに プログラミングメモや日々の生活などつれづれとつづっていくblog

2018年2月9日

Mastodonでリモートフォローが「承認待ち」になる場合の対処方法

Filed under: apache,Docker,Mastodon — ranpei @ 9:58 PM

2月初めごろからかな?(実はもっと前からあって表面化したのかそれぐらいかもしれませんが)

フォローすると「承認待ち」のステータスになり、

連合にも相手の最新のトゥートが出てこないなどの弊害が多数発生していました。

 

デバッグモードでログを追ったり、Mastodonのソースを読んだりしていろいろ調べましたましたが

結局Nginxの設定の問題だと分かったため、情報共有の目的でここに書かせていただきます。

 

 

■問題の設定

・変更前

ssl_certificate /etc/letsencrypt/live/mstdn-jp.site/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mstdn-jp.site/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/mstdn-jp.site1/chain.pem;

・変更後

ssl_certificate /etc/letsencrypt/live/mstdn-jp.site/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mstdn-jp.site/privkey.pem;
#ssl_trusted_certificate /etc/letsencrypt/live/mstdn-jp.site1/chain.pem;

ssl_trusted_certificateの設定をなくしただけですね。

(そもそもssl_trusted_certificateに指定する証明書間違ってるって突っ込みはなしでお願いします;;)

 

■なぜこれで治ったのか?

実は明確な原因はわかっていません;;

 

ただソースを見る限りActivityPubはSSLを基盤としているため証明書の評価を行っているようなんです。

その評価の過程でActivityPubでのやり取りが途中で止まってしまっていたのでは?と疑っています。

 

 

何はとも本来非公開ユーザーをフォローした場合にしかありえない「承認待ち」が

公開ユーザーでも発生するって場合はSSL証明書を疑って見た方がいいみたいです。

 

2017年10月1日

Cakephp3.x系でSAML認証を実装する

Filed under: apache,Cakephp3,OSS,PHP,SAML認証 — ranpei @ 7:12 AM

今回は完全プライベートなネタではないのですが、

Cakephp3を使ってSAML認証を行うプラグインを作成したのでその使い方をまとめようと思います。

(SAMLの設定が結構面倒なのでまとめておきたかったってのもあります。)

 

■環境構築

何はともあれ、まずは環境構築です。

今回の構成は以下のようになります。

・基盤

OS: CentOS7.2

Webサーバー:Apache2.4

PHP: 5.6

・アプリケーション

Identity Provider: SimpleSAMLphp

Service Provider: Cakephp3.x + 自前プラグイン(SamlAuthenticationPlugin)

 

●Apacheインストール

# yum install httpd

●PHP5.6インストール

普通にyumでインストールすると5.4系が入るため、

ここを参考にEPELとRemiリポジトリのパッケージを使用します。

# yum install epel-release
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# yum install --enablerepo=remi,remi-php56 php php-devel php-mbstring php-mysql php-pdo php-gd php-xml php-mcrypt php-gmp php-intl

バージョンを確認してみましょう。

# php -v
PHP 5.6.31 (cli) (built: Jul 6 2017 08:06:11)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

 

Cakephpのパッケージ管理に使用されているためComposerをインストールします。


# curl -sS https://getcomposer.org/installer | php
# mv composer.phar /usr/local/bin/composer

 

●SimpleSAMLphp配置

SimpleSAMLphpを配置します。配置先はhttp://xxx.xxx.xxx/simplesaml/とします。

 

まずは、公式サイトからファイルを落としてきましょう。

DLし終わったらSCPなどを使ってWebサーバーにアップロードしてください。

 

●SimpleSAMLphpの設定

ファイルの解凍と配置を行います。(私は/var/www/simplesaml/に配置しました)

# tar zxvf simplesamlphp-1.14.16.tar.gz
# mv simplesamlphp-1.14.16 /var/www/simplesaml

 

●Cakephp3.x + 自前プラグイン

まずはCakephpを配置します。(私は/var/www/ssoapp/に配置しました)

# composer self-update && composer create-project --prefer-dist cakephp/app ssoapp

 

pluginsフォルダにSAML認証プラグインを配置します。

# cd ssoapp/plugins
# git clone https://github.com/gittrname/SamlAuthenticationPlugin.git

 

プラグインを有効化しましょう。

# cd ..
# vi config/bootstrap.php
// 最下部に追記
Plugin::load('SamlAuthenticationPlugin', ['bootstrap' => true, 'routes' => true]);
# vi composer.json
// 以下を編集
"josegonzalez/dotenv": "2.*"
↓
"josegonzalez/dotenv": "2.*",
"onelogin/php-saml": "^2.11.0"
 
"psr-4": {
"App\\": "src"
}
↓
"psr-4": {
"App\\": "src",
"SamlAuthenticationPlugin\\": "plugins/SamlAuthenticationPlugin/src"
}

 

終わったらcomposerで外部ライブラリのインストールと

autoloadの構築を行います。

# composer install

 

 

●ApacheのAlias設定

# vi /etc/httpd/conf.d/saml.conf ← 新規作成
// 以下を記載
Alias /simplesaml/ /var/www/simplesaml/www/
<Directory /var/www/simplesaml/www/>
AllowOverride None
Require all granted
</Directory>

Alias /ssoapp/ /var/www/ssoapp/webroot/
<Directory /var/www/ssoapp/webroot/>
AllowOverride None
Require all granted
<IfModule mod_rewrite.c>
RewriteEngine On
# RewriteRule ^(.*)/$ /ssoapp/$1 [L,R=300]
RewriteBase /ssoapp
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
</Directory>

Apacheを再起動します。

# systemctl restart httpd

 

ここまででとりあえず前段階終了です。

・・・・そう!前段階なんです。この後の設定が回りくどく苦戦しました;;;

 

ざっくり行くと、まずIdpの証明書情報などをSPに登録、

次にSPの証明書情報などをIdpに登録する流れになります。

 

●Idpの証明書情報をSPに登録

登録する前にIdp側で証明書を作成します。

(実働環境だとオレオレではなく正規に発行してもらったものを使用するんでしょうね)

# cd /var/www/simplesaml/cert
# openssl req -newkey rsa:2048 -new -x509 -days 3652 -nodes -out server.crt -keyout server.pem

SAML2.0-Idpのモジュールを有効化します。

# vi /var/www/simplesaml/config/config.php
// 以下を変更
'enable.saml20-idp' => false,
↓
'enable.saml20-idp' => true,
 # touch modules/exampleauth/enable 

終わったらhttp://xxx.xxx.xxx/simplesaml/saml2/idp/metadata.phpにアクセスしてみましょう。

XMLが表示されたらその内容をメモっておきます。

必要となるのは「md:EntityDescriptorのentityId」「ds:X509Certificateの証明書文字列」

「md:SingleLogoutServiceのLocation」「md:SingleSignOnServiceのLocation」です。

 

では、SPに登録しましょう。

・・・・・とその前にSPの証明書を作成します;;;(またかよ・・・)

これも実働環境だと(ry

# cd /var/www/ssoapp/plugins
# mkdir cert
# cd cert
# openssl req -newkey rsa:2048 -new -x509 -days 3652 -nodes -out server.crt -keyout server.pem

 

作成した証明書をプラグインに設定します。

# cd ..
# cd config
# vi app.php
<?php
return [
'saml_config' => [
'baseurl' => 'http://xxx.xxx.xxx/ssoapp',
'sp' => [
'entityId' => 'http://xxx.xxx.xxx/ssoapp',
'assertionConsumerService' => [
'url' => 'http://xxx.xxx.xxx/ssoapp/saml-auth/login',
],
'singleLogoutService' => [
'url' => 'http://xxx.xxx.xxx/ssoapp/saml-auth/logout',
],
'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
'x509cert' => '{server.crtの中身をコピペ}',
'privateKey' => '{server.pemの中身をコピペ}'
],
'idp' => [
'entityId' => 'md:EntityDescriptorのentityId',
'singleSignOnService' => [
'url' => '{md:SingleSignOnServiceのLocation}',
],
'singleLogoutService' => [
'url' => '{md:SingleLogoutServiceのLocation}',
],
'x509cert' => '{ds:X509Certificateの証明書文字列}'],
]
];

 

保存したらhttp://xxx.xxx.xxx/ssoapp/saml-auth/metadataを表示してみてください。

XMLが表示されたらOKです。例によってこのXMLの情報をIdp設定で使用します。

 

●SPの証明書情報をIdpに登録

# vi /var/www/simplasaml/metadata/saml20-sp-remote.php
// 以下を追記
$metadata['http://xxx.xxx.xxx/ssoapp/'] = array(
'AssertionConsumerService' => 'http://xxx.xxx.xxx/ssoapp/saml-auth/login',
'SingleLogoutService' => 'http://xxx.xxx.xxx/ssoapp/saml-auth/logout',
'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
'simplesaml.nameidattribute' => 'uid',
'simplesaml.attributes' => FALSE,
);

 

認証用アカウント(ID=test, Pass=test)を作成

# vi /var/www/simplasaml/config/authsources.php
<?php
$config = array(
    'example-userpass' => array(
        'exampleauth:UserPass',
        'test:test' => array(
            'uid' => array('test'),
            'eduPersonAffiliation' => array('member', 'employee'),
        ),
    ),

これで完了です。

 

 

■動作確認

http://xxx.xxx.xxx/loginにアクセスするとIdp側のログイン画面にリダイレクトされます。

そこで認証が完了すればSP側に戻って認証情報が参照できるはずです。

 

・動作サンプル




 

 

 

参考)

 

2016年10月9日

Nginxをゲートウェイとした構成を構築する。

Filed under: apache,Concrete5,Docker,OSS,Roundcube,Wordpress — ranpei @ 12:43 AM

Nginxをゲートウェイにして「Concrete5」「Wordpress」「Roundcube」を構築していきます。

1.docker-compose.ymlを作ってみる

version: '2'
services:
  ######################
  # gateway-proxy
  ######################
  gateway-proxy:
    image: nginx
    container_name: gateway-proxy
    ports:
      - "80:80"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock
      - ${PWD}/gateway_proxy/conf.d:/etc/nginx/conf.d
      - ${PWD}/gateway_proxy/htdocss/index.html:/usr/share/nginx/html/index.html
    links:
      - concrete
      - wordpress
      - roundcube
    environment:
      - NGINX_HOST={ホストのドメイン}
  #####################
  # concrete
  #####################
  concrete:
    build: concrete56-ja
    container_name: concrete
    links:
      - mysql
  #####################
  # wordpress
  #####################
  wordpress:
    image: wordpress
    container_name: wordpress
    links:
      - mysql
    environment:
      - WORDPRESS_DB_HOST=mysql:3306
      - WORDPRESS_DB_NAME=blog
      - WORDPRESS_DB_USER=blog
      - WORDPRESS_DB_PASSWORD=blog
  #####################
  # roundcube
  #####################
  roundcube:
    image: robbertkl/roundcube
    container_name: roundcube
    environment:
       - ROUNDCUBE_DEFAULT_HOST={IMAPサーバーIP or ドメイン}
       - ROUNDCUBE_DEFAULT_PORT=143
       - ROUNDCUBE_SMTP_SERVER={SMTPサーバーIP or ドメイン}
       - ROUNDCUBE_SMTP_PORT=25
       - ROUNDCUBE_SMTP_USER=%u
       - ROUNDCUBE_SMTP_PASS=%p
  #####################
  # mysql
  #####################
  mysql:
    image: mysql/mysql-server
    container_name: mysql
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock
      - mysqldata:/var/lib/mysql
      - ${PWD}/mysql/initdb.d:/docker-entrypoint-initdb.d
    environment:
      - MYSQL_ROOT_PASSWORD={MySQLルートパスワード}
      - MYSQL_ALLOW_EMPTY_PASSWORD=true

volumes:
  mysqldata:
    driver: local

/etc/nginx/conf.dをDockerホストからマウントするようにして
ホスト上のファイルを修正することで変更を容易にするようにしています。

ファイルの配置と設定は以下

作業Root/
  ├ docker-compose.yml
  |
  ├ /gateway_proxy
  |   ├ config.d/
  |   |  └ example.com.conf
  |   └ htdocss
  |      └ index.html
  |
  ├ concrete56-ja/
  |   └ Dockerfile
  |
  └ mysql/
      └ initdb.d/
          └ create_database.sql

・example.com.conf

server {
      listen 80 default_server;
      server_name example.com;

      client_max_body_size 512M;

      #
      # Log
      #
      access_log /var/log/nginx/example.com_access.log;
      error_log  /var/log/nginx/example.com_error.log;

      #
      # Header
      #
      #proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Forwarded-Host $http_host;
      proxy_set_header X-Forwarded-Server $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_read_timeout 600s;
      proxy_connect_timeout 10s;

      #
      # Setting
      #
      #############################
      # Nginxドキュメントルート
      #############################
      location / {
            root /usr/share/nginx/html;
            index index.html;
      }
      #############################
      # Concrete5
      #############################
      location /concrete/ {
            proxy_set_header Host $host;
            proxy_pass http://concrete/;
            proxy_redirect http://concrete/ http://$host/;
            proxy_redirect default;
      }
      #############################
      # WordPress
      #############################
      location /blog/ {
            proxy_set_header Host $host;
            proxy_pass http://wordpress/;
            proxy_redirect http://wordpress/ http://$host/;
            proxy_redirect default;
      }
      #############################
      # Roundcube
      #############################
      location /webmail/ {
            proxy_cookie_path /webmail/ /;
            proxy_pass http://roundcube/;
            proxy_redirect / /webmail/;
            proxy_redirect default;
      }
}

・index.html
~省略~

・create_database.sql

-- WordPress
CREATE DATABASE IF NOT EXISTS blog CHARACTER SET utf8;
GRANT all ON concrete.* TO 'blog'@'%' identified by 'blog';
-- Concrete5
CREATE DATABASE IF NOT EXISTS concrete CHARACTER SET utf8;
GRANT all ON concrete.* TO 'concrete'@'%' identified by 'concrete';

buildすれば各コンテナが配置されます。


$docker-compose up -d

で、起動するわけなんですが
ブラウザでアクセスしてみるとこんな感じに・・・・

alias%e8%a8%ad%e5%ae%9a%e5%89%8d_concrete5 alias%e8%a8%ad%e5%ae%9a%e5%89%8d_wordpressalias%e8%a8%ad%e5%ae%9a%e5%89%8d_roundcube

 

※ 左から「Concrete5」「Wordpress」「Roundcube」です。

Roundcube以外がうまく行ってませんね。。。。

 

 

 

2.問題へ対応する

調べてみたところ”/blog/”を”/”にリバースしているため「Concrete5」「Wordpress」は”/”にアクセスが来たと解釈しURL生成していました。

そのためリダイレクト先やCSS、JSのURLが正確なパスではないためブラウザからはアクセスできなくなってしまっているわけです。

で、結局どうしたかというと・・・・・・・

「Concrete5」「Wordpress」のApacheに強引にAliasを切って対応しましたwww

いやね、Proxyの設定見直せばいけるかなと思ったんですが

調べれば調べるほど全然ダメみたいで・・・

結局、最終構成は以下となりました。

version: '2'
services:
  ######################
  # gateway-proxy
  ######################
  gateway-proxy:
    image: nginx
    container_name: gateway-proxy
    ports:
      - "80:80"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock
      - ${PWD}/gateway_proxy/conf.d:/etc/nginx/conf.d
      - ${PWD}/gateway_proxy/htdocss/index.html:/usr/share/nginx/html/index.html
    links:
      - concrete
      - wordpress
      - roundcube
    environment:
      - NGINX_HOST={ホストのドメイン}
  #####################
  # concrete
  #####################
  concrete:
    build: concrete56-ja
    container_name: concrete
    volumes:
      - ${PWD}/concrete/concrete-alias.conf:/etc/apache2/sites-enabled/concrete-alias.conf
    links:
      - mysql
  #####################
  # wordpress
  #####################
  wordpress:
    image: wordpress
    container_name: wordpress
    volumes:
      - ${PWD}/wordpress/wordpress-alias.conf:/etc/apache2/sites-enabled/wordpress-alias.conf
    links:
      - mysql
    environment:
      - WORDPRESS_DB_HOST=mysql:3306
      - WORDPRESS_DB_NAME=blog
      - WORDPRESS_DB_USER=blog
      - WORDPRESS_DB_PASSWORD=blog
  #####################
  # roundcube
  #####################
  roundcube:
    image: robbertkl/roundcube
    container_name: roundcube
    environment:
       - ROUNDCUBE_DEFAULT_HOST={IMAPサーバーIP or ドメイン}
       - ROUNDCUBE_DEFAULT_PORT=143
       - ROUNDCUBE_SMTP_SERVER={SMTPサーバーIP or ドメイン}
       - ROUNDCUBE_SMTP_PORT=25
       - ROUNDCUBE_SMTP_USER=%u
       - ROUNDCUBE_SMTP_PASS=%p
  #####################
  # mysql
  #####################
  mysql:
    image: mysql/mysql-server
    container_name: mysql
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock
      - mysqldata:/var/lib/mysql
      - ${PWD}/mysql/initdb.d:/docker-entrypoint-initdb.d
    environment:
      - MYSQL_ROOT_PASSWORD={MySQLルートパスワード}
      - MYSQL_ALLOW_EMPTY_PASSWORD=true

volumes:
  mysqldata:
    driver: local

 

・ファイル配置
作業Root/
  ├ docker-compose.yml
  |
  ├ /gateway_proxy
  |   ├ config.d/
  |   |  └ example.com.conf
  |   └ htdocss
  |      └ index.html
  |
  ├ wordpress/
  |   └ wordpress-alias.conf
  |
  ├ concrete56-ja/
  |   ├ Dockerfile
  |   └ concrete-alias.conf
  |
  └ mysql/
      └ initdb.d/
          └ create_database.sql

・example.com.conf

server {
      listen 80 default_server;
      server_name example.com;

      client_max_body_size 512M;

      #
      # Log
      #
      access_log /var/log/nginx/example.com_access.log;
      error_log  /var/log/nginx/example.com_error.log;

      #
      # Header
      #
      #proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Forwarded-Host $http_host;
      proxy_set_header X-Forwarded-Server $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_read_timeout 600s;
      proxy_connect_timeout 10s;

      #
      # Setting
      #
      #############################
      # Nginxドキュメントルート
      #############################
      location / {
            root /usr/share/nginx/html;
            index index.html;
      }
      #############################
      # Concrete5
      #############################
      location /concrete/ {
            proxy_set_header Host $host;
            proxy_pass http://concrete/concrete/;
            proxy_redirect http://concrete/ http://$host/;
            proxy_redirect default;
      }
      #############################
      # WordPress
      #############################
      location /blog/ {
            proxy_set_header Host $host;
            proxy_pass http://wordpress/blog/;
            proxy_redirect http://wordpress/ http://$host/;
            proxy_redirect default;
      }
      #############################
      # Roundcube
      #############################
      location /webmail/ {
            proxy_cookie_path /webmail/ /;
            proxy_pass http://roundcube/;
            proxy_redirect / /webmail/;
            proxy_redirect default;
      }
}

・concrete-alias.conf

alias /concrete /var/www/html

・wordpress-alias.conf

alias /wordpress/var/www/html

・index.html
~省略~

・create_database.sql

-- WordPress
CREATE DATABASE IF NOT EXISTS blog CHARACTER SET utf8;
GRANT all ON concrete.* TO 'blog'@'%' identified by 'blog';
-- Concrete5
CREATE DATABASE IF NOT EXISTS concrete CHARACTER SET utf8;
GRANT all ON concrete.* TO 'concrete'@'%' identified by 'concrete';

volumeがファイル単体もマウントできるんでできた荒業ですw

完全にバッドノウハウですよね・・・・

まあ、今後の課題ですかな・・・

2014年5月23日

concrete5で日本語が入力できない・・・

Filed under: apache,OSS,PHP,オープンソース — ranpei @ 12:53 AM

現在ブログをCMSツールに移行する計画を実行中なのだが、
その過程で起こった問題を記録のためにメモって置く。

タイトルの通りConcrete5日本語版をインストールして、
さあ、記事を編集だ~~と思っていた矢先
日本語を入力しても化けて表示される問題にぶち当たった。

公式サイトの『よくあるインストール時の問題』に日本語が入力できない場合について書かれているのだが
「これは、お使いのサーバーの設定が、きちんと行われていない為に発生する問題だと思われます。”だと・・・
公式にも書いている.htaccessの記載もやっとるっちゅ~ねん。
MySQLの文字コードもUTF-8だし・・・

いろいろ試してみたところ.htaccessに以下の設定を追加することで解決しました。

php_flag mbstring.encoding_translation Off

2014年3月31日

apacheの不可解なログ

Filed under: apache,ログ,不正アクセス — タグ: , , , — ranpei @ 12:16 AM

サーバーのアクセス解析をふと見てみると
訪問者数の割にページ数が異常に多いことに気がついた
awstats3月の解析結果
※うちのサーバーはアクセス解析にAwstats(日本語版)を利用しています。
このサーバーのメインコンテンツはこのブログだけなので
1訪問者につき500ページ以上も閲覧されることなどあり得ない・・・

不安に思いapacheのログを見てみると以下のような不可解なログが大量に出力されていました。

85.25.226.154 - - [23/Mar/2014:05:26:02 +0900] "GET http://www.mzllock.com/plus/guestbook.php?action=admin&id=20124 HTTP/1.1" 200 6890 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 YaBrowser/14.2.1700.12403 Safari/537.36"
85.25.226.154 - - [23/Mar/2014:05:26:02 +0900] "POST http://myinfo.any-request-allowed.com/?a=tt4mq2&b=e33bu HTTP/1.1" 200 839 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"
85.25.246.62 - - [23/Mar/2014:05:26:02 +0900] "GET http://chelseafc360.com/2013/10/07/chelsea-alerted-as-real-are-looking-to-offload-benzema-for-17million/comment-page-1/ HTTP/1.1" 200 22427 "http://chelseafc360.com/2013/10/07/chelsea-alerted-as-real-are-looking-to-offload-benzema-for-17million/comment-page-1/?replytocom=27046" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 YaBrowser/14.2.1700.12403 Safari/537.36"
192.99.2.75 - - [23/Mar/2014:05:26:03 +0900] "GET http://www.europaa.net/zboard/bbs/zboard.php?id=diary&page=39&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=595 HTTP/1.1" 200 55730 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 YaBrowser/14.2.1700.12403 Safari/537.36"
85.25.246.62 - - [23/Mar/2014:05:26:03 +0900] "GET http://www.labspace911.co.kr/bbs/view.php?id=photo&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=288 HTTP/1.1" 200 13711 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"
192.99.2.75 - - [23/Mar/2014:05:26:03 +0900] "POST http://addls.com/wp-comments-post.php HTTP/1.1" 302 5939 "http://addls.com/tt_news%e5%b8%b8%e7%94%a8ts%e9%85%8d%e7%bd%ae.html/comment-page-3?replytocom=2764" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"
85.25.246.62 - - [23/Mar/2014:05:26:02 +0900] "POST http://mashika-unika.com/about-the-ridgeback/pagina-1.html HTTP/1.1" 200 74 "http://mashika-unika.com/about-the-ridgeback/pagina-1/item/1-about-dafina-wa-afrika/1-about-dafina-wa-afrika.html?start=310" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 YaBrowser/14.2.1700.12403 Safari/537.36"
85.25.226.154 - - [23/Mar/2014:05:26:03 +0900] "GET http://blog.rgbsocial.com/2012/09/13/3-links-blog-posts-worth-checking-out/comment-page-1/%23comment-form-guest HTTP/1.1" 404 28592 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 YaBrowser/14.2.1700.12403 Safari/537.36"
85.25.226.154 - - [23/Mar/2014:05:26:04 +0900] "GET http://www.mzllock.com/plus HTTP/1.1" 301 184 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 YaBrowser/14.2.1700.12403 Safari/537.36"
85.25.246.62 - - [23/Mar/2014:05:26:03 +0900] "POST http://www.litcso.com/bbs/savepost.asp?action=sre&method=fastreply&BoardID=2 HTTP/1.1" 200 5641 "http://www.litcso.com/bbs/dispbbs.asp?boardid=2&id=81&page=2&move=pre" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 YaBrowser/14.2.1700.12403 Safari/537.36"
85.25.226.154 - - [23/Mar/2014:05:25:17 +0900] "GET http://japanese.turbinewheel.com/china-gtc12v_turbo_compressor_wheels_for_cars_skoda_audi_turbo_775517_0001-1853697.html HTTP/1.1" 200 14966 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 YaBrowser/14.2.1700.12403 Safari/537.36"
85.25.246.62 - - [23/Mar/2014:05:25:14 +0900] "GET http://grevesmuehlen.umnet.de/de/index.php?sat=10&kate=13&kat2=0&kat3=&d1=20&ppp=1&alle=1&mini=&mini2=&sch=9&page=9&mehr=9&read=&a HTTP/1.1" 503 409 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 YaBrowser/14.2.1700.12403 Safari/537.36"
192.99.2.75 - - [23/Mar/2014:05:25:15 +0900] "GET http://lkccwkfy.uni86.net/group/ViewBBS.asp?ID=20091226940408634&page=3 HTTP/1.1" 503 405 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 YaBrowser/14.2.1700.12403 Safari/537.36"
85.25.246.62 - - [23/Mar/2014:05:24:32 +0900] "GET http://planet.edu.vn/component/k2/item/202-gi%C3%A1m-kh%E1%BA%A3o-kh%C3%A1ch-m%E1%BB%9Di-pnet-idol-2012/202-gi%C3%A1m-kh%E1%BA%A3o-kh%C3%A1ch-m%E1%BB%9Di-pnet-idol-2012.html?start=5259 HTTP/1.1" 502 822 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 YaBrowser/14.2.1700.12403 Safari/537.36"
85.25.246.62 - - [23/Mar/2014:05:24:33 +0900] "GET http://forum.muhhh.org/index.php?page=UserGalleryPhoto&photoID=45&l=2&s=abc434968af7e0ca896e535b2a3f9d210bff3cfd HTTP/1.1" 502 704 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 YaBrowser/14.2.1700.12403 Safari/537.36"
85.25.226.154 - - [23/Mar/2014:05:24:34 +0900] "GET http://rikmccloud.deviantart.com/journal/New-Start-423875238%23comments HTTP/1.1" 502 608 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 YaBrowser/14.2.1700.12403 Safari/537.36"
85.25.246.62 - - [23/Mar/2014:05:24:32 +0900] "GET http://cupark.co.kr/bbs/board.php?bo_table=qa&wr_id=13&page=1 HTTP/1.1" 200 90758 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 YaBrowser/14.2.1700.12403 Safari/537.36"
85.25.246.62 - - [23/Mar/2014:05:26:04 +0900] "GET http://www.eduno1.net/cmppage/zxly.asp?id=14714 HTTP/1.1" 200 8733 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"
85.25.246.62 - - [23/Mar/2014:05:25:13 +0900] "GET http://www.xfrenjiapaints.cn/toupiao.asp?page=84206 HTTP/1.1" 502 564 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"
85.25.246.62 - - [23/Mar/2014:05:25:58 +0900] "GET http://www.aiesec.or.kr/bbs/view.php?id=Main_board&page=1&sn1=&divpage=1&category=2&sn=off&ss=on&sc=on&select_arrange=hit&desc=desc&no=8 HTTP/1.1" 200 534027 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"
85.25.226.154 - - [23/Mar/2014:05:26:04 +0900] "GET http://www.mzllock.com/plus/ HTTP/1.1" 403 570 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 YaBrowser/14.2.1700.12403 Safari/537.36"
192.99.2.75 - - [23/Mar/2014:05:26:38 +0900] "GET http://www.dakarteamholland.nl/index.php?print=1&op=viewpage&page=183&mod_op=add_comment_form&content_id=9&comment_id=8&from=0&from_page=showContent HTTP/1.1" 200 5764 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0"

(※ログのほんの一部です)

本来リクエストされたファイル名が出力される部分にhttp://から始まる別ドメインへのURLが出力されているのである。
このログの出力形式について調べたところどうやらproxyサーバーとして稼働した場合に出力されるらしい。。。。
apacheのアクセスログについて 先日、リクエストヘッダが他サイトへのリクエストが…
Apache – proxyを使って人様のアクセスをログする
つまりうちのサーバーが勝手にProxyサーバーとして利用されている?ということみたいだった

しかし、Proxyとして利用する設定にした覚えはないんだけどな~~?っと思いながらapacheの設定を確認すると・・

<IfModule mod_proxy.c>
ProxyRequests On
:

うわ~~!!昔設定していたリバースプロキシの設定が中途半端に残っている!!!
速攻でOFFにしました;;;

P.S
過去のログも組めて調べると11月ごろからちょくちょく中国からProxyサーバーとして使われていました。

IPAが公開しているiLogScannerで解析したところ攻撃と思われるリクエストが3週間ほどで1700件報告されているため
踏み台として利用されていたみたいです。。

iLogScanner

(※該当箇所はすべてProxyアクセスのログでした。)

自分のミスとはいえ改めて不正アクセスの怖さを実感しました。。

Powered by WordPress