|
|||
|
Linux. Apache web serveris. Saugumas. SSLTEISĖ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 jonasPerleidž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 |