Search

 
 
 
 
Previous article Next article Go to back
       

Linux. Apache web serveris. Saugumas. SSL

TEISĖS
 
Labai svarbus momentas: operacinės sistemos teisės. Turite nustatyti, kuriuose kataloguose laikomi nekeičiami failai, (index failai, framework, engine, template) ir juos priskirti root rwx-r--r-- teisėmis:
chown -R root:root /var_www/template /var_www/modules .... t.t.
chmod 755 /var_www/template /var_www/modules .... t.t.

Patartina tai papildomai paleisti per cron, kad jeigu administratorius pamirš, sistema, tarkim kas 5 valandas, atliktų tuos pakeitimus. Rašymo teisių atstymas-suteikimas vykdomas rankiniu būdu.

Istorija.:
Buvo vykdomas europinis projektas, kur dalyvavo daug partnerių iš įvairių šalių. Svetainė "tupėjo" svetimam serveryje, kur teisių valdymas apribotas (tiesiog hostingas). Daugelis partnerių turėjo bendrą ftp prisijungimą. Pasibaigus partnerystei atsitiko štai kas: vieno iš partnerių kompiuteris buvo užkrėstas virusu ir pavogtas ftp slaptažodis. Svetainės tiekėjo ftp logai parodė, kad buvo įeita iš karto, nedarant "brute force" laužimo. Hakeris pakeitė index-inius failus, prie jų pabaigos pridėtas kenkėjiškas javascript kodas. Google detektavo šią jau kenkėjišką svetainę, to pasekoje mozilla užblokavo jos rodymą. Visa tai nebūtų įvykę esant galimybei kontroliuoti teises ir atblokuoti rašymui failus tik kai reikalingi jų pakeitimai, ir, baigus darbą, bėl užblokuoti.
 
SSI Server side includes
 
Nemanau, kad daug administratorių žino, kas tai SSI arba mod_include, kur įkompiliuotas į apache branduolį pagal nutylėjimą. Tai- dinaminė programavimo kalba, paprasta, bet galinga.

Taigi tikriname SSI, tiesiog bendram supratimui, kas tai yra. Paleidžiame komandą, kuri parodo statinius modulius
/apache/bin/httpd -l
Ar yra mod_include? Ar yra SSI (server side includes) kalbos galimybė? Pagal nutylėjimą ši galimybė aktyvi.

httpd.conf faile papildome:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

O svetainės katalogui nurodome ir perstartuojame Apache. Galima naudoti vieną Options:
<Directory /var_www>
Options Includes +Indexes FollowSymLinks
# arba "Options All"
</Directory>

Galima naudoti kelis Options:
<Directory /var_www>
Options +Indexes FollowSymLinks
Options +Includes
# arba "Options All"
</Directory>

Dabar sukuriame test.shtml ir jame:
<pre>
<!--#exec cmd="ls" -->
</pre>

<pre>
<!--#exec cmd="cat /etc/passwd" -->
</pre>

<pre>
<!--#exec cmd="cat /var_www/kita_svetaine/config.php" -->
</pre>

Vykdome OS komandas, gauname rezultatus. Reikia nepamiršti, kad OS komandų rezultatai priklauso nuo teisių. Ką gali http vartotojas, tą gali. Bet gal gali pasižiūrėti kitos svetainės konfigūracinius failus. O tai jau pavojinga. Plačiau http://httpd.apache.org/docs/2.0/howto/ssi.html.
 
AUTORIZACIJA
 
Sukuriam slaptažodžių failą:
/apache/bin/htpasswd -c /apache/passwords jonas
Į <directory /var_www> bloką įrašome taisykles:
AuthType Basic
AuthName "Restricted Files"
AuthBasicProvider file
AuthUserFile /apache/passwords
Require user jonas
Perleidžiame Apache ir turime autorizuotą priėkimą prie svetainės.

Autorizaciją galima daryti vartotojų grupei. Sukuriame antrą vartotoją petras, htpasswd naudojam be -c rakto. Reikia sukurti grupės failą groups su turiniu:
stud: jonas petras

httpd.conf, <directory> bloke reikia papildyti AuthGroupFile savybę ir pakeičiam Require...:
AuthGroupFile /apache/groups
Require group stud

Galima sukurti visiems esamiems vartotojams, grupės failas tada nebūtinas:

Require valid-user
Failams autorizacija kuriama sekančiai:
<Files ~ "\.(gif|jpe?g|png)$">
AuthType Basic
AuthName "Restricted Files"
AuthBasicProvider file
AuthUserFile /usr/local/apache/passwd/passwords
Require user jonas
</Files>
 
Šifruotas ryšys: APACHE ir SSL

Debianui reikia:

linux-kernel-headers
gcc
libc-dev
ncurses-dev
libssl-dev


Tarkim, apache įdiegtas į /usr/loca/apache2 katalogą.
Kad įdiegti saugų šifruotą ryšį, Debian reikia papildomų komponentų. Diegiame reikalingus komponentus:
apt-get install gcc make
apt-get install linux-libc-dev
apt-get install libc-dev ncurses-dev libssl-dev

Einame http://www.apache.org. Siunčiame httpd2.2.x.tar.gz. Išarchyvuojame:
tar -xzf httpd_archyvas.tar.gz
Einame į archyvo katalogą. Diegiame papildę --enable-ssl savybe komandą ./configure:
./configure --enable-ssl
make
make install

Tikriname, ar yra modulis mod_sll:
/usr/local/apache2/bin/httpd -l
Einam i /usr/local/apache2/conf/httpd.conf ir tikriname, kur yra ssl konfiguracinis failas. Randame eilutę ir ištriname # komentarą:
#include conf/extra/httpd-ssl.conf
Jame panašiai aprašytas "virtualus hostas":
<VirtualHost *:443>

DocumentRoot /var_www/mySite
ServerName www.mySite.com

SSLEngine on
SSLCertificateFile /path/to/your_domain_name.crt
SSLCertificateKeyFile /path/to/your_private.key
#SSLCertificateChainFile /path/to/DigiCertCA.crt

</VirtualHost>

"Self signed" www.papche.org sertifikato kurimas:
openssl req -new -x509 -nodes -out server.crt -keyout server.key
openssl rsa -des3 -in server.key -out server.key.new

Perleidus Apache web serverį:
openssl s_client -connect localhost:443 -state -debug
Tikriname su wireshark, ar ryšys šifruotas.

ir perstartavę apache, tikriname naršyklėje:
https://serveris
Previous article Next article Go to back
.
To top
Facebook
Share