Apache2
ERLÄUTERUNG
Für die einzelnen Erläuterungen wurde eine extra Wiki-Seite eingerichtet: apache2 - Erläuterung
Installieren von 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/000-default.conf
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 Deny from All </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
- 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 /var/ssl/ca/ca.crt /etc/apache2/ssl/
Webserverkey in das Apache Verzeichnis kopieren
- cp /var/ssl/ca/webserver.key /etc/apache2/ssl/
Webservercert in das Apache Verzeichnis kopieren
- cp /var/ssl/ca/webserver.crt /etc/apache2/ssl/
SSL Module aktivieren
- cd /etc/apache2/mods-enabled
- ln -fs ../mods-available/ssl.* .
- ln -s ../mods-available/socache_* .
Keys und Zertifikate in der Konfiguration bekannt machen
Folgende Einträge sind in der Datei /etc/apache2/sites-available/default-ssl.conf 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
- ln -sf ../sites-available/default-ssl.conf .
Kontrollieren
- netstat -lntp | grep 443
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 18344/apache2
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
Web Stress Tool - ab
Installation
root@mordor:~# apt-get install apache2-utils
Beispiele
root@mordor:~# ab -kc 10 -t 30 -n 10000 http://10.9.0.10:8180/mgate/client/client.cfg.xml
Erklärung
Option | Bedeutung |
---|---|
-k | Anschalten des KeepAlive |
-c 10 | Gleichzeitige Anfragen |
-t 30 | Maximale Zeitlimit |
-n 10000 | Anzahl der Anfragen |