Apache2: Unterschied zwischen den Versionen
Denis (Diskussion | Beiträge) (Die Seite wurde geleert.) |
Denis (Diskussion | Beiträge) |
||
Zeile 1: | Zeile 1: | ||
+ | =ERLÄUTERUNG= | ||
+ | Für die einzelnen Erläuterungen wurde eine extra Wiki-Seite eingerichtet: | ||
+ | * [[apache2 - Erläuterung]] | ||
+ | |||
+ | ==Installieren von apache2== | ||
+ | apt-get install apache2 | ||
+ | |||
+ | ===Konfigurieren von apache2=== | ||
+ | Hauptkonfig-Datei | ||
+ | /etc/apache2/apache2.conf | ||
+ | Dateien die in apache2.conf included sind | ||
+ | /etc/apache2/ports.conf | ||
+ | Beschränkungen, Konfiguration: | ||
+ | /etc/apache2/sites-available/default | ||
+ | /etc/apache2/sites-available/default-ssl | ||
+ | |||
+ | ===Apache2 steuern=== | ||
+ | |||
+ | |||
+ | *start: startet den Webserver | ||
+ | *stop : stoppt den Server | ||
+ | *restart: startet den Server neu, bestehende Verbindungen auf den Server werden gekappt | ||
+ | *reload: lädt die Konfigurationsdateien neu, ohne dass Verbindungen getrennt werden | ||
+ | *force-reload: Lädt die Konfigurationsdateien neu, auch wenn dabei Verbindungen getrennt werden müssen | ||
+ | *sudo update-rc.d -f apache2 remove: Apache2 aus der Autostartliste entfernen | ||
+ | *sudo update-rc.d apache2 defaults: Apache2 wieder der Autostartliste hinzufügen | ||
+ | |||
+ | |||
+ | ===Zugriffsbeschränkung=== | ||
+ | |||
+ | Zuständige Konfig-Datei | ||
+ | '''/etc/apache2/sites-available/default''' | ||
+ | |||
+ | |||
+ | Mit <VirtualHost> bestimmt man zunächst, auf welche IP-Adresse und welchen TCP-Port die Website hören soll | ||
+ | |||
+ | |||
+ | ServerAdmin blabla@xinux.de # Die Emailadresse des serveradmins | ||
+ | ServerAlias www.XXXXXXXX.com # Alias für die Domain | ||
+ | DocumentRoot /var/www/ # Rootverzeichznis von Apache2 | ||
+ | |||
+ | Order deny,allow - alle Deny-Anweisungen werden abgearbeitet | ||
+ | Order allow,deny - alle Allow-Anweisungen werden abgearbeitet | ||
+ | Deny from all - generelles Verbot | ||
+ | Allow from all - erlaubter Zugriff | ||
+ | Options - mit "+" erlaubt, mit "-" nicht erlaubt! | ||
+ | FollowSymLinks - Beachtung symbloischer Links | ||
+ | Multiviews - Auslieferung alternativer Dokumente | ||
+ | Indexes - Wenn die URL ein Verzeichnis ist, wird es Ausgegeben | ||
+ | AllowOverride - legt fest, dass .htaccess-Dateien in den Verzeichnissen ignoriert werden | ||
+ | |||
+ | '''BEISPIEL:''' | ||
+ | |||
+ | <VirtualHost *:80> | ||
+ | '''ServerAdmin XXXXX@xinux.de''' | ||
+ | '''ServerAlias www.XXXXXXYX.com''' | ||
+ | '''DocumentRoot /var/www/VERZEICHNIS''' | ||
+ | <Directory /> | ||
+ | Order deny,allow | ||
+ | Deny from all | ||
+ | Options FollowSymLinks | ||
+ | AllowOverride None | ||
+ | </Directory> | ||
+ | <Directory /var/www/> | ||
+ | '''Options -Indexes FollowSymLinks MultiViews''' | ||
+ | AllowOverride None | ||
+ | Order allow,deny | ||
+ | allow from all | ||
+ | |||
+ | |||
+ | ====Allgemein Beschränkung==== | ||
+ | |||
+ | Beschränkung auf einen Client durch IP-Adresse | ||
+ | <Directory /var/www/> | ||
+ | Options Indexes FollowSymLinks MultiViews | ||
+ | AllowOverride None | ||
+ | Order deny,allow | ||
+ | allow from '''192.168.242.1''' | ||
+ | </Directory> | ||
+ | |||
+ | |||
+ | |||
+ | ====Spezifische Beschränkung durch .htaccess==== | ||
+ | <Directory /var/www/> | ||
+ | Options Indexes FollowSymLinks MultiViews | ||
+ | AllowOverride '''All''' | ||
+ | Order deny,allow | ||
+ | allow from all | ||
+ | </Directory> | ||
+ | |||
+ | |||
+ | ====Namen basiert==== | ||
+ | Um Virtuelle Hosts einzurichten muss man folgendes beachten: | ||
+ | |||
+ | In apache Version: 2.2.17 unter Ubuntu ist die Direktive '''NameVirtualHosts''' die unabdingbar ist in der '''/etc/apache2/ports.conf''' konfiguriert. | ||
+ | |||
+ | Man sollte wie folgt eine spezifische IP-Adresse und Port an die Virtual Hosts binden: | ||
+ | NameVirtualHost 192.168.81.21:80 | ||
+ | Hier ist ein Beispiel für einen Virtual Host: | ||
+ | <VirtualHost '''192.168.81.21''':80> | ||
+ | ServerAdmin webmaster@vulkan.int | ||
+ | '''ServerName www.vulkan.int''' | ||
+ | '''DocumentRoot /var/www/vulkan''' | ||
+ | '''<Directory /var/www/vulkan>''' | ||
+ | Options Indexes FollowSymLinks Multiviews | ||
+ | AllowOverride AuthConfig | ||
+ | Order allow,deny | ||
+ | allow from all | ||
+ | </Directory> | ||
+ | </VirtualHost> | ||
+ | Wie man sieht sollte der Virtual Host die selbe IP-Adresse haben. Dazu gibt man bei '''ServerName''' die Domain ein mit der er angesprochen wird. Die Domain muss im '''DNS-Server''' auf unseren Rechner eingetragen sein. '''DocumentRoot''' und '''<Directory ... >''' geben den Pfad an aus dem die Website geladen wird. | ||
+ | |||
+ | |||
+ | ====IP basiert==== | ||
+ | Um einen IP-Adress basierten Virtuellen Host zu erstellen reicht es wie unten folgt die IP-Adresse in die einer eigens angelegten Virtuellen Netzwerk-Schnittstelle zu ändern: | ||
+ | <VirtualHost '''192.168.81.41''':80> | ||
+ | ServerAdmin webmaster@voyager.int | ||
+ | ServerName www.voyager.int | ||
+ | DocumentRoot /var/www/voyager | ||
+ | |||
+ | |||
+ | ====.htaccess Datei==== | ||
+ | Die '''.htaccess''' Datei muss in dem Ordner erstellt werden den sie schützen soll, folgende Konfiguration erlaubt Zugriff nur angelegten Nutzern mit Passwort | ||
+ | AuthType Basic | ||
+ | AuthName "Name des gesperrten Bereichs" | ||
+ | AuthUserFile /etc/apache2/httppasswd | ||
+ | Require valid-user | ||
+ | Das Passwort wird hier in /etc/apache2/httppasswd als Hashwert abgelegt, diesen bekommt man aus der /etc/shadow | ||
+ | |||
+ | cat /etc/shadow | ||
+ | ... | ||
+ | '''benutzer:$6$NGljmME5$gOvoYpg2j.garO7ZsNaTh0EO.E3Ov6aBU1A5nNl1Ao9BRZDbaFmTpi/jws2GcE4fIkbTABu5Ekxc9fkCKgGKI2''':15226:0:99999:7::: | ||
+ | ... | ||
+ | |||
+ | cat /etc/apache2/httppasswd | ||
+ | '''benutzer:$6$NGljmME5$gOvoYpg2j.garO7ZsNaTh0EO.E3Ov6aBU1A5nNl1Ao9BRZDbaFmTpi/jws2GcE4fIkbTABu5Ekxc9fkCKgGKI2''' | ||
+ | |||
+ | |||
+ | ===SSL=== | ||
+ | <!---------------------------- | ||
+ | |||
+ | apt-get install ssl-cert | ||
+ | |||
+ | mkdir /etc/apache2/ssl | ||
+ | |||
+ | Zertifikat erstellen: | ||
+ | make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem | ||
+ | |||
+ | ssl-Modul aktivieren und apache Konfiguration neu einlesen: | ||
+ | a2enmod ssl | ||
+ | bzw. | ||
+ | /etc/apache2/mods-enabled# ln -s ../mods-available/ssl.conf . | ||
+ | /etc/apache2/mods-enabled# ln -s ../mods-available/ssl.load . | ||
+ | |||
+ | /etc/init.d/apache2 restart | ||
+ | |||
+ | Modul in Seite einfügen | ||
+ | cp /etc/apache2/sites-available/voyager /etc/apache2/sites-available/voyager-ssl | ||
+ | |||
+ | cat /etc/apache2/sites-available/voyager-ssl | ||
+ | '''<IfModule mod_ssl.c>''' | ||
+ | <VirtualHost 192.168.81.41:'''443'''> | ||
+ | ServerAdmin webmaster@voyager.int | ||
+ | ServerName www.voyager.int | ||
+ | DocumentRoot /var/www/voyager | ||
+ | ErrorLog ${APACHE_LOG_DIR}/voyager.log | ||
+ | <Location /admin > | ||
+ | order deny,allow | ||
+ | deny from all | ||
+ | </Location> | ||
+ | <Directory /var/www/voyager> | ||
+ | AllowOverride AuthConfig | ||
+ | Order deny,allow | ||
+ | deny from all | ||
+ | allow from 192.168.242.1 | ||
+ | </Directory> | ||
+ | '''SSLEngine on''' | ||
+ | '''SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem''' | ||
+ | '''SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key''' | ||
+ | '''<FilesMatch "\.(cgi|shtml|phtml|php)$">''' | ||
+ | ''' SSLOptions +StdEnvVars''' | ||
+ | '''</FilesMatch>''' | ||
+ | '''<Directory /usr/lib/cgi-bin>''' | ||
+ | ''' SSLOptions +StdEnvVars''' | ||
+ | ''' </Directory>''' | ||
+ | '''BrowserMatch "MSIE [2-6]" \''' | ||
+ | '''nokeepalive ssl-unclean-shutdown \''' | ||
+ | '''downgrade-1.0 force-response-1.0''' | ||
+ | ''' BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown''' | ||
+ | </VirtualHost> | ||
+ | '''</IfModule>''' | ||
+ | Neue Site aktivieren | ||
+ | cd /etc/apache2/sites-enabled | ||
+ | ln -s /etc/apache2/sites-available/voyager-ssl | ||
+ | ----------------> | ||
+ | |||
+ | ====CA erstellen==== | ||
+ | root@cardassia:/var/ssl# make-pki.sh ca | ||
+ | Arbeitsverzeichnis: /var/ssl/ca/ | ||
+ | |||
+ | Wie ist der Name ihrer Oragnisation[xinux]?: | ||
+ | Generating RSA private key, 2048 bit long modulus | ||
+ | .........................................................................+++ | ||
+ | ..+++ | ||
+ | e is 65537 (0x10001) | ||
+ | Signature ok | ||
+ | subject=/C=de/ST=pfalz/L=zw/OU=edv/CN=xinux-ca/emailAddress=technik@xinux.de | ||
+ | Getting Private key | ||
+ | Updating index.txt...done. | ||
+ | |||
+ | CA wurde erstellt! | ||
+ | |||
+ | ====CERT und KEY erstellen==== | ||
+ | root@cardassia:/var/ssl# make-pki.sh cert | ||
+ | Arbeitsverzeichnis: /var/ssl/ca/ | ||
+ | |||
+ | Common Name eingeben: webserver | ||
+ | Generating RSA private key, 2048 bit long modulus | ||
+ | ..........................................................................+++ | ||
+ | .....................+++ | ||
+ | e is 65537 (0x10001) | ||
+ | Signature ok | ||
+ | subject=/C=de/ST=pfalz/L=zw/OU=edv/CN=webserver/emailAddress=technik@xinux.de | ||
+ | Getting CA Private Key | ||
+ | Updating index.txt...done. | ||
+ | |||
+ | Zertifikat wurde erstellt! | ||
+ | |||
+ | |||
+ | ====SSL Verzeichnis für Apache erstellen==== | ||
+ | mkdir /etc/apache2/ssl | ||
+ | |||
+ | ====CA in das Apache Verzeichnis kopieren==== | ||
+ | cp -v /var/ssl/ca/ca.crt /etc/apache2/ssl/ | ||
+ | „/var/ssl/ca/ca.crt“ -> „/etc/apache2/ssl/ca.crt“ | ||
+ | |||
+ | |||
+ | ====Webserverkey in das Apache Verzeichnis kopieren==== | ||
+ | cp -v /var/ssl/ca/webserver.key /etc/apache2/ssl/ | ||
+ | „/var/ssl/ca/webserver.key“ -> „/etc/apache2/ssl/webserver.key“ | ||
+ | |||
+ | |||
+ | ====Webservercert in das Apache Verzeichnis kopieren==== | ||
+ | cp -v /var/ssl/ca/webserver.crt /etc/apache2/ssl/ | ||
+ | „/var/ssl/ca/webserver.crt“ -> „/etc/apache2/ssl/webserver.crt“ | ||
+ | |||
+ | |||
+ | ====SSL Module aktivieren==== | ||
+ | cd /etc/apache2/mods-enabled | ||
+ | ln -fs ../mods-available/ssl.* . | ||
+ | |||
+ | ====Keys und Zertifikate in der Konfiguration bekannt machen==== | ||
+ | Folgende Einträge sind in der Datei '''/etc/apache2/sites-available/default-ssl''' zu machen. | ||
+ | SSLCertificateFile /etc/apache2/ssl/webserver.crt | ||
+ | SSLCertificateKeyFile /etc/apache2/ssl/webserver.key | ||
+ | SSLCACertificateFile /etc/apache2/ssl/ca.crt | ||
+ | |||
+ | ====Default SSL Datei aktivieren==== | ||
+ | cd /etc/apache2/sites-enabled | ||
+ | /etc/apache2/sites-enabled# ln -sf ../sites-available/default-ssl . | ||
+ | |||
+ | |||
+ | ====Nun muss natürlich die default-ssl bearbeitet werden (ähnlich wie die default)==== | ||
+ | vi /etc/apache/sites-available/default-ssl | ||
+ | |||
+ | <VirtualHost _default_:443> | ||
+ | ServerAdmin DEINE@EMAIL.ADRESSE | ||
+ | ServerAlias https://www.DEINE-DOMAIN.de | ||
+ | DocumentRoot /var/www/VERZEICHNIS/ | ||
+ | <Directory /> | ||
+ | Options FollowSymLinks | ||
+ | AllowOverride None | ||
+ | </Directory> | ||
+ | <Directory /var/www/VERZEICHNIS/> | ||
+ | Options -Indexes FollowSymLinks MultiViews | ||
+ | AllowOverride None | ||
+ | Order allow,deny | ||
+ | allow from all | ||
+ | </Directory> | ||
+ | SSLEngine on | ||
+ | SSLCertificateFile /etc/apache2/ssl/webserver.crt | ||
+ | SSLCertificateKeyFile /etc/apache2/ssl/webserver.key | ||
+ | |||
+ | |||
+ | ====Apache neustarten==== | ||
+ | /etc/init.d/apache2 restart | ||
+ | |||
+ | |||
+ | ====Kontrollieren==== | ||
+ | netstat -lntp | grep 443 | ||
+ | tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 18344/apache2 | ||
+ | |||
+ | |||
+ | ====kostenlose SSL Zert.-Stelle==== | ||
+ | |||
+ | : https://www.startssl.com/ | ||
+ | |||
+ | Ersetze die Zertifikate mit denen von startssl. Über das Konfigmenü kannst du dir key und crt downloaden und hier das ca-pem: | ||
+ | |||
+ | : https://www.startssl.com/?app=21 | ||
+ | |||
+ | die '''/etc/apache2/sites-available/default-ssl''' mpsste so aussehen: | ||
+ | |||
+ | SSLEngine on | ||
+ | SSLCertificateFile /etc/apache2/ssl/webserver.crt | ||
+ | SSLCertificateKeyFile /etc/apache2/ssl/webserver.key | ||
+ | SSLCACertificateFile /etc/apache2/ssl/ca.pem | ||
+ | SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem | ||
+ | |||
+ | ====Redirect von http auf https==== | ||
+ | |||
+ | * Port 443 muss in der firewall geöffnet werden | ||
+ | * Man muss das in die sites-available/default eintragen: | ||
+ | Redirect permanent /VERZEICHNIS https://www.DEINE-DOMAIN.com/ | ||
+ | |||
+ | ===Logging=== | ||
+ | ErrorLog /var/log/apache2/error.log | ||
+ | oder | ||
+ | ErrorLog ${APACHE_LOG_DIR}/error.log | ||
+ | |||
+ | |||
+ | ===Beispiel HowTo=== | ||
+ | |||
+ | : Nehmen wir einmal an wir wollen eine Webseite betreiben... | ||
+ | : Dazu benutzen wir eine Firewall, ein paar benötigte Module und natürlich apache2 (webserver). | ||
+ | |||
+ | : Wir starten das ganze indem wir den apache2 installieren. | ||
+ | |||
+ | apt-get install apache2 | ||
+ | |||
+ | : Nachdem dieser installiert wurde + die benötigten Module für die Homepage '''(evtl. php5-mysql, mysql-server, php5, libapache2-mod-php5, vsftpd)''', | ||
+ | laden wir die Daten in ein erstelltes Verzeichnis hoch. | ||
+ | |||
+ | mkdir /var/www/deinname | ||
+ | |||
+ | : Hochladen kann man ganz bequem über sftp (ssh-port), was das benutzen eines ftpservers überflüssig macht. | ||
+ | : Filezille unterstützt auch sftp, '''Datei -> Server/Sites -> SFTP auswählen und die SSH-Login Daten angeben''' | ||
+ | |||
+ | |||
+ | : Nun geht es an die Konfiguration des Servers. | ||
+ | : Dazu bearbeiten wir folgende Datei: | ||
+ | |||
+ | vi /etc/apache2/sites-available/default | ||
+ | |||
+ | <VirtualHost *:80> | ||
+ | '''ServerAdmin DEINE@EMAIL.ADRESSE''' | ||
+ | '''ServerAlias DEINE-DOMAIN.DE #Beispiel: www.deine-domain.de''' | ||
+ | '''DocumentRoot /var/www/DEINVERZEICHNIS/''' | ||
+ | <Directory /> | ||
+ | Options FollowSymLinks | ||
+ | AllowOverride None | ||
+ | Order deny,allow | ||
+ | Deny from all | ||
+ | </Directory> | ||
+ | '''<Directory /var/www/DEINVERZEICHNIS/>''' | ||
+ | ''' Options -Indexes FollowSymLinks MultiViews #-Indexes verbietet, die Verzeichnisse über eine Pfadangabe zu downloaden''' | ||
+ | AllowOverride None | ||
+ | Order allow,deny | ||
+ | allow from all | ||
+ | </Directory> | ||
+ | |||
+ | : Danach den webserver neustarten | ||
+ | |||
+ | /etc/init.d/apache2 restart | ||
+ | |||
+ | : Man muss evtl die Rechte einzelner Dateien/Verzeichnisse nachbearbeiten. | ||
+ | |||
+ | : Danach kann man die Verbindung via SSL verschlüsseln. | ||
+ | : Tutorial befindet sich weiter oben auf dieser Seite. | ||
+ | |||
+ | : Nachdem man SSL aktivierte und Zertifikate generiert/angefordert hat, kann man die Weiterleitung '''von http auf https''' aktivieren: | ||
+ | |||
+ | vi /etc/apache2/sites-available/default | ||
+ | |||
+ | : Diese Zeile unter "DocumentRoot" einfügen | ||
+ | Redirect permanent /VERZEICHNIS https://www.DEINE-DOMAIN.com/ | ||
+ | |||
+ | /etc/init.d/apache2 restart | ||
+ | |||
+ | ===.htpasswd ändern=== | ||
+ | |||
+ | : man muss die .htpasswd file lokalisieren. | ||
+ | htpasswd /PFAD/PFAD/.htpasswd BENUTZER | ||
+ | |||
+ | : entweder kann man das passwort eines Benutzers ändern, oder einen neuen erstellen | ||
+ | |||
+ | ===awstats=== | ||
+ | ====Installieren von awstats==== | ||
+ | apt-get install awstats | ||
+ | |||
+ | ====Konfigurieren von awstats==== | ||
+ | Awstats Konfigurations dateien sind unter Ubuntu in /etc/awstats. Die Vorlage heißt "awstats.conf". | ||
+ | |||
+ | Eine Kopie für die gewollte Domain erstellen | ||
+ | cp /etc/awstats/awstats.conf /etc/awstats/awstats.yourdomain.ext.conf | ||
+ | |||
+ | Datei Editieren: | ||
+ | |||
+ | vi /etc/awstats/awstats.yourdomain.ext.conf | ||
+ | |||
+ | Folgene Änderung vornehmen: | ||
+ | |||
+ | LogFile="/var/log/apache2/access.log" | ||
+ | SiteDomain="yourdomain.ext" | ||
+ | HostAliases="localhost 127.0.0.1 yourdomain.ext" | ||
+ | |||
+ | Die ersten Statistiken generieren: | ||
+ | |||
+ | /usr/lib/cgi-bin/awstats.pl -config=yourdomain.ext -update | ||
+ | |||
+ | ====Apache2 Konfiguration==== | ||
+ | Um Awstats anzusprechen müssen wir Apache sagen wo es ist. | ||
+ | |||
+ | cd /etc/apache2/sites-available/ | ||
+ | Wenn man keine VirtualHosts hat, muss man folgendes in '/etc/apache2/sites-available/default' eintragen. Andernfals fügt man es im VirtualHost tag der Domain ein die man überwachen will: | ||
+ | |||
+ | Alias /awstatsclasses "/usr/share/awstats/lib/" | ||
+ | Alias /awstats-icon/ "/usr/share/awstats/icon/" | ||
+ | Alias /awstatscss "/usr/share/doc/awstats/examples/css" | ||
+ | ScriptAlias /awstats/ /usr/lib/cgi-bin/ | ||
+ | Options ExecCGI -MultiViews +SymLinksIfOwnerMatch | ||
+ | |||
+ | Apache2 neu laden: | ||
+ | |||
+ | /etc/init.d/apache2 reload | ||
+ | |||
+ | Statistiken für '''''yourdomain.ext''''' sollten jetz verfügbar sein unter: | ||
+ | |||
+ | http://yourdomain.ext/awstats/awstats.pl | ||
+ | |||
+ | and: | ||
+ | |||
+ | http://yourdomain.ext/awstats/awstats.pl?config=yourdomain.ext | ||
+ | |||
+ | for if you have multiple config files. Note that these statistics are public unless you secure them. | ||
+ | |||
+ | ===Troubleshoot=== | ||
+ | apache2: Could not reliably determine the server's fully qualified domain name, ... | ||
+ | Könnte falschen Eintrag in '''/etc/hosts''' bedeuten | ||
+ | ---- | ||
+ | ;Virtual Host funktioniert nicht: | ||
+ | :Ein Virtual Host brauch zwingend eine IP Adresse auf der er läuft und einen Namen | ||
+ | z.B: | ||
+ | <VirtualHost '''192.168.81.21''':80> | ||
+ | ServerAdmin webmaster@vulkan.int | ||
+ | ServerName '''www.vulkan.int''' | ||
+ | |||
+ | -------------------------------------------------- | ||
+ | |||
+ | firefox: keine vertrauenswürdige Verbindung // sec_error_unknown_issue | ||
+ | |||
+ | überprüfe alle Zertifikate + Pfadangaben! | ||
+ | Die '''ca.pem + chainfile''' darf nicht vergessen werden! | ||
+ | |||
+ | : https://www.startssl.com/?app=21 (nur bei startssl-zertifikaten) | ||
+ | |||
+ | downloaden und einbinden, danach | ||
+ | |||
+ | /etc/init.d/apache2 restart | ||
+ | |||
+ | -------------------------------------------------- | ||
+ | |||
+ | Umlaute werden nicht richtig angezeigt... | ||
+ | |||
+ | Füge das in die /etc/apache2/apache2.conf ein: | ||
+ | AddDefaultCharset UTF-8 | ||
+ | |||
+ | ===Links:=== | ||
+ | : http://www.zdnet.de/41556021/hosting-auf-dem-root-server-so-konfiguriert-man-apache/ | ||
+ | : https://www.startssl.com/ | ||
+ | : http://httpd.apache.org/docs/2.2/mod/index.html | ||
+ | : http://www.heise.de/security/artikel/SSL-fuer-lau-880221.html |
Version vom 6. August 2014, 13:52 Uhr
ERLÄUTERUNG
Für die einzelnen Erläuterungen wurde eine extra Wiki-Seite eingerichtet:
Installieren von apache2
apt-get install apache2
Konfigurieren von apache2
Hauptkonfig-Datei
/etc/apache2/apache2.conf
Dateien die in apache2.conf included sind
/etc/apache2/ports.conf
Beschränkungen, Konfiguration:
/etc/apache2/sites-available/default /etc/apache2/sites-available/default-ssl
Apache2 steuern
- start: startet den Webserver
- stop : stoppt den Server
- restart: startet den Server neu, bestehende Verbindungen auf den Server werden gekappt
- reload: lädt die Konfigurationsdateien neu, ohne dass Verbindungen getrennt werden
- force-reload: Lädt die Konfigurationsdateien neu, auch wenn dabei Verbindungen getrennt werden müssen
- sudo update-rc.d -f apache2 remove: Apache2 aus der Autostartliste entfernen
- sudo update-rc.d apache2 defaults: Apache2 wieder der Autostartliste hinzufügen
Zugriffsbeschränkung
Zuständige Konfig-Datei /etc/apache2/sites-available/default
Mit <VirtualHost> bestimmt man zunächst, auf welche IP-Adresse und welchen TCP-Port die Website hören soll
ServerAdmin blabla@xinux.de # Die Emailadresse des serveradmins ServerAlias www.XXXXXXXX.com # Alias für die Domain DocumentRoot /var/www/ # Rootverzeichznis von Apache2
Order deny,allow - alle Deny-Anweisungen werden abgearbeitet Order allow,deny - alle Allow-Anweisungen werden abgearbeitet Deny from all - generelles Verbot Allow from all - erlaubter Zugriff Options - mit "+" erlaubt, mit "-" nicht erlaubt! FollowSymLinks - Beachtung symbloischer Links Multiviews - Auslieferung alternativer Dokumente Indexes - Wenn die URL ein Verzeichnis ist, wird es Ausgegeben AllowOverride - legt fest, dass .htaccess-Dateien in den Verzeichnissen ignoriert werden
BEISPIEL:
<VirtualHost *:80> ServerAdmin XXXXX@xinux.de ServerAlias www.XXXXXXYX.com DocumentRoot /var/www/VERZEICHNIS <Directory /> Order deny,allow Deny from all Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options -Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all
Allgemein Beschränkung
Beschränkung auf einen Client durch IP-Adresse
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order deny,allow allow from 192.168.242.1 </Directory>
Spezifische Beschränkung durch .htaccess
<Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order deny,allow allow from all </Directory>
Namen basiert
Um Virtuelle Hosts einzurichten muss man folgendes beachten:
In apache Version: 2.2.17 unter Ubuntu ist die Direktive NameVirtualHosts die unabdingbar ist in der /etc/apache2/ports.conf konfiguriert.
Man sollte wie folgt eine spezifische IP-Adresse und Port an die Virtual Hosts binden:
NameVirtualHost 192.168.81.21:80
Hier ist ein Beispiel für einen Virtual Host:
<VirtualHost 192.168.81.21:80> ServerAdmin webmaster@vulkan.int ServerName www.vulkan.int DocumentRoot /var/www/vulkan <Directory /var/www/vulkan> Options Indexes FollowSymLinks Multiviews AllowOverride AuthConfig Order allow,deny allow from all </Directory> </VirtualHost>
Wie man sieht sollte der Virtual Host die selbe IP-Adresse haben. Dazu gibt man bei ServerName die Domain ein mit der er angesprochen wird. Die Domain muss im DNS-Server auf unseren Rechner eingetragen sein. DocumentRoot und <Directory ... > geben den Pfad an aus dem die Website geladen wird.
IP basiert
Um einen IP-Adress basierten Virtuellen Host zu erstellen reicht es wie unten folgt die IP-Adresse in die einer eigens angelegten Virtuellen Netzwerk-Schnittstelle zu ändern:
<VirtualHost 192.168.81.41:80> ServerAdmin webmaster@voyager.int ServerName www.voyager.int DocumentRoot /var/www/voyager
.htaccess Datei
Die .htaccess Datei muss in dem Ordner erstellt werden den sie schützen soll, folgende Konfiguration erlaubt Zugriff nur angelegten Nutzern mit Passwort
AuthType Basic AuthName "Name des gesperrten Bereichs" AuthUserFile /etc/apache2/httppasswd Require valid-user
Das Passwort wird hier in /etc/apache2/httppasswd als Hashwert abgelegt, diesen bekommt man aus der /etc/shadow
cat /etc/shadow ... benutzer:$6$NGljmME5$gOvoYpg2j.garO7ZsNaTh0EO.E3Ov6aBU1A5nNl1Ao9BRZDbaFmTpi/jws2GcE4fIkbTABu5Ekxc9fkCKgGKI2:15226:0:99999:7::: ...
cat /etc/apache2/httppasswd benutzer:$6$NGljmME5$gOvoYpg2j.garO7ZsNaTh0EO.E3Ov6aBU1A5nNl1Ao9BRZDbaFmTpi/jws2GcE4fIkbTABu5Ekxc9fkCKgGKI2
SSL
CA erstellen
root@cardassia:/var/ssl# make-pki.sh ca Arbeitsverzeichnis: /var/ssl/ca/ Wie ist der Name ihrer Oragnisation[xinux]?: Generating RSA private key, 2048 bit long modulus .........................................................................+++ ..+++ e is 65537 (0x10001) Signature ok subject=/C=de/ST=pfalz/L=zw/OU=edv/CN=xinux-ca/emailAddress=technik@xinux.de Getting Private key Updating index.txt...done. CA wurde erstellt!
CERT und KEY erstellen
root@cardassia:/var/ssl# make-pki.sh cert Arbeitsverzeichnis: /var/ssl/ca/ Common Name eingeben: webserver Generating RSA private key, 2048 bit long modulus ..........................................................................+++ .....................+++ e is 65537 (0x10001) Signature ok subject=/C=de/ST=pfalz/L=zw/OU=edv/CN=webserver/emailAddress=technik@xinux.de Getting CA Private Key Updating index.txt...done.
Zertifikat wurde erstellt!
SSL Verzeichnis für Apache erstellen
mkdir /etc/apache2/ssl
CA in das Apache Verzeichnis kopieren
cp -v /var/ssl/ca/ca.crt /etc/apache2/ssl/ „/var/ssl/ca/ca.crt“ -> „/etc/apache2/ssl/ca.crt“
Webserverkey in das Apache Verzeichnis kopieren
cp -v /var/ssl/ca/webserver.key /etc/apache2/ssl/ „/var/ssl/ca/webserver.key“ -> „/etc/apache2/ssl/webserver.key“
Webservercert in das Apache Verzeichnis kopieren
cp -v /var/ssl/ca/webserver.crt /etc/apache2/ssl/ „/var/ssl/ca/webserver.crt“ -> „/etc/apache2/ssl/webserver.crt“
SSL Module aktivieren
cd /etc/apache2/mods-enabled ln -fs ../mods-available/ssl.* .
Keys und Zertifikate in der Konfiguration bekannt machen
Folgende Einträge sind in der Datei /etc/apache2/sites-available/default-ssl zu machen.
SSLCertificateFile /etc/apache2/ssl/webserver.crt SSLCertificateKeyFile /etc/apache2/ssl/webserver.key SSLCACertificateFile /etc/apache2/ssl/ca.crt
Default SSL Datei aktivieren
cd /etc/apache2/sites-enabled /etc/apache2/sites-enabled# ln -sf ../sites-available/default-ssl .
Nun muss natürlich die default-ssl bearbeitet werden (ähnlich wie die default)
vi /etc/apache/sites-available/default-ssl <VirtualHost _default_:443> ServerAdmin DEINE@EMAIL.ADRESSE ServerAlias https://www.DEINE-DOMAIN.de DocumentRoot /var/www/VERZEICHNIS/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/VERZEICHNIS/> Options -Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> SSLEngine on SSLCertificateFile /etc/apache2/ssl/webserver.crt SSLCertificateKeyFile /etc/apache2/ssl/webserver.key
Apache neustarten
/etc/init.d/apache2 restart
Kontrollieren
netstat -lntp | grep 443 tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 18344/apache2
kostenlose SSL Zert.-Stelle
Ersetze die Zertifikate mit denen von startssl. Über das Konfigmenü kannst du dir key und crt downloaden und hier das ca-pem:
die /etc/apache2/sites-available/default-ssl mpsste so aussehen:
SSLEngine on SSLCertificateFile /etc/apache2/ssl/webserver.crt SSLCertificateKeyFile /etc/apache2/ssl/webserver.key SSLCACertificateFile /etc/apache2/ssl/ca.pem SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem
Redirect von http auf https
- Port 443 muss in der firewall geöffnet werden
- Man muss das in die sites-available/default eintragen:
Redirect permanent /VERZEICHNIS https://www.DEINE-DOMAIN.com/
Logging
ErrorLog /var/log/apache2/error.log
oder
ErrorLog ${APACHE_LOG_DIR}/error.log
Beispiel HowTo
- Nehmen wir einmal an wir wollen eine Webseite betreiben...
- Dazu benutzen wir eine Firewall, ein paar benötigte Module und natürlich apache2 (webserver).
- Wir starten das ganze indem wir den apache2 installieren.
apt-get install apache2
- Nachdem dieser installiert wurde + die benötigten Module für die Homepage (evtl. php5-mysql, mysql-server, php5, libapache2-mod-php5, vsftpd),
laden wir die Daten in ein erstelltes Verzeichnis hoch.
mkdir /var/www/deinname
- Hochladen kann man ganz bequem über sftp (ssh-port), was das benutzen eines ftpservers überflüssig macht.
- Filezille unterstützt auch sftp, Datei -> Server/Sites -> SFTP auswählen und die SSH-Login Daten angeben
- Nun geht es an die Konfiguration des Servers.
- Dazu bearbeiten wir folgende Datei:
vi /etc/apache2/sites-available/default <VirtualHost *:80> ServerAdmin DEINE@EMAIL.ADRESSE ServerAlias DEINE-DOMAIN.DE #Beispiel: www.deine-domain.de DocumentRoot /var/www/DEINVERZEICHNIS/ <Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory> <Directory /var/www/DEINVERZEICHNIS/> Options -Indexes FollowSymLinks MultiViews #-Indexes verbietet, die Verzeichnisse über eine Pfadangabe zu downloaden AllowOverride None Order allow,deny allow from all </Directory>
- Danach den webserver neustarten
/etc/init.d/apache2 restart
- Man muss evtl die Rechte einzelner Dateien/Verzeichnisse nachbearbeiten.
- Danach kann man die Verbindung via SSL verschlüsseln.
- Tutorial befindet sich weiter oben auf dieser Seite.
- Nachdem man SSL aktivierte und Zertifikate generiert/angefordert hat, kann man die Weiterleitung von http auf https aktivieren:
vi /etc/apache2/sites-available/default
- Diese Zeile unter "DocumentRoot" einfügen
Redirect permanent /VERZEICHNIS https://www.DEINE-DOMAIN.com/
/etc/init.d/apache2 restart
.htpasswd ändern
- man muss die .htpasswd file lokalisieren.
htpasswd /PFAD/PFAD/.htpasswd BENUTZER
- entweder kann man das passwort eines Benutzers ändern, oder einen neuen erstellen
awstats
Installieren von awstats
apt-get install awstats
Konfigurieren von awstats
Awstats Konfigurations dateien sind unter Ubuntu in /etc/awstats. Die Vorlage heißt "awstats.conf".
Eine Kopie für die gewollte Domain erstellen
cp /etc/awstats/awstats.conf /etc/awstats/awstats.yourdomain.ext.conf
Datei Editieren:
vi /etc/awstats/awstats.yourdomain.ext.conf
Folgene Änderung vornehmen:
LogFile="/var/log/apache2/access.log" SiteDomain="yourdomain.ext" HostAliases="localhost 127.0.0.1 yourdomain.ext"
Die ersten Statistiken generieren:
/usr/lib/cgi-bin/awstats.pl -config=yourdomain.ext -update
Apache2 Konfiguration
Um Awstats anzusprechen müssen wir Apache sagen wo es ist.
cd /etc/apache2/sites-available/
Wenn man keine VirtualHosts hat, muss man folgendes in '/etc/apache2/sites-available/default' eintragen. Andernfals fügt man es im VirtualHost tag der Domain ein die man überwachen will:
Alias /awstatsclasses "/usr/share/awstats/lib/" Alias /awstats-icon/ "/usr/share/awstats/icon/" Alias /awstatscss "/usr/share/doc/awstats/examples/css" ScriptAlias /awstats/ /usr/lib/cgi-bin/ Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Apache2 neu laden:
/etc/init.d/apache2 reload
Statistiken für yourdomain.ext sollten jetz verfügbar sein unter:
http://yourdomain.ext/awstats/awstats.pl
and:
http://yourdomain.ext/awstats/awstats.pl?config=yourdomain.ext
for if you have multiple config files. Note that these statistics are public unless you secure them.
Troubleshoot
apache2: Could not reliably determine the server's fully qualified domain name, ...
Könnte falschen Eintrag in /etc/hosts bedeuten
- Virtual Host funktioniert nicht
- Ein Virtual Host brauch zwingend eine IP Adresse auf der er läuft und einen Namen
z.B:
<VirtualHost 192.168.81.21:80> ServerAdmin webmaster@vulkan.int ServerName www.vulkan.int
firefox: keine vertrauenswürdige Verbindung // sec_error_unknown_issue
überprüfe alle Zertifikate + Pfadangaben! Die ca.pem + chainfile darf nicht vergessen werden!
- https://www.startssl.com/?app=21 (nur bei startssl-zertifikaten)
downloaden und einbinden, danach
/etc/init.d/apache2 restart
Umlaute werden nicht richtig angezeigt...
Füge das in die /etc/apache2/apache2.conf ein:
AddDefaultCharset UTF-8