Mainos / Advertisement:

Ero sivun ”Apache2” versioiden välillä

Kohteesta Taisto
Siirry navigaatioon Siirry hakuun
 
(177 välissä olevaa versiota 3 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
Apache on avoimen lähdekoodin perustuva HTTP - palvelinohjelmisto (webbiserveri). Tämän voi myös asentaa Windowssille ja on integroituna Mac OSX - käyttöjärjestelmään. Tämä on ollut pitkään internetin suosituin webbipalvelin ohjelmisto. Tämä palvelin ja [http://www.datatekniikka.fi  datatekniikka.fi] sivustot käyttää myöskin Apachea.
+
<languages/>
 +
<translate>
 +
<!--T:1-->
 +
Apache on avoimeen lähdekoodiin perustuva [http://fi.wikipedia.org/wiki/WWW-palvelin 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.
  
Lisäksi tämän rinnalle suositellaan asentamaan [[Php5]] ja [[Mysql]] - tietokanta.
+
<!--T:365-->
 +
Tämä ohje on yleinen ohje Apache2 palvelinohjelmistolle. Kaikki on testattu Apache 2.2 versiossa ja Apache 2.4 muutokset löytyvät [[Apache2.4|täältä]].
  
== Asentaminen ==
+
<!--T:2-->
 +
Lisätietoa Apachesta: [http://fi.wikipedia.org/wiki/Apache_(palvelinohjelma) Apache (palvelinohjelma)]
  
Apachen asennetaan komennolla:
+
== Asentaminen == <!--T:3-->
  
  aptitude install apache2
+
<!--T:366-->
 +
Asennusohje on tehty Apache 2.2 versiolle Debian 7.8 käyttöjärjestelmään.
  
Voit testatata sivujasi menemällä selailemma http://palvelimen_ip_osoite. Sivun tulisi näyttää seuraavanlaisena:
+
=== Debian / Ubuntu === <!--T:4-->
  
   It works!
+
<!--T:5-->
 +
''Apache löytyy Debianista DVD 1 - levyltä.''
 +
 
 +
<!--T:6-->
 +
Apache asennetaan komennolla:
 +
 
 +
   <!--T:7-->
 +
[[aptitude]] install apache2
 +
 
 +
<!--T:8-->
 +
Voit testata sivujasi menemällä selaimella osoitteeseen http://palvelimen_ip_osoite. Sivun tulisi näyttää seuraavanlaisena:
 +
 
 +
  <!--T:9-->
 +
It works!
 
   This is the default web page for this server.
 
   This is the default web page for this server.
 
   The web server software is running but no content has been added, yet.
 
   The web server software is running but no content has been added, yet.
  
 +
<!--T:10-->
 
Apachen oletusverkkosivuhakemisto sijaitsee:
 
Apachen oletusverkkosivuhakemisto sijaitsee:
  
   /var/www/
+
   <!--T:11-->
 +
/var/www/
  
Apachen konfigurointi tiedostot löytyvät täältä:
+
<!--T:12-->
 +
Apachen konfigurointihakemisto löytyy täältä:
  
   /etc/apache2
+
   <!--T:13-->
 +
/etc/apache2
  
Oletusverkkosivun asetukset löytyvät täältä:
+
<!--T:14-->
 +
Oletusverkkosivun asetukset löytyvät täältä ja voit avata sen tekstieditoriin:
  
   nano /etc/apache2/sites-enabled/000-default
+
   <!--T:15-->
 +
nano /etc/apache2/sites-enabled/default
  
 +
<!--T:16-->
 
Apachen kanssa voi käyttää myös [[Php5]] ja [[Mysql]].
 
Apachen kanssa voi käyttää myös [[Php5]] ja [[Mysql]].
  
== Konfigurointi ==
+
==== Apache 2.2. Ubuntu 16.04:lle ====
 +
 
 +
Ei suositeltavaa mutta jos on pakko :) Eli asennetaan Ubuntu 16.04:lle Apache 2.2 (x64).
 +
 
 +
<pre>
 +
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
 +
</pre>
 +
 
 +
Asenna paketit
 +
 
 +
<pre>
 +
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
 +
</pre>
 +
 
 +
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 [[Php5#PHP5_asennus_Ubuntu_16.04:lle|PH5:n]].
  
Apachen konfigurointi hakemistosta
+
=== Red Hat / CentOS / Fedora === <!--T:17-->
  
  cd /etc/apache2/
+
<!--T:18-->
 +
Asenna Apache2 komennolla
  
löytyy tälläisiä tiedostoja ja hakemistoja:
+
  <!--T:19-->
 +
yum install httpd
  
   apache2.conf  envvars    magic            mods-enabled/  sites-available/
+
<!--T:20-->
 +
Käynnistä Apache2
 +
 
 +
   <!--T:21-->
 +
service httpd start
 +
 
 +
<!--T:22-->
 +
Lisätietoa CentOS ohjeita: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-6
 +
 
 +
== Konfigurointi == <!--T:23-->
 +
 
 +
<!--T:24-->
 +
Apachen konfigurointihakemistosta
 +
 
 +
<!--T:25-->
 +
Debian / Ubuntu:
 +
 
 +
  <!--T:26-->
 +
cd /etc/apache2/
 +
 
 +
<!--T:29-->
 +
löytyy tällaisia tiedostoja ja hakemistoja:
 +
 
 +
  <!--T:30-->
 +
apache2.conf  envvars    magic            mods-enabled/  sites-available/
 
   conf.d/      httpd.conf  mods-available/  ports.conf    sites-enabled/
 
   conf.d/      httpd.conf  mods-available/  ports.conf    sites-enabled/
  
'''apache2.conf''' on pääkonfigurointi tiedosto. Tähän tiedostoon voidaan tehdä kaikki apachen määritykset, vaikka suositeltavaa käyttää erillisiä tiedotoja selkeyden vuoksi.
+
<!--T:31-->
 +
'''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 virtuaali isännät vastaavat pyyntöihin. Tarkista jos määrität SSL apacheen.
+
<!--T:32-->
 +
'''ports.conf''' Tänne määritetään portit ja virtual hostit vastaavat pyyntöihin.
  
 +
<!--T:33-->
 
'''conf.d''' Hakemistossa on erityisiä määrityksiä Apachen kokoonpanoon. Täällä on myös charcet tiedosto josta voi sallia UTF-8 merkistökoodauksen.
 
'''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 virtuaali isäntä kokoonpanojen määritys tiedostot.
+
<!--T:34-->
 +
'''sites-available/''' Hakemistossa on kaikki virtual hostien kokoonpanojen määritystiedostot.
  
'''sites-enabled/''' Hakemistossa määritetään mitä todellisuudessa virtuaali isäntiä käytetään
+
<!--T:35-->
 +
'''sites-enabled/''' Hakemistossa määritetään mitä virtual hosteja todellisuudessa käytetään.
  
 +
<!--T:36-->
 
'''mods-available/''' Moduulien määritykset.
 
'''mods-available/''' Moduulien määritykset.
  
'''mods-enabled/''' Moduulit jotka käytössä
+
<!--T:37-->
 +
'''mods-enabled/''' Moduulit jotka ovat käytössä.
  
 +
<!--T:27-->
 +
Red Hat / CentOS / Fedora:
  
=== apache2.conf ===
+
  <!--T:28-->
 +
/etc/httpd/
  
 +
<!--T:367-->
 +
Apachen oma konfigurointitiedosto löytyy CentOS käyttöjärjestelmästä:
  
   nano /etc/apache2/apache2.conf
+
   <!--T:368-->
 +
/etc/httpd/conf/httpd.conf
  
Parametrit tiedotossa:
 
  
 +
=== apache2.conf === <!--T:38-->
 +
 +
 +
  <!--T:39-->
 +
nano /etc/apache2/apache2.conf
 +
 +
<!--T:40-->
 +
Parametrit tiedostossa:
 +
 +
<!--T:41-->
 
'''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.
 
'''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.
  
 +
<!--T:42-->
 
'''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.  
 
'''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.  
  
 +
<!--T:43-->
 
'''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.
 
'''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.
  
 +
<!--T:44-->
 
'''KeepAliveTimeout''' Pyyntöjen aikakatkaisu aika. Jos pyyntö kestää yli aikakatkaisu ajan, niin yhteys katkaistaan.
 
'''KeepAliveTimeout''' Pyyntöjen aikakatkaisu aika. Jos pyyntö kestää yli aikakatkaisu ajan, niin yhteys katkaistaan.
  
=== sites-available/  (Virtual Host)===
+
=== sites-available/  (Virtual Host)=== <!--T:45-->
  
Oletuksena tässä hakemistossa on tiedosto '''default''', jonka sisältö näyttää tältä:
+
<!--T:46-->
 +
Hakemistossa on oletuksena ''default'' ja nyt luodaan toinen virtuaalihosti. Alla on esimerkki virtuaalihostista ja tallenna se esimerkiksi nimellä ''intra''.
  
<VirtualHost *:80>
+
<!--T:47-->
         ServerAdmin webmaster@localhost
+
<syntaxhighlight lang="apache">
         ServerName example.com
+
<VirtualHost *:80>                           #*.80 = Vastaa kaikille IP-osoitteille portissa 80.
         DocumentRoot /var/www                 //päähakemisto, jossa verkkosivut sijaitsevat
+
         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 />
 
         <Directory />
 
                 Options FollowSymLinks
 
                 Options FollowSymLinks
                 AllowOverride None           //Salli konfigurointien yliajamisen (.htaccess)
+
                 AllowOverride None             #Salli konfigurointien yliajamisen (.htaccess) juuri hakemistossa (ei suositella)
 
         </Directory>
 
         </Directory>
 
         <Directory /var/www/>
 
         <Directory /var/www/>
 
                 Options Indexes FollowSymLinks MultiViews
 
                 Options Indexes FollowSymLinks MultiViews
                 AllowOverride None
+
                 AllowOverride None             #Salli konfigurointien yliajamisen (.htaccess)
                 Order allow,deny
+
                 Order allow,deny               #Salli, estä muut
                 allow from all
+
                 allow from all                 #Salli kaikkien muodostamisen verkkosivuusi
 
         </Directory>
 
         </Directory>
. . .
+
</VirtualHost>
 +
</syntaxhighlight>
  
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 ja tallenna toisella nimellä.
+
<!--T:48-->
 +
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:49-->
 
Tämän jälkeen laitat sivun käyttöön (Käytössä olevat sivut löytyvät /etc/apache2/sites-enabled/ hakemiston alta):
 
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
+
   <!--T:50-->
 +
a2ensite sivun_nimi
 +
 
 +
<!--T:51-->
 +
a2ensite [tiedoston nimi joka on /etc/apache2/sites-available] hakemistossa jonka haluat käyttöön
  
Esimerkiksi
+
<!--T:52-->
 +
Esimerkiksi:
  
   a2ensite intra
+
   <!--T:53-->
 +
a2ensite intra
  
 +
<!--T:54-->
 
Tämän jälkeen apachen täytyy laittaa lukemaan asetustiedostot uudelleen:
 
Tämän jälkeen apachen täytyy laittaa lukemaan asetustiedostot uudelleen:
  
   service apache2 reload
+
   <!--T:55-->
 +
service apache2 reload
  
Tämän jälkeen lisää tarvittaessa ports.conf tiedostoon:
+
<!--T:56-->
 +
Tämän jälkeen lisää tarvittaessa ports.conf (jos määritit muuhun porttiin kuin 80 (HTTP oletusportti)) tiedostoon:
  
   NameVirtualHost isäntänimi:portti
+
   <!--T:57-->
 +
NameVirtualHost isäntänimi:portti
  
==== Lisätietoa: ====
+
==== Lisätietoa: ==== <!--T:58-->
  
 +
<!--T:59-->
 
Sivuston poistaminen käytöstä:
 
Sivuston poistaminen käytöstä:
  
   a2dissite sivun_nimi
+
   <!--T:60-->
 +
a2dissite sivun_nimi
 +
 
 +
<!--T:61-->
 +
Sivun nimi on sama kuin /etc/apache2/sites-available/[sivusi_nimi]
  
   service apache2 reload
+
   <!--T:62-->
 +
service apache2 reload
  
=== Virtuaali Directory ===
+
[[Luokka:Debian|Apache2]]
 +
[[Luokka:Linux|Apache2]]
 +
[[Luokka:Ubuntu|Apache2]]
 +
[[Luokka:Webbipalvelimet|Apache2]]
 +
[[Luokka:Webserver|Apache2]]
  
 +
=== Virtuaali Hakemistot === <!--T:63-->
 +
 +
<!--T:64-->
 
Virtuaali Directory mahdollistaa Apachen webbihakemiston hakemisen eri sijannista kuin root hakemisto on
 
Virtuaali Directory mahdollistaa Apachen webbihakemiston hakemisen eri sijannista kuin root hakemisto on
  
Alias /webbialihakemisto/ "/polku/"
+
<!--T:65-->
  <Directory "/polku/">
+
<syntaxhighlight lang="apache">
    Options Indexes FollowSymLinks MultiViews
+
Alias /webbialihakemisto/ /polku/
    AllowOverride None
+
# Verkkosivupolku (/webbihakemisto) ja fyysinen polku ("/polku")
    Order allow,deny
+
<Directory "/polku/">
    allow from all
+
  Options Indexes FollowSymLinks MultiViews
</Directory>
+
  AllowOverride None
 +
  Order allow,deny
 +
  allow from all
 +
</Directory>
 +
</syntaxhighlight>
  
 +
<!--T:66-->
 
Esimerkki:  
 
Esimerkki:  
  
 +
<!--T:67-->
 +
<syntaxhighlight lang="apache">
 +
Alias /wwwtesti /var/wwwtesti/
 +
<Directory "/var/wwwtesti/">
 +
  Options Indexes FollowSymLinks MultiViews
 +
  AllowOverride None
 +
  Order allow,deny
 +
  allow from all
 +
</Directory>
 +
</syntaxhighlight>
  
  Alias /wwwtesti "/var/wwwtesti/"
+
[[Luokka:Debian|Apache2]]
  <Directory "/var/wwwtesti/">
+
[[Luokka:Linux|Apache2]]
    Options Indexes FollowSymLinks MultiViews
+
[[Luokka:Ubuntu|Apache2]]
    AllowOverride None
+
[[Luokka:Webbipalvelimet|Apache2]]
    Order allow,deny
+
[[Luokka:Webserver|Apache2]]
    allow from all
 
  </Directory>
 
 
 
=== Käyttäjien omat verkkosivut ===
 
 
 
Lisää tämä Virtuaali isännälle, ja luo kotikansion alle public_html kansio. Kotikansion verkko-osoite on palvelimenosoite/~käyttäjätunnus.
 
 
 
        <IfModule mod_userdir.c>
 
Kansion nimi josta tulee verkkohakemisto
 
                UserDir public_html
 
Ei käytettävissä root käyttäjällä
 
                UserDir disabled root
 
Hakemiston lisäasetukset (valinnainen)
 
                        <Directory /home/*/public_html>
 
                        AllowOverride AuthConfig
 
                        Options FollowSymLinks
 
                        Options +Indexes
 
                        </Directory>
 
Mahdollistaa aliaksena palvelinnimi/käyttäjätunnus yhdistämisen
 
        AliasMatch ^/([a-zA-Z0-9]+)/?(.*) /home/$1/public_html/$2
 
        </IfModule>
 
  
=== conf.d/charset ===
+
=== conf.d/charset === <!--T:68-->
  
 +
<!--T:69-->
 
Tässä tiedostossa voit määrittää Apachen oletusmerkistökoodaukseski UTF-8.
 
Tässä tiedostossa voit määrittää Apachen oletusmerkistökoodaukseski UTF-8.
  
 +
<!--T:70-->
 
1. Avaa konfigurointitiedosto:
 
1. Avaa konfigurointitiedosto:
 
    
 
    
 
   nano /etc/apache2/conf.d/charset
 
   nano /etc/apache2/conf.d/charset
  
 +
<!--T:71-->
 
2. Poista risuaita # merkki pois kohdasta:
 
2. Poista risuaita # merkki pois kohdasta:
  
   AddDefaultCharset UTF-8
+
   <!--T:72-->
 +
AddDefaultCharset UTF-8
  
 +
<!--T:73-->
 
3. Käynnistä Apache uudelleen
 
3. Käynnistä Apache uudelleen
  
   service apache2 restart
+
   <!--T:74-->
 +
service apache2 restart
  
== Lisämoduulit ==
+
== Lisämoduulit == <!--T:75-->
  
 +
<!--T:76-->
 
Lisäominaisuuksia ja lisäturvallisuutta Apachen käyttöön.  
 
Lisäominaisuuksia ja lisäturvallisuutta Apachen käyttöön.  
  
=== mod_evansive ===
+
<!--T:77-->
 +
Lisämoduulien hakemisto on Apachessa:
 +
 
 +
  <!--T:78-->
 +
/etc/apache2/mods-available
 +
 
 +
<!--T:79-->
 +
Ja tässä hakemistossa käytössä olevat moduulit
 +
 
 +
  <!--T:80-->
 +
/etc/apache2/mods-enabled
 +
 
 +
<!--T:81-->
 +
Määrittäminen .htaccess tai virtuaali-isäntään
 +
 
 +
  <!--T:82-->
 +
<IfModule mod_[moduulinnimi].c>
 +
  ...
 +
  # Määritä tähän kaikki konffit
 +
  ..
 +
  </IfModule>
 +
 
 +
=== mod_bw (mod_bandwidth) === <!--T:369-->
 +
 
 +
<!--T:370-->
 +
mod_bw:llä (mod_bandwidth) voi rajoittaa Apachen käyttämää kaistaa, esimerkiksi ladatessa suuria tiedostoja.
 +
 
 +
==== Asennus ==== <!--T:371-->
 +
 
 +
<!--T:372-->
 +
Asenna mod_bw pakettihallinnasta
 +
 
 +
  <!--T:373-->
 +
apt-get install libapache2-mod-bw
 +
 
 +
<!--T:374-->
 +
Ota mod-bw käyttöön komennolla
 +
 
 +
  <!--T:375-->
 +
a2enmod bw
 +
 
 +
==== Konfigurointi ==== <!--T:376-->
  
 +
<!--T:377-->
 +
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
 +
 +
<!--T:378-->
 +
Esimerkki
 +
 +
  <!--T:379-->
 +
<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:83-->
 +
 +
<!--T:84-->
 +
Tämä ominaisuus päättää oletustiedosto jos annetaan esimerkiksi www.example.com. Yleensä tämä on index.html, index.php tai index.htm.
 +
 +
<!--T:85-->
 +
Ominaisuus on oletuksena käytössä ja sitä voi muuttaa
 +
 +
  <!--T:86-->
 +
/etc/apache2/mod-available/dir.conf
 +
 +
<!--T:87-->
 +
Sisältä on oletuksena seuraavanlainen:
 +
 +
  <!--T:88-->
 +
<IfModule mod_dir.c>
 +
 +
          DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
 +
 +
  </IfModule>
 +
 +
=== mod_evansive === <!--T:89-->
 +
 +
<!--T:90-->
 
Tämä Apachen lisäosa estää DDOS (palvelunestohyökkäykset) webbipalvelimeen. Suositeltavaa on asentaa Apacheen. Tämä rajoittaa verkkosivusi latauksia seuraavalla tavalla
 
Tämä Apachen lisäosa estää DDOS (palvelunestohyökkäykset) webbipalvelimeen. Suositeltavaa on asentaa Apacheen. Tämä rajoittaa verkkosivusi latauksia seuraavalla tavalla
  
 +
<!--T:91-->
 
* Pyytämällä samalla sivulla enemmän kuin pari kertaa sekunnissa
 
* Pyytämällä samalla sivulla enemmän kuin pari kertaa sekunnissa
 
* Estää yli 50 samanaikaisia ​​pyyntöjä samalle laitteelle sekunnissa
 
* Estää yli 50 samanaikaisia ​​pyyntöjä samalle laitteelle sekunnissa
 
* Estää mitään pyyntöjä taas väliaikaisesti mustalla listalla (eli estolistalle)
 
* Estää mitään pyyntöjä taas väliaikaisesti mustalla listalla (eli estolistalle)
  
==== Asentaminen ====
+
==== Asentaminen ==== <!--T:92-->
  
   apt-get install libapache2-mod-evasive
+
   <!--T:93-->
 +
apt-get install libapache2-mod-evasive
  
 +
<!--T:94-->
 +
Käynnistä Apache uudelleen
 +
 +
  <!--T:95-->
 +
service apache2 restart
 +
 +
<!--T:96-->
 
Luodaan kansio lokitiedostoja varten:
 
Luodaan kansio lokitiedostoja varten:
  
   mkdir -p /var/log/apache2/evasive
+
   <!--T:97-->
 +
mkdir -p /var/log/apache2/evasive
  
 +
<!--T:98-->
 
ja määritetään käyttöoikeudet
 
ja määritetään käyttöoikeudet
  
   chown -R www-data:root /var/log/apache2/evasive
+
   <!--T:99-->
 +
chown -R www-data:root /var/log/apache2/evasive
  
==== Konfigurointi ====
+
==== Konfigurointi ==== <!--T:100-->
  
 +
<!--T:101-->
 
Avataan konfigurointi tiedosto
 
Avataan konfigurointi tiedosto
  
   nano /etc/apache2/mods-available/mod-evasive.load
+
   <!--T:102-->
 +
nano /etc/apache2/mods-available/mod-evasive.load
  
 +
<!--T:103-->
 
Lisätään jos ei ole tiedostoon:
 
Lisätään jos ei ole tiedostoon:
  
   LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so
+
   <!--T:104-->
 +
LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so
  
 +
<!--T:105-->
 
Avataan virtuaali host (esimerkissä default):
 
Avataan virtuaali host (esimerkissä default):
  
   nano /etc/apache2/sites-available/default
+
   <!--T:106-->
 +
nano /etc/apache2/sites-available/default
  
 +
<!--T:107-->
 
ja lisätään rivit jokaiseen virtual hostiin:
 
ja lisätään rivit jokaiseen virtual hostiin:
  
  ...
+
  <!--T:108-->
 +
...
 
  </Directory>
 
  </Directory>
 
  <IfModule  mod_evasive20.c>
 
  <IfModule  mod_evasive20.c>
Rivi 229: Rivi 475:
  
  
 +
<!--T:109-->
 
'''DOSPageCount''' = Sivun pyyntöjen rajoitukset, jos ylittyy niin estolistalle
 
'''DOSPageCount''' = Sivun pyyntöjen rajoitukset, jos ylittyy niin estolistalle
  
 +
<!--T:110-->
 
'''DOSSiteCount''' = Sivuston pyyntöjen kokonaismäärän ylitys
 
'''DOSSiteCount''' = Sivuston pyyntöjen kokonaismäärän ylitys
  
 +
<!--T:111-->
 
'''DOSPageInterval''' = Aikaväli sivun pyynnöille
 
'''DOSPageInterval''' = Aikaväli sivun pyynnöille
  
 +
<!--T:112-->
 
'''DOSSiteInterval''' = Aikaväli sivuston pyynnöille
 
'''DOSSiteInterval''' = Aikaväli sivuston pyynnöille
  
 +
<!--T:113-->
 
'''DOSBlockingPeriod''' = Estoaika
 
'''DOSBlockingPeriod''' = Estoaika
  
 +
<!--T:114-->
 
'''DOSLogDir''' = Loki
 
'''DOSLogDir''' = Loki
  
 +
<!--T:115-->
 
'''DOSSystemCommand''' = Lisäparametrejä (poistettu käytöstä, kehittyneimille)
 
'''DOSSystemCommand''' = Lisäparametrejä (poistettu käytöstä, kehittyneimille)
  
  
 +
<!--T:116-->
 
Tarkista asetukset apache2.conf tiedostosta:
 
Tarkista asetukset apache2.conf tiedostosta:
  
   nano /etc/apache2/apache2.conf  
+
   <!--T:117-->
 +
nano /etc/apache2/apache2.conf  
  
 +
<!--T:118-->
 
Ja nämä rivit pitäisi olla tiedostossa
 
Ja nämä rivit pitäisi olla tiedostossa
  
  # Include module configuration:
+
  <!--T:119-->
 +
# Include module configuration:
 
  Include mods-enabled/*.load
 
  Include mods-enabled/*.load
 
  Include mods-enabled/*.conf
 
  Include mods-enabled/*.conf
  
=== mod_expires ===
+
=== mod_http2 ===
  
Tämä mahdollistaa välimuistiin tallennettujen elementtien viimeisen voimassaoloajan määrittämisen.
+
HTTP/2 Apache2:selle käyttöön. Tuettu Apache 2.4.18 jälkeen mutta testasimme tätä Apache 2.4.27 versiossa.
  
 
==== Asennus ====
 
==== Asennus ====
  
 +
Ubuntun jakelussa tätä ei ainakaan löytynyt mutta PPA:sta löytyy
 +
 +
<pre>
 +
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
 +
</pre>
 +
 +
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.
 +
 +
<pre>
 +
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
 +
</pre>
 +
 +
=== 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
 +
 +
<pre>
 +
a2enmod proxy
 +
a2enmod proxy_http
 +
a2enmod proxy_ajp
 +
a2enmod rewrite
 +
a2enmod deflate
 +
a2enmod headers
 +
a2enmod proxy_balancer
 +
a2enmod proxy_connect
 +
a2enmod proxy_html
 +
</pre>
 +
 +
==== Konfiguroi Vhost ====
 +
 +
Esimerkki konfiguraatio virtuaalihostille. Muuta http://0.0.0.0:8080 vastaamaan oman palvelimesi osoitteita.
 +
 +
<syntaxhighlight lang="apache">
 +
<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>
 +
</syntaxhighlight>
 +
 +
[[Luokka:Debian|Apache2]]
 +
[[Luokka:Linux|Apache2]]
 +
[[Luokka:Ubuntu|Apache2]]
 +
[[Luokka:Webbipalvelimet|Apache2]]
 +
[[Luokka:Webserver|Apache2]]
 +
 +
==== SSL vhost ====
 +
 +
Esimerkiksi https sivusta
 +
 +
<syntaxhighlight lang="apache">
 +
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>
 +
</syntaxhighlight>
 +
 +
[[Luokka:Debian|Apache2]]
 +
[[Luokka:Linux|Apache2]]
 +
[[Luokka:Ubuntu|Apache2]]
 +
[[Luokka:Webbipalvelimet|Apache2]]
 +
[[Luokka:Webserver|Apache2]]
 +
 +
=== mod_expires === <!--T:120-->
 +
 +
<!--T:121-->
 +
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:122-->
 +
 +
<!--T:123-->
 
Tämä ominaisuus on valmiina Apachen asennuspaketissa. Ota ominaisuus käyttöön komennolla
 
Tämä ominaisuus on valmiina Apachen asennuspaketissa. Ota ominaisuus käyttöön komennolla
  
   a2enmod expires
+
   <!--T:124-->
 +
a2enmod expires
  
==== Konfigurointi ====
+
<!--T:125-->
 +
Käynnistä Apache uudelleen
  
 +
  <!--T:126-->
 +
service apache2 restart
 +
 +
==== Konfigurointi ==== <!--T:127-->
 +
 +
<!--T:128-->
 
Voit määrittää konfiguroinnin suoraan  virtuaali isäntään  ja .htacess tiedostoon.
 
Voit määrittää konfiguroinnin suoraan  virtuaali isäntään  ja .htacess tiedostoon.
  
 +
<!--T:129-->
 
Esimerkki:
 
Esimerkki:
  
  ## EXPIRES CACHING ##
+
<!--T:130-->
 +
<syntaxhighlight lang="apache">
 +
## EXPIRES CACHING ##
 
   <IfModule mod_expires.c>
 
   <IfModule mod_expires.c>
 
   ExpiresActive On
 
   ExpiresActive On
 
   ExpiresDefault "access plus 30 days"
 
   ExpiresDefault "access plus 30 days"
 
   </IfModule>
 
   </IfModule>
  ## EXPIRES CACHING ##
+
## EXPIRES CACHING ##
 +
</syntaxhighlight>
  
 +
<!--T:131-->
 
Eli oletuksena 30 päivää, jolloin vaaditaan uudelleenlataus palvelimelta kaikille tiedostoille, jotka ladattu selaimen välimuistiin.
 
Eli oletuksena 30 päivää, jolloin vaaditaan uudelleenlataus palvelimelta kaikille tiedostoille, jotka ladattu selaimen välimuistiin.
  
  
 +
<!--T:132-->
 
Lisää:
 
Lisää:
  
   ExpiresActive On
+
   <!--T:133-->
 +
ExpiresActive On
 
   ExpiresByType image/jpg "access plus 1 year"
 
   ExpiresByType image/jpg "access plus 1 year"
 
   ExpiresByType image/jpeg "access plus 1 year"
 
   ExpiresByType image/jpeg "access plus 1 year"
Rivi 294: Rivi 696:
 
   ExpiresDefault "access plus 2 days"
 
   ExpiresDefault "access plus 2 days"
  
 +
<!--T:134-->
 
Kuville 1 vuoden viimeinen voimassaoloaika, pdf-tiedostoille, javascript sekä flash on kuukausi. Ikoneille yksi vuosi ja oletus muille on kaksi päivää.
 
Kuville 1 vuoden viimeinen voimassaoloaika, pdf-tiedostoille, javascript sekä flash on kuukausi. Ikoneille yksi vuosi ja oletus muille on kaksi päivää.
  
=== mod_security ===
+
[[Luokka:Debian|Apache2]]
 +
[[Luokka:Linux|Apache2]]
 +
[[Luokka:Ubuntu|Apache2]]
 +
[[Luokka:Webbipalvelimet|Apache2]]
 +
[[Luokka:Webserver|Apache2]]
 +
 
 +
=== mod_rewrite === <!--T:135-->
 +
 
 +
<!--T:136-->
 +
Uudellenohjaus moduuli, mahdollistaa verkkosivuihin uudelleenohjauksia.
 +
 
 +
==== Asennus ==== <!--T:137-->
 +
 
 +
<!--T:138-->
 +
Tämä on asennettu valmiina Apacheen, sinun tulee ottaa toiminto käyttöön:
 +
 
 +
  <!--T:139-->
 +
a2enmod rewrite
  
 +
<!--T:140-->
 +
Käynnistä Apache uudelleen
 +
 +
  <!--T:141-->
 +
service apache2 restart
 +
 +
==== Konfigurointi ==== <!--T:142-->
 +
 +
<!--T:143-->
 +
Esimerkki: HTTP -> HTTPS
 +
 +
  <!--T:144-->
 +
RewriteEngine On
 +
  RewriteCond %{HTTPS} off
 +
  RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI}
 +
 +
<!--T:145-->
 +
Eli uudelleenohjataan samaan sijaintiin HTTPS kanssa, kun pyydetään.
 +
 +
<!--T:146-->
 +
Esimerkki: Uudelleenohjaus UserAgentin avulla
 +
 +
  <!--T:147-->
 +
RewriteCond  %{HTTP_USER_AGENT}  (iPhone|Blackberry|Android)
 +
  RewriteRule  ^/$                /mobile.html  [L]
 +
 
 +
  RewriteRule  ^/$                /std.html  [L]
 +
 +
<!--T:148-->
 +
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.
 +
 +
<!--T:149-->
 +
Esimerkki: Jos tiedostoa ei ole (ERROR 404), uudelleenohjaa /index.php tiedostoon. Normaalisti näytetään ERROR 404 verkkosivu.
 +
 +
  <!--T:150-->
 +
RewriteEngine On
 +
  RewriteBase /
 +
  RewriteCond %{REQUEST_FILENAME} !-f
 +
  RewriteCond %{REQUEST_FILENAME} !-d
 +
  RewriteRule . /index.php [L]
 +
 +
<!--T:151-->
 +
Sinun tulee määrittää DocumentRoot polku samaan sijainnilla kuin /index.php määritetty.
 +
 +
<!--T:152-->
 +
Esimerkki: domain.net, domain.com, www.domain.net uudelleenohjahtaan domain.local osoitteeseen.
 +
 +
  <!--T:153-->
 +
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ä ==== <!--T:154-->
 +
 +
<!--T:155-->
 +
Uudelleenohjaus domain.com -> www.domain.com
 +
 +
  <!--T:156-->
 +
RewriteEngine On
 +
  RewriteBase /
 +
  RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
 +
  RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
 +
 +
<!--T:157-->
 +
Uudelleenohjaus www.domain.com -> domain.com
 +
 +
  <!--T:158-->
 +
RewriteEngine On
 +
  RewriteBase /
 +
  RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
 +
  RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
 +
 +
<!--T:159-->
 +
Uudelleenohjaus http -> https
 +
 +
  <!--T:160-->
 +
<IfModule mod_rewrite.c>
 +
  RewriteEngine On
 +
  RewriteCond %{HTTPS} off
 +
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
 +
</IfModule>
 +
 +
<!--T:161-->
 +
Uudelleenohjaus https -> http
 +
 +
<!--T:162-->
 +
<IfModule mod_rewrite.c>
 +
    RewriteEngine On
 +
    RewriteCond %{HTTPS} on
 +
    RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
 +
</IfModule>
 +
 +
=== mod_security === <!--T:163-->
 +
 +
<!--T:164-->
 
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
 
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 ====
+
==== Asennus ==== <!--T:165-->
 +
 
 +
  <!--T:166-->
 +
apt-get install libapache2-modsecurity
 +
 
 +
<!--T:167-->
 +
Käynnistä Apache uudelleen
  
   apt-get install libapache2-modsecurity
+
   <!--T:168-->
 +
service apache2 restart
  
 +
<!--T:169-->
 
Muuta oletuskonfigurointi tiedoston nimi
 
Muuta oletuskonfigurointi tiedoston nimi
  
   /etc/modsecurity/modsecurity.conf{-recommended,} (tallenna uudelleen *.conf päätteeksi)
+
   <!--T:170-->
 +
/etc/modsecurity/modsecurity.conf{-recommended,} (tallenna uudelleen *.conf päätteeksi)
  
 +
<!--T:171-->
 
Lataa Apachen konfigurointi tiedosto uudelleen
 
Lataa Apachen konfigurointi tiedosto uudelleen
  
   service apache2 reload
+
   <!--T:172-->
 +
service apache2 reload
  
 +
<!--T:173-->
 
Löydät loki tiedoston Apachen loki hakemistosta /var/log/apache2/
 
Löydät loki tiedoston Apachen loki hakemistosta /var/log/apache2/
  
   root@droplet:~# ls -l /var/log/apache2/modsec_audit.log
+
   <!--T:174-->
 +
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
 
   -rw-r----- 1 root root 0 Oct 19 08:08 /var/log/apache2/modsec_audit.log
  
==== Konfigurointi ====
+
==== Konfigurointi ==== <!--T:175-->
  
 +
<!--T:176-->
 
Avaa konfigurointi tiedosto
 
Avaa konfigurointi tiedosto
  
   nano /etc/modsecurity/modsecurity.conf
+
   <!--T:177-->
 +
nano /etc/modsecurity/modsecurity.conf
  
 +
<!--T:178-->
 
Etsi rivi:
 
Etsi rivi:
  
   SecRuleEngine DetectionOnly
+
   <!--T:179-->
 +
SecRuleEngine DetectionOnly
  
 +
<!--T:180-->
 
ja muuta se:
 
ja muuta se:
  
   SecRuleEngine On
+
   <!--T:181-->
 +
SecRuleEngine On
  
 +
<!--T:182-->
 
Etsi rivi:
 
Etsi rivi:
  
   SecResponseBodyAccess On
+
   <!--T:183-->
 +
SecResponseBodyAccess On
  
 +
<!--T:184-->
 
ja muuta se
 
ja muuta se
  
   SecResponseBodyAccess Off
+
   <!--T:185-->
 +
SecResponseBodyAccess Off
  
 +
<!--T:186-->
 
Näillä voit rajoittaa lähettettyjen tietojen määrää:
 
Näillä voit rajoittaa lähettettyjen tietojen määrää:
  
   SecRequestBodyLimit
+
   <!--T:187-->
 +
SecRequestBodyLimit
 
   SecRequestBodyNoFilesLimit
 
   SecRequestBodyNoFilesLimit
  
 +
=== mod_ssl === <!--T:188-->
 +
 +
<!--T:189-->
 +
Tämä moduuli mahdollistaa HTTPS yhteyden palvelimeen.
 +
 +
==== Asennus ==== <!--T:190-->
 +
 +
<!--T:191-->
 +
Tämä on asennettu apache2-common paketin mukana. Sinun tulee ottaa käyttöön
 +
 +
  <!--T:192-->
 +
a2enmod ssl
  
=== mod_userdir ===
+
<!--T:193-->
 +
Käynnistä Apache uudelleen
  
 +
  <!--T:194-->
 +
service apache2 restart
 +
 +
==== Konfigurointi ==== <!--T:195-->
 +
 +
<!--T:196-->
 +
Esimerkki: SSL konffit
 +
 +
  <!--T:197-->
 +
SSLEngine on
 +
  SSLCertificateFile /etc/ssl/ssl.crt
 +
  SSLCertificateKeyFile /etc/ssl/ssl.key
 +
 +
<!--T:198-->
 +
Tallenna tilaamasi sertifikaatti hakemistoon ja määritä se virtuaali isäntään.
 +
 +
<!--T:199-->
 +
256 bittinen salaus
 +
 +
<!--T:200-->
 +
256bittiseen salaukseen on muokattava Apachen konffeihin:
 +
 +
  <!--T:201-->
 +
nano /etc/apache2/mod-available/ssl.conf
 +
 +
<!--T:202-->
 +
Ja muuta riviä:
 +
 +
  <!--T:203-->
 +
SSLCipherSuite AES256-SHA
 +
 +
==== Lisäkonfiguraatiota ==== <!--T:264-->
 +
 +
<!--T:380-->
 +
Voidaan myös määrittää Virtuaalihost kohtaisesti ja htaccess
 +
 +
 +
<!--T:266-->
 +
256bittiseen salaukseen on muokattava Apachen konffeihin:
 +
 +
  <!--T:381-->
 +
nano /etc/apache2/mod-available/ssl.conf
 +
 +
  <!--T:268-->
 +
SSLCipherSuite AES256-SHA
 +
 +
<!--T:382-->
 +
Poista SSL3 ja SSL2 käytöstä
 +
 +
  <!--T:383-->
 +
nano /etc/apache2/mod-available/ssl.conf
 +
 +
<!--T:384-->
 +
  SSLProtocol All -SSLv2 -SSLv3
 +
 +
 +
<!--T:385-->
 +
Hyvä SSLChipperSuite:
 +
 +
 +
  <!--T:386-->
 +
nano /etc/apache2/mod-available/ssl.conf
 +
 +
<!--T:387-->
 +
  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"
 +
 +
 +
<!--T:388-->
 +
Ota käyttöön Strict Transport Security (HSTS) ominaisuus lisäämällä ottamalla käyttään moduuli headers
 +
 +
  <!--T:389-->
 +
a2enmod headers
 +
 +
<!--T:390-->
 +
ja lisäämällä konffeihin:
 +
 +
  <!--T:391-->
 +
Header always set Strict-Transport-Security "max-age=15768000; includeSubdomains; preload"
 +
 +
[[Luokka:Debian|Apache2]]
 +
[[Luokka:Linux|Apache2]]
 +
[[Luokka:Ubuntu|Apache2]]
 +
[[Luokka:Webbipalvelimet|Apache2]]
 +
[[Luokka:Webserver|Apache2]]
 +
 +
==== DHPARAM ==== <!--T:392-->
 +
 +
<!--T:393-->
 +
Korvaa seuraava rivi /etc/apache2/mod-enabled/ssl.conf tiedostosta ja käynnistä uudelleen
 +
 +
  <!--T:394-->
 +
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:204-->
 +
 +
<!--T:205-->
 
Tämä moduuli mahdollistaa jokaiselle tai osalle palvelimen käyttäjätilille omat verkkosivut.
 
Tämä moduuli mahdollistaa jokaiselle tai osalle palvelimen käyttäjätilille omat verkkosivut.
  
==== Asennus ====
+
==== Asennus ==== <!--T:206-->
  
 +
<!--T:207-->
 
Tämä moduuli on valmiina asennettu Apachen mukana, sinun tulee laittaa se käyttöön
 
Tämä moduuli on valmiina asennettu Apachen mukana, sinun tulee laittaa se käyttöön
  
   a2enmod userdir
+
   <!--T:208-->
 +
a2enmod userdir
  
==== Konfigurointi ====
+
<!--T:209-->
 +
Käynnistä Apache uudelleen
  
 +
  <!--T:210-->
 +
service apache2 restart
 +
 +
==== Konfigurointi ==== <!--T:211-->
 +
 +
<!--T:212-->
 +
Avaa konfigurointi tiedosto /etc/apache2/mods-available/userdir.conf
 +
 +
  <!--T:213-->
 +
nano /etc/apache2/mods-available/userdir.conf
 +
 +
<!--T:214-->
 +
Jos haluat määrittää tiettyyn virtuaaliseen hostiin, kommentoi tiedosto ja konfiguroi konffit virtuaali hostin konffeihin.
 +
 +
<!--T:215-->
 
Esimerkki: Sallitaan kaikille käyttäjille käyttää tätä toimintoa. Käyttäjän tulee luoda /home/ hakemistoon public_html niminen kansio.
 
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
+
   <!--T:216-->
 +
UserDir public_html
 
   UserDir enabled
 
   UserDir enabled
  
 +
<!--T:217-->
 
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.
 
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
+
   <!--T:218-->
 +
UserDir public_html
 
   UserDir disabled root
 
   UserDir disabled root
 
   UserDir enabled
 
   UserDir enabled
  
 +
<!--T:219-->
 
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.
 
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
+
   <!--T:220-->
 +
UserDir public_html
 
   UserDir disabled
 
   UserDir disabled
 
   UserDir enabled user1 user2
 
   UserDir enabled user1 user2
  
 +
<!--T:221-->
 
Verkkopolku on käyttäjien kotisivuille http://ip-osoite/~username.  
 
Verkkopolku on käyttäjien kotisivuille http://ip-osoite/~username.  
  
 +
<!--T:222-->
 
Esimerkki konfigurointi:
 
Esimerkki konfigurointi:
  
   UserDir public_html
+
   <!--T:223-->
 +
UserDir public_html
 
   UserDir disabled root
 
   UserDir disabled root
 
     <Directory /home/*/public_html>
 
     <Directory /home/*/public_html>
Rivi 385: Rivi 1 062:
 
         Options FollowSymLinks +Indexes
 
         Options FollowSymLinks +Indexes
 
     </Directory>
 
     </Directory>
    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
 
  
== HTTPS / SSL ==
+
<!--T:224-->
 +
Lisää seuraava rivi jos haluat käyttää osoitetta http://ip-osoite/user/username
  
HTTPS - yhteyttä käyttäessä tarvitaan SSL sertifikaattia varmentamaan sivuston aitouden. Näin saadaan lisäturvaa verkkosivulle. Virallisen sertifikaatin pitää tilata viralliselta varmentajalta. Tämä virallinen vahvistus maksaa 20€-> useisiin satoihin asti.  
+
      <!--T:225-->
 +
AliasMatch ^/users/([a-zA-Z0-9]+)/?(.*) /home/$1/public_html/$2
  
 +
<!--T:226-->
 +
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
  
=== Virallisia SSL sertifikaatin varmentajia ===
+
===== PHP5 userdir ===== <!--T:227-->
 
 
* [https://www.startssl.com/ Startssl] - Ilmainen mutta ei luetettava.
 
* [https://www.namecheap.com/security/ssl-certificates/geotrust.aspx GeoTrust RapidSSL] - Luettava ja toimiva, ei liikennetoiminnalle.
 
 
 
=== Epävirallinen SSL sertifikaatti ===
 
 
 
Toinen tapa on saada ilmaiseksi on käytettävä itseallekirjoitettavia SSL sertifikaatteja. Näihin selaimet eivät oletuksena luota jonka takia ei voi käyttää yleisessä käytössä. Sertifikaatit tulee asentaa manuaalisesti koneelle. Tässä ohje [[Openssl]] käyttöön, jolla on helppo tehdä itseallekirjoitettavia sertifikaatteja.
 
 
 
 
 
<gallery>
 
Tiedosto:Ssl_virhe.png|SSL virheilmoitus epävirallisessa sertifikaatissa
 
</gallery>
 
 
 
 
 
Määritetään Apacheen SSL avaamalla /etc/apache2/sites-available/default-ssl
 
 
  nano /etc/apache2/sites-available/default
 
 
 
  SSLEngine on
 
  
  SSLCertificateFile /etc/ssl/localcerts/ssl.crt
+
<!--T:228-->
  SSLCertificateKeyFile /etc/ssl/localcerts/ssl.key
+
Salli käyttäjien sivuilla PHP5 käyttö.
  
 +
<!--T:229-->
 +
Muokkaa tiedostoa
  
Käynnistetään SSL sivut
+
  <!--T:230-->
 +
/etc/apache2/mod-enabled/php5.conf
  
  a2ensite default-ssl
+
<!--T:231-->
 +
Lisää risuaita
  
Lisätään SSL moduuli Apacheen
+
<!--T:232-->
 +
#      php_admin_value engine On
  
  a2enmod ssl
+
===== Luo uudelle käyttäjälle public_html kansio ===== <!--T:233-->
  
Lataa Apachen  konfigurointi tiedostot uudelleen
+
<!--T:234-->
 +
Luo kansio /etc/skel hakemiston alle. Täälä olevat tiedostot ja kansiot automaattisesti kopioidaan uuden käyttäjän kotikansioon.
  
   service apache2 reload
+
   <!--T:235-->
 +
mkdir /etc/skel/public_html
  
12. Sallitaan SSL Apacheen
+
== .htaccess == <!--T:280-->
 
 
a2enmod ssl
 
 
 
ja käynnistetään Apache uudelleen
 
 
 
  service apache2 restart
 
 
 
Nyt on valmista, jos tuli virhe niin tuli vika konfiguraatioon
 
 
 
256bittiseen salaukseen on muokattava Apachen konffeihin:
 
 
 
  nano /etc/apache2/mod-available/ssl.conf
 
 
 
  SSLCipherSuite AES256-SHA
 
 
 
== .htaccess ==
 
  
 +
<!--T:281-->
 
.htaccess tiedosto mahdollistaa konfigurointi tiedostojen tallentamisen suoraan verkkosivuhakemistoon, esimerkiksi /var/www/.htaccess.  
 
.htaccess tiedosto mahdollistaa konfigurointi tiedostojen tallentamisen suoraan verkkosivuhakemistoon, esimerkiksi /var/www/.htaccess.  
  
 +
<!--T:282-->
 
Sallitaan .htaccess tiedoston ylikirjoittamaan entiset konfiguroinnit:
 
Sallitaan .htaccess tiedoston ylikirjoittamaan entiset konfiguroinnit:
  
  
   /etc/apache2/sites-available/default
+
   <!--T:283-->
 +
/etc/apache2/sites-available/default
  
 +
<!--T:284-->
 
seuraavanlaiseksi:
 
seuraavanlaiseksi:
  
         <Directory /var/www/>
+
         <!--T:285-->
 +
<Directory /var/www/>
 
                 Options Indexes FollowSymLinks MultiViews
 
                 Options Indexes FollowSymLinks MultiViews
 
                 AllowOverride All
 
                 AllowOverride All
Rivi 466: Rivi 1 121:
 
Käynnistä Apache uudelleen:
 
Käynnistä Apache uudelleen:
  
   service apache2 restart
+
   <!--T:286-->
 +
service apache2 reload
  
Luodaan .htaccess tiedosto /var/www/.htaccess
+
<!--T:287-->
 +
Luodaan .htaccess tiedosto /var/www/.htaccess (HUOM! Varmista että se on ".htaccess" ei .htacess.txt ym.)
  
   nano /var/www/.htaccess
+
   <!--T:288-->
 +
nano /var/www/.htaccess
  
=== Salasanasuojaus verkkosivulle ===
+
=== Salasanasuojaus verkkosivulle === <!--T:289-->
  
  
 +
<!--T:290-->
 
'''!! htpasswd httpd-2.4.4 on rikki. Odota päivitystä.  !!
 
'''!! htpasswd httpd-2.4.4 on rikki. Odota päivitystä.  !!
 
'''
 
'''
  
  
 +
<!--T:291-->
 
Kirjoita alla olevat rivit .htaccess tiedotoon:
 
Kirjoita alla olevat rivit .htaccess tiedotoon:
  
   AuthUserFile /var/.htpasswd
+
   <!--T:292-->
 +
AuthUserFile /var/.htpasswd
 
   AuthName "Anna kirjautumisen tiedot"
 
   AuthName "Anna kirjautumisen tiedot"
 
   AuthType Basic
 
   AuthType Basic
 
   require user [käyttäjänimet]
 
   require user [käyttäjänimet]
  
 +
<!--T:293-->
 
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!
 
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
+
   <!--T:294-->
 +
käyttäjänimi:salasana
  
 +
<!--T:295-->
 
Sinun tulee käyttää Debianissa htpasswd työkalua. Internetissä on myös htpasswd työkaluja saatavilla.
 
Sinun tulee käyttää Debianissa htpasswd työkalua. Internetissä on myös htpasswd työkaluja saatavilla.
  
 +
<!--T:296-->
 
Esimerkki:
 
Esimerkki:
  
  htpasswd -B /polku/.htpasswd Käyttäjätunnus Salasana
+
  <!--T:297-->
 +
htpasswd -B /polku/.htpasswd Käyttäjätunnus Salasana
  
 +
<!--T:298-->
 
Tallenna tiedosto ja kokeile kirjautua sivullesi.
 
Tallenna tiedosto ja kokeile kirjautua sivullesi.
  
  
==== htpasswd bugin väliaikaisen korjaus ====
+
==== htpasswd bugin väliaikaisen korjaus ==== <!--T:299-->
  
 +
<!--T:300-->
 
Bugi ei anna kuin Debianissa generoituja salasanojen kirjautumisen järjestelmään.  
 
Bugi ei anna kuin Debianissa generoituja salasanojen kirjautumisen järjestelmään.  
  
 +
<!--T:301-->
 
Voit generoida salasanan tällä komennolla:
 
Voit generoida salasanan tällä komennolla:
  
   htpasswd -nb user password
+
   <!--T:302-->
 +
htpasswd -nb user password
  
 +
<!--T:303-->
 
Kopioi ja tallenna htpasswd tiedostoon, näin pitäisi toimia
 
Kopioi ja tallenna htpasswd tiedostoon, näin pitäisi toimia
  
=== Virhesivut ===
+
=== Virhesivut === <!--T:304-->
  
 +
<!--T:305-->
 
Kirjoita alla olevat .htaccess tiedostoon. Muuta polut vastaamaan palvelimessasi olevaa polkua.
 
Kirjoita alla olevat .htaccess tiedostoon. Muuta polut vastaamaan palvelimessasi olevaa polkua.
  
   ErrorDocument 400 /errors/badrequest.html
+
   <!--T:306-->
 +
ErrorDocument 400 /errors/badrequest.html
 
   ErrorDocument 401 /errors/authreqd.html
 
   ErrorDocument 401 /errors/authreqd.html
 
   ErrorDocument 403 /errors/forbid.html
 
   ErrorDocument 403 /errors/forbid.html
Rivi 519: Rivi 1 192:
 
   ErrorDocument 500 /errors/serverr.html
 
   ErrorDocument 500 /errors/serverr.html
  
 +
<!--T:307-->
 
Määritä polut oikein vastaamaan palvelimesi polkuja missä virhesivusi sijaitsevat
 
Määritä polut oikein vastaamaan palvelimesi polkuja missä virhesivusi sijaitsevat
 +
 +
== Apachen suojaaminen == <!--T:308-->
 +
 +
<!--T:309-->
 +
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.
 +
 +
 +
<!--T:310-->
 +
Piilota Apachen versio ja muut tiedot
 +
 +
  <!--T:311-->
 +
/etc/apache2/conf.d/security
 +
 +
  <!--T:312-->
 +
ServerSignature Off
 +
  ServerTokens Prod
 +
 +
<!--T:313-->
 +
Poista kansioden selaus käytöstä
 +
 +
<!--T:314-->
 +
.htaccess
 +
 +
  <!--T:315-->
 +
Options -Indexes
 +
 +
<!--T:316-->
 +
Määritä Timeout
 +
 +
  <!--T:317-->
 +
/etc/apache2/apache2.conf
 +
 +
  <!--T:318-->
 +
Timeout 45
 +
 +
<!--T:319-->
 +
Rajoita pyyntöjä
 +
 +
  <!--T:320-->
 +
/etc/apache2/apache2.conf
 +
 +
  <!--T:321-->
 +
LimitRequestBody 1048576
 +
 +
=== Apache2 + PAM autentikointi === <!--T:322-->
 +
 +
<!--T:323-->
 +
Asennetaan lisämoduuli apacheen
 +
 +
<!--T:324-->
 +
aptitude install libapache2-mod-auth-pam
 +
 +
<!--T:325-->
 +
Avataan Apachen Virtuaalihost konfigurointi tiedosto
 +
 +
<!--T:326-->
 +
nano /etc/apache2/sites-enabled/000-default
 +
 +
<!--T:327-->
 +
<pre>
 +
<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>
 +
</pre>
 +
 +
<!--T:328-->
 +
Näin Unixin tunnuksillakin voi kirjautua htaccess sivulle (ilman että htpasswd komentoa on ajettu).
 +
 +
=== Apache ja Active Directory todennus === <!--T:395-->
 +
 +
<!--T:396-->
 +
Testattu Apache 2.2 Debianilla.
 +
 +
<!--T:397-->
 +
Ota käyttöön moduulit authnz_ldap ja ldap
 +
 +
  <!--T:398-->
 +
a2enmod authnz_ldap
 +
 +
  <!--T:399-->
 +
a2enmod ldap
 +
 +
<!--T:400-->
 +
Kopioi alla oleva haluamasi virtualihostiin.
 +
 +
<!--T:401-->
 +
<pre>
 +
<Directory "/var/www/login">
 +
        AuthType Basic
 +
        AuthName "Active Directory kirjautuminen"
 +
 +
        <!--T:402-->
 +
AuthBasicProvider ldap
 +
        AuthzLDAPAuthoritative off
 +
 +
        <!--T:403-->
 +
AuthLDAPURL "ldap://dc.domain.com:389/dc=domain,dc=com?sAMAccountName?sub?(objectClass=*)"
 +
 +
        <!--T:404-->
 +
AuthLDAPBindDN "[email protected]"
 +
        AuthLDAPBindPassword salaisuus
 +
 +
        <!--T:405-->
 +
Require valid-user
 +
        #Require ldap-group CN=Administrators,CN=Users,DC=example,DC=com
 +
</Directory>
 +
</pre>
 +
 +
<!--T:406-->
 +
* 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
 +
 +
<!--T:407-->
 +
Jos ei toimi lisää tämä konfiguraatioon ja katso Apachen error log tiedosto /var/log/apache/error.log:
 +
 +
  <!--T:408-->
 +
LogLevel debug
 +
 +
==  Loki == <!--T:329-->
 +
 +
<!--T:330-->
 +
Apachen lokiin virhe ja kävijä lokit
 +
 +
<!--T:331-->
 +
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 == <!--T:332-->
 +
 +
<!--T:333-->
 +
Pysäytä Apache2
 +
 +
  <!--T:334-->
 +
service apache2 stop
 +
 +
<!--T:335-->
 +
Poistetaan Apachen2 paketit:
 +
 +
  <!--T:336-->
 +
apt-get purge apache2 apache2-utils apache2.2-bin apache2-common
 +
 +
<!--T:337-->
 +
Etsitään Apachen hakemistoja ja poistetaan ne yksitellen:
 +
 +
  <!--T:338-->
 +
whereis apache2
 +
 +
<!--T:339-->
 +
Tässä tulostuu esimerkiksi:
 +
 +
  <!--T:340-->
 +
apache2: /etc/apache2
 +
 +
<!--T:341-->
 +
Poistetaan hakemisto:
 +
 +
  <!--T:342-->
 +
sudo rm -rf /etc/apache2
 +
 +
== Ongelmanratkaisu == <!--T:343-->
 +
 +
<!--T:344-->
 +
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:
 +
 +
  <!--T:345-->
 +
/var/log/apache2/error.log
 +
 +
<!--T:346-->
 +
sinne tallentuu kaikki virheilmoitukset. Kopioi virheilmoitus ja Googleta virheilmoitus. Googlesta saat ongelmaan ratkaisun.
 +
 +
<!--T:347-->
 +
Konfiguroinnin tarkistus
 +
 +
  <!--T:348-->
 +
apachectl configtest
 +
 +
<!--T:349-->
 +
TAI
 +
 +
  <!--T:350-->
 +
apache2ctl configtest
 +
 +
== Lähteet == <!--T:351-->
 +
 +
<!--T:352-->
 +
http://fi.wikipedia.org/wiki/Apache_(palvelinohjelma)
 +
 +
<!--T:353-->
 +
https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-debian-7
 +
 +
<!--T:354-->
 +
http://wiki.syotec.fi/index.php?title=JAH380_-_Linux_Server_-_Toimialue
 +
 +
<!--T:355-->
 +
http://www.rudedog.org/pipermail/auth_ldap/2003-December/001494.html
 +
 +
<!--T:356-->
 +
http://www.edugeek.net/forums/nix/7453-apache-winbind-authentication-2.html
 +
 +
<!--T:357-->
 +
http://www.held-im-ruhestand.de/software/apache-ldap-active-directory-authentication
 +
 +
<!--T:358-->
 +
http://enarion.net/web/htaccess/redirect-www-and-no-www/
 +
 +
<!--T:359-->
 +
https://www.digicert.com/ssl-certificate-installation-apache.htm
 +
 +
<!--T:360-->
 +
https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-6
 +
 +
<!--T:361-->
 +
http://httpd.apache.org/docs/2.2/mod/mod_ssl.html
 +
 +
<!--T:362-->
 +
http://stackoverflow.com/questions/24144552/how-to-set-hsts-header-from-htaccess-only-on-https
 +
 +
<!--T:363-->
 +
http://xmodulo.com/how-to-uninstall-and-remove-apache2-on-ubuntu-debian.html
 +
 +
<!--T:409-->
 +
http://codeconnoisseur.org/ramblings/apache-22-and-active-directory-and-group-restrictions
 +
 +
<!--T:364-->
 +
[[Category:Debian]]
 +
[[Category:Webbipalvelimet]]
 +
</translate>
 +
 +
[[Category:Linux]]
 +
[[Category:Debian]]
 +
[[Category:Ubuntu]]
 +
[[Category:Webserver]]

Nykyinen versio 8. lokakuuta 2017 kello 07.50

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 "[email protected]"
        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: