Név alapú virtuális hosztok optimális könyvtárszerkezete, működétetése, alapvető biztonsági beállításokkal.
A teszt
szerver kialakítása cikk alapján, remélhetőleg egy működő HTTP
kiszolgáló rendszert hoztunk létre. A rendszer, ugyan működik, de sok
mindenre ebben a formában még nem alkalmas, nehezen kezelhető.
Gondoljunk csak bele, ahány honlap, annyi igény és a rendszer
biztonságáról sem szabad megfeledkezni.
A következőkben szó lesz arról, hogyan lehet végrehajtani a minimálisan szükséges finomításokat, továbbá, hogyan lehet elérni szerverünket saját gépnév alól, hogyan lehet létrehozni fejlesztés szempontjából is egy optimális könyvtárszerkezetet, hogyan lehet létrehozni név alapú virtuális hosztokat, és azokat működésre bírni, alapvető biztonsági beállításokkal.
Vegyük figyelembe, hogy egy éles rendszernél, sokkal több dologra kell tekintettel lenni az itt leírtaknál! Az alábbi leírás Debian/Ubuntu Linuxra vonatkozik, de átvihető más disztribúcióra is, azonban egyes telepítési könyvtárak, konfigurációs állományok különbözhetnek. A leírás-sorozat helyi sajátosságok, könnyebb kezelhetőség, kockázatok mérséklése miatt sok helyen eltér egy „standard” változattól!
~$ mkdir /home/user/public_html
# cp /var/www/test.php /home/user/public_html/A „/var/www” könyvtár a továbbiak szerint szükségtelen, de törlése nem kötelező.
~$ mkdir /home/user/public_html/site1 /home/user/public_html/site2 /home/user/public_html/site3
~$ mkdir /home/user/public_html/cgi-bin /home/user/public_html/site1/cgi-bin /home/user/public_html/site2/cgi-bin /home/user/public_html/site3/cgi-bin
~$ chmod -R 0775 /home/user/public_html/site1 /home/user/public_html/site2 /home/user/public_html/site3vagy elég ennyi is:
~$ chmod -R 0775 /home/user/public_htmlHa később dinamikusan szeretnénk létrehozni fájlokat, vagy fájlba írni, 0777 jogosultság szükséges:
~$ chmod -R 0777 /home/user/public_htmlArchív állományból való feltöltés esetén, ezt a műveletet újra el kell végezni.
# mkdir /home/user/szerver_log
Megjegyzés: Egyes disztribúciók a hostokra vonatkozó a külön-külön konfigurációs tartalom tárolása helyett, az /etc/apache2/httpd.conf körülményesebben karbantartható állományt részesítik előnybe. A továbbiakban nem lesz rá szükség, átnevezhető vagy törölhető.
# gedit /etc/apache2/sites-available/localhost
<VirtualHost *:80> ServerName localhost ServerAdmin opcionális@megadni.hu DocumentRoot /home/user/public_html/ AddDefaultCharset UTF-8 AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen ErrorLog /home/user/szerver_log/localhost.error_log CustomLog /home/user/szerver_log/localhost.access_log combined ### Ezt a részt innen minden host-hoz be kell tenni!!! ### HostnameLookups Off UseCanonicalName Off ServerSignature Off # Könyvtár listázás tiltása: IndexIgnore * # szerver hiba: ErrorDocument 500 "Szerver hiba, ne piszkáld!" # ErrorDocument 500 "Szerver hiba, ne piszkáld!" # Tiltott: ErrorDocument 403 "Nincs jogosultságod! Ne piszkáld!" # ErrorDocument 403 "Nincs jogosultságod! Ne piszkáld!" ### Eddig illeszteni!!! ### ScriptAlias /cgi-bin/ "/home/user/public_html/cgi-bin/" <Directory "/home/user/public_html/cgi-bin"> AllowOverride None Options +ExecCGI -Includes Order allow,deny Allow from all </Directory> <Directory "/home/user/public_html/"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> # phpMyAdmin elérése a http://localhost/phpmyadmin/ címen: Alias /phpmyadmin /usr/share/phpmyadmin
# a2dissite default
# a2ensite localhost
# apache2ctl configtestErre a parancsra újra jelezni fogja a domain-név hiányát!
# /etc/init.d/apache2 reload
uname -nAz itt megtalált nevet kell alkalmazni a home-host helyett!
# gedit /etc/apache2/sites-available/home-host
<VirtualHost *:80> ServerName home-host.home ServerAlias home-host ServerAdmin opcionális@megadni.hu DocumentRoot /home/user/public_html/ AddDefaultCharset UTF-8 AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen ErrorLog /home/user/szerver_log/home-host.error_log CustomLog /home/user/szerver_log/home-host.access_log combined ### A /etc/apache2/sites-available/localhost fájlból, a kommentek közti részt ide illeszteni! ### ScriptAlias /cgi-bin/ "/home/user/public_html/cgi-bin/" <Directory "/home/user/public_html/cgi-bin"> AllowOverride None Options +ExecCGI -Includes Order allow,deny Allow from all </Directory> <Directory "/home/user/public_html/"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
# a2ensite home-host
# apache2ctl configtestErre a parancsra újra jelezni fogja a domain-név hiányát!
# /etc/init.d/apache2 reload
# gedit /etc/apache2/sites-available/site1
<VirtualHost *:80> ServerName site1.home ServerAlias site1 ServerAdmin opcionális@megadni.hu DocumentRoot /home/user/public_html/site1/ AddDefaultCharset UTF-8 AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen ErrorLog /home/user/szerver_log/site1.error_log CustomLog /home/user/szerver_log/site1.access_log combined ### A /etc/apache2/sites-available/localhost fájlból, a kommentek közti részt ide illeszteni! ### ScriptAlias /cgi-bin/ "/home/user/public_html/site1/cgi-bin/" <Directory "/home/user/public_html/site1/cgi-bin"> AllowOverride None Options +ExecCGI -Includes Order allow,deny Allow from all </Directory> <Directory "/home/user/public_html/site1/"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
# a2ensite site1
# apache2ctl configtestErre a parancsra újra jelezni fogja a domain-név hiányát!
# /etc/init.d/apache2 reload
# gedit /etc/hosts
127.0.0.1 localhost 127.0.1.1 home-host.home home-host 127.0.2.1 site1.home site1 127.0.2.2 site2.home site2 127.0.2.3 site3.home site3 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
# gedit /etc/apache2/ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
# SSL name based virtual hosts are not yet supported, therefore no
# NameVirtualHost statement here
Listen 443
</IfModule># /etc/init.d/apache2 reload
Az eddigi munka sikeressége könnyen ellenőrizhető egy egyszerű index fájl jelenlétével az alap szerver gyökér könyvtárába.
~$ gedit /home/user/public_html/index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>VirtualHostok</title> </head> <html> <ul> <li><a href="http://site1">Site1</a></li> <li><a href="http://site2">Site2</a></li> <li><a href="http://site3">Site3</a></li> <!-- A következő három sor külső támadási felületet eredményezhet erős jelszó és biztonsági beállítások hiányában! --> <li><a href="http://home-host/phpmyadmin/">PhpMyAdmin home-hostról</a></li> <li><a href="http://localhost/phpmyadmin/">PhpMyAdmin localhostról</a></li> <li><a href="test.php">Szerver teszt</a></li> </ul> </html>
A .htaccess fájl segítségével lehet szabályozni szerver állományokhoz való hozzáféréseket, átirányításokat, hibaüzeneteket, tartalmak jelszavas védelmét. Az Apache2-ben alapból nincs engedélyezve a .htaccess.
# a2enmod rewrite
# /etc/init.d/apache2 restart
A .htaccess fájlt mindig 644 jogosultsággal kell elmenteni. ~NIX rendszereken a ponttal kezdődő fájl rejtett!
Eddig még, nem foglalkoztunk semmilyen hibakeresővel. Telepítése szándékosan maradt a végére, így a kész rendszerhez állíthatjuk be. Az Xdebug telepítése és beállítása következik:
# apt-get install php5-dev php-pear
# pecl install xdebug
# gedit /etc/php5/apache2/php.ini
[xdebug] zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so" xdebug.remote_enable=1 xdebug.remote_host="home-host" xdebug.remote_port=9000 xdebug.remote_mode="req" xdebug.remote_handler="dbgp" extension="xdebug.so"
# /etc/init.d/apache2 restart
Tovább » MySQL adatbázisok beállítása phpMyAdmin-nal
Tovább » Az Apache szerver alapvető biztonsága, PHP verzió elrejtése:
A legtöbb tárhelyszolgáltató UNIX (Linux) alapú szervert működtet, éppen ezért érdemes minél jobban megismerni. Jól működő weboldalak elengedhetetlen kelléke, a fejlesztőgépen való tesztelés lehetősége, asztali…
A phpMyAdmin, MySQL adatbázisok internetes menedzselésére PHP nyelven írt grafikus felületű eszköz, mely támogatja a leggyakrabban használt adatbázis műveleteket: adatbázisok kezelése, táblázatok, mezők, kapcsolatok, indexek,…
Amint egy bármilyen számítógép internetes hálózatra kapcsolódik mindig fenn áll a veszélye, hogy valaki(k) adatokat próbálnak megszerezni, vagy még ezen is túl, megszerezni a számítógép irányítását. Példának okáért az…
A webszerverek különböző sorszámú kódokat küldenek a HTTP munkameneteknek, amelyek naplózási adatokból visszakövethetőek és biztonságtechnikailag felhasználhatóak. Egy részük a fellépő hibákra utalnak, míg más részük a…
Bármely web-oldal életképességének sikere megköveteli a folyamatosan változó látogatói tendenciák követését, a kliensektől érkező információk olyan elemzését, amely konstruktívabb következtetések levonására képeznek…
Az informatika fejlődése során számos karakterkódolási eljárás primitív elképzelésre épűl, csak részben tudják kielégíteni a különböző nemzetek elvárásait. A változás folyamatát elősegítő technikai követelmények…