apache
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| apache [2020-01-20 13:18:47] – [Namensaufloesung] manfred | apache [2023-06-25 00:41:25] (aktuell) – [.htaccess] david | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Apache ====== | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | |||
| + | ===== .htaccess ===== | ||
| + | |||
| + | .htaccess testen/ | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | ==== Beispiel ==== | ||
| + | |||
| + | * Dateiauflistung deaktivieren | ||
| + | * HSTS-Header setzen | ||
| + | * HTTP zu HTTPS und WWW zu non-WWW umleiten | ||
| + | * ist nur ein einziger redirect, da das **L** und **R** Flag nur einmal vorhanden sind | ||
| + | * man kann statt dem neueren 308 auch den klassischen 301 redirect verwenden | ||
| + | * Zugriff zu versteckten Dateien (.dotfiles) verweigern | ||
| + | |||
| + | <code apache .htaccess> | ||
| + | # disable directory index | ||
| + | Options All -Indexes | ||
| + | |||
| + | # HSTS header | ||
| + | Header always set Strict-Transport-Security " | ||
| + | |||
| + | RewriteEngine on | ||
| + | |||
| + | # HTTP -> HTTPS | ||
| + | RewriteCond %{HTTPS} off [NC] | ||
| + | RewriteRule ^.*$ https:// | ||
| + | |||
| + | # WWW -> non-WWW | ||
| + | RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] | ||
| + | RewriteRule ^.*$ https:// | ||
| + | |||
| + | # deny access to dotfiles | ||
| + | < | ||
| + | Require all denied | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Die Apache-Variablen ===== | ||
| + | |||
| + | |||
| + | ==== Config variable ${APACHE_PID_FILE} is not defined ==== | ||
| + | |||
| + | Die Variablen in den Konfigurationsdateien müssen in geschweiften Klammern gefasst werden, sonst startet der Apache 2.4.7 nicht: | ||
| + | Mutex file: | ||
| + | PidFile ${APACHE_PID_FILE} | ||
| + | User ${APACHE_RUN_USER} | ||
| + | Group ${APACHE_RUN_GROUP} | ||
| + | |||
| + | Fehlermeldungen: | ||
| + | # apache2 -V | ||
| + | [Wed May 30 11: | ||
| + | [Wed May 30 11: | ||
| + | [Wed May 30 11: | ||
| + | [Wed May 30 11: | ||
| + | [Wed May 30 11: | ||
| + | [Wed May 30 11: | ||
| + | AH00526: Syntax error on line 74 of / | ||
| + | Invalid Mutex directory in argument file: | ||
| + | |||
| + | Ursache hierfür -> in der aktuellen SHELL sind diese Variablen tatsächlich nicht bekannt und bei dem Aufruf '' | ||
| + | # (. / | ||
| + | Server version: Apache/ | ||
| + | Server built: | ||
| + | Server' | ||
| + | Server loaded: | ||
| + | Compiled using: APR 1.5.1-dev, APR-UTIL 1.5.3 | ||
| + | Architecture: | ||
| + | Server MPM: | ||
| + | threaded: | ||
| + | forked: | ||
| + | Server compiled with.... | ||
| + | -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=256 | ||
| + | -D HTTPD_ROOT="/ | ||
| + | -D SUEXEC_BIN="/ | ||
| + | -D DEFAULT_PIDLOG="/ | ||
| + | -D DEFAULT_SCOREBOARD=" | ||
| + | -D DEFAULT_ERRORLOG=" | ||
| + | -D AP_TYPES_CONFIG_FILE=" | ||
| + | -D SERVER_CONFIG_FILE=" | ||
| + | |||
| + | Hier sind die Klammer wichtig, weil sonst wichtige Variablen aus unserer SHELL-Umgebung überschrieben werden, wie z.B. '' | ||
| + | |||
| + | |||
| + | ===== Ubuntu ===== | ||
| + | |||
| + | |||
| + | ==== Apache 2.2 (Ubuntu 12.04 LTS) ==== | ||
| + | |||
| + | |||
| + | === Authentifizierung per mod_auth_mysql === | ||
| + | |||
| + | als erstes muss die DB+Tabelle angelegt werden: | ||
| + | > echo " | ||
| + | > echo " | ||
| + | |||
| + | dann der User mit verschlüsseltem Passwort eingetragen werden: | ||
| + | > echo " | ||
| + | > echo " | ||
| + | +-------+---------------+--------+ | ||
| + | | name | passwort | ||
| + | +-------+---------------+--------+ | ||
| + | | fritz | ges0Nvtjj0kZs | NULL | | ||
| + | +-------+---------------+--------+ | ||
| + | |||
| + | im Apache muss zwingend das entsprechende Modul aktiviert werden: | ||
| + | > aptitude install apache2 apache2-utils libapache2-mod-auth-mysql | ||
| + | > a2enmod auth_mysql | ||
| + | > service apache2 restart | ||
| + | |||
| + | den Apache kann man per "'' | ||
| + | > vi .htaccess | ||
| + | < | ||
| + | AuthName " | ||
| + | AuthType Basic | ||
| + | AuthBasicAuthoritative Off | ||
| + | AuthUserFile /dev/null | ||
| + | AuthMySQL On | ||
| + | AuthMySQL_Authoritative On | ||
| + | AuthMySQL_Host meine.datenbank.de | ||
| + | AuthMySQL_Port 3306 | ||
| + | AuthMySQL_DB passwort_db | ||
| + | AuthMySQL_User fritz | ||
| + | AuthMySQL_Password geheim | ||
| + | AuthMySQL_Password_Table login_tab | ||
| + | AuthMySQL_Username_Field name | ||
| + | AuthMySQL_Password_Field passwort | ||
| + | AuthMySQL_Group_Field user_group | ||
| + | AuthMySQL_Encryption_Types Plaintext Crypt_DES | ||
| + | require valid-user | ||
| + | ### die Datei .htpasswd muss drin stehen, | ||
| + | ### sonst kommt eine Fehlermeldung ins error_log | ||
| + | ### wegen Datei nicht gefunden | ||
| + | AuthUserFile / | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Apache 2.4 (Ubuntu 14.04 LTS) ==== | ||
| + | |||
| + | * [[https:// | ||
| + | * '' | ||
| + | * -> // | ||
| + | * -> //neuer Weg//: '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * [[Ubuntu 14.04 mit Apache und SSL]] | ||
| + | |||
| + | |||
| + | === Authentifizierung per mod_mod_authn_dbd === | ||
| + | |||
| + | an Stelle von **'' | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | als erstes muss die DB+Tabelle angelegt werden: | ||
| + | > echo " | ||
| + | > echo " | ||
| + | |||
| + | dann der User mit verschlüsseltem Passwort eingetragen werden: | ||
| + | > echo " | ||
| + | > echo " | ||
| + | +-------+---------------+--------+ | ||
| + | | name | passwort | ||
| + | +-------+---------------+--------+ | ||
| + | | fritz | ges0Nvtjj0kZs | NULL | | ||
| + | +-------+---------------+--------+ | ||
| + | |||
| + | im Apache muss zwingend das entsprechende Modul aktiviert werden: | ||
| + | > aptitude install apache2 apache2-utils libaprutil1-dbd-mysql | ||
| + | > a2enmod dbd authn_dbd authn_core auth_basic authz_user | ||
| + | > service apache2 restart | ||
| + | |||
| + | > vi / | ||
| + | < | ||
| + | DBDriver mysql | ||
| + | DBDParams " | ||
| + | DBDMin 2 | ||
| + | DBDKeep 6 | ||
| + | DBDMax 18 | ||
| + | DBDExptime 300 | ||
| + | |||
| + | < | ||
| + | |||
| + | ... | ||
| + | |||
| + | | ||
| + | |||
| + | < | ||
| + | AuthName " | ||
| + | AuthType Basic | ||
| + | AuthBasicProvider dbd | ||
| + | Require valid-user | ||
| + | AuthDBDUserPWQuery " | ||
| + | </ | ||
| + | |||
| + | ... | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | == DB-Cache == | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | Das Modul "'' | ||
| + | |||
| + | > a2enmod cache cache_socache authn_socache | ||
| + | > vi / | ||
| + | < | ||
| + | |||
| + | ... | ||
| + | |||
| + | < | ||
| + | AuthName " | ||
| + | AuthType Basic | ||
| + | AuthBasicProvider socache dbd | ||
| + | AuthnCacheProvideFor dbd | ||
| + | AuthnCacheContext my-server | ||
| + | Require valid-user | ||
| + | AuthDBDUserPWQuery " | ||
| + | </ | ||
| + | |||
| + | ... | ||
| + | |||
| + | </ | ||
| + | |||
| + | > service apache2 restart | ||
| + | |||
| + | ===== FreeBSD 10.1 + Apache 2.4 + SSL ===== | ||
| + | |||
| + | > pkg install apache24 | ||
| + | |||
| + | alter Standard-Schlüssel: | ||
| + | > openssl req -rand / | ||
| + | |||
| + | Elliptischer Kurven - Schlüssel: | ||
| + | > openssl ecparam -out / | ||
| + | > openssl req -new -x509 -key / | ||
| + | |||
| + | SSL-Cipher auflisten ([[https:// | ||
| + | > openssl ciphers -V | ||
| + | > openssl ciphers | tr -s ':' | ||
| + | > openssl ciphers -V TLSv1.2 | ||
| + | |||
| + | > vi / | ||
| + | ... | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | SSLProxyCipherSuite EECDH+aRSA+AES256 | ||
| + | # | ||
| + | SSLCipherSuite EECDH+aRSA+AES256 | ||
| + | ... | ||
| + | SSLHonorCipherOrder on | ||
| + | ... | ||
| + | # | ||
| + | # | ||
| + | SSLProtocol -ALL +TLSv1.2 | ||
| + | SSLProxyProtocol -ALL +TLSv1.2 | ||
| + | ... | ||
| + | ## | ||
| + | ## SSL Virtual Host Context | ||
| + | ## | ||
| + | | ||
| + | < | ||
| + | | ||
| + | # | ||
| + | DocumentRoot "/ | ||
| + | ServerName www.example.com: | ||
| + | ServerAdmin you@example.com | ||
| + | ErrorLog "/ | ||
| + | TransferLog "/ | ||
| + | | ||
| + | ... | ||
| + | | ||
| + | > vi / | ||
| + | ... | ||
| + | LoadModule socache_shmcb_module libexec/ | ||
| + | ... | ||
| + | LoadModule ssl_module libexec/ | ||
| + | ... | ||
| + | LoadModule cgi_module libexec/ | ||
| + | ... | ||
| + | AddHandler cgi-script .cgi | ||
| + | ... | ||
| + | # Various default settings | ||
| + | Include etc/ | ||
| + | ... | ||
| + | # Secure (SSL/TLS) connections | ||
| + | Include etc/ | ||
| + | ... | ||
| + | | ||
| + | > service apache24 restart | ||
| + | Performing sanity check on apache24 configuration: | ||
| + | Syntax OK | ||
| + | Stopping apache24. | ||
| + | Waiting for PIDS: 27530. | ||
| + | Performing sanity check on apache24 configuration: | ||
| + | Syntax OK | ||
| + | Starting apache24. | ||
| + | | ||
| + | > service apache24 status | ||
| + | apache24 is running as pid 26308. | ||
| + | |||
| + | |||
| + | ==== FreeBSD 12.1 + Apache 2.4 + SSL 1.1.1d ==== | ||
| + | |||
| + | alle TLSv1.3 aber nur einen TLSv1.2-Cipher erlauben, außer zum öffnen der Seiten im Unterverzeichnis ''/ | ||
| + | > vi / | ||
| + | ... | ||
| + | SSLEngine on | ||
| + | ... | ||
| + | SSLProxyCipherSuite SSL ECDHE-RSA-AES256-GCM-SHA384 | ||
| + | SSLCipherSuite SSL ECDHE-RSA-AES256-GCM-SHA384 | ||
| + | # | ||
| + | # | ||
| + | ... | ||
| + | SSLHonorCipherOrder on | ||
| + | ... | ||
| + | SSLProtocol -ALL +TLSv1.3 +TLSv1.2 | ||
| + | SSLProxyProtocol -ALL +TLSv1.3 +TLSv1.2 | ||
| + | ... | ||
| + | < | ||
| + | SSLProxyCipherSuite SSL ECDHE-RSA-AES256-GCM-SHA384: | ||
| + | SSLCipherSuite SSL ECDHE-RSA-AES256-GCM-SHA384: | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Sicherheit im Apache ===== | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | - SSL 2.0 -> angreifbar | ||
| + | - SSL 3.0 -> angreifbar | ||
| + | * Einstellung ab Firefox 24: '' | ||
| + | - TLS 1.0 (SSL 3.1) -> angreifbar (1999) | ||
| + | * Einstellung ab Firefox 24: '' | ||
| + | - **TLS 1.1 (SSL 3.2) -> nicht angreifbar (2006)** | ||
| + | * Einstellung ab Firefox 24: '' | ||
| + | - **[[http:// | ||
| + | * Einstellung ab Firefox 24: '' | ||
| + | - **[[https:// | ||
| + | * Einstellung ab Firefox 61: '' | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | |||
| + | ==== openSSL ==== | ||
| + | |||
| + | so kann man sich alle unterstützten SSL-Cipher anzeigen lassen: | ||
| + | > openssl ciphers -v ' | ||
| + | |||
| + | so die 40-Bit-Cipher: | ||
| + | > openssl ciphers -v ' | ||
| + | |||
| + | so nur die schwachen (meist 56 Bit) Cipher: | ||
| + | > openssl ciphers -v ' | ||
| + | |||
| + | so nur die mittelstarken (meist 128 Bit) Cipher: | ||
| + | > openssl ciphers -v ' | ||
| + | |||
| + | so nur die starken (meist >128 Bit) Cipher: | ||
| + | > openssl ciphers -v ' | ||
| + | |||
| + | ---- | ||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | |||
| + | In der Apache-CFG (/ | ||
| + | |||
| + | |||
| + | mit **mod_ssl** (TLSv1.3 und TLSv1.2 und vom schwächeren TLSv1.2 nur die " | ||
| + | < | ||
| + | ... | ||
| + | SSLEngine on | ||
| + | SSLHonorCipherOrder On | ||
| + | SSLProtocol -ALL +TLSv1.3 +TLSv1.2 | ||
| + | SSLCipherSuite SSL ECDHE-RSA-AES256-GCM-SHA384: | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | ... so kann man sich die Chiffrensammlung ansehen: | ||
| + | |||
| + | wird der Apache mit dem SSL-Modul eingesetzt, dann ist es sinnvoll nur " | ||
| + | > openssl ciphers -v ' | ||
| + | |||
| + | **am Ende darf der Restart des Apache nicht vergessen werden:** | ||
| + | > service apache2 restart | ||
| + | |||
| + | |||
| + | ==== GnuTLS ==== | ||
| + | |||
| + | Als die BIEST-Sicherheitslücke bekannt wurde, konnte openSSL noch kein TLS1.2, | ||
| + | die __Lösung__ mit **mod_gnutls** ([[http:// | ||
| + | < | ||
| + | ... | ||
| + | GnuTLSCache dbm %%DBDIR%%/ | ||
| + | GnuTLSCacheTimeout 500 | ||
| + | |||
| + | GnuTLSEnable on | ||
| + | GnuTLSKeyFile | ||
| + | GnuTLSCertificateFile | ||
| + | GnuTLSClientCAFile | ||
| + | # | ||
| + | GnuTLSPriorities | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | die __Zwischenlösung__ mit **mod_gnutls** (//der __Firefox 24__ unterstützt "TLS 1.2", allerdings muss es erst per '' | ||
| + | < | ||
| + | ... | ||
| + | GnuTLSCache dbm %%DBDIR%%/ | ||
| + | GnuTLSCacheTimeout 500 | ||
| + | |||
| + | GnuTLSEnable on | ||
| + | GnuTLSKeyFile | ||
| + | GnuTLSCertificateFile | ||
| + | GnuTLSClientCAFile | ||
| + | GnuTLSPriorities | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | ... so kann man sich die Chiffrensammlung ansehen: | ||
| + | |||
| + | GnuTLS-Testaufruf | ||
| + | > gnutls-cli --priority " | ||
| + | |||
| + | **am Ende darf der Restart des Apache nicht vergessen werden:** | ||
| + | > service apache2 restart | ||
| + | |||
| + | |||
| + | ===== URL-Rewriting (mod_rewrite) ===== | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | mit mod_rewrite kann man nur schwer lesbare URLs in angenehmere umwandeln und auch Suchmaschinen eine bessere Indizierung ermöglichen. | ||
| + | |||
| + | * mod_rewrite | ||
| + | * mod_rewrite Demystified: | ||
| + | |||
| + | |||
| + | ==== permanente Umzüge ==== | ||
| + | |||
| + | Wenn man eine Domain oder eine Seite auf eine neue URL umziehen lässt, sollte man korrekt den HTTP-Status 301 (moved permanently) senden. Dann werden sich auch Suchmaschinen die neue URL merken und man bleibt im Suchindex. | ||
| + | |||
| + | Die folgendene Konfiguration kann man global in der Apache-Konfiguration einstellen oder in einer .htaccess-Datei im Stammverzeichnis hinterlegen. | ||
| + | |||
| + | RewriteEngine On | ||
| + | RewriteRule ^(.*)$ http:// | ||
| + | RewriteRule .+ http:// | ||
| + | |||
| + | Wenn rigeros alle (alten) URLs auf die neue Startseite gehen sollen: | ||
| + | |||
| + | RewriteEngine On | ||
| + | RedirectMatch (.*) http:// | ||
| + | |||
| + | |||
| + | ===== Apache Log Rotation ===== | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | |||
| + | ==== Logs per Script rotieren ==== | ||
| + | |||
| + | Hiermit hat man die Möglichkeit, | ||
| + | |||
| + | mv access_log access_log.old | ||
| + | mv error_log error_log.old | ||
| + | apachectl graceful | ||
| + | sleep 600 | ||
| + | gzip access_log.old error_log.old | ||
| + | |||
| + | |||
| + | ==== Logs alle 24 Stunden rotieren ==== | ||
| + | |||
| + | Hiermit wird die Logdatei immer die Logs für genau 24 Stunden enthalten. Gezählt wird ab Prozess-Start. | ||
| + | |||
| + | CustomLog " | ||
| + | |||
| + | |||
| + | ===== CGI ===== | ||
| + | |||
| + | Möchte man per Knopfdruck ein Script ausführen, dann macht man das per CGI. | ||
| + | |||
| + | In der Konfiguration muss diese Zeile stehen, | ||
| + | |||
| + | ScriptAlias /cgi-bin/ "/ | ||
| + | |||
| + | damit die URL " | ||
| + | |||
| + | Damit die darin liegenden Dateien beim Aufruf auch als Scripte abgearbeitet werden, | ||
| + | muss noch die folgende Sektion in die Konfiguration aufgenommen werden: | ||
| + | |||
| + | | ||
| + | < | ||
| + | AllowOverride None | ||
| + | Options +ExecCGI -Includes | ||
| + | Order allow,deny | ||
| + | Allow from all | ||
| + | </ | ||
| + | |||
| + | Das Verzeichnis /// | ||
| + | unter dem der Apache läuft. | ||
| + | |||
| + | z.B.: | ||
| + | > chmod -R 0750 / | ||
| + | > chown -R www:www / | ||
| + | |||
| + | |||
| + | ==== Apache 2.4 + CGI + FreeBSD 10.1 ==== | ||
| + | |||
| + | minimale Installation: | ||
| + | > pkg install www/ | ||
| + | |||
| + | minimale Konfiguration: | ||
| + | > vi / | ||
| + | < | ||
| + | # | ||
| + | # | ||
| + | # pkg install www/ | ||
| + | # | ||
| + | # | ||
| + | LoadModule | ||
| + | # | ||
| + | |||
| + | ServerAdmin name@mail.de | ||
| + | |||
| + | ServerName www.domain.de | ||
| + | |||
| + | < | ||
| + | AllowOverride None | ||
| + | Options +ExecCGI -Includes | ||
| + | AddHandler cgi-script .cgi | ||
| + | # | ||
| + | ### Apache 2.2 | ||
| + | #Order allow,deny | ||
| + | #Allow from all | ||
| + | # | ||
| + | ### Apache 2.4 | ||
| + | Require all granted | ||
| + | </ | ||
| + | |||
| + | # | ||
| + | < | ||
| + | AddHandler cgi-script .cgi | ||
| + | # AddType text/html .html | ||
| + | # SetHandler cgi-script | ||
| + | </ | ||
| + | # | ||
| + | </ | ||
| + | |||
| + | das CGI-Skript muss die richtigen Rechte haben: | ||
| + | > chown www:www / | ||
| + | > chmod 0700 / | ||
| + | |||
| + | in der ersten Zeile des CGI-Skripts __muß__ der Interpreter eingetragen werden! | ||
| + | > head -n1 / | ||
| + | < | ||
| + | # | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | ===== Passwortschutz auf die gesamte Seite legen ===== | ||
| + | |||
| + | In diesem Beispiel ist /// | ||
| + | |||
| + | Damit die **'' | ||
| + | muss **'' | ||
| + | AllowOverride AuthConfig | ||
| + | |||
| + | |||
| + | ==== htaccess ==== | ||
| + | |||
| + | # vi / | ||
| + | | ||
| + | AuthType Basic | ||
| + | AuthName " | ||
| + | AuthUserFile | ||
| + | AuthGroupFile /dev/null | ||
| + | require valid-user | ||
| + | |||
| + | |||
| + | ==== htpasswd ==== | ||
| + | |||
| + | Trockenübung, | ||
| + | # htpasswd -n fritz | ||
| + | # htpasswd -nb fritz geheim | ||
| + | |||
| + | Benutzer mit Passwort anlegen: | ||
| + | # htpasswd -BcC 13 / | ||
| + | New password: | ||
| + | Re-type new password: | ||
| + | Adding password for user fritz | ||
| + | |||
| + | Passwort eines Benutzers ändern / neuen Benutzer anlegen (mit bcrypt verschlüsselt): | ||
| + | # htpasswd -BC 13 / | ||
| + | |||
| + | neuen Benutzer mit Passwort hinzu fügen: | ||
| + | # htpasswd / | ||
| + | |||
| + | Es ist auch möglich das Passwort direkt auf der Kommandozeile mit zu übergeben: | ||
| + | # htpasswd -b / | ||
| + | Updating password for user fritz | ||
| + | |||
| + | # htpasswd -b / | ||
| + | Adding password for user otto | ||
| + | |||
| + | Benutzer löschen: | ||
| + | # htpasswd -D / | ||
| + | |||
| + | |||
| + | ===== suexec (mit Apache 2.0 auf FreeBSD) ===== | ||
| + | |||
| + | |||
| + | ==== Wie konfiguriere ich einen Webserver mit Apache 2 ? ==== | ||
| + | |||
| + | |||
| + | === Apache 2 installieren === | ||
| + | |||
| + | # cd / | ||
| + | # make WITH_SUEXEC=yes WITH_THREADS=yes install && make clean | ||
| + | |||
| + | # suexec -V: | ||
| + | -D AP_DOC_ROOT="/ | ||
| + | -D AP_GID_MIN=1000 | ||
| + | -D AP_HTTPD_USER=" | ||
| + | -D AP_LOG_EXEC="/ | ||
| + | -D AP_SAFE_PATH="/ | ||
| + | -D AP_UID_MIN=1000 | ||
| + | -D AP_USERDIR_SUFFIX=" | ||
| + | |||
| + | Wichtig sind für uns hier folgende Angaben: | ||
| + | - " | ||
| + | - " | ||
| + | - " | ||
| + | - " | ||
| + | |||
| + | |||
| + | === Jetzt muss als erstes das Verzeichnis angelegt werden === | ||
| + | |||
| + | Der Apache läuft in diesem Beispiel mit den folgenden Rechten (siehe / | ||
| + | User www | ||
| + | Group www | ||
| + | |||
| + | Der User des Webacounts (suEXEC) hat die Rechte | ||
| + | User webuser | ||
| + | Group webgroup | ||
| + | |||
| + | |||
| + | Am sinnvollsten legt man das Web-Verzeichnis in "/ | ||
| + | # make -p / | ||
| + | # make -p / | ||
| + | # make -p / | ||
| + | |||
| + | |||
| + | chown -R webuser | ||
| + | chgrp -R www / | ||
| + | chmod -R 750 / | ||
| + | | ||
| + | chmod -R 755 / | ||
| + | chgrp -R webgroup | ||
| + | | ||
| + | chmod -R 770 / | ||
| + | | ||
| + | chown -R 0 / | ||
| + | chgrp -R users / | ||
| + | chmod -R 650 / | ||
| + | |||
| + | |||
| + | === symbolischen Link loeschen und neu anlegen === | ||
| + | |||
| + | # rm -f / | ||
| + | # ln -s /var/www / | ||
| + | |||
| + | |||
| + | === Webuser anlegen === | ||
| + | |||
| + | # vipw | ||
| + | webuser: | ||
| + | | ||
| + | # vigr | ||
| + | webgroup: | ||
| + | |||
| + | |||
| + | === Namensaufloesung === | ||
| + | |||
| + | Der zukünftige Webserver wird die IP " | ||
| + | Jeder Rechner, der auf den Webserver zugreifen soll, braucht diesen Eintrag in der Datei "/ | ||
| + | 192.168.0.10 | ||
| + | | ||
| + | Oder man richtet sich einen eigenen DNS ein. | ||
| + | |||
| + | |||
| + | === konfigurieren des Apache === | ||
| + | |||
| + | # vi / | ||
| + | NameVirtualHost musterweb.de | ||
| + | | ||
| + | SuexecUserGroup webuser webgroup | ||
| + | ServerAdmin webmaster@musterweb.de | ||
| + | DocumentRoot / | ||
| + | ScriptAlias /cgi-bin/ "/ | ||
| + | ServerName musterweb.de | ||
| + | ErrorLog / | ||
| + | CustomLog / | ||
| + | |||
| + | (einfach unten anhängen...) | ||
| + | |||
| + | |||
| + | === AKTIVIEREN (ab Apache 2.0.50) === | ||
| + | |||
| + | # vi / | ||
| + | apache2_enable=" | ||
| + | |||
| + | START: | ||
| + | # / | ||
| + | # / | ||
| + | |||
