Apache2

Aus xinux.net
Zur Navigation springen Zur Suche springen

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

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