web-dev-qa-db-ja.com

ポートがヒットしたときにApacheが提供しているファイルを確認するにはどうすればよいですか?

他の誰かがセットアップしたサーバーで作業しています。サーバーは、Apache/2.0.59(httpd)を実行するCentOS 4.6です。彼らは、ポート8443で更新サービスをセットアップしています。私はそれが機能していることを知っていますが、誰かがそのポートにヒットしたときにApacheが提供するファイルを見つける必要があります。

Httpd.confファイルを調べて、そこに何かがあるかどうかを確認しましたが、何もありませんでした。私もnmapを使用してみましたが、現在開いているポートだけが表示されました。 nmapの出力は次のとおりです。

8443/tcp open https-alt

では、誰かがそのポートに接続したときにどのファイルが提供されるかを知るにはどうすればよいですか?

5
Aust

-Vスイッチを使用して、httpdが構成ファイルを探すように構成されている場所を確認できます。

$ httpd -V
Server version: Apache/2.2.15 (Unix)
Server built:   Feb 13 2012 22:31:42
Server's Module Magic Number: 20051115:24
Server loaded:  APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D Apache_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/Apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

コマンドlsofを使用して、UNIXプロセスがアクセスしているファイルを確認することもできます。私のバージョンのhttpdはストックポート80を使用しているので、80を8443に変更してください!

$ netstat -tapn|grep ::80
tcp        0      0 :::80                       :::*                        LISTEN      5338/httpd     

これでlsofを実行して、ログファイルが書き込まれる場所を確認できます。

$ lsof -p 5338|grep log
httpd   5338 root  mem    REG  253,0    10440   3141 /usr/lib64/httpd/modules/mod_logio.so
httpd   5338 root  mem    REG  253,0    27200   3139 /usr/lib64/httpd/modules/mod_log_config.so
httpd   5338 root    2w   REG  253,0     2014 395029 /var/log/httpd/error_log
httpd   5338 root    7w   REG  253,0     4140 394789 /var/log/httpd/access_log

access_logと構成ファイルの場所を特定し、それらを調べて "Directory"および "Location"ディレクティブを特定できるはずです。これらは、どのファイルを提供するかをApacheに指示するときに使用するローカルディレクトリを指定します。

それで?

次に、access_logを調べて、サーバーへのアクセスに対応するエントリがそこにあることを確認します。つまり、http://www.somedom.com/somefileでサーバーを参照すると、このアクセスがaccess_logファイルに次のように記録されているはずです。

192.168.1.110 - - [17/Jul/2013:14:39:50 -0400] "GET /somefile HTTP/1.1" 200 4303 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/5
37.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"

ファイルはどこにありますか?

私たちが取得した上記の知識を利用して、次のように適用し始めることができます。

httpd -Vの次のビットは、Apacheのルートを示しています。

-D HTTPD_ROOT="/etc/httpd"
-D SERVER_CONFIG_FILE="conf/httpd.conf"

したがって、メインの構成ファイルは/etc/httpd/conf/httpd.confです。したがって、次の行についてそのファイルを調べます。

$ grep -E "DocumentRoot|Directory \"|^Include" /etc/httpd/conf/httpd.conf |grep -v "^#"
Include conf.d/*.conf
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
<Directory "/var/www/icons">
<Directory "/var/www/cgi-bin">
    <Directory "/var/www/error">

したがって、これらのディレクトリがaccess_logで見たファイルの潜在的なソースであることを知っています。 DocumentRootおよびDirectoriesファイルsomefileを調べます。これらの場所のいずれにもない場合は、次に、上記のIncludeディレクトリのgrep出力/etc/httpd/conf.d/*.confに注目します。

これらのファイルは、Apacheが使用する追加の構成なので、grepを使用して手順を繰り返し、これらのファイルも確認する必要があります。

12
slm

あなたは試すことができます

# netstat -ntaupe | grep 8443
0
dchirikov