Debian Apache2

Aus Wiki
Zur Navigation springen Zur Suche springen

Grundinstallation

Hier wird Apache2 und zahlreiche Erweiterungen wie PHP5 und Python instaliert.

Für dieses Unterfangen sind unter Debian zahlreiche Pakete erforderlich:

apt-get install apache2 apache2-doc apache2-mpm-prefork 
apt-get install apache2-utils apache2-suexec libexpat1 ssl-cert

Erweiterungen installieren

apt-get install libapache2-mod-php5 libapache2-mod-ruby libapache2-mod-wsgi libapache2-mod-perl2
apt-get install php5 php5-common php5-curl php5-dev php5-xcache php5-xsl
apt-get install php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt
apt-get install php5-memcache php5-mhash php5-ming php5-pspell php5-recode
apt-get install php5-snmp php5-sqlite php5-tidy php5-xmlrpc 


Konfiguration Apache2.2

Editieren der Datei/etc/apache2/mods-available/dir.conf…

vi /etc/apache2/mods-available/dir.conf

Zeile DirectoryIndex ändern:

<IfModule mod_dir.c>

         #DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
         DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml

</IfModule>


SSL Konfiguration: Voraussetzung: - Server Zertifikat erzeugt

Damit per SSL auf den Server zugegriffen werden kann, muss folgende Konfiguration durchgeführt werden:

vi /etc/apache2/ports.conf

Folgende Änderung (in fett gedruckt) durchführen:

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    NameVirtualHost *:443
    Listen 443
</IfModule>

Default SSL Virtualhost hinzufügen:

vi /etc/apache2/sites-enabled/000-default

Folgende Zeilen am Ende anfügen:

<VirtualHost *:443>
       ServerAdmin webmaster@domain.org
       DocumentRoot /var/www/
 
       <Directory />
               Options FollowSymLinks
               AllowOverride None
       </Directory>
       <Directory /var/www/>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride None
               Order allow,deny
               allow from all
       </Directory>

       ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
       <Directory "/usr/lib/cgi-bin">
               AllowOverride None
               Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
               Order allow,deny
               Allow from all
       </Directory>

       ErrorLog /var/log/apache2/error.log
       Alias /doc/ "/usr/share/doc/"
       <Directory "/usr/share/doc/">
               Options Indexes MultiViews FollowSymLinks
               AllowOverride None
               Order deny,allow
               Deny from all
               Allow from 127.0.0.0/255.0.0.0 ::1/128
       </Directory>

       SSLEngine on
       SSLCertificateFile /etc/ssl/CA/certs/server-cert.pem
       SSLCertificateKeyFile /etc/ssl/CA/key/server-key.pem
</VirtualHost>
Bulbgraph.png Hinweis:

Die Zeilen SSLCertificateFile und SSLCertificateKeyFile können zusammengefasst werden, falls ein Zertifikat vorliegt, das auch den Key enthält (→ siehe auch hier). Es genügt dann die Zeile:

 SSLCertificateFile /etc/ssl/CA/certs/server.pem


Konfiguration Apache2.4

Editieren der Datei/etc/apache2/mods-available/dir.conf…

vi /etc/apache2/mods-available/dir.conf

Zeile DirectoryIndex ändern:

<IfModule mod_dir.c>

         #DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
         DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml

</IfModule>


SSL Konfiguration: Voraussetzung: - Server Zertifikat erzeugt

Default SSL Virtualhost hinzufügen:

vi /etc/apache2/sites-enabled/000-default

Folgende Zeilen am Ende anfügen:

<VirtualHost *:443>
       ServerAdmin webmaster@domain.org
       DocumentRoot /var/www/
 
       <Directory />
               Options FollowSymLinks
               AllowOverride None
       </Directory>
       <Directory /var/www/>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride None
               Require all granted
       </Directory>

       ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
       <Directory "/usr/lib/cgi-bin">
               AllowOverride None
               Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
               Require all granted
       </Directory>

       ErrorLog /var/log/apache2/error.log
       Alias /doc/ "/usr/share/doc/"
       <Directory "/usr/share/doc/">
               Options Indexes MultiViews FollowSymLinks
               AllowOverride None
               Require local
       </Directory>

       SSLEngine on
       SSLCertificateFile /etc/ssl/CA/certs/server-cert.pem
       SSLCertificateKeyFile /etc/ssl/CA/key/server-key.pem
</VirtualHost>
Bulbgraph.png Hinweis:

Die Zeilen SSLCertificateFile und SSLCertificateKeyFile können zusammengefasst werden, falls ein Zertifikat vorliegt, das auch den Key enthält (→ siehe auch hier). Es genügt dann die Zeile:

 SSLCertificateFile /etc/ssl/CA/certs/server.pem


Module aktivieren

a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include

Apache neustarten:

/etc/init.d/apache2 restart


Indizierungs Roboter ausschließen

Google und eine Zahl weiterer Suchmaschinenanbieter verwenden sog. Roboter (Robots), um das Internet nach aktualisierten und neuen Webseiten "abzugrasen". Wenn verhindert werden soll, dass die eigenen Seiten oder Teile davon in den Suchindizes landen, kann dies folgendermaßen verhindert werden:

vi /var/www/robots.txt

Folgende zwei Zeilen einfügen:

User-agent: *
Disallow: /

Auf diese Weise können sämtliche "guten" Roboter ausgeschlossen werden, die sich an die Vorgabe halten und zunächst versuchen das robots.txt File herunterzuladen und den Inhalt auszuwerten.

Daneben gibt es noch eine Vielzahl von "bösen" Bots, die sich nicht daran halten. Um solche Bots auszusperren siehe Fail2ban.


Zertifikat im Client

Das Root-CA-Zertifikat sollte in den verwendeten Internet Browsern (Firefox,Internet Explorer, ...) importiert werden. Dadurch kann der Client das vorgezeigte SSL-Zertifikat als vertrauenswürdig einstufen und es erscheint keinerlei Warnung, dass dem Zertifikat nicht vertraut wird. Details zum Import → siehe auch hier.