Weboldal keresés

Virtuális gazdagépek létrehozása, SSL-tanúsítványok és kulcsok generálása, valamint a CGI-átjáró engedélyezése a Gentoo Linuxban


A legutóbbi oktatóanyag a LAMP telepítése Gentoo Linux rendszerben témájában éppen az alapvető telepítési folyamatot ismertette, anélkül, hogy az Apache számára további beállítások álltak volna rendelkezésre a tartományok jobb irányítása érdekében.

Ez az oktatóanyag szorosan kapcsolódik a Gentoo LAMP előzőhöz, és a LAMP környezet extra beállításait tárgyalja, mint például virtuális gazdagépek létrehozása Apache-on, generálása >SSL Tanúsítványfájlok és kulcsok, engedélyezze a biztonságos SSL protokollt a HTTP-tranzakciókhoz, és használja az Apache CGI Gateway-t, hogy futtathassa a Perl vagy Bash szkriptek a webhelyén.

Követelmények

  1. Telepítse a LAMP-ot Gentoo Linuxra

1. lépés: Az Apache Virtual Hosts létrehozása

Ez a témakör hamis tartománynevet használ – gentoo.lan –, amely a helyi hosts fájlon keresztül engedélyezett, a webhelyfájlok a /var/www/gentoo.lanDocumentRoot címről szolgálnak ki. direktíva érvényes DNS rekord nélkül, amely bemutatja, hogyan lehet több virtuális gépet engedélyezni a Gentoo-n az Apache webszerver használatával.

1. Kezdésként nyissa meg a Gentoo hosts fájlt szerkesztésre, és adjon hozzá egy új sort a domain nevével.

sudo nano /etc/hosts

A fájl végén hasonlítson ehhez.

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. Tesztelje hamis domainjét a ping paranccsal, és a domainnek az IP-címével kell válaszolnia.

ping -c2 gentoo.lan

3. Az Apache Virtual Hosts aktiválásának folyamata meglehetősen egyszerű. Csak nyissa meg az Apache alapértelmezett virtuális gazdagép fájlját, amely az /etc/apache2/vhosts.d/ elérési úton található, és az utolsó utasítás előtt írja be az új Virtual Host definíciót a < alatt. irányelvek. c

Tartalmazza az egyéni beállításait, például a ServerName és a DocumentRoot elérési utat. Használja a következő fájlsablont útmutatóként egy új virtuális gazdagéphez, és helyezze el a 00_default_vhost.conf fájlba (nem SSL webhelyek esetén).

sudo nano /etc/apache2/vhosts.d/00_default_vhost.conf
## Another Virtual hosts statemes ending in </VirtualHost> ###

<VirtualHost *:80>
        ServerName gentoo.lan
        DocumentRoot "/var/www/gentoo.lan"
                        <Directory "/var/www/gentoo.lan"
                Options Indexes FollowSymLinks ExecCGI MultiViews
         # AllowOverride controls what directives may be placed in .htaccess files.       
                        AllowOverride All
        # Controls who can get stuff from this server file
                        Order allow,deny
                        Allow from all
        </Directory>
        <IfModule mpm_peruser_module>
                ServerEnvironment apache apache
        </IfModule>
</VirtualHost>

## Another Virtual hosts statemes ###
## LAST STATEMENT which closes virtual hosts file ##

</IfDefine>

Amint azt a fájl tartalmának megjelenítéséből láthatja, a fájlt nagymértékben kommentálják magyarázatokkal, és megtartja a localhost Virtual Host definíciót is – amelyet útmutatóként használhat.

4. Miután befejezte a fájl szerkesztését az egyéni virtuális gazdagéppel, indítsa újra az Apache-t a beállítások alkalmazásához, és győződjön meg róla, hogy létrehozta a DocumentRoot könyvtárat arra az esetre, ha módosította ezt az utasítást, és az elérési út 'nem létezik alapértelmezés szerint (ebben az esetben a következőre módosult: /var/www/gentoo.lan). Létrehoztam egy kis PHP fájlt is a webszerver konfigurációk tesztelésére.

sudo mkdir /var/www/gentoo.lan
su "echo '<?php phpinfo(); ?>' > /var/www/gentoo.lan/info.php"
sudo /etc/init.d/apache2 restart

5. Az ellenőrzéshez nyisson meg egy böngészőt, és mutasson rá virtuális domainnevére http://gentoo.lan/info.php.

Ezzel az eljárással tetszőleges számú nem SSL webhelyet adhat hozzá az Apache Virtual Hosts segítségével, de egy valódi internet felé néző gép esetén győződjön meg arról, hogy a domainjei regisztrálva vannak, és érvényes DNS-kiszolgáló rekordokat használ.

Egy virtuális gazdagép eltávolításához írja be megjegyzéssel vagy törölje a alatt található direktívákat a 00_default_vhost.conf fájlban.

2. lépés: SSL-tanúsítványok és kulcsok létrehozása a virtuális gazdagépekhez

Az SSL egy titkosítási protokoll, amelyet biztonságos kommunikációs csatornán keresztül történő információcserére használnak az interneten vagy a belső hálózatokon tanúsítványok és szimmetrikus/aszimmetrikus kulcsok segítségével.

6. A tanúsítványok és kulcsok létrehozási folyamatának egyszerűsítéséhez használja a következő Bash-szkriptet, amely parancsként működik, és automatikusan létrehoz mindent, amire szüksége van az SSL-tartománynév-beállításokkal.

Először a Bash szkript létrehozásával kezdje el a következő paranccsal.

sudo nano /usr/local/bin/apache_gen_ssl

Adja hozzá a következő fájltartalmat.

#!/bin/bash
mkdir /etc/apache2/ssl
cd /etc/apache2/ssl
echo -e "Enter a name for this certificate:\nEx: mydomain.lan"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate $cert has been generated!\nPlease link it to Apache SSL website!"
ls -all /etc/apache2/ssl/
exit 0

7. A fájl létrehozása után fűzze hozzá a végrehajtási engedélyeket, és futtassa az SSL-kulcsok és -tanúsítványok generálásához.

sudo chmod +x /usr/local/bin/apache_gen_ssl
sudo apache_gen_ssl

Amikor első alkalommal futtatja, meg kell adnia a domain nevét. Adja meg a domain nevét, amelyhez SSL-beállításokat generál, és töltse ki a tanúsítványt a szükséges adatokkal, a legfontosabb, a közös név, használja a szerver FQDN-jét.

Az alapértelmezett hely, ahol minden tanúsítványa és kulcsa tárolva van ezzel a módszerrel: /etc/apache2/ssl/.

8. Most itt az ideje létrehozni a gentoo.lan Virtual Host SSL megfelelőjét. Használja ugyanazt a módszert, mint a nem SSL virtuális gazdagépeknél, de ezúttal szerkessze az /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf fájlt kis változtatásokkal.

Először nyissa meg a fájlt szerkesztésre, és hajtsa végre a következő módosításokat.

sudo nano /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf

A Listen 443 direktíva alatt adja hozzá a következő tartalmat.

NameVirtualHost *:443

Használja a következő sablont egy új virtuális gazdagéphez, és fűzze hozzá az új SSL-tanúsítvány + kulcs elérési útját és neveit.

## Another Virtual hosts statemes ending in </VirtualHost> ###

<VirtualHost *:443>
                ServerName gentoo.lan
    DocumentRoot "/var/www/gentoo.lan"
                ErrorLog /var/log/apache2/gentoo.lan-ssl_error_log
                <IfModule log_config_module>
                                TransferLog /var/log/apache2/gentoo.lan-ssl_access_log
                </IfModule>

                SSLEngine on
                SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

## Edit with new generated SSL certificate and key and change path to /etc/apache2/ssl/

		SSLCertificateFile /etc/apache2/ssl/gentoo.lan.crt
		SSLCertificateKeyFile /etc/apache2/ssl/gentoo.lan.key

                <Directory "/var/www/gentoo.lan">
                                Options Indexes FollowSymLinks ExecCGI MultiViews Includes
                                AllowOverride All
			        Order allow,deny
        			Allow from all
                </Directory>

                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>

                <Directory "/var/www/gentoo.lan ">
                                SSLOptions +StdEnvVars
                </Directory>

                <IfModule setenvif_module>
                                BrowserMatch ".*MSIE.*" \
                                                nokeepalive ssl-unclean-shutdown \
                                                downgrade-1.0 force-response-1.0
                </IfModule>

                <IfModule log_config_module>
                                CustomLog /var/log/apache2/ssl_request_log \
                                                "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
                </IfModule>
</VirtualHost>

## Another Virtual hosts statements ###

A Virtual Hosts definícióknak ez utóbbi három utasítás előtt kell véget érniük.

</IfModule>
</IfDefine>
</IfDefine>

9. A Virtual Host fájl szerkesztésének befejezése után indítsa újra az Apache szolgáltatást, és irányítsa böngészőjét a domainjére a https://gentoo.lan HTTPS protokoll használatával.

sudo /etc/init.d/apache2 restart

Ezzel az eljárással hozzáadhat SSL-webhelyeket saját tanúsítványokkal és kulcsokkal az Apache Virtual Hosts segítségével. Az SSL Virtual Hosts eltávolításához írja ki vagy törölje a /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf fájl alatt található direktíváit.

3. lépés: A CGI interfész engedélyezése

A CGI (Common Gateway Interface) lehetővé teszi az Apache számára, hogy külső programokkal kommunikáljon, elsősorban Perl- vagy BASH-szkriptekből, amelyek dinamikus tartalmat adhatnak webhelyéhez.

10. A CGI-átjáró engedélyezése előtt győződjön meg arról, hogy az Apache a USE CGI modulok jelzőinek támogatásával lett lefordítva a Portage make.conf fájlban: cgi cgid . Az Apache GCI-támogatásának engedélyezéséhez nyissa meg az /etc/conf.d/apache2 fájlt, és fűzze hozzá a CGI-modult az APACHE2_OPTS sorhoz.

sudo nano /etc/conf.d/apache2

Győződjön meg arról, hogy ez a sor hasonló tartalommal rendelkezik.

APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D STATUS -D CGI"

11. A CGI-modulok engedélyezése után nyissa meg a webhelydefiníciós gazdagépet, amelyhez engedélyezni szeretné a CGI-felületet, és adja hozzá a következő tartalmat a Virtual Host direktívákhoz.

<Directory "/var/www/gentoo.lan">
	Options Indexes +ExecCGI MultiViews
        AddHandler cgi-script .cgi .pl
	DirectoryIndex index.cgi index.php index.html index.pl
        AllowOverride All
        Order allow,deny
        Allow from all
</Directory>

12. Ha a DocumentRoot (/var/www/gentoo.lan/) elérési útjában van egy könyvtár, amely CGI-szkripteket tartalmaz, akkor csak ebben a könyvtárban engedélyezheti a dinamikus Perl kiszolgálását. vagy Bash szkripteket.

ScriptAlias /cgi-bin/ /var/www/gentoo.lan/cgi-bin/

<Location /cgi-bin>
                Options +ExecCGI
AddHandler cgi-script .cgi .pl
 DirectoryIndex index.cgi index.php index.html index.pl
</Location>

13. SSI (Server Side Includes) esetén fűzze hozzá a +Includes utasítást az Options részhez, és adja hozzá az .shtml fájlkiterjesztést.

<Directory "/var/www/gentoo.lan">
                                Options Indexes +ExecCGI +Includes
                                AddHandler cgi-script .cgi .pl
                AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
        DirectoryIndex index.shtml index.cgi index.pl index.php index.html
                AllowOverride All
                Order allow,deny
                Allow from all
</Directory>

14. Néhány egyszerű .cgi és .pl szkript teszteléséhez az Apache CGI átjárón hozza létre a következő szkripteket a Virtual Host DocumentRoot ( /var/www/gentoo.lan/).

Perl szkript
sudo nano /var/www/gentoo.lan/env.pl

Adja hozzá a következő Perl-tartalmat.

#!/usr/bin/perl
print "Content-type: text/html\n\n"; foreach my $keys (sort keys %ENV) { print "$keys =
$ENV{$keys}<br/>\n";
}
Bash Script
sudo nano /var/www/gentoo.lan/run.cgi

Adja hozzá a következő Bash-tartalmat.

#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "---------------------------------------------------------------------------------"
              ./env.pl 
echo "---------------------------------------------------------------------------------"

15. A fájlok létrehozása után tegye őket végrehajthatóvá, indítsa újra az Apache démont, és mutasson böngészőjében a következő URL-ekre.

sudo chmod +x /var/www/gentoo.lan/run.cgi
sudo chmod +x /var/www/gentoo.lan/env.pl
sudo /etc/init.d/apache2 restart
https://gentoo.lan/run.cgi 

OR

https://gentoo.lan/env.pl

Most a Gentoo-t egy erőteljes webtárhely-platformmá alakíthatja, finomhangolási beállításokkal a rendszer teljesítményéhez és a teljes környezet maximális vezérléséhez.