質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Q&A

解決済

2回答

4787閲覧

CENTOSのアクセスログがおかしくなりました

T.Yokotani

総合スコア141

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

0グッド

0クリップ

投稿2016/08/02 14:12

編集2016/08/03 01:36

お世話になります。

NiftyCloudのサーバにおいてSSLを更新設定したところ、いままでhtaccessを用いて接続元制限を行ったいたのですが、それができなくなってしまいました。
また、アクセスログにIPアドレスが出なくなってしまったため、どのIPからアクセスがあったのかも分からない状況です。他社から引き継いだ案件で詳細をいただけておらず、不明な設定が存在しています。

関係ありそうな部分だけピックアップして公開させていただきます。
どなたか、こういった状況を打開する方法はご存じないでしょうか?

まずは、IPアドレスだけでも解決できるとよいのですが・・・
何卒よろしくお願いいたします。

■OS

lang

1[root@localhost httpd]# cat /etc/redhat-release 2CentOS release 6.6 (Final)

■httpdのバージョン

lang

1[root@localhost httpd]# /usr/sbin/httpd -v 2Server version: Apache/2.2.15 (Unix)

■ログフォーマット

lang

1LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 2LogFormat "%h %l %u %t \"%r\" %>s %b" common 3LogFormat "%{Referer}i -> %U" referer 4LogFormat "%{User-agent}i" agent 5LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%h\"" combined_with_realip

■SSL導入前までのログ

lang

1xx.xx.79.150 - - [01/Aug/2016:12:13:40 +0900] "POST アクセス先 HTTP/1.1" 200 61 "リファラー" "Mozilla/5.0

■SSL導入後のログ

lang

1- - - [02/Aug/2016:21:29:23 +0900] "GET アクセス先 HTTP/1.1" 403 300 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0" "身に覚えのないIPアドレス"

※IPアドレス制限をかけているため認証エラー

追記
■vhosts.conf

lang

1<VirtualHost *:80> 2 ServerName www.ドメイン 3 ServerAlias ドメイン 4 DocumentRoot "/home/www/html" 5 ServerAdmin admin@root-d.com 6 <Directory "/home/www/html"> 7 Options -Indexes FollowSymLinks ExecCGI +IncludesNoExec 8 AllowOverride all 9 #Require all granted 10 #Satisfy Any 11 </Directory> 12 13 RewriteEngine on 14 RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) 15 RewriteRule .* - [F] 16 17 CustomLog "|/usr/sbin/rotatelogs /home/www/logs/apache/access_log.%Y%m%d 86400 540" combined_with_realip 18 ErrorLog /home/www/logs/apache/error_log 19</VirtualHost> 20 21<VirtualHost *:443> 22 ServerName www.ドメイン:443 23 DocumentRoot "/home/www/html" 24 ServerAdmin admin@root-d.com 25 26 ErrorLog /home/www/logs/apache/ssl_error_log 27 TransferLog /home/www/logs/apache/ssl_access_log 28 LogLevel warn 29 SSLEngine on 30 SSLProtocol all -SSLv2 31 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW 32 SSLCertificateFile /etc/httpd/conf.d/ssl/server.crt 33 SSLCACertificateFile /etc/httpd/conf.d/ssl/ca.crt 34 SSLCertificateKeyFile /etc/httpd/conf.d/ssl/server.key 35 36 <Files ~ "\.(cgi|shtml|phtml|php3?)$"> 37 SSLOptions +StdEnvVars 38 </Files> 39 <Directory "/home/www/html"> 40 SSLOptions +StdEnvVars 41 AllowOverride all 42 </Directory> 43 SetEnvIf User-Agent ".*MSIE.*" \ 44 nokeepalive ssl-unclean-shutdown \ 45 downgrade-1.0 force-response-1.0 46# CustomLog logs/ssl_request_log \ 47# "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" 48 CustomLog "|/usr/sbin/rotatelogs /home/www/logs/apache/ssl_request_log.%Y%m%d 86400 540" combined 49 50 <Directory /home/www/html/share/uploads/mw-wp-form_uploads> 51 SetEnvIf X-Forwarded-For "99\.999\.99\.99|999\.999\.999\.999|999\.999\.999\.999" allowIP 52 Satisfy Any 53 Order deny,allow 54 Deny from all 55 Allow from env=allowIP 56 </Directory> 57</VirtualHost>

※ドメイン名とアクセス許可IPは伏せさせていただきました。
ほかにもディレクトリ毎に.htaccessでX-Forwarded-Forを用いたアクセス制限をしています。
今回の減少はこのX-Forwarded-Forの判定がうまくいかなくなってしまったことが原因です。
Allow from all
にすればアクセスできないところが使用できるようになります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asahina_dev

2016/08/02 14:16

80番ポート、443番ポート 両方のVirtualHost ディレクトリ部分を掲載してください。 (コードのマークダウンでかこってね)
asahina_dev

2016/08/02 14:19 編集

また 403なので認証かかってません!! アクセス制限エラー(閲覧権限なし)です
T.Yokotani

2016/08/03 10:29

X-Forwarded-Forでアクセス許可設定をしているので、まさにここで引っかかっているかと思います。 ログを修正して、IPアドレスを取得するところから始めてみます。
guest

回答2

0

ベストアンサー

SSL設定および SSLサーバー証明書は Apache httpd に対して行なったのではなく、ロードバランサーの SSLアクセラレーターを利用しているのではないでしょうか。
その場合、Apache httpd から見た接続元はロードバランサーの IPアドレスになると思います。

ログフォーマットは combined_with_realip になっているようですが、X-Forwarded-for にオリジナルの接続元IPアドレスが設定されて、ログの先頭の「●」箇所に記録されていませんでしょうか。

(2016/08/03 17:03) 追記

HTTP(80番ポート)のログ access_log.* の書式は combined_with_realip、
HTTPS(443番ポート)のログ ssl_request_log.* の書式は combined と設定されています。

「SSL導入前のログ」を見ると、combined のように見えます。
HTTP(80番ポート)のログの書式が combined だった、かつ、ロードバランサーを経由せずに直接クライアントからの接続を受けていたということですか?

「SSL導入後のログ」を見ると、combined_with_realip のように見えます。
https:// でアクセスしたときも access_log.* に記録されているのですよね?
ロードバランサーで SSL を終端し、ロードバランサーと Apache httpd 間は HTTP(80番ポート)で通信していると思います。
「身に覚えのないIPアドレス」は ロードバランサー に記載の IPアドレス範囲に含まれるものではないでしょうか。

上記仮定が合っているとすると、SSL の場合にロードバランサーから X-Forwarded-for が渡されていないことが原因と思います。
ロードバランサーの仕様によると思いますので、NiftyCloud に問い合わせてみては?

投稿2016/08/02 15:23

編集2016/08/03 08:03
TaichiYanagiya

総合スコア12141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T.Yokotani

2016/08/03 02:07

ロードバランサーは使用していますが、SSLの設定自体はサーバ本体に行っています。 「ログの先頭の「●」箇所」というのがちょっとわかりませんでした。もう少し具体的にご指摘いただけるととても助かります。。。 不勉強で申し訳ありません。
TaichiYanagiya

2016/08/03 08:03

回答に追記しました。 編集前の質問をこちらのブラウザで見たときに、「SSL導入後のログ」のログの先頭が「-」ではなく「●」と見えたのですが、見間違えかもしれません。
T.Yokotani

2016/08/03 10:36 編集

なるほどですね。 ありがとうございます。 asahina_dev様にも同じ指摘をいただきましたので、試してみます! ありがとうございます。 追記いただきました部分ですが、https:// でアクセスしたときは ssl_request_log.%Y%m%d に出力されるようです。 ちなみに今回は引き継ぎ資料は接続情報のみ・・・というレベルでした。 基本的にサーバが落ちた時だけくらいしか作業がないと聞いていたので・・・・ X-Forwarded-forとLBの関係についてはNiftyCloudに改めて問い合わせてみます!
TaichiYanagiya

2016/08/03 15:32

https:// の場合、ssl_request_log.* に記録されるとのことですが、その時のログが「SSL導入後のログ」なのですか? ssl_request_log.* の書式は combined_with_realip なのですか??? わからなくなりました。 ロードバランサーの SSLアクセラレータを利用している場合は HTTP となるようです (http://cloud.nifty.com/cs/catalog/cloud_faq/catalog_120416000899_1.htm) ので、ssl_request_log.* に記録されるということはロードバランサーを経由せずに直接アクセスが あるということかもしれません(X-Forwarded-For が付かない)。 ホスト名を DNS で名前解決すると、サーバーの実IPアドレスが返ってきたりしませんでしょうか。
T.Yokotani

2016/10/20 07:34

時間がたっており申し訳ございません。こちらまだ未解決なのですが、TaichiYanagiya様のおっしゃられている通りでございます。 今のところ、一旦特殊なことはせずとりあえず動くようにしてあります。。。 この辺は難しいですね。。。
guest

0

conf

1CustomLog "|/usr/sbin/rotatelogs /home/www/logs/apache/access_log.%Y%m%d 86400 540" combined_with_realip 2CustomLog "|/usr/sbin/rotatelogs /home/www/logs/apache/ssl_request_log.%Y%m%d 86400 540" combined

で出力フォーマットが違うので http と https が同一ログフォーマットではないですね。

なので combinedcombined_with_realip と変更すればフォーマットが同じになるかと思います。

また http アクセスの先頭は プロキシサーバーのIP なので 外部からのアクセスの場合は - ですね

投稿2016/08/03 02:04

編集2016/08/03 02:16
asahina_dev

総合スコア610

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T.Yokotani

2016/08/03 10:28

こちら試してみます! ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問