httpd
Mit dem -V
Schalter können Sie sehen, wo konfiguriert wurde, um nach Konfigurationsdateien zu suchen :
$ 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"
Sie können den Befehl auch verwenden, um lsof
zu sehen, auf welche Dateien ein Unix-Prozess zugreift. Meine Version von httpd
verwendet den Lager-Port 80, also ändern Sie den 80 in 8443 in Ihrem Fall!
$ netstat -tapn|grep ::80
tcp 0 0 :::80 :::* LISTEN 5338/httpd
Sie können jetzt ausführen lsof
, um herauszufinden, wohin die Protokolldateien geschrieben werden:
$ 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
Sie sollten in der Lage sein, den Speicherort access_log
der Konfigurationsdateien sowie die Konfigurationsdateien zu ermitteln und diese zu durchsuchen, um die Anweisungen "Directory" und "Location" zu ermitteln. Diese geben an, welche lokalen Verzeichnisse verwendet werden sollen, wenn Apache mitteilt, welche Dateien bereitgestellt werden sollen.
Was jetzt?
Ich würde dann das durchsehen access_log
, um sicherzustellen, dass es dort Einträge gibt, die Zugriffen gegen den Server entsprechen. Was ich damit meine, ist, wenn ich auf dem Server browse, http://www.somedom.com/somefile
dass dieser Zugriff in der folgenden access_log
Datei aufgezeichnet wird :
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"
Wo sind die Akten?
Sie können das obige Wissen, das wir erworben haben, wie folgt anwenden:
Diese Teile von httpd -V
verraten uns Apaches Wurzel:
-D HTTPD_ROOT="/etc/httpd"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
Also haben wir die Hauptkonfigurationsdatei kennen , ist hier: /etc/httpd/conf/httpd.conf
. Sehen Sie sich diese Datei für diese Zeilen an:
$ 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">
Daher weiß ich jetzt, dass diese Verzeichnisse potenzielle Quellen für die Datei sind, die wir im Internet gesehen haben access_log
. Das DocumentRoot
und Directories
ich würde für die Datei durchsehen, somefile
. Wenn es sich nicht an einem dieser Orte befindet, würde ich mich als nächstes auf das Include
oben in der grep
Ausgabe erwähnte Verzeichnis konzentrieren /etc/httpd/conf.d/*.conf
.
Bei diesen Dateien handelt es sich um zusätzliche Konfigurationen, die Apache verwendet, sodass Sie die Schritte mit dem Befehl wiederholen müssen grep
, um auch diese Dateien zu durchsuchen.