Tartalomjegyzék
Apache
- Szerző: Sallai András
- Copyright © Sallai András, 2009, 2011, 2013, 2014, 2015, 2018
- Web: https://szit.hu
A webszerverről
A webszerver HTML oldalakat szolgál ki http protokollon keresztül. Alapértelmezetten a 80-as porton. Titkosított adatátvitelre is képes SSL vagy TLS felett, a 443-as porton (https protokoll).
Az Apache weboldala http://apache.org. Az Apache valójában egy alapítvány, amelynek nagyon sok projektje van. A webszerver (httpd) csak az egyik projekt a sok közül. A webszervert a főoldalról kiindulva a következő útvonalon lehet megtalálni:
Project -> Project Listing -> Apache HTTP Server
Persze egyszerűen azt is írhatjuk:
A Debian GNU/Linux 6.x verzión, az apache2 csomagban a 2.2 verziójú apache található. Ennek dokumentációja:
Telepítés
apt install apache2
Az apache weboldaláról letölthető a legújabb verzió is. 2012. májusban ez a 2.4-es verzió.
A telepítés ellenőrzése
Az apache két proton szokott webhelyeket szolgáltatni, a 80-as és a 443-as porton. Alapértelmezetten csak a 80-as port használható. Ellenőrizzük, hogy figyel-e a 80-as porton a telepített apache2:
ss -lt
A kimenet ehhez hasonló lehet:
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:ssh *:* LISTEN 0 128 :::http :::* LISTEN 0 128 :::ssh :::*
A kettő darab kettőspontból láthatjuk, hogy az apache2 csak a IPv6 foglalaton figyel. (A harmadik kettőspont csak szeparátor) Ennek ellenére működik IPv4-en is, mivel az IPv4 az IPv6 foglalaton is képes fogadni a kapcsolatokat. Ehhez a Debian készítői az apache2 fordítását a következő kapcsolóval végezték:
--enable-v4-mapped
Hogy valóban, így van-e, kérdezzük le az apache-ot, milyen kapcsolókkal fordították:
apache2ctl -V
A következő sornak kell szerepelnie:
... -D ARP_HAVE_IPV6 (IPv4-mapped addresses enabled) ...
A weblapok helye
Alapértelmezetten a weblapok helye a következő.
/var/www/html
Ez persze megváltoztatható.
Vezérlés
Vezérlés systemd-ből
systemctl stop apache2
systemctl start apache2
systemctl restart apache2
systemctl reload apache2
apache2ctl
Az apache az apache2ctl paranccsal is vezérelhető. A következő parancsok adhatok:
- start
- stop
- restart
- fullstatus
- status
- graceful
- graceful-stop
- configtest
Például az apache indítása:
apache2ctl start
Például az apache leállítása:
apache2ctl stop
A graceful parancs a SIGUSR1 jelzést küldi az apache-nak. Ennek hatására, ha az apache nem volt elindítva, akkor elindul. Ha el volt indítva, akkor nem szakítja meg a meglévő kapcsolatokat. Ha leállítjuk a graceful-stop paranccsal az sem szakítja meg a kapcsolatokat.
a2enmod, a2dismod
A modulok engedélyezése, tiltása.
Használata:
Engedélyezés:
a2enmod modulnév
Engedélyezésre példa:
a2enmod php5
Tiltás:
a2dismod mdoulnév
Milyen modulok engedélyezhetők? Nézzük meg a mods-available könyvtár tartalmát:
ls /etc/apache2/mods-available
a2ensite, a2dissite
Site vagy virtualhost engedélyezése, tiltása
a2ensite [site] a2dissite [site]
Például az alapértelmezett site leállítása:
a2dissite default
Milyen sit-ok engedélyezhetők? Nézzük meg a sites-available könyvtár tartalmát:
ls /etc/apache2/sites-available
Milyen sit-ok vannak engedélyezve? Nézzük meg a sites-enabled könyvtár tartalmát:
ls /etc/apache2/sites-enabled
Állapot lekérdezése
/etc/init.d/apache2 status Apache2 is running (pid 3064).
Ha a webszerver nem fut, akkor csak visszakapjuk a promptot.
Több információt kaphatunk az apache2ctl parancs segítségével:
apache2ctl status apache2ctl fullstatus
Beállítás
A konfigurációs állományok szimpla szöveges fájlok (plain text). A fő konfigurációs fájl a httpd.conf, amelynek a helye fordítási időben van beállítva. A „-f” kapcsolóval az „apache2” programnak más konfigurációs fájlok is megadhatók.
Változtatás után az apache újratöltése vagy újraindítása előtt ellenőrizzük a konfigurációs fájl szintaktikáját:
apache2ctl configtest
Egy konfigurációs fájlhoz újabb konfigurációs fájlok illeszthetők az „Include” kulcsszóval. A konfigurációs mondatok nem case sensitvek. A nagy- és kisbetűk használata csak az átláthatóságot szolgálják. A konfiguráció minden módosítása után újra kell töltetni azokat az Apache webszerverrel a következő paranccsal:
service apache2 reload
Telepítés után a beállítások a következő helyen találhatók:
/etc/apache2/
Ezen belül újabb könyvtárakat és állományokat találunk:
- conf-available
- Ebben a könyvtárban elhelyezett állományok konfigurációs fájlként beolvasásra kerülnek.
- conf-enabled
- Ebben a könyvtárban az előző könyvtárból vannak szimbolikus linkek.
- mods-available
- Ebben a könyvtárban az engedélyezhető modulok konfigurációs állományi vannak.
- mods-enabled
- Eebben a könyvtárban az előző könyvtárból vannak szimbolikus linkek.
- Ha itt megtalálható egy modulhoz egy szimbolikus link akkor az engedélyezve van.
- sites-available
- Hozzáférhető webhelyek beállításai
- sites-enabled
- Engedélyezett webhelyek (előző könyvtárból szimbolikus link)
- apache2.conf
- Általános beállítások
- envvars
- Környezeti változók
- httpd.conf
- Saját beállításink helye
- magic
- Kiterjesztések kezelése
- ports.conf
- Használt portok
Naplófájlok
A naplófájlok helye:
/var/log/apache2
Háromféle naplófájl van:
Hibanapló:
/var/log/apache2/error.log
Hozzáférési napló:
/var/log/apach2/access.log
Gyakorlat
Válaszoljon a következő kérdésekre:
- Hogyan telepítjük Debian GNU/Linuxon az Apache webszervert?
- Debian GNU/Linuxon, Apache webszerver esetén hol van a weboldalak alapértelmezett helye?
- Hogyan állíthatom le initscripttel az apache webszervert?
- Hogyan tilthatom le a php5 modult?
- Hogyan kérdezhetem le a webszerver állapotát?
- Debian GNU/Linux alatt hol van az alapértelmezett konfigurációs fájl?
- Hova kerülnek a naplófájlok?
Alapbeállítások
A Debian GNU/Linux rendszeren települő Apache2 azonnal használható.
A naplóállományokban azonban hibaüzenet van, mert egy ikonfájlt vár, amelyet megjelenít a böngészők fülein, ha az adott weblaphoz nincs semmi megadva. Alapértelmezetten azt várja, hogy készítsünk egy 16×16-os ico kiterjesztésű képfájlt.
Az ikonfájlt elkészíthetjük például a GIMP rajzoló, képszerkesztő programmal. Az elkészült ico kiterjesztésű fájlt a szerveren a következő helyre kell menteni, az alábbi néven:
/var/www/favicon.ico
Ha változtatunk az apache beállításain, akkor ellenőrizzük szintaktikailag:
apachectl configtest
Beállítások alkalmazási köre
A beállításokat alkalmazhatjuk könyvtárakra:
<Directory "könyvtárnév">...</Directory>
A beállításokat alkalmazhatjuk könyvtárakra, szabályos kifejezéseket is használva:
<DirectoryMatch "Könyvtárnév">...</DirectoryMatch>
A beállításokat alkalmazhatjuk fájlokra:
<Files "állománynév">...</Files>
A beállításokat alkalmazhatjuk fájlokra, szabályos kifejezéseket is használva:
<FilesMatch "állománynév">...</FilesMatch>
A beállításokat alkalmazhatjuk webhelyre:
<Location "cím">...</Location>
A beállításokat alkalmazhatjuk webhelyre, szabályos kifejezéseket is használva:
<LocationMatch "cím">......</LocationMatch>
A beállításokat alkalmazhatjuk virtuális hostokra:
<VirtualHost>...</VirtualHost>
Modulok
Az apache moduláris felépítésű. Alapértelmezetten csak az alapfunkciók vannak telepítve.
A modulok betöltésére példa:
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so
Elsőként megadtunk egy utasítást, ez után egy modulnevet, a végén pedig a modul elérhetőségének útvonalát.
Fentebb már láttuk, hogy a modulok kezelésére létezik két remek utasítás:
- a2enmod
- a2dismod
Az engedélyezhető modulok megtekintése:
ls /etc/apache2/mods-available
A példakedvéért a PHP5 engedélyezése:
a2enmod php5
Ellenőrzés:
ls /etc/apache2/mods-enabled/php5.load
A core modul
Options
Mindig alapból betöltődő modul.
Lehetővé teszi az Options és az AllowOverride beállíátsokat
Options kapcsoló1 kapcsoló2
Options ExecCGI FollowSymlinks Indexes SymlinksIfOwnerMatch
- ExecCGI
- CGI programok futtathatók
- FollowSymlinks
- Szimbolikus linkek követése
- Location direktívában hatástalan
- Indexes
- Az autoindex modul használatát engedélyezi, vagy tiltja
- SymlinksIfOwnerMatch
- A webkiszolgáló követi a szimbolikus linkeket, ha tulajdonos azonos
- Location direktívában nem használható
A "+" és "-" karakterek használata
A plusz karakterek engedélyeznek valamit, a mínusz karakterek tiltanak egy beállítást. Ezeket a karaktereket nem kötelező kitenni. Ha nem teszem ki a „+” vagy a „-” karaktert, az alapértelmezett a „+”, vagyis engedélyezett.
<Directory /var/web/dir1> Options +Indexes </Directory>
Ennek megfelelően egy tiltás:
<Directory /var/web/dir1> Options -Indexes </Directory>
Természetesen ha nem írom oda az „Indexes” kapcsolót, akkor sem lesz engedélyezve.
AllowOverride
AllowOverride jog1 jog2
A könyvtárakban elhelyezett .htaccess fájlok mit írhatnak felül.
- None
- A .htaccess állomány semmit sem bírálhat felül
- All
- A .htaccess állomány minden felülbírálhat
- Indexes
- A könyvtárindexeléshez kapcsolódó vezérlések lehetősége (A Options Indexes nem tartozik ide! Az az Options-al kell állítani)
- Limit
- Szabályozható, melyik számítógépről érhető el (access modul)
- FileInfo
- Például: Rewrite engedélyezése.
- Options
- felülbírálhatja a biztonsági kapcsolókat
.htaccess használata
A beállítások két módon tehetők meg:
- központi (centralizált) httpd.conf
- helyi (decentralizált) .htaccess
A .htaccess akkor használjuk, ha egy könyvtárnak a beállításait nem központilag akarjuk megoldani. Ez jellemzően akkor van, ha azt egy másik rendszergazdára, vagy a webmesterre bízzuk (továbbiakban a webmesterre fogok hivatkozni).
A webmester létrehoz ezen a néven egy állományt az adott könyvtárban, amiben elhelyezi a beállításait. Hogy mi az amit beállíthat mi határozzuk meg az „AllowOverride” beállítással központilag.
Ha virtuális domainről van szó, akkor szerkesszük a virtuális domain beállításait, ha saját domainünk akkor httpd.conf fájlt:
Szerkesszük a httpd.conf állományt:
mcedit /etc/apache2/http.conf
Az engedélyezést (mint azt fentebb már csináltuk) Directory direktívák között használhatjuk, például:
<Directory /var/www/info> AllowOverride AuthConfig </Directory>
Az AuthConfig teszi lehetővé, hogy a webmester a .htaccess fájlban apache azonosítást állítson be.
Álljon itt egy lista miket szoktunk engedélyezni:
- None
- All
- AuthConfig
- Indexes
- Limit
- Options
Ha több lehetőséget szeretnénk megadni, azt írjuk szóközökkel tagolva egymás után:
<Directory /var/www/info> AllowOverride AuthConfig Options Limit </Directory>
A .htaccess példa
A fájl az aktuális könyvtárra vonatkozik, így nem kell Directory direktíva:
- .htaccess
Options +Indexes
- .htaccess
ErrorDocument 403 /error.php ErrorDocument 404 /error.php ErrorDocument 500 /error.php
Apache azonosítás
Az apache képes weboldalak hozzáférését szabályozni azonosítással. Vagyis nem kell a webmesternek megírni az azonosítási eljárást valamilyen néven, mert az alapból a rendelkezésünkre áll.
A következőkben az auth_basic modul használatával megnézzük hogyan állítsunk be egy azonosítást.
Jelszófájl létrehozása
Az első felhasználót így vesszük fel:
htpasswd -c /etc/apache2/auth/pass joska
A -c kapcsoló a jelszó fájl létrehozására ad utasítást.
A futtatás eredménye:
htpasswd -c /etc/apache2/auth/pass joska New password: titok Re-type new password: titok Adding password for user joska
A következő felhasználónál már nem szükséges a -c kapcsoló:
htpasswd /etc/apache2/auth/pass mari
Ha használjuk mégis a -c kapcsolót, akkor felülírjuk a pass állományt tartalmát.
Beállítás
Az apache konfigurációs állományában be kell állítanunk az azonosítást:
<Directory /home/www/private> AuthType Basic AuthName "Vedett tartomany" AuthUserFile /etc/apache2/auth/pass Require valid-user </Directory>
További lehetőségek
- Require valid-user
- Require user userid [userid2] …
- Require group csoportnev [csportnev2] …
Ha csak mari felhasználó léphet be:
Require user mari
Csoportfájl
A csoportfájl használatának lehetősége a 2.4 apache verzióban külön modulba került, ami alapértelmezetten Debian9-en nincs engedélyezve. Először engedélyezzük az authz_groupfile modult:
a2enmod authz_groupfile
Az apache konfigurációban meg kell adni a csoportfájl helyét:
AuthGroupFile /etc/apache2/auth/groups
A csoportfájl szintaxisa:
csoportnev: nev1 nev2 nev3
Egy csoportfájl így nézhet ki:
informatika: joska mari kati gazdasagi: tibi gabor lajos
A példában két csoport van. Az informatika és a gazdasagi. Az informatika csoportba tartozik joska, mari és kati. A gazdasagi csoportba tartozik tibi, gabor és lajos.
Karakterkódolás
Az apache konfigurációs fájlok kódolása iso-8859-1.
file -i /etc/apache2/apache2.conf
Ezért ha itt kell létrehoznunk egy AuthName értéket, akkor az helytelenül jelenik meg a böngészőben.
Az UTF-8 környezetben megírt szöveget vissza kell kódolnunk iso-8859-1-be.
Kódoljuk át az utf-8 karaktert iso-8859-1-es karakterré:
echo "ékezet" | iconv -f utf8 -t iso-8859-1//TRANSLIT
A kimeneteben valami ilyesmit kell látnunk:
�kezet
Gyakorlat
- Milyen hatókörökre készíthetünk beállításokat?
- Hogyan engedélyezzük egy könyvtár listázását?
- Milyen direktívákat használhatunk a különböző hatókörökre?
- Hogyan állíthatom be mi legyen az alapértelmezetten kiszolgátl fájlnév?
- Hogyan hozok létre egy jelszófájlt?
- Milyen modul kell a basic azonsításhoz?
- Mit jelent a Require valid-user?
- Mit jelent az AuthName „..” értéke?
- Hogyan adjuk meg a csoportfájl helyét?
- Az AllowOverride beállítást, hol és miért alkalmazzuk?
Az authz_host modul
A authz_host modul a 2.0-ás apacheban még access modul néven szerepel!
Allow,Deny
Célja a hozzáférés szabályozása.
Az Allow és a Deny direktívákkal szabályozhatjuk milyen hostról vagy IP címről érhetik el az egyes weboldalakat.
Figyelem! A beállítások alapértelmezetten csak a /var/www/ könyvtárban működnek. Ha a rendszergazda egy új könyvtárat szeretne, például: /home/www, akkor vagy a /etc/apach2/apache2.conf fájlban, vagy az új könyvtárra hivatkozásnál be kell ezt állítani külön:
<Directory /home/www/piros.hu/htdocs> Require all granted </Directory>
Allow from all
Allow from piros.and
Allow from 10.252.46.165
Deny from 10.252.46.165
Allow from 192.168.1.104 192.168.1.205
Minden számítógép számára: all
Deny from all
Allow from 192.168.5.0/255.255.255.0
Allow from 192.168.5.0/24
Allow from 10.1.0.0/255.255.0.0
Allow from 10.1.0.0/16
Allow from 2001:db8::a00:20ff:fea7:ccea Allow from 2001:db8::a00:20ff:fea7:ccea/10
Order
Order sorrend
Szigorúbb
Alapértelmezés szerint mindenkinek tiltott az elérés.
Order Allow,Deny
Először megnézzük az Allow részt. Ha egyetlen Allow rész sem illeszkedik akkor tiltás.
Másodszor megnézzük a Deny részt. Ha illeszkedik egy Deny-re akkor hiába volt engedélyezve, tiltva lesz.
Enyhébb
Alapértelmezés szerint minden ügyfél jöhet.
Order Deny,Allow
Először megnézzük a Deny részt. Ha nincs illeszkedés akkor elérhető a könyvtár.
Másodszor megnézzük a Allow-ot. Ez felül írja a Deny részt is, ha meg volt tiltva, de most szerepel az Allow részben, akkor hozzáférhető.
Hozzférés példa
<Directory /pub> Order Allow,Deny Allow from piros.and Deny from sarga.and </Directory>
<Directory /pub> Order Deny,Allow Deny from 192.168.5.0/24 Allow from 192.168.5.3 </Directory>
A 192.168.5.0 hálózatból nem jöhet senki, csak a 192.168.5.3-as címről.
Webhelyek kezelése
A webhelyeket (sites) a következő két paranccsal kezelhetők:
- a2ensite
- a2dissite
A webhelyek konfigurációs állományait az alábbi könyvtárban tartjuk:
/etc/apache2/sites-available
Mindig létezik egy alapértelmezett webhely „default” néven.
/etc/apache2/sites-available/default
Konfigurációk kezelése
Konfigurációt egy-egy könyvtár számára szoktunk beállítani.
Legyen például a /home/janos/valami könyvtár amit szeretnénk kiszolgálni.
A /etc/apache2/conf-available/ könyvtárban hozzunk létre egy valami.conf nevű állományt a következő tartalommal:
- /etc/apache2/conf-available/valami.conf
<Directory /home/janos/valami> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
Engedélyezzük az konfigurációt:
a2enconf valami
Töltsük újra a szervert:
systemctl restart apache2
Virtualhost beállítása
Minimum
Hozzunk létre például a piros.and domain számára egy állományt:
mcedit /etc/apache2/sites-available/piros.and
Minimális tartalma:
<VirtualHost *:80> ServerAdmin webmaster@piros.and ServerName piros.and ServerAlias www.piros.and DocumentRoot /home/virtual-web/piros.and/htdocs/ # Naplófájlok ErrorLog /home/virtual-web/piros.and/logs/error.log CustomLog /home/virtual-web/piros.and/logs/access.log combined <Directory /home/virtual-web/piros.and/htdocs> Require all granted </Directory> </VirtualHost>
<VirtualHost *:80> ServerAdmin webmaster@piros.and ServerName piros.and ServerAlias www.piros.and DirectoryIndex index.html DocumentRoot /home/virtual-web/piros.and/htdocs/ # CGI könyvtár ScriptAlias /cgi-bin/ /home/virtual-web/piros.and/cgi-bin/ <Location /cgi-bin> Options +ExecCGI </Location> # Naplófájlok ErrorLog /home/virtual-web/piros.and/logs/error.log CustomLog /home/virtual-web/piros.and/logs/access.log combined </VirtualHost>
Ez után töltsük újra a konfigurációt:
/etc/init.d/apache2 reload
Ellenőrizzük milyen hibák vannak:
tail /var/log/apache2/error.log
Engedélyezzük a domaint:
a2ensite piros.and
Ez után töltsük újra a konfigurációt:
/etc/init.d/apache2 reload
Ellenőrizzük a weblap elérhetőségét:
lynx http://piros.and
A website elérésével kapcsolatos hibák ez után itt:
ErrorLog /home/virtual-web/piros.and/logs/error.log
A weblapról elérési adatok:
CustomLog /home/virtual-web/piros.and/logs/access.log combined
IP alapú virtualhost
- /etc/apache2/sites-available
<VirtualHost 192.168.6.1> ServerAdmin valaki@zold.and DocumentRoot /home/www/tanar <Directory /home/www/tanar> Require all granted </Directory> </VirtualHost> <VirtualHost 192.168.7.1> ServerAdmin valaki@zold.and DocumentRoot /home/www/diak <Directory /home/www/diak> Require all granted </Directory> </VirtualHost>
Engedélyezzük a beállítást:
a2ensite systemctl restart apache2
Ellenőrző eszközök
Böngésző
apt-get install lynx
A lynx egy karakteres böngésző.
Terhelés
apt-get install apachetop
MySQL azonosítás
apt-get install libapache2-mod-auth-mysql
a2enmod auth_mysql
mysql -u root -p
grant all on auth.* to auth_user@localhost identified by 'titok';
create database auth;
use auth;
CREATE TABLE `clients` ( `username` varchar(30) NOT NULL default '', `passwd` varchar(25) NOT NULL default '', `groups` varchar(25) NOT NULL default '', PRIMARY KEY (`username`), KEY `groups` (`groups`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `clients` VALUES ('joska', 'titok', 'info');
mcedit /etc/apache2/httpd.conf
Auth_MySQL_Info localhost auth_user titok <Directory /var/www/info> AuthName "Azonositas" AuthType Basic AuthBasicAuthoritative off AuthMySQL On AuthMySQL_Authoritative on AuthMySQL_DB auth AuthMySQL_Password_Table clients AuthMySQL_Group_Table clients AuthMySQL_Empty_Passwords off AuthMySQL_Encryption_Types Plaintext Crypt_DES AuthMySQL_Username_Field username AuthMySQL_Password_Field passwd require valid-user </Directory>
ASP
Néha a webmesterek ASP-t szeretnének futtatni a webszerverünkön. Ehhez Mono nevű csomag telepítésére van szükség:
apt-get install libapache2-mod-mono
SSL
SSL engedélyezése
SSL modul engedélyezése:
a2enmod ssl
# a2enmod ssl Considering dependency setenvif for ssl: Module setenvif already enabled Considering dependency mime for ssl: Module mime already enabled Considering dependency socache_shmcb for ssl: Enabling module socache_shmcb. Enabling module ssl. See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates. To activate the new configuration, you need to run: systemctl restart apache2
Az SSL site engedélyezése:
a2ensite default-ssl
# a2ensite default-ssl Enabling site default-ssl. To activate the new configuration, you need to run: systemctl reload apache2
Tanúsítvány elkészítése
Csináljunk a tanúsítványoknak helyet:
# mkdir /etc/apache2/ssl
A tanúsítványok másik szokásos helye lehet:
/etc/ssl/certs/
Tanúsítvány készítése:
# openssl req -x509 -nodes \ -days 365 -newkey rsa:2048 \ -keyout /etc/apache2/ssl/apache.key \ -out /etc/apache2/ssl/apache.crt
A futtatás eredménye, egy konkrét példán:
# openssl req -x509 -nodes \ -days 365 -newkey rsa:2048 \ -keyout /etc/apache2/ssl/apache.key \ -out /etc/apache2/ssl/apache.crt Generating a 2048 bit RSA private key ..................+++ ........+++ writing new private key to '/etc/apache2/ssl/apache.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:HU State or Province Name (full name) [Some-State]:Hungary Locality Name (eg, city) []:Budapest Organization Name (eg, company) [Internet Widgits Pty Ltd]:ZoldRt Organizational Unit Name (eg, section) []:Informatika Common Name (e.g. server FQDN or YOUR name) []:zold.and Email Address []:admin@zold.and
A kapcsolók rendre:
- -x509 – A tanúsítvány típusa
- -nodes – A titkos kulcs ne legyen DES algoritmussal titkosítva.
- Ha elhagyjuk, akkor 3DES-CBC-el titkosítva lesz kulcs és a jelszót pedig bekéri.
- Ha le lenne titkosítva, meg kellene adni szerver indulásakor a jelszót.
- -days 365 – Egy évig legyen érvényes a tanúsítvány
- -newkey rsa:2048 – A kulcs RSA algoritmussal készüljön, legyen 2048 bites
- -keyout /etc/apache2/ssl/apache.key – a titkos kulcs helye és neve
- -out /etc/apache2/ssl/apache.crt – a tanúsítvány helye és neve
Kulcsok védelme:
# chmod 600 /etc/apache2/ssl/*
Kulcsok beállítása az apache-ban
Kulcsok beállítása az apache-ban.
nano /etc/apache2/sites-available/default-ssl.conf
Tartalmában javítjuk:
[...] SSLCertificateFile /etc/apache2/ssl/apache.crt SSLCertificateKeyFile /etc/apache2/ssl/apache.key [...]
Végül
Apache újraindítása:
systemctl restart apache2
Ellenőrzés:
https://zold.and
Rewrite
A rewritingról
Egy címet, útvonalat újraírhatunk segítségével. Felhasználásának számtalan módja lehet, mi most csak egy egyszerű http https átirányítást fogunk megnézni a példa kedvéért.
A rewrite modul engedélyezése
a2enmod rewrite systemctl restart apache2
Átirányítás
Először engedélyezzük az átírást:
RewriteEngine On
Ellenőrizzük, hogy nincs HTTPS kapcsolat:
RewriteCond %{HTTPS} !=on
Ezek után a kérést átirányítjuk ugyanarra a címre, de https protokollal.
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
Például:
http://zold.and → https://zold.and
A beállításoknak két helye legyen:
- httpd.conf
- .htaccess
A .htaccess fájlban való használathoz be kell állítani a httpd.conf fájlban a következő tulajdonságot:
AllowOverride
Esetleg az alábbi sor helyettesíthető:
RewriteCond %{HTTPS} !=on
ezzel:
RewriteCond %{HTTPS} off
Könyvtár megadása
A következő sorokat tegyük a .htaccess fájlba.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?secure/(.*) https://%{SERVER_NAME}/secure/$1 [R,L]
Például:
Favicon példa
# REDIRECT FAVICON REQUESTS <ifmodule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} !^/favicon\.ico [NC] RewriteCond %{REQUEST_URI} favicon\.ico [NC] RewriteRule (.*) http://domain.tld/favicon.ico [R=301,L] </ifmodule>
Átirányítás
Minden hivatkozást átirányítunk egy másik címre. Lehet /etc/apache2/httpd.conf, vagy egy helyi .htaccess fájlban.
Lehet Directory direktíva között:
<Directory /var/www/ati> RedirectMatch permanent ^(.*)$ http://masikdomain.valahol </Directory>
Lehet Location direktíva között:
<Location /ati> RedirectMatch permanent ^(.*)$ http://masikdomain.valahol </Location>
A következő példában ha a blog könyvtár vagy annak egy alkönyvtárrára hivatkozik valaki, akkor átirányítás történik:
RedirectMatch 301 ^/blog/.*$ http://domain.tld/target.html
Ha csak a blog könyvtárra szeretnénk:
RedirectMatch 301 ^/blog/$ http://domain.tld/target.html
Esetleg csak domainnel:
RedirectMatch 301 ^/blog/$ http://domain.tld/
Más variációk, amelyekben benne van az ideiglenes (302) és a tartós (301) átirányítás:
# Tartós átirányítás RedirectMatch 301 ^/blog/.*$ http://domain.tld/target.html # Ideiglenes átirányitás: RedirectMatch 302 ^/blog/.*$ http://domain.tld/target.html
Ilyeneket is írhatunk:
# Állandó átirányítás: RedirectMatch permanent ^/blog/.*$ http://domain.tld/target.html # Ideigelnes átirányítás: RedirectMatch temp ^/blog/.*$ http://domain.tld/target.html
Port és IP cím
Az /etc/apache2/ports.conf állományban alapértelmezetten be van állítva a 80-as port használatra. Ebben az állományban megadhatunk más portokat is a „Listen” direktívával.
Listen 80
A Listen direktíva többször is használható, megadhatunk újabb portokat is:
Listen 80 Listen 8000
Egyszerre megadható IP cím is:
Listen 192.168.1.1:80
Megahdató IPv6-os cím is:
Listen 2001:db8::
Minden IP címen figyelünk:
Listen 0:0:0:0:80
CGI
CGI futtatható a könyvtárból.
<Directory /usr/local/apache2/htdocs/somedir> Options +ExecCGI </Directory>
CGI scriptek kiterjesztésének megadása:
AddHandler cgi-script .cgi .pl
A .cgi és a .pl kiterjesztéseket szeretnénk használni.
<Directory /usr/local/apache2/htdocs/somedir> Options +ExecCGI AddHandler cgi-script .cgi </Directory>
<Directory /usr/local/apache2/htdocs/somedir> Options +ExecCGI SetHandler cgi-script </Directory>
Egy CGI program:
- program.cgi
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "Helló Világ";
Ellenőrzés
apt-get install apache2-utils ab http://domainnev.hu/konyvtar
Sebesség teszt. Csak domainre nem működik, alkönyvtárra használjuk.
Userdir
A felhasználóknak szeretnénk lehetővé tenni, hogy saját weblapjaikat a public_html könyvtárban elhelyezhessék, azokra így hivatkozhassanak a böngészőben:
http://domainnev/~felhasznalonev/
Ehhez engedélyeznünk kell a userdir modult:
a2enmod userdir service apache2 restart
Ha PHP is szeretnénk nekik engedélyezni, akkor:
mcedit /etc/apache2/mods-available/php5.conf
Megkeressük a következő részt:
<IfModule mod_userdir.c> <Directory /home/*/public_html> php_admin_value engine Off </Directory> </IfModule>
A php_admin_flag engine On sort be kell szúrni.
<IfModule mod_userdir.c> <Directory /home/*/public_html> php_admin_value engine Off php_admin_flag engine On </Directory> </IfModule>
Biztonsági okokból, konkrétan, hogy egyik felhasználó ne lásson a másik könyvtárába, a joska felhasználónak lehet be van állítva a következő:
chmod o-x /home/joska
Ebben az esetben nem fog működni a böngészőben a http://servernev/~joska/ Sajnos engedélyezni kell:
chmod o+x /home/joska
PHP modulok
# apt install php7.0 php7.0-mysql php7.0-xml
PHP kezelése
Telepítése után nem minden modul kerül engedélyezésre.
PHP modulok engedélyezése:
php5enmod imap service apache2 restart
Modulok megtekintése:
php -m
Teljesítmnyteszt
Az ab parancs az apache2-utils csomag része. Az ab parancs segítségével teljesítményteszteket végezhetünk a webszerverünkön:
ab -n 1000 -c 100 http://localhost/
-n | a kérések száma |
-c | a konkurens kérések száma |
Konfig
<Directory /valahol/utvonal/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
sudo service apache2 restart
Feladatok
Feladat 001
Készítse el a következő könyvtárat:
/var/www/szamvitel
Állítsa be a következőket:
- nem indexelhető
- könyvtárlista látszik
- kezdőlap: elso.html
Feladat 002
Készítse el a következő könyvtárat:
/var/www/info
Állítsa be a következőket:
- indexelhető
- könyvtárlista látszik
- kezdőlap nincs
Hozza létre a következő két állományt:
- jelszo.html
- telepites.html
Feladat 003
Készítse el a következő könyvtárat:
/usr/local/ets
Hozza létre a következő tartalmú állományt:
<?php phpinfo(); ?>
Hozzon létre Aliast a könyvtárra.
Feladat 004
Készítse el a következő könyvtárat:
/var/www/raktar
Állítsa be a következőket:
- legyen listázható
- kiinduló állomány: kezdes.html
- Hozza létre még a következő két állományt
- torzs.html
- selejt.html
Feladat 005
Készítse el a következő könyvtárat:
/var/www/kommunikacio
Állítsa be a következőket:
- ne legyen listázható
- kiindulási állomány: index.html
Feladat 006
- Tartomány A 192.168.8.
- Tartomány B 192.168.5.
Feladat 101
Vegyen fel egy új Virtualhostot:
lila.org
Dokumentumroot:
/home/virtual-www/lila.org/htdocs
Naplózás:
/home/virtual-www/lila.org/
Alias:
- w3.lila.org
- kekespiros.org
/etc/hosts
Feladat 102
Vegyen fel egy új Virtualhostot:
gomb.hu
Docroot:
/home/virtual-www/gomb.hu/www
Naplózás:
/home/virtual-www/gomb.hu/
Alias:
- www
- kis
- nagy
- perem
Azonosítás:
/home/virtual-www/gomb.hu/www/vedett
A következő felhasználók legyenek:
- tamas
- lori
- peti
Jelszó fájl:
/home/virtual-www/gomb.hu/jelszo
Feladat 103
Vegyen fel egy új Virtualhostot:
pater.hu
DocRoot:
/home/vhosts/pater.hu/www/
Naplózás:
/home/vhosts/pater.hu/error.log /home/vhosts/pater.hu/access.log
Alias:
- arend.pater.hu
Állítsa be a következőket:
/home/vhosts/pater.hu/www/novicius
- A „rend” nevű csoport csak olvashatja
- A „novicius” csoport csak azonosítással olvashatja
Csoportok:
- rend tagjai
- apat
- peter
- tibor
- elemer tagjai:
- izsak
- feri
Feladat 104
Vegyen fel egy új Virtualhostot:
pirosszolo.hu
DocRoot:
/home/vhosts/pirosszolo.hu/public_html
Naplózás:
/home/vhosts/pirosszolo.hu/
Alias:
- redszolo.hu
A következő könyvtárszerkezetet alakítsa ki:
../public_html |-- html |-- arak |-- bevetel
Azonosításhoz csoportok:
- Csoportok
- ugyfel
- mankft
- jozsibt
- vker
- borasz
- juli
- mari
- tercsi
Irodalom
Könyv
- Daniel Lopez: Apache zsebkönyv
- ISBN: 9789639637320
- Ken Coar, Rich Bowen: Apache receptek
- Megoldások és példák Apache-rendszergazdáknak
- ISBN: 9789639637481
- Ben Laurie, Peter Laurie: Apache
- ISBN: 963-09-4265-8
Linkek
- http://www.netlock.net/docs/segedletek/szerver_apache_tanusitvanyigenyles_sha256.pdf (Tanúsítvány igénylése)
SSL: