Как узнать, какой файл Apache работает, когда порт попал?

Я работаю на сервере, который еще кто-то настроил. Сервер CentOS 4.6 работает с Apache / 2.0.59 (httpd). У них есть настройка службы обновлений на порту 8443. Я знаю, что она работает, но мне нужно выяснить, какие файлы Apache обслуживает, когда кто-то ударяет по этому порту.

Я посмотрел в файле httpd.conf, чтобы увидеть, есть ли что-нибудь в нем, но там ничего не было. Я тоже пытался использовать nmap но это только показало, какие порты в настоящее время открыты. Если это помогает nmap :

 8443/tcp open https-alt 

Итак, как я могу узнать, какие файлы обслуживаются, когда кто-то подключается к этому порту?

  • Как слушать все порты (UDP и TCP) или сделать их все открытыми в Debian
  • Использование Wireshark в Linux для отслеживания связанных HTTP-запросов и HTTP-ответа
  • Какой процесс отправляет TCP SYN на Solaris 10?
  • Linux TCP стек не пересылает данные в мое приложение
  • что такое спецификация формата для `ss -D`?
  • Как захватить сетевые трассы, содержащие только определенную строку?
  • Как настроить configure keepalive на Centos7
  • Проверка, могу ли я получить некоторые порты с моего компьютера
  • 2 Solutions collect form web for “Как узнать, какой файл Apache работает, когда порт попал?”

    Вы можете увидеть, где 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" 

    Вы также можете использовать команду 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 и somefile , somefile я просмотрел для файла, somefile . Если он не находится ни в одном из этих мест, тогда я бы сосредоточил внимание на каталоге Include упомянутом выше в выводе grep , /etc/httpd/conf.d/*.conf .

    Эти файлы являются дополнительными конфигурациями, которые Apache использует, поэтому вам нужно будет повторить шаги, используя grep чтобы просмотреть эти файлы.

    Вы можете попробовать

     # netstat -ntaupe | grep 8443 
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.