Archive for the ‘Korisno’ Category

Jedna od prvih stvari koje biste trebali napraviti nakon instalacije MySQL baze na server (ili na vaše privatno računalo) je postaviti lozinku za root korisnika. Naime, po defaultu nakon instalacije korisnik root (koji ima sve ovlasti za rad s bazom) nema podešenu lozinku što predstavlja ogroman sigurnosni rizik za server (dovoljno je da imate instaliran phpMyAdmin i već vam netko može raditi svašta po bazi).

Lozinku možete podesiti na dva načina - preko MySQL konzole i pomoću mysqladmin skripte. Ja ću vam ovdje pokazati kako podesiti lozinku pomoći MySQL konzole.

Prvo uđite u konzolu:

debian:~# mysql -u root

Ukoliko želite promijeniti root lozinku, dodajte i opciju -p (označava da se mora upisati lozinka). Nakon toga, u MySQL konzolu upišite slijedeće:

mysql> SET PASSWORD FOR root@localhost=PASSWORD('novalozinka‘);
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;

Iako piše 0 rows affected, lozinka je ipak podešena. Važno je da izvršite i naredbu FLUSH PRIVILEGES kako bi nova lozinka počela djelovati.

Kao što većina administratora i ljudi koji se na neki način kreću u informatičkom svijetu zna, Apache je jedan od najpopularnijih web servera. To, naravno, ima svojih pozitivnih ali i negativnih strana, a jedna od negativnih je i ta da zbog velike rasprostranjenosti zlonamjerni korisnici traže nedostatke baš za Apache kako bi napravili štetu. Slično je bilo i sa Internet preglednikom Mozilla Firefox koji u početku nije imao mnogo sigurnosnih propusta baš zbog toga što ih nitko nije niti tražio jer sam preglednik nije bio odveć popularan pa su ga rijetki koristili. No, kako mu je popularnost rasla, tako su se uočavali i propusti. Da se razumijemo - ja ne tvrdim da je Firefox loš proizvod (u svakom slučaju meni je puno bolji od Internet Explorera) nego samo da se ga napravili ljudi, a tko radi taj i griješi. Ali da ne duljim previše, donosim vam nekoliko savjeta za sigurnost Apache web servera.

Sakrijte osjetljive informacije od korisnika

Sigurno ste do sad naišli na neku adresu kod koje vam se javila popularna greška 404 (ako niste, probajte otvoriti neku izmišljenu adresu, s tim da domena mora biti prava). Kod takvih grešaka, na dnu se po defaultnim postavkama Apache-a ispisuje verzija i moduli koji su instalirani na serveru. Budući da to nekome može poslužiti za napad, bolje je to spriječiti.

Otvorite postavke Apache-a (datoteka /etc/apache2/apache2.conf) i u njoj napravite slijedeće promjene. Pronađite

ServerTokens Full
ServerSignature On

i promijenite u

ServerTokens Prod
ServerSignature Off

Opcija ServerTokens određuje koje informacije će server poslati u HTTP response headeru (najmanje što možete odrediti je da se šalje naziv proizvoda - Apache), a opcija ServerSignature određuje hoće li se ispisivati potpis Apache servera na stranicama koje generira sam Apache (npr. stranice sa 404 greškom, listanje direktorija putem FTP-a). Jedino što treba zapamtiti da ovime ne određujemo da se verzija Apache-a i slične informacije neće prikazivati ukoliko smo odredili prikazivanje proizvoljnih stranica (npr. proizvoljne stranice sa greškom 404).

SSH bez lozinke

svibanj 20th, 2008 No Comments

Svi znaju koliko je backup koristan i važan. Oni koji to ne znaju, saznati će čim prvi put izgube podatke, a oni koji znaju koliko je važan znaju i kolika je gnjavaža svako malo raditi backup. Zbog toga većina administratora ima skriptu koja automatski izrađuje backup jednom dnevno, jednom tjedno ili u nekom drugom periodu (u svakom slučaju, što češće to bolje). E sad, kod backupa je važno da se ne nalazi na istom mjestu gdje je računalo sa podacima koji se backupiraju jer uvijek može doći do požara ili nekog drugog problema zbog čega mogu nestati i backupirani podaci čak i ako se nalaze na drugom disku.

Zato bi bilo dobro da skripta koja radi sigurnosnu pohranu podataka odmah te podatke i iskopira na drugo računalo, a jedan od najsigurnijih načina je kopiranje preko SSH protokola. Budući da nije sigurno u skriptu upisati lozinku, bolje je izgenerirati privatni i javni ključ i preko njih vršiti autorizaciju bez lozinke. To se radi na slijedeći način.

  1. Generiramo privatni i javni ključ:
    ssh-keygen -t dsa -f /home/<korisnik>/.ssh/id_dsa

    Na upit da upišete passphrase, samo stisnite Enter.
    Ovdje -t određuje tip enkripcije, a -f određuje gdje će se nalaziti datoteke sa privatnim i javnim ključevima.

  2. Nakon toga iskopiramo javni ključ na server na koji se ubuduće želimo spajati putem SSH protokola bez lozinke.
    scp /home/<korisnik>/.ssh/id_dsa.pub <korisnik>@<udaljeni.server>:~/.ssh/id_dsa.pub

    Ovaj put morate upisati lozinku.

  3. Sada se spojite na udaljeni server (još jednom, posljednji put upišite lozinku) i dodajte javni ključ u poznate javne ključeve na serveru.
    ssh <korisnik>@<udaljeni.server>
    cd ~/.ssh
    cat id_dsa.pub >> authorized_keys2
    chmod 640 authorized_keys2
    rm id_dsa.pub
    exit
  4. Na kraju, pokušajte se ponovo spojiti na udaljeni server. Trebali biste uspjeti bez da morate upisati lozinku.

Ukoliko održavate neki server na kojem se vrti Debian ili neka od distribucija temeljenih na Debianu (Kubuntu, Ubuntu i slično) ili ste jednostavno vlasnik računala sa takvih operativnim sustavom, sigurno često radite nadogradnju sustava sa novim verzijama instaliranih paketa (ukoliko ne radite, trebali biste :-) ). Obično je dovoljno u shell (komandnu liniju) upisati naredbe

debian:~# apt-get update
debian:~# apt-get upgrade

i instalacija novih verzija će se izvršiti automatski (pod uvjetom da postoje nove verzije paketa). No, ponekad se to ne dogodi nego se pojavi poruka ‘The following changes have been kept back’. To se događa zbog toga što su se promijenile ovisnosti (eng. dependencies) paketa koji su instalirani na računalu (ili serveru) i to na taj način da novi paket mora biti instaliran kako bi se napravio upgrade.

Na primjer, na mojem serveru mi se nedavno pojavila poruka:

debian:~# apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
The following packages have been kept back:
  openssh-client openssh-server
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

To znači da paketi openssh-client i openssh-server ne mogu biti samo nadograđeni na novu verziju već je potrebno instalirati nove pakete. Jednostavno rješenje je naredba apt-get dist-upgrade.

root@sun:~# apt-get dist-upgrade
Reading Package Lists... Done
Building Dependency Tree... Done
Calculating Upgrade... Done
The following NEW packages will be installed:
  openssh-client openssh-server
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 3697kB of archives.
After unpacking 1860kB of additional disk space will be used.
Do you want to continue? [Y/n]

Na taj način instalirat će se nove verzije svih paketa kojima je potreban upgrade i sve nove ovisnosti koje su potrebne kako bi se nadogradnja mogla izvršiti.

Nedavno sam imao potrebu na jednom serveru postaviti nekoliko Internet stranica. Možda neki (malo manje upućeni) misle da na Internetu vrijedi “1 site = 1 server” no to nije tako. Vrlo često se kod manje zahtjevnih site-ova (koji nemaju previše pageview-ova dnevno) koristi jedan server za nekoliko Internet stranica. Ovdje ću opisati kako na jednostavan način na jedan Apache2 server smjestiti 3 Internet stranice (za primjer ću koristiti domene www.prva.com, www.druga.com i www.treca.hr).

Dakle, imate server na kojem je instaliran Apache i to u verziji 2.x. Ako malo bolje pogledate u direktorij /etc/apache2, vidjet ćete slijedeće:

  • apache2.conf datoteku - u njoj se nalazi veći dio konfiguracije Apache web servera
  • conf.d direktorij - sve datoteke koje se nalaze u njemu Apache smatra konfiguracijskima i pokušati će ih pročitati kod pokretanja
  • httpd.conf - datoteka ovog naziva je u verziji 1.x sadržavala konfiguraciju koja je sad prebačena u apache2.conf. Budući da u njoj vjerojatno nema ništa, a Apache ju po defaultu čita kod pokretanja, možete ju koristiti za vlastitu konfiguraciju Apache-a
  • mods-available direktorij - u njemu se nalaze konfiguracijske datoteke modula koji su dostupni za instalaciju (neki su možda već i instalirani)
  • mods-enabled direktorij - sadrži soft linkove na konfiguracijske datoteke modula, a ti linkovi se stvaraju automatski kad se modul instalira
  • ports.conf datoteka - popis portova na kojima Apache sluša
  • sites-available direktorij - u njemu se nalaze konfiguracijske datoteke za svaku web stranicu koja je dostupna Apache-u
  • sites-enabled direktorij - sadrži soft linkove na konfiguraciju svake instalirane web stranice

Kreiranje direktorija za svaku stranicu

Prvo ćemo kreirati jedan direktorij u koji ćemo smjestiti sve Internet stranice koje ćemo imati na serveru. Taj direktorij možete kreirati bilo gdje, samo što korisnik pod kojim je pokrenut Apache servis (na nekim distribucijama to je www-data, a na drugima je httpd) mora imati prava za čitanje iz tog direktorija. Ja ću direktorij kreirati u home direktoriju.

mkdir /home/www

Nakon toga kreirajte direktorije za svaku stranicu koju ćete imati, a u svakom direktoriju stranice napravite dodatne direktorije htdocs, logs i cgi-bin.

mkdir /home/www/www.prva.com
mkdir /home/www/www.prva.com/htdocs
mkdir /home/www/www.prva.com/logs
mkdir /home/www/www.prva.com/cgi-bin
mkdir /home/www/www.druga.com
mkdir /home/www/www.druga.com/htdocs
mkdir /home/www/www.druga.com/logs
mkdir /home/www/www.druga.com/cgi-bin
mkdir /home/www/www.treca.com
mkdir /home/www/www.treca.com/htdocs
mkdir /home/www/www.treca.com/logs
mkdir /home/www/www.treca.com/cgi-bin

Naravno, ukoliko ćete imati isti sadržaj za sve stranice (npr. ukoliko imate isti naziv domene, ali različite vršne domene - www.stranica.com, www.stranica.net, www.stranica.org…) nema smisla kreirati različite direktorije nego treba koristiti soft linkove.

Konfiguracija

Nakon što smo kreirali direktorije za svaku web stranicu, moramo u Apache konfiguraciji omogućiti korištenje virtualnih hostova. Najjednostavnije je u direktoriju /etc/apache2/conf.d napraviti datoteku virtual.conf i u nju upisati slijedeće:

NameVirtualHost *

Kao što sam već rekao, Apache prilikom pokretana čita sve datoteke u direktoriju conf.d pa će pročitati i datoteku virtual.conf.

Nakon toga, u direktoriju /etc/apache2/sites-available ćemo kreirati konfiguracijsku datoteku za svaku Internet stranicu. Dakle, u datoteku /etc/apache2/sites-available/www.prva.com upišite slijedeće:

#  Prva.com (/etc/apache2/sites-available/www.prva.com)
<VirtualHost *>
ServerAdmin webmaster@prva.com
ServerName  www.prva.com
ServerAlias prva.com, *.prva.com

# Indexes + Directory Root.
DirectoryIndex index.html, index.php
DocumentRoot /home/www/www.prva.com/htdocs/

# CGI Directory
ScriptAlias /cgi-bin/ /home/www/www.prva.com/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>

# Logfiles
ErrorLog  /home/www/www.prva.com/logs/error.log
CustomLog /home/www/www.prva.com/logs/access.log combined
</VirtualHost>

Nakon toga u istom direktoriju kreirajte još i datoteke www.druga.com te www.treca.com. U njih možete staviti istu konfiguraciju kao i u www.prva.com, samo napravite logične promjene (npr. umjesto Server name www.prva.com upišite Server name www.druga.com te Server name www.treca.com).

Naravno, u svaku od datoteka možete dodati i neki proizvoljni konfiguracijski redak koji će se odnositi samo na tu web stranicu.

Instaliranje internet stranica na serveru

Iako sam ovo poglavlje nazvao instaliranje internet stranica, to je ustvari dozvola korištenja stranice Apache-u.

Da ponovimo - sada imamo 3 stranice koje se još ne koriste jer Apache ne vidi virtualne hostove koje smo definirali. To je zato što se njihova konfiguracija još ne nalazi u direktoriju sites-enabled već samo u sites-available. Pomoću slijedećih naredbi ćemo Apache-u dozvoliti korištenje stranica:

a2ensite www.prva.com
a2ensite www.druga.com
a2ensite www.treca.com

Ukoliko iz nekog razloga želimo privremeno zabraniti korištenje neke stranice Apache-u, to ćemo napraviti sa naredbom a2dissite:

a2dissite www.druga.com

Nakon što smo sve napravili slijedi ponovno pokretanje Apache servera i to je to.

/etc/init.d/apache2 reload

Korisni linkovi

Još jedna zgodna stvar kod Apache-a je što možete imati mnogo Internet stranica sa istom konfiguracijom. Dobar članak o tome možete pronaći ovdje.