Mainos / Advertisement:

Apache2

Kohteesta Taisto
Loikkaa: valikkoon, hakuun
Tämä sivu sisältää muutoksia, joita ei ole merkitty käännettäväksi.

Muut kielet:
English • ‎suomi

Apache on avoimeen lähdekoodiin perustuva HTTP - palvelinohjelmisto (webbiserveri). Apachen voi myös asentaa Windowsille ja on integroituna Mac OSX - käyttöjärjestelmässä. Apache on ollut pitkään internetin suosituin webbipalvelinohjelmisto.

Tämä ohje on yleinen ohje Apache2 palvelinohjelmistolle. Kaikki on testattu Apache 2.2 versiossa ja Apache 2.4 muutokset löytyvät täältä.

Lisätietoa Apachesta: Apache (palvelinohjelma)

Asentaminen

Asennusohje on tehty Apache 2.2 versiolle Debian 7.8 käyttöjärjestelmään.

Debian / Ubuntu

Apache löytyy Debianista DVD 1 - levyltä.

Apache asennetaan komennolla:

 aptitude install apache2

Voit testata sivujasi menemällä selaimella osoitteeseen http://palvelimen_ip_osoite. Sivun tulisi näyttää seuraavanlaisena:

 It works!
 This is the default web page for this server.
 The web server software is running but no content has been added, yet.

Apachen oletusverkkosivuhakemisto sijaitsee:

 /var/www/

Apachen konfigurointihakemisto löytyy täältä:

 /etc/apache2

Oletusverkkosivun asetukset löytyvät täältä ja voit avata sen tekstieditoriin:

 nano /etc/apache2/sites-enabled/default

Apachen kanssa voi käyttää myös Php5 ja Mysql.

Apache 2.2. Ubuntu 16.04:lle

Ei suositeltavaa mutta jos on pakko :) Eli asennetaan Ubuntu 16.04:lle Apache 2.2 (x64).

cd /tmp/
wget http://security.ubuntu.com/ubuntu/pool/main/a/apache2/apache2_2.2.22-1ubuntu1.11_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/a/apache2/apache2-utils_2.2.22-1ubuntu1.11_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/a/apache2/apache2.2-bin_2.2.22-1ubuntu1.11_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/a/apache2/apache2.2-common_2.2.22-1ubuntu1.11_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/a/apache2/apache2-mpm-worker_2.2.22-1ubuntu1.11_amd64.deb

Asenna paketit

sudo dpkg -i apache2-utils_2.2.22-1ubuntu1.11_amd64.deb
sudo dpkg -i apache2.2-bin_2.2.22-1ubuntu1.11_amd64.deb
sudo dpkg -i apache2.2-common_2.2.22-1ubuntu1.11_amd64.deb
sudo dpkg -i apache2-mpm-worker_2.2.22-1ubuntu1.11_amd64.deb
sudo dpkg -i apache2_2.2.22-1ubuntu1.11_amd64.deb

Jos saat virheen että joitakin dependereitä puuttuu, käytä apt-get install -f komentoa asentaakseen ne. Varmista että asentaa oikeata versiota.

Lisäksi voit asentaa PH5:n.

Red Hat / CentOS / Fedora

Asenna Apache2 komennolla

 yum install httpd

Käynnistä Apache2

 service httpd start

Lisätietoa CentOS ohjeita: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-6

Konfigurointi

Apachen konfigurointihakemistosta

Debian / Ubuntu:

 cd /etc/apache2/

löytyy tällaisia tiedostoja ja hakemistoja:

 apache2.conf  envvars     magic            mods-enabled/  sites-available/
 conf.d/       httpd.conf  mods-available/  ports.conf     sites-enabled/

apache2.conf on pääkonfigurointitiedosto. Tähän tiedostoon voidaan tehdä kaikki apachen määritykset, vaikka olisi suositeltavaa käyttää erillisiä tiedostoja selkeyden vuoksi.

ports.conf Tänne määritetään portit ja virtual hostit vastaavat pyyntöihin.

conf.d Hakemistossa on erityisiä määrityksiä Apachen kokoonpanoon. Täällä on myös charcet tiedosto josta voi sallia UTF-8 merkistökoodauksen.

sites-available/ Hakemistossa on kaikki virtual hostien kokoonpanojen määritystiedostot.

sites-enabled/ Hakemistossa määritetään mitä virtual hosteja todellisuudessa käytetään.

mods-available/ Moduulien määritykset.

mods-enabled/ Moduulit jotka ovat käytössä.

Red Hat / CentOS / Fedora:

 /etc/httpd/

Apachen oma konfigurointitiedosto löytyy CentOS käyttöjärjestelmästä:

 /etc/httpd/conf/httpd.conf


apache2.conf

 nano /etc/apache2/apache2.conf

Parametrit tiedostossa:

Timeout Oletuksena määritettu 300s. Tämä kertoo kuinka kauan palvelin vastaa pyyntöön. Suositellaan pienentämään 60, sillä monet palvelimet eivät pysty vastaamaan 300s pyyntöihin.

KeepAlive Jos vaihtoehto on "On" mahdollistaa useiden pyyntöjen toteuttamisen. Jos "Off" niin kaikki pyynnöt käsitellään erikseen, joka voi kasvattaa palvelimen kuormaa.

MaxKeepAliveRequests Rajoitetaan pyyntöjen määrä samaanaikaisena. Pidä tämä mahdollisimman korkealla, palvelimen kuormituksen takia. Jos on määritetty "0", niin palvelin sallii rajoittamattoman pääsyn.

KeepAliveTimeout Pyyntöjen aikakatkaisu aika. Jos pyyntö kestää yli aikakatkaisu ajan, niin yhteys katkaistaan.

sites-available/ (Virtual Host)

Hakemistossa on oletuksena default ja nyt luodaan toinen virtuaalihosti. Alla on esimerkki virtuaalihostista ja tallenna se esimerkiksi nimellä intra.

<VirtualHost *:80>                            #*.80 = Vastaa kaikille IP-osoitteille portissa 80.
        ServerAdmin webmaster@localhost        #Palvelimen ylläpitäjän sähköpostiosoite
        ServerName example.com                 #Palvelimen nimi tai verkko-osoite (Voit käyttää IPv4- ja IPv6-osoitteita)
        ServerAlias www.example.com            #Alidomain, voi olla useita (Voit käyttää IPv4- ja IPv6-osoitteita)
        DocumentRoot /var/www                  #päähakemisto, jossa verkkosivut sijaitsevat
        <Directory />
                Options FollowSymLinks
                AllowOverride None             #Salli konfigurointien yliajamisen (.htaccess) juuri hakemistossa (ei suositella)
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None             #Salli konfigurointien yliajamisen (.htaccess)
                Order allow,deny               #Salli, estä muut
                allow from all                 #Salli kaikkien muodostamisen verkkosivuusi
        </Directory>
</VirtualHost>

Oletuksena virtuaali isäntä vastaa kaikkiin pyyntöihin portissa 80, oletus HTTP portti. Kun haluat luoda toisen virtuaali isännän, niin muokkaa tämä tiedostoa (fyysinen polku ja ServerName) ja tallenna toisella nimellä.

Tämän jälkeen laitat sivun käyttöön (Käytössä olevat sivut löytyvät /etc/apache2/sites-enabled/ hakemiston alta):

 a2ensite sivun_nimi

a2ensite [tiedoston nimi joka on /etc/apache2/sites-available] hakemistossa jonka haluat käyttöön

Esimerkiksi:

 a2ensite intra

Tämän jälkeen apachen täytyy laittaa lukemaan asetustiedostot uudelleen:

 service apache2 reload

Tämän jälkeen lisää tarvittaessa ports.conf (jos määritit muuhun porttiin kuin 80 (HTTP oletusportti)) tiedostoon:

 NameVirtualHost isäntänimi:portti

Lisätietoa:

Sivuston poistaminen käytöstä:

 a2dissite sivun_nimi

Sivun nimi on sama kuin /etc/apache2/sites-available/[sivusi_nimi]

 service apache2 reload

Virtuaali Hakemistot

Virtuaali Directory mahdollistaa Apachen webbihakemiston hakemisen eri sijannista kuin root hakemisto on

Alias /webbialihakemisto/ /polku/
# Verkkosivupolku (/webbihakemisto) ja fyysinen polku ("/polku")
 <Directory "/polku/">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride None
   Order allow,deny
   allow from all
</Directory>

Esimerkki:

Alias /wwwtesti /var/wwwtesti/
 <Directory "/var/wwwtesti/">
   Options Indexes FollowSymLinks MultiViews
   AllowOverride None
   Order allow,deny
   allow from all
</Directory>

conf.d/charset

Tässä tiedostossa voit määrittää Apachen oletusmerkistökoodaukseski UTF-8.

1. Avaa konfigurointitiedosto:

 nano /etc/apache2/conf.d/charset

2. Poista risuaita # merkki pois kohdasta:

 AddDefaultCharset UTF-8

3. Käynnistä Apache uudelleen

 service apache2 restart

Lisämoduulit

Lisäominaisuuksia ja lisäturvallisuutta Apachen käyttöön.

Lisämoduulien hakemisto on Apachessa:

 /etc/apache2/mods-available 

Ja tässä hakemistossa käytössä olevat moduulit

 /etc/apache2/mods-enabled

Määrittäminen .htaccess tai virtuaali-isäntään

 <IfModule mod_[moduulinnimi].c>
 ...
 # Määritä tähän kaikki konffit
 ..
 </IfModule>

mod_bw (mod_bandwidth)

mod_bw:llä (mod_bandwidth) voi rajoittaa Apachen käyttämää kaistaa, esimerkiksi ladatessa suuria tiedostoja.

Asennus

Asenna mod_bw pakettihallinnasta

 apt-get install libapache2-mod-bw

Ota mod-bw käyttöön komennolla

 a2enmod bw

Konfigurointi

Ota moduuli käyttöön

  BandwidthModule On

Pakota moduuli käyttöön kaikilla yhteyksillä

  ForceBandWidthModule On

Rajoita yhteyksiä kaikille 10Mt/s

  Bandwidth all 10000000

Poista rajoitus kokonaan IP:lle 192.168.215.5

 BandWidth 192.168.218.5 0

Salli enintään 10 yhteyttä samaanaikaan

  MaxConnection all 10

Rajoita kaikkien .avi tiedostopääteiden latausnopeutta 1000t/s - 5Mt/s

  LargeFileLimit .avi 1000 5000000

Esimerkki

  <Directory /var/www>
  Ota moduuli käyttöön
  BandwidthModule On
  ForceBandWidthModule On
  Bandwidth all 10000000
  BandWidth 192.168.218.5 0
  MaxConnection all 10
  LargeFileLimit .avi 1000 5000000
  </Directory>

mod_dir

Tämä ominaisuus päättää oletustiedosto jos annetaan esimerkiksi www.example.com. Yleensä tämä on index.html, index.php tai index.htm.

Ominaisuus on oletuksena käytössä ja sitä voi muuttaa

 /etc/apache2/mod-available/dir.conf

Sisältä on oletuksena seuraavanlainen:

 <IfModule mod_dir.c>

         DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

 </IfModule>

mod_evansive

Tämä Apachen lisäosa estää DDOS (palvelunestohyökkäykset) webbipalvelimeen. Suositeltavaa on asentaa Apacheen. Tämä rajoittaa verkkosivusi latauksia seuraavalla tavalla

  • Pyytämällä samalla sivulla enemmän kuin pari kertaa sekunnissa
  • Estää yli 50 samanaikaisia ​​pyyntöjä samalle laitteelle sekunnissa
  • Estää mitään pyyntöjä taas väliaikaisesti mustalla listalla (eli estolistalle)

Asentaminen

 apt-get install libapache2-mod-evasive

Käynnistä Apache uudelleen

 service apache2 restart

Luodaan kansio lokitiedostoja varten:

 mkdir -p /var/log/apache2/evasive

ja määritetään käyttöoikeudet

 chown -R www-data:root /var/log/apache2/evasive

Konfigurointi

Avataan konfigurointi tiedosto

 nano /etc/apache2/mods-available/mod-evasive.load

Lisätään jos ei ole tiedostoon:

 LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so

Avataan virtuaali host (esimerkissä default):

 nano /etc/apache2/sites-available/default

ja lisätään rivit jokaiseen virtual hostiin:

...
</Directory>
<IfModule  mod_evasive20.c>
 DOSHashTableSize 3097
 DOSPageCount 2
 DOSSiteCount 50
 DOSPageInterval 5
 DOSSiteInterval 1
 DOSBlockingPeriod 10
 DOSLogDir “/var/log/apache2/evasive”
 #DOSSystemCommand "sudo -u root /sbin/iptables -A INPUT -s %s -j DROP"
</IfModule>
...


DOSPageCount = Sivun pyyntöjen rajoitukset, jos ylittyy niin estolistalle

DOSSiteCount = Sivuston pyyntöjen kokonaismäärän ylitys

DOSPageInterval = Aikaväli sivun pyynnöille

DOSSiteInterval = Aikaväli sivuston pyynnöille

DOSBlockingPeriod = Estoaika

DOSLogDir = Loki

DOSSystemCommand = Lisäparametrejä (poistettu käytöstä, kehittyneimille)


Tarkista asetukset apache2.conf tiedostosta:

 nano /etc/apache2/apache2.conf 

Ja nämä rivit pitäisi olla tiedostossa

# Include module configuration:
Include mods-enabled/*.load
Include mods-enabled/*.conf

mod_http2

HTTP/2 Apache2:selle käyttöön. Tuettu Apache 2.4.18 jälkeen mutta testasimme tätä Apache 2.4.27 versiossa.

Asennus

Ubuntun jakelussa tätä ei ainakaan löytynyt mutta PPA:sta löytyy

sudo apt-get install software-properties-common python-software-properties
sudo add-apt-repository ppa:ondrej/apache2
sudo apt-get update
sudo apt-get install apache2
sudo a2enmod http2

Lisää seuraavan rivi Apache2 konfiguraatioon

Protocols h2 h2c http/1.1

Käynnistä apache2 uudelleen

HTTP/2 ei ole tuettu preforkissa

Kun käytösssi on Apache MPM prefork moduuli niin HTTP/2 ei voida ottaa käyttöön, eli vaihdetaan käyttöön PHP7.0-FPM Apachelle.

sudo apt install php7.0-fpm
sudo service apache2 stop
sudo a2enmod proxy_fcgi setenvif
sudo a2dismod php7.0
sudo a2enconf php7.0-fpm.conf
sudo a2dismod mpm_prefork 
sudo a2enmod mpm_event 
sudo service apache2 start

mod_proxy

Apachella on mahdollista lisämoduulien avulla tehdä reverse proxy. Tällä välityspalvelimella voi esimerkiksi välittää välityspalvelimella verkkosivuliikennettä muihin webpalvelimiin.

Asennus

Asenna vaaditut paketit

 aptitude install -y libapache2-mod-proxy-html libxml2-dev

Ota käyttöön vaaditut paketit

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_ajp
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect
a2enmod proxy_html

Konfiguroi Vhost

Esimerkki konfiguraatio virtuaalihostille. Muuta http://0.0.0.0:8080 vastaamaan oman palvelimesi osoitteita.

<VirtualHost *:*>
    ProxyPreserveHost On

    # Servers to proxy the connection, or;
    # List of application servers:
    # Usage:
    # ProxyPass / http://[IP Addr.]:[port]/
    # ProxyPassReverse / http://[IP Addr.]:[port]/
    # Example: 
    ProxyPass / http://0.0.0.0:8080/
    ProxyPassReverse / http://0.0.0.0:8080/

    ServerName localhost
</VirtualHost>

SSL vhost

Esimerkiksi https sivusta

Listen 443

NameVirtualHost *:443
<VirtualHost *:443>

    SSLEngine On

    # Set the path to SSL certificate
    # Usage: SSLCertificateFile /path/to/cert.pem
    SSLCertificateFile /etc/apache2/ssl/file.pem

    SSLProxyEngine On
    ProxyPreserveHost On

    # Servers to proxy the connection, or;
    # List of application servers:
    # Usage:
    # ProxyPass / http://[IP Addr.]:[port]/
    # ProxyPassReverse / http://[IP Addr.]:[port]/
    # Example: 
    ProxyPass / http://0.0.0.0:8080/
    ProxyPassReverse / http://0.0.0.0:8080/

    # Or, balance the load:
    # ProxyPass / balancer://balancer_cluster_name

</VirtualHost>

mod_expires

Tämä mahdollistaa välimuistiin tallennettujen elementtien viimeisen voimassaoloajan määrittämisen. Välimuistiin kannattaa määrittää kuvat, sillä tää toiminto sallii tallentamaan esimerkiksi kuvat selaimen välimuistiin enintään kyseisen päivän asti. Selaimen välimuistissa olevat kuvat säästävät kaistaa palvelimen ja käyttäjän välillä, joten sivun lataus nopeutuu, kun ei tarvitse kuvia hakeaa palvelimelta joka kerta uudelleen. Välimuistin kanssa voi tulla ongelmia jos sivuston tulisi päivittyä usein.

Asennus

Tämä ominaisuus on valmiina Apachen asennuspaketissa. Ota ominaisuus käyttöön komennolla

 a2enmod expires

Käynnistä Apache uudelleen

 service apache2 restart

Konfigurointi

Voit määrittää konfiguroinnin suoraan virtuaali isäntään ja .htacess tiedostoon.

Esimerkki:

## EXPIRES CACHING ##
  <IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 30 days"
  </IfModule>
## EXPIRES CACHING ##

Eli oletuksena 30 päivää, jolloin vaaditaan uudelleenlataus palvelimelta kaikille tiedostoille, jotka ladattu selaimen välimuistiin.


Lisää:

 ExpiresActive On
 ExpiresByType image/jpg "access plus 1 year"
 ExpiresByType image/jpeg "access plus 1 year"
 ExpiresByType image/gif "access plus 1 year"
 ExpiresByType image/png "access plus 1 year"
 ExpiresByType text/css "access plus 1 month"
 ExpiresByType application/pdf "access plus 1 month"
 ExpiresByType text/x-javascript "access plus 1 month"
 ExpiresByType application/x-shockwave-flash "access plus 1 month"
 ExpiresByType image/x-icon "access plus 1 year"
 ExpiresDefault "access plus 2 days"

Kuville 1 vuoden viimeinen voimassaoloaika, pdf-tiedostoille, javascript sekä flash on kuukausi. Ikoneille yksi vuosi ja oletus muille on kaksi päivää.

mod_rewrite

Uudellenohjaus moduuli, mahdollistaa verkkosivuihin uudelleenohjauksia.

Asennus

Tämä on asennettu valmiina Apacheen, sinun tulee ottaa toiminto käyttöön:

 a2enmod rewrite

Käynnistä Apache uudelleen

 service apache2 restart

Konfigurointi

Esimerkki: HTTP -> HTTPS

 RewriteEngine On
 RewriteCond %{HTTPS} off
 RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI}

Eli uudelleenohjataan samaan sijaintiin HTTPS kanssa, kun pyydetään.

Esimerkki: Uudelleenohjaus UserAgentin avulla

 RewriteCond  %{HTTP_USER_AGENT}  (iPhone|Blackberry|Android)
 RewriteRule  ^/$                 /mobile.html  [L]
 
 RewriteRule  ^/$                 /std.html  [L]

Eli Iphone, Blackberry ja Android laitteet uudelleenohjataan /mobile.html sivulle. Lisääthän tarvittavat UserAgent tiedot että tämä toimisi kaikilla haluamallasi selaimilla tai laitteilla.

Esimerkki: Jos tiedostoa ei ole (ERROR 404), uudelleenohjaa /index.php tiedostoon. Normaalisti näytetään ERROR 404 verkkosivu.

  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]

Sinun tulee määrittää DocumentRoot polku samaan sijainnilla kuin /index.php määritetty.

Esimerkki: domain.net, domain.com, www.domain.net uudelleenohjahtaan domain.local osoitteeseen.

 RewriteEngine On
 RewriteCond %{HTTP_HOST} =domain.net [OR]
 RewriteCond %{HTTP_HOST} =domain.com [OR]
 RewriteCond %{HTTP_HOST} =www.domain.net
 RewriteRule .* https://domain.local%{REQUEST_URI}

Esimerkkejä

Uudelleenohjaus domain.com -> www.domain.com

 RewriteEngine On
 RewriteBase /
 RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
 RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

Uudelleenohjaus www.domain.com -> domain.com

 RewriteEngine On
 RewriteBase /
 RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
 RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]

Uudelleenohjaus http -> https

 <IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</IfModule>

Uudelleenohjaus https -> http

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{HTTPS} on
   RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
</IfModule>

mod_security

Tällä estetään SQL injektiot ja CSR. Lisätietoa https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_security-with-apache-on-debian-ubuntu

Asennus

 apt-get install libapache2-modsecurity

Käynnistä Apache uudelleen

 service apache2 restart

Muuta oletuskonfigurointi tiedoston nimi

 /etc/modsecurity/modsecurity.conf{-recommended,} (tallenna uudelleen *.conf päätteeksi)

Lataa Apachen konfigurointi tiedosto uudelleen

 service apache2 reload

Löydät loki tiedoston Apachen loki hakemistosta /var/log/apache2/

 root@droplet:~# ls -l /var/log/apache2/modsec_audit.log
 -rw-r----- 1 root root 0 Oct 19 08:08 /var/log/apache2/modsec_audit.log

Konfigurointi

Avaa konfigurointi tiedosto

 nano /etc/modsecurity/modsecurity.conf

Etsi rivi:

 SecRuleEngine DetectionOnly

ja muuta se:

 SecRuleEngine On

Etsi rivi:

 SecResponseBodyAccess On

ja muuta se

 SecResponseBodyAccess Off

Näillä voit rajoittaa lähettettyjen tietojen määrää:

 SecRequestBodyLimit
 SecRequestBodyNoFilesLimit

mod_ssl

Tämä moduuli mahdollistaa HTTPS yhteyden palvelimeen.

Asennus

Tämä on asennettu apache2-common paketin mukana. Sinun tulee ottaa käyttöön

 a2enmod ssl

Käynnistä Apache uudelleen

 service apache2 restart

Konfigurointi

Esimerkki: SSL konffit

 SSLEngine on
 SSLCertificateFile /etc/ssl/ssl.crt
 SSLCertificateKeyFile /etc/ssl/ssl.key

Tallenna tilaamasi sertifikaatti hakemistoon ja määritä se virtuaali isäntään.

256 bittinen salaus

256bittiseen salaukseen on muokattava Apachen konffeihin:

 nano /etc/apache2/mod-available/ssl.conf

Ja muuta riviä:

 SSLCipherSuite AES256-SHA

Lisäkonfiguraatiota

Voidaan myös määrittää Virtuaalihost kohtaisesti ja htaccess


256bittiseen salaukseen on muokattava Apachen konffeihin:

 nano /etc/apache2/mod-available/ssl.conf
 SSLCipherSuite AES256-SHA

Poista SSL3 ja SSL2 käytöstä

 nano /etc/apache2/mod-available/ssl.conf
 SSLProtocol All -SSLv2 -SSLv3


Hyvä SSLChipperSuite:


 nano /etc/apache2/mod-available/ssl.conf
 SSLCipherSuite "ECDHE-RSA-AES128-GCM-SHA256  EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"


Ota käyttöön Strict Transport Security (HSTS) ominaisuus lisäämällä ottamalla käyttään moduuli headers

 a2enmod headers

ja lisäämällä konffeihin:

 Header always set Strict-Transport-Security "max-age=15768000; includeSubdomains; preload"

DHPARAM

Korvaa seuraava rivi /etc/apache2/mod-enabled/ssl.conf tiedostosta ja käynnistä uudelleen

 SSLCipherSuite "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA!RC4:EECDH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS"

mod_userdir

Tämä moduuli mahdollistaa jokaiselle tai osalle palvelimen käyttäjätilille omat verkkosivut.

Asennus

Tämä moduuli on valmiina asennettu Apachen mukana, sinun tulee laittaa se käyttöön

 a2enmod userdir

Käynnistä Apache uudelleen

 service apache2 restart

Konfigurointi

Avaa konfigurointi tiedosto /etc/apache2/mods-available/userdir.conf

 nano /etc/apache2/mods-available/userdir.conf

Jos haluat määrittää tiettyyn virtuaaliseen hostiin, kommentoi tiedosto ja konfiguroi konffit virtuaali hostin konffeihin.

Esimerkki: Sallitaan kaikille käyttäjille käyttää tätä toimintoa. Käyttäjän tulee luoda /home/ hakemistoon public_html niminen kansio.

 UserDir public_html
 UserDir enabled

Esimerkki: Sallitaan kaikille käyttäjätileille käyttää tätä toimintoa, paitsi root käyttäjälle. Käyttäjän tulee luoda /home/ hakemistoon public_html niminen kansio.

 UserDir public_html
 UserDir disabled root
 UserDir enabled

Esimerkki: Sallitaan vain käyttäjän user1 ja user2 käyttää tätä toimintoa. Käyttäjän tulee luoda /home/ hakemistoon public_html niminen kansio.


 UserDir public_html
 UserDir disabled
 UserDir enabled user1 user2

Verkkopolku on käyttäjien kotisivuille http://ip-osoite/~username.

Esimerkki konfigurointi:

  UserDir public_html
  UserDir disabled root
    <Directory /home/*/public_html>
        AllowOverride AuthConfig
        Options FollowSymLinks +Indexes
    </Directory>

Lisää seuraava rivi jos haluat käyttää osoitetta http://ip-osoite/user/username

      AliasMatch ^/users/([a-zA-Z0-9]+)/?(.*) /home/$1/public_html/$2

Eli kaikille käyttäjille sallittu, paitsi root käyttäjälle. Lisäksi sallitaan /home/*/public_html hakemistoon (verkkosivuhakemistoon) AuthConfig eli .htaccess tiedostoon luominen kirjautiminen näkymä. AliasMatch mahdollistaa uudelleenohjata kotisivuhakemisto esimerkiksi tässä http://ip-osoite/users/username

PHP5 userdir

Salli käyttäjien sivuilla PHP5 käyttö.

Muokkaa tiedostoa

 /etc/apache2/mod-enabled/php5.conf

Lisää risuaita

#      php_admin_value engine On
Luo uudelle käyttäjälle public_html kansio

Luo kansio /etc/skel hakemiston alle. Täälä olevat tiedostot ja kansiot automaattisesti kopioidaan uuden käyttäjän kotikansioon.

 mkdir /etc/skel/public_html

.htaccess

.htaccess tiedosto mahdollistaa konfigurointi tiedostojen tallentamisen suoraan verkkosivuhakemistoon, esimerkiksi /var/www/.htaccess.

Sallitaan .htaccess tiedoston ylikirjoittamaan entiset konfiguroinnit:


 /etc/apache2/sites-available/default

seuraavanlaiseksi:

        <Directory /var/www/>
               Options Indexes FollowSymLinks MultiViews
               AllowOverride All
               Order allow,deny
               allow from all
       </Directory>

Käynnistä Apache uudelleen:

 service apache2 reload

Luodaan .htaccess tiedosto /var/www/.htaccess (HUOM! Varmista että se on ".htaccess" ei .htacess.txt ym.)

 nano /var/www/.htaccess

Salasanasuojaus verkkosivulle

!! htpasswd httpd-2.4.4 on rikki. Odota päivitystä.  !!


Kirjoita alla olevat rivit .htaccess tiedotoon:

 AuthUserFile /var/.htpasswd
 AuthName "Anna kirjautumisen tiedot"
 AuthType Basic
 require user [käyttäjänimet]

Tallenna tiedosto ja tämän jälkeen luodaan esimerkiksi /var/.htpasswd tiedosto jossa on käyttäjänimet ja salasanat, jolla oikeudet kirjautua sivulle. Suositellaan erityisesti salasanojen kryptaamista. Huomaa, että polut pitää olla palvelimen fyysisiä polkuja, ei verkkopolkuja!

 käyttäjänimi:salasana

Sinun tulee käyttää Debianissa htpasswd työkalua. Internetissä on myös htpasswd työkaluja saatavilla.

Esimerkki:

htpasswd -B /polku/.htpasswd Käyttäjätunnus Salasana

Tallenna tiedosto ja kokeile kirjautua sivullesi.


htpasswd bugin väliaikaisen korjaus

Bugi ei anna kuin Debianissa generoituja salasanojen kirjautumisen järjestelmään.

Voit generoida salasanan tällä komennolla:

 htpasswd -nb user password

Kopioi ja tallenna htpasswd tiedostoon, näin pitäisi toimia

Virhesivut

Kirjoita alla olevat .htaccess tiedostoon. Muuta polut vastaamaan palvelimessasi olevaa polkua.

 ErrorDocument 400 /errors/badrequest.html
 ErrorDocument 401 /errors/authreqd.html
 ErrorDocument 403 /errors/forbid.html
 ErrorDocument 404 /errors/notfound.html
 ErrorDocument 500 /errors/serverr.html

Määritä polut oikein vastaamaan palvelimesi polkuja missä virhesivusi sijaitsevat

Apachen suojaaminen

Webbipalvelimen suojaaminne ulkopuolisten hyökkäyksiltä kannattaa tehdä. mod_evansive ja mod_security auttavat siinä. Olen heiman kuitenkin koonnut lisää konffeja jolla voi suojata Apachea paremmi.


Piilota Apachen versio ja muut tiedot

 /etc/apache2/conf.d/security
 ServerSignature Off
 ServerTokens Prod

Poista kansioden selaus käytöstä

.htaccess

 Options -Indexes

Määritä Timeout

 /etc/apache2/apache2.conf
 Timeout 45

Rajoita pyyntöjä

 /etc/apache2/apache2.conf
 LimitRequestBody 1048576

Apache2 + PAM autentikointi

Asennetaan lisämoduuli apacheen

aptitude install libapache2-mod-auth-pam

Avataan Apachen Virtuaalihost konfigurointi tiedosto

nano /etc/apache2/sites-enabled/000-default
<Directory /var/www/salaista/> #Polku palvelimella
        AuthType Basic
        AuthName "ebin" #Viesti kirjautumisessa
        AuthPAM_Enabled On
        AuthBasicAuthoritative Off
        AuthUserFile /dev/null
        #AuthBasicAuthoritative Off
        #AllowOverride AuthConfig
        AuthGroupFile /etc/group
        Require group Role_Adminit #Salli tietylle käyttäjäryhmälle oikeudet
</Directory>

Näin Unixin tunnuksillakin voi kirjautua htaccess sivulle (ilman että htpasswd komentoa on ajettu).

Apache ja Active Directory todennus

Testattu Apache 2.2 Debianilla.

Ota käyttöön moduulit authnz_ldap ja ldap

 a2enmod authnz_ldap
 a2enmod ldap

Kopioi alla oleva haluamasi virtualihostiin.

 <Directory "/var/www/login">
        AuthType Basic
        AuthName "Active Directory kirjautuminen"

        AuthBasicProvider ldap
        AuthzLDAPAuthoritative off

        AuthLDAPURL "ldap://dc.domain.com:389/dc=domain,dc=com?sAMAccountName?sub?(objectClass=*)"

        AuthLDAPBindDN "ldap@domain.com"
        AuthLDAPBindPassword salaisuus

        Require valid-user
        #Require ldap-group CN=Administrators,CN=Users,DC=example,DC=com
</Directory>
  • AuthLDAPURL on osoite jossa ldap palvelin (toimialueenohjauskone) on. Muuta konfiguraatiota vastaamaan palvelimesi konfiguraatiota. Kokeile myös porttia 3268.
  • AuthLDAPBindDN on käyttäjätunnus jolla on pääsy lukemaan Active Directoryä
  • AuthLDAPBindPassword on käyttäjätunnuksen salasana

Jos ei toimi lisää tämä konfiguraatioon ja katso Apachen error log tiedosto /var/log/apache/error.log:

 LogLevel debug

Loki

Apachen lokiin virhe ja kävijä lokit

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined ==

Apachen postaminen

Pysäytä Apache2

 service apache2 stop

Poistetaan Apachen2 paketit:

  apt-get purge apache2 apache2-utils apache2.2-bin apache2-common

Etsitään Apachen hakemistoja ja poistetaan ne yksitellen:

 whereis apache2

Tässä tulostuu esimerkiksi:

 apache2: /etc/apache2

Poistetaan hakemisto:

 sudo rm -rf /etc/apache2

Ongelmanratkaisu

Jos Apache ei käynnisty ja tulee jonkinlainen virhe, varmista että olet kirjoittanut konfigurointi tiedostoihin oikein jä tämän jälkeen kannattaa avata palvelimen loki:

 /var/log/apache2/error.log

sinne tallentuu kaikki virheilmoitukset. Kopioi virheilmoitus ja Googleta virheilmoitus. Googlesta saat ongelmaan ratkaisun.

Konfiguroinnin tarkistus

 apachectl configtest

TAI

 apache2ctl configtest

Lähteet

http://fi.wikipedia.org/wiki/Apache_(palvelinohjelma)

https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-debian-7

http://wiki.syotec.fi/index.php?title=JAH380_-_Linux_Server_-_Toimialue

http://www.rudedog.org/pipermail/auth_ldap/2003-December/001494.html

http://www.edugeek.net/forums/nix/7453-apache-winbind-authentication-2.html

http://www.held-im-ruhestand.de/software/apache-ldap-active-directory-authentication

http://enarion.net/web/htaccess/redirect-www-and-no-www/

https://www.digicert.com/ssl-certificate-installation-apache.htm

https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-6

http://httpd.apache.org/docs/2.2/mod/mod_ssl.html

http://stackoverflow.com/questions/24144552/how-to-set-hsts-header-from-htaccess-only-on-https

http://xmodulo.com/how-to-uninstall-and-remove-apache2-on-ubuntu-debian.html

http://codeconnoisseur.org/ramblings/apache-22-and-active-directory-and-group-restrictions

Mainos / Advertisement: