Ero sivun ”Apache2” versioiden välillä
p (→HTTPS / SSL) |
|||
(215 välissä olevaa versiota 3 käyttäjän tekeminä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
− | Apache on | + | <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. | ||
− | + | <!--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ä]]. | ||
− | + | <!--T:2--> | |
+ | Lisätietoa Apachesta: [http://fi.wikipedia.org/wiki/Apache_(palvelinohjelma) Apache (palvelinohjelma)] | ||
− | + | == Asentaminen == <!--T:3--> | |
− | + | <!--T:366--> | |
+ | Asennusohje on tehty Apache 2.2 versiolle Debian 7.8 käyttöjärjestelmään. | ||
− | + | === 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 | + | <!--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/ | + | <!--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]]. | ||
− | == | + | ==== 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]]. | ||
+ | |||
+ | === Red Hat / CentOS / Fedora === <!--T:17--> | ||
+ | |||
+ | <!--T:18--> | ||
+ | Asenna Apache2 komennolla | ||
+ | |||
+ | <!--T:19--> | ||
+ | yum install httpd | ||
+ | |||
+ | <!--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: | ||
− | apache2.conf envvars magic mods-enabled/ sites-available/ | + | <!--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 | + | <!--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 | + | <!--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 | + | <!--T:34--> |
+ | '''sites-available/''' Hakemistossa on kaikki virtual hostien kokoonpanojen määritystiedostot. | ||
− | '''sites-enabled/''' Hakemistossa määritetään mitä todellisuudessa | + | <!--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. | ||
+ | <!--T:37--> | ||
+ | '''mods-enabled/''' Moduulit jotka ovat käytössä. | ||
− | + | <!--T:27--> | |
+ | Red Hat / CentOS / Fedora: | ||
+ | <!--T:28--> | ||
+ | /etc/httpd/ | ||
− | + | <!--T:367--> | |
+ | Apachen oma konfigurointitiedosto löytyy CentOS käyttöjärjestelmästä: | ||
− | + | <!--T:368--> | |
+ | /etc/httpd/conf/httpd.conf | ||
+ | |||
+ | === 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--> |
− | + | <!--T:46--> | |
+ | Hakemistossa on oletuksena ''default'' ja nyt luodaan toinen virtuaalihosti. Alla on esimerkki virtuaalihostista ja tallenna se esimerkiksi nimellä ''intra''. | ||
− | + | <!--T:47--> | |
− | ServerAdmin webmaster@localhost | + | <syntaxhighlight lang="apache"> |
− | + | <VirtualHost *:80> #*.80 = Vastaa kaikille IP-osoitteille portissa 80. | |
− | DocumentRoot /var/www | + | 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 | + | 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] | ||
− | + | <!--T:62--> | |
+ | service apache2 reload | ||
+ | [[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 | ||
− | + | <!--T:65--> | |
− | + | <syntaxhighlight lang="apache"> | |
− | + | Alias /webbialihakemisto/ /polku/ | |
− | + | # Verkkosivupolku (/webbihakemisto) ja fyysinen polku ("/polku") | |
− | + | <Directory "/polku/"> | |
− | + | Options Indexes FollowSymLinks MultiViews | |
− | + | 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> | ||
− | + | [[Luokka:Debian|Apache2]] | |
− | + | [[Luokka:Linux|Apache2]] | |
− | + | [[Luokka:Ubuntu|Apache2]] | |
− | + | [[Luokka:Webbipalvelimet|Apache2]] | |
− | + | [[Luokka:Webserver|Apache2]] | |
− | |||
− | |||
− | === 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 == <!--T:75--> |
− | + | <!--T:76--> | |
+ | Lisäominaisuuksia ja lisäturvallisuutta Apachen käyttöön. | ||
− | + | <!--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:91--> | ||
+ | * 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 ==== <!--T:92--> | ||
+ | |||
+ | <!--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: | ||
+ | |||
+ | <!--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 ==== <!--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): | ||
+ | |||
+ | <!--T:106--> | ||
+ | nano /etc/apache2/sites-available/default | ||
+ | |||
+ | <!--T:107--> | ||
+ | ja lisätään rivit jokaiseen virtual hostiin: | ||
+ | |||
+ | <!--T:108--> | ||
+ | ... | ||
+ | </Directory> | ||
+ | <IfModule mod_evasive20.c> | ||
DOSHashTableSize 3097 | DOSHashTableSize 3097 | ||
DOSPageCount 2 | DOSPageCount 2 | ||
Rivi 184: | Rivi 470: | ||
DOSBlockingPeriod 10 | DOSBlockingPeriod 10 | ||
DOSLogDir “/var/log/apache2/evasive” | DOSLogDir “/var/log/apache2/evasive” | ||
+ | #DOSSystemCommand "sudo -u root /sbin/iptables -A INPUT -s %s -j DROP" | ||
+ | </IfModule> | ||
+ | ... | ||
+ | |||
+ | <!--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 | ||
+ | |||
+ | <!--T:115--> | ||
+ | '''DOSSystemCommand''' = Lisäparametrejä (poistettu käytöstä, kehittyneimille) | ||
+ | |||
+ | |||
+ | <!--T:116--> | ||
Tarkista asetukset apache2.conf tiedostosta: | Tarkista asetukset apache2.conf tiedostosta: | ||
+ | <!--T:117--> | ||
nano /etc/apache2/apache2.conf | 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 | ||
− | == HTTPS / | + | === 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 | ||
+ | |||
+ | <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:124--> | ||
+ | a2enmod expires | ||
+ | |||
+ | <!--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. | ||
+ | |||
+ | <!--T:129--> | ||
+ | Esimerkki: | ||
+ | |||
+ | <!--T:130--> | ||
+ | <syntaxhighlight lang="apache"> | ||
+ | ## EXPIRES CACHING ## | ||
+ | <IfModule mod_expires.c> | ||
+ | ExpiresActive On | ||
+ | ExpiresDefault "access plus 30 days" | ||
+ | </IfModule> | ||
+ | ## EXPIRES CACHING ## | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | <!--T:131--> | ||
+ | Eli oletuksena 30 päivää, jolloin vaaditaan uudelleenlataus palvelimelta kaikille tiedostoille, jotka ladattu selaimen välimuistiin. | ||
+ | |||
+ | |||
+ | <!--T:132--> | ||
+ | Lisää: | ||
+ | |||
+ | <!--T:133--> | ||
+ | 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" | ||
+ | |||
+ | <!--T:134--> | ||
+ | Kuville 1 vuoden viimeinen voimassaoloaika, pdf-tiedostoille, javascript sekä flash on kuukausi. Ikoneille yksi vuosi ja oletus muille on kaksi päivää. | ||
+ | |||
+ | [[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 | ||
+ | |||
+ | ==== Asennus ==== <!--T:165--> | ||
+ | |||
+ | <!--T:166--> | ||
+ | apt-get install libapache2-modsecurity | ||
+ | |||
+ | <!--T:167--> | ||
+ | Käynnistä Apache uudelleen | ||
+ | |||
+ | <!--T:168--> | ||
+ | service apache2 restart | ||
+ | |||
+ | <!--T:169--> | ||
+ | Muuta oletuskonfigurointi tiedoston nimi | ||
+ | |||
+ | <!--T:170--> | ||
+ | /etc/modsecurity/modsecurity.conf{-recommended,} (tallenna uudelleen *.conf päätteeksi) | ||
+ | |||
+ | <!--T:171--> | ||
+ | Lataa Apachen konfigurointi tiedosto uudelleen | ||
+ | |||
+ | <!--T:172--> | ||
+ | service apache2 reload | ||
+ | |||
+ | <!--T:173--> | ||
+ | Löydät loki tiedoston Apachen loki hakemistosta /var/log/apache2/ | ||
+ | |||
+ | <!--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 | ||
+ | |||
+ | ==== Konfigurointi ==== <!--T:175--> | ||
+ | |||
+ | <!--T:176--> | ||
+ | Avaa konfigurointi tiedosto | ||
+ | |||
+ | <!--T:177--> | ||
+ | nano /etc/modsecurity/modsecurity.conf | ||
+ | |||
+ | <!--T:178--> | ||
+ | Etsi rivi: | ||
+ | |||
+ | <!--T:179--> | ||
+ | SecRuleEngine DetectionOnly | ||
+ | |||
+ | <!--T:180--> | ||
+ | ja muuta se: | ||
− | + | <!--T:181--> | |
+ | SecRuleEngine On | ||
− | + | <!--T:182--> | |
+ | Etsi rivi: | ||
− | < | + | <!--T:183--> |
− | + | SecResponseBodyAccess On | |
− | |||
− | + | <!--T:184--> | |
− | + | ja muuta se | |
− | + | ||
+ | <!--T:185--> | ||
+ | SecResponseBodyAccess Off | ||
+ | |||
+ | <!--T:186--> | ||
+ | Näillä voit rajoittaa lähettettyjen tietojen määrää: | ||
+ | |||
+ | <!--T:187--> | ||
+ | SecRequestBodyLimit | ||
+ | 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 | ||
− | + | <!--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: | 256bittiseen salaukseen on muokattava Apachen konffeihin: | ||
− | nano /etc/apache2/mod-available/ssl.conf | + | <!--T:381--> |
+ | nano /etc/apache2/mod-available/ssl.conf | ||
− | SSLCipherSuite AES256-SHA | + | <!--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. | ||
+ | |||
+ | ==== Asennus ==== <!--T:206--> | ||
+ | |||
+ | <!--T:207--> | ||
+ | Tämä moduuli on valmiina asennettu Apachen mukana, sinun tulee laittaa se käyttöön | ||
+ | |||
+ | <!--T:208--> | ||
+ | a2enmod userdir | ||
+ | |||
+ | <!--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. | ||
+ | |||
+ | <!--T:216--> | ||
+ | UserDir public_html | ||
+ | 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. | ||
+ | |||
+ | <!--T:218--> | ||
+ | UserDir public_html | ||
+ | UserDir disabled root | ||
+ | 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. | ||
+ | |||
+ | |||
+ | <!--T:220--> | ||
+ | UserDir public_html | ||
+ | UserDir disabled | ||
+ | UserDir enabled user1 user2 | ||
+ | |||
+ | <!--T:221--> | ||
+ | Verkkopolku on käyttäjien kotisivuille http://ip-osoite/~username. | ||
+ | |||
+ | <!--T:222--> | ||
+ | Esimerkki konfigurointi: | ||
+ | |||
+ | <!--T:223--> | ||
+ | UserDir public_html | ||
+ | UserDir disabled root | ||
+ | <Directory /home/*/public_html> | ||
+ | AllowOverride AuthConfig | ||
+ | Options FollowSymLinks +Indexes | ||
+ | </Directory> | ||
+ | |||
+ | <!--T:224--> | ||
+ | Lisää seuraava rivi jos haluat käyttää osoitetta http://ip-osoite/user/username | ||
+ | |||
+ | <!--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 | ||
+ | |||
+ | ===== PHP5 userdir ===== <!--T:227--> | ||
+ | |||
+ | <!--T:228--> | ||
+ | Salli käyttäjien sivuilla PHP5 käyttö. | ||
+ | |||
+ | <!--T:229--> | ||
+ | Muokkaa tiedostoa | ||
+ | |||
+ | <!--T:230--> | ||
+ | /etc/apache2/mod-enabled/php5.conf | ||
+ | |||
+ | <!--T:231--> | ||
+ | Lisää risuaita | ||
+ | |||
+ | <!--T:232--> | ||
+ | # php_admin_value engine On | ||
+ | |||
+ | ===== Luo uudelle käyttäjälle public_html kansio ===== <!--T:233--> | ||
+ | |||
+ | <!--T:234--> | ||
+ | Luo kansio /etc/skel hakemiston alle. Täälä olevat tiedostot ja kansiot automaattisesti kopioidaan uuden käyttäjän kotikansioon. | ||
+ | |||
+ | <!--T:235--> | ||
+ | mkdir /etc/skel/public_html | ||
+ | |||
+ | == .htaccess == <!--T:280--> | ||
+ | |||
+ | <!--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 273: | Rivi 1 121: | ||
Käynnistä Apache uudelleen: | Käynnistä Apache uudelleen: | ||
− | service apache2 | + | <!--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 | ||
ErrorDocument 404 /errors/notfound.html | ErrorDocument 404 /errors/notfound.html | ||
ErrorDocument 500 /errors/serverr.html | ErrorDocument 500 /errors/serverr.html | ||
+ | |||
+ | <!--T:307--> | ||
+ | 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
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)
Sisällysluettelo
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
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