• LW

  • Otthoni webszerver titkosítással (SSL)

  • 2009. Oct. 24. 02:53
Az otthoni szerver beüzemelésről már volt szó, így itt az ideje, hogy szolgáltatásokat is tegyünk rá.
A cikk tartalma kulcsszavakban: Webszerver, SSL, szerveres beléptetés, dinamikus DNS, autoindex.
Mielőtt belekezdenénk fontos, hogy a szükséges programok telepítve legyenek: Apache2, PHP, (MySQL), OpenSSL. Továbbá feltételezzük, hogy alapkonfigurációnk van.

Az első lépés engedélyezni a szükséges apache modul(ok)at:
Az /etc/apache2/mods-available/ mappából átmásoljuk az ssl.conf és ssl.load fájlokat az /etc/apache2/mods-enabled/ mappába így automatikusan be fognak töltődni. De ha külön meghívjuk őket az apache2.conf vagy a httpd.conf fájlból az is megfelel. A lustáknak pedig ott az "a2enmod ssl" parancs.

Az /etc/apache2/ports.conf fájlban ez a 2 sor kell szerepeljen:
Kód
NameVirtualHost *:443
Listen 443

Ezután átírjuk az alap virtualhost-ot. Illetve akár létrehozhatunk egy újat is.
Az alap konfig fájl helye: /etc/apache2/sites-available/default

Íme egy konkrét példa, utána megmagyarázom a fontosabb sorokat:
Kód
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
	<Directory />
		Options FollowSymLinks
		Order deny,allow
		Deny from all
		AuthUserFile /var/www/.htpasswd
		AuthGroupFile /var/www/.htgroup
		AuthName "LW"
		AuthType Basic
		Require valid-user
	</Directory>
	
	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride all
		Order allow,deny
		Allow from all
		Require valid-user
	</Directory>
	
	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride all
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		SSLOptions +StdEnvVars
		Order allow,deny
		Allow from all
		Require valid-user
	</Directory>
	
	ErrorLog /var/log/apache2/error.log
	LogLevel warn
	CustomLog /var/log/apache2/access.log combined
</VirtualHost>

Fontos, hogy az első sorban a port 443 legyen, ugyanis ez az alapértelemzett SSL port, így fog tudni a böngésző https:// hívással rátalálni. Az SSLEngine on sor aktiválja a titkosított kapcsolatot. A következő 3 sor is az SSL beállításáért felel és hacsak nincs egy aláírt SSL tanusítvány a kezünkben, ami otthonra nem is lesz, kénytelenek leszünk beérni egy saját kezűleg aláírt tanusítvánnyal, amit első alkalommal jóvá kell majd hagyni a böngészőből, ha megnyitunk egy oldalt. Ilyen tanusítványt a rendszer már automatikusan generált: ssl-cert-snakeoil. A Directory elemekhez nem kell nyúlnunk, ha az alapértelmezett /var/www/ a DocumentRoot, ha nem akkor állítsuk be az útvonalakat. Az AllowOverride all opcionális. Ez aktiválja a mod_rewrite néven ismert modult. Ha nem használjuk szedjük ki.

Ha szeretnénk globálisan jelszóval védeni az egész virtualhostot, akkor van szükségünk erre:
Kód
AuthUserFile /var/www/.htpasswd
AuthGroupFile /var/www/.htgroup
AuthName "LW"
AuthType Basic
Require valid-user

Fontos, hogy a legfelső szintű mappánál legyen, hogy mindenhol érvényesüljön. A Require sor mondja meg, hogy kik léphetnek be. Ha a ez "valid-user", akkor bárki, aki benne van a htpasswd fájlban, ha "user felhasznalo_egy", akkor csak egy bizonyos felhasználó, ugyan így a csoportoknál: "group csoport_egy". A felhasználók és jelszavak ebben az esetben a /var/www/.htpasswd fájlban a csoportok a /var/www/.htgroup fájlban vannak. A .htpasswd fájlt hozzuk létre, majd 2 lehetőségünk van a felhasználók hozzáadására: Vagy a "htpasswd /var/www/.htpasswd felhasznalo_egy" parancsot használjuk, vagy egy generátorral elkészíttetjük a kódot és beillesztjük. Ha csoportokat is szeretnénk, akkor a .htgroup fájl egy sora így kell kinézzen:
csoport_egy: felhasznalo_egy felhasznalo_ketto

Az alap ezzel kész is van. Ha minden jól csináltunk az apache újraindítása (apache2ctl restart) után működnie kell a belső hálózaton. Ha router mögött van a gép, akkor a 443-mas portra kell egy portforward, ami az adott gépre küld minden bejövő kapcsolatot ezen a porton. Ahhoz, hogy a netről is elérhető legyen és nincs statikus IP címünk, szükségünk lesz egy dinamikus DNS szolgáltatásra is, például DynDNS.org, dtdns.com.

A különféle PHP, Javascript, stb alapú megosztó programokon túl túl ajánlom az autoindex nevű modult, ami nagyon egyszerű readonly megosztást tud. Ezt is a mods-enabled mappába kell másolni (autoindex.conf és autoindex.load) vagy külön betölteni egy globális konfigfájlba. A konfig fájl (autoindex.conf) jól kommentálva van, így nem okozhat különösebb gondot a testreszabása se. Természetesen a megosztandó mappáknak is kell egy Directory elem a virtualhost-ba pontosan a többihez hasonlóan, illetve egy alias elé:
Alias /megosztas "/home/mappa/megosztas".

Ajánlott Cikkek

Komment küldése
A komment küldéshez regisztráció szükséges!
Bejelentkezés / Regisztráció