Schlagwort-Archive: Apache Webserver

Der Apache HTTP Server ist in fast allen Linux-Distributionen und in macOS standardmäßig enthalten.

Apache Konfigurationsdateien mehrzeilig auskommentieren

In Apache Konfigurationsdateien mehrzeilig Kommentarblöcke auskommentieren

Apache .conf-Dateien unterstützen nur einzeilige Kommentare, beginnend jeweils mit einem Hash (#) Zeichen. Sollen mehrere Zeilen als zusammenhängende Kommentarblöcke kommentiert werden, um beispielsweise eine VirtualHost-Konfiguration vorübergehend zu deaktivieren, bietet sich hierzu eine nicht vorhandene Laufzeitvariable anzuwenden, mit einer erfundenen IfDefine-Direktive umschliesst man den Codeblock der ignoriert werden soll, wie in folgendem Beispiel IfDefine-Direktive :

<IfDefine IgnoreLines>
<VirtualHost *:80>
        ServerAdmin hostmaster@foo.com
        ServerName foo.com
        ServerAlias www.foo.com
        DocumentRoot /home/www/foo.com/web/html
        ErrorLog /var/www/foo.com/web/logs/error_log
        CustomLog /var/www/foo.com/web/logs/access_log common
        Options ExecCgi IncludesNOEXEC

 <Directory "/var/www/foo.com/web/html">
    AllowOverride ALL
    Options FollowSymLinks
    Require all granted
 </Directory>
</VirtualHost>
</IfDefine>

Die VirtualHost-Direktive wird ignoriert, da IgnoreLines ein erfundener Parameter ist, der niemals auf true getestet wird. Wenn man die VirtualHost-Direktive wieder ausführen möchte, entfernt man einfach IfDefine wieder.

Apache VirtualHost bei RHEL

Um zu verifiziren welche VirtualHost ausgeführt werden, führt man bei RHEL und CentOS das httpd control command aus.

$ httpd -S

Apache VirtualHost bei Debian/Ubuntu

Bei Debian und Ubuntu gibt es das apachectl server control command.

$ apachectl -S

Bei einigen ist es der Befehl apache2ctl, häufig auch liegen beide vor.

$ apache2ctl -S

Fazit

In diesem Beitrag wird beschrieben, wie Apache Konfigurationsdateien mehrzeilig als Kommentarblöcke auskommentiert und editiert werden können. Dort wo mehrere Zeilen als zusammenhängende Kommentarblöcke kommentiert werden sollen, um beispielsweise eine VirtualHost-Konfiguration vorübergehend zu deaktivieren. Es bietet sich hierzu die nicht vorhandene Laufzeitvariable anzuwenden. Mit erfundener IfDefine-Direktive umschliesst man die Zeilen und Blöcke diese temporär nicht genutzt werden. Oder etwa um ein Abschnitt auf seine Funktion bzw. nicht Funktion zu testen.

htaccess und Dynamische IP Adressen

Apache htaccess Allow from mit DDNS Dynamischen IP Adressen

Apache Webserver Zugriffsteuerung über htaccess-Datei, für Autorisierten Zugang zu Webseiten.

Mit der Apache direktiveAllow fromist es möglich eine bestimmte IP von der Anmeldeaufforderung auszuschliessen. Dabei ist die Übergabe von Hostnamen und FQDN leider nicht möglich. Anhand des folgenden Scriptes wird die Dynamische IP eines Hostname ausgelesen und in die htaccess-Datei eingetragen.

htaccess mit Dynamischen IP Adressen

Der folgende Shell Script ermöglicht die Auflösung der IP Adresse und schreiben der IP Adresse in die htaccess-Datei. Die folgenden Zeilen in der Konsole mit copy & paste einfügen, damit wird die Script Datei erstellt.

cat << EOF > ./allow_myhost.sh
#!/bin/sh
htpath="/var/www/blog/"
grep -lr "#DDNS" $htpath | while read i; do
sed -i '/#DDNS-IP$/d' $i
grep -i "#DDNS$" $i | while read j; do
words=( $j )
ddns="${words[2]}"
ip="$(host $ddns)"
if [ "$ip" == "${ip%% has address *}" ]; then
continue;
fi
ip="${ip##* has address }"
sed -i 's/^\('"$j"'\)$/\1\nAllow from '"$ip"' #DDNS-IP/' $i
done
done
EOF

 Copy Paste

Der Script schreibt hier auf einem CentOS Host die htaccess-Datei um. Bei ZeileAllow frommit der Marke #DDNS wird der Hostname ausgelesen, auf der nächsten Zeile mit der Marke #DDNS-IP wird die aufgelöste IP des Host geschrieben. Die Pfad VariablehtpathkannDocumentRootoder ein Unterverzeichnis sein, dabei bearbeitet der Script alle vorkommenden .htaccess-Dateien rekursive ab htpath.

Die htaccess-Datei im Webverzeichnis

Die htaccess-Datei wird im Webverzeichnis gespeichert dieses geschützt werden soll. Mit cd in das gewünschten Verzeichnis wechseln und die folgenden Zeilen mit copy & paste in der Konsole einfügen, dies erzeugt die .htaccess-Datei.

cat << EOF > .htaccess
AuthName "A Blog"
AuthType Basic
AuthUserFile /home/jonny/.htpasswd
AuthGroupFile /dev/null
Order deny,allow
Deny from all
require valid-user
Allow from myhome.dyndns.org #DDNS
Allow from 198.51.100.64 #DDNS-IP
Satisfy Any
EOF

 Copy Paste

Die Zeilen mit #DDNS und #DDNS-IP (mit #) dienen zur Markierung.

Der Script muss noch ausführbar gemacht werden.

chmod 755 allow_myhost.sh

Dynamischen IP laufend aktualisieren

Damit die Auflösung der Dynamischen IP laufend aktualisiert wird, kann mitcrontab -eein Cron job erstellt werden.

*/5 * * * * root /home/jonny/allow_myhome.sh >/dev/null 2>&1

Nach restart des Cron Daemon ist der job aktive.

service crond restart

Hinweis:
Ab Apache 2.4 lautet die direktive von zuvorAllow fromnunRequire.
Apache 2.x mod_access_compat

Order deny,allow
Deny from all

Apache 2.4 mod_authz_host

Require all denied

Die von mod_access_compat bereitgestellten Allow-, Deny- und Order-Direktiven sind veraltet und werden in den zukünftigen Version nicht mehr unterstützt. Es wird empfohlen die neuen Direktiven zu verwenden.