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

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

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

 8443/tcp open https-alt 

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

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 
  • Как хранить данные на диске непосредственно в модуле ядра?
  • Как я могу определить, какая программа или пользователь подключен к определенному порту после факта?
  • Требуется дальнейшее объяснение в TIME_WAIT
  • Повышение производительности TCP по сравнению с гигабитной сетью
  • Использование TCP_DEFER_ACCEPT в реальном мире?
  • Как загрузить трафик с биполярным трафиком с использованием HAProxy
  • обнаружение процесса, выполняющего порты
  • Анализ сетевого трафика
  • Структура гнезда ячеек и TCP_DIAG
  • Мониторинг портов на маршрутизаторе NAT на основе GNU / Linux
  • Настройка тайм-аута rsync TCP
  • Linux и Unix - лучшая ОС в мире.