포트에 도달했을 때 Apache가 어떤 파일을 제공하는지 어떻게 알 수 있나요?

포트에 도달했을 때 Apache가 어떤 파일을 제공하는지 어떻게 알 수 있나요?

다른 사람이 설정한 서버를 사용하고 있습니다. 서버는 Apache/2.0.59(httpd)를 실행하는 CentOS 4.6입니다. 포트 8443에 업데이트 서비스가 설정되어 있습니다. 작동하고 있다는 것을 알고 있지만 누군가 해당 포트에 액세스할 때 Apache가 어떤 파일을 제공하는지 알아내야 합니다.

httpd.conf 파일에 내용이 있는지 살펴봤지만 아무것도 없었습니다. 을 사용해 보았지만 nmap현재 열려 있는 포트만 표시됩니다. 출력은 nmap다음과 같습니다

8443/tcp open https-alt

그렇다면 누군가가 해당 포트에 연결할 때 어떤 파일이 제공되었는지 어떻게 알 수 있습니까?

답변1

스위치를 사용 하면 httpd구성 위치를 보고 해당 구성 파일을 찾을 수 있습니다 -V.

$ 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"

이 명령을 사용하여 lsofUnix 프로세스에서 어떤 파일에 액세스하고 있는지 확인할 수도 있습니다. 내 버전은 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구성 파일의 위치를 ​​확인하고 이를 확인하여 "디렉토리" 및 "위치" 지시문을 확인할 수 있어야 합니다 . 이러한 사양은 어떤 파일을 제공할 때 사용할 로컬 디렉터리를 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 -VApache의 뿌리에 대해 알려줍니다.

-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이 위치에 없으면 다음으로 출력에서 ​​위에서 언급한 디렉토리에 집중하겠습니다.DirectoriessomefileIncludegrep/etc/httpd/conf.d/*.conf

이러한 파일은 Apache에서 사용하는 추가 구성이므로 이러한 파일을 보려면 이러한 단계를 반복해야 합니다 grep.

답변2

당신은 시도 할 수 있습니다

# netstat -ntaupe | grep 8443

관련 정보