Čo to vlastne FreeBSD je? FreeBSD je unixový operačný systém, ktorý vznikol z BSD verzie Unixu vyvinutého na Kalifornskej Univerzite v Berkeley. FreeBSD je pomerne spoľahlivý a robustný operačný systém, obsahuje podporu pre širokú škálu hardvérových platforiem. Je možné ho prevádzkovať na architektúre Intel i386 (vrátane Pentium a Athlon), amd64 (Opteron, Athlon 64 a EM64T), Alpha/AXP, IA-64, PC-98 a UltraSPARC, podpora ďalších platforiem je vo vývoji. Poďme teda k samotnej inštalácii. Táto inštalácia je svojim spôsobom jednoduchá záležitosť a väčšina to určite zvládne.
Inštalácia FreeBSD z ISO na OVH VPS · Inštalácia Windows 7 s podporou USB 3.x
Na stránkach FreeBSD, presnejšie
tu si stiahneme image (32bit -> i386 / 64bit -> amd64). V tomto návode som zvolil presne
FreeBSD 7.2-RELEASE-i386-bootonly.iso, keďže návod som robil pred pár rokmi, image napálime na CD a nabootujeme z neho. Následne po boote na nás vyskočí takáto obrazovka:
Počkajte na odpočet, alebo to môžete urýchliť stlačením klávesy enter.
Vyberiete si krajinu a pokračujete ďalej.
Zvolíte si Standard, ktorá sa odporúča. Predsa len sme začiatočníci a teda sa nebudeme púšťať do niečoho čomu zatiaľ nerozumieme.
Následne sa nám spustí FDISK, kde alokujeme disk stlačením písmenka A a ukončíme písmenkom Q.
Zvolíme si či chceme používať Boot Manager alebo nie, ak nie tak vyberieme možnosť Standard.
Tu môžeme na vytvorenie použiť automatické nastavenie pomocou klávesy A ktoré nám disk rozdelí, alebo pomocou klávesy C si môžeme rozdeliť disk tak ako to uznáme za vhodné. Na pokračovanie v inštalácií je potrebné mať vytvorený
SWAP a
/. Keď sme hotový ukončíme klávesou Q.
Tu si môžeme zvoliť čo chceme nainštalovať, osobne odporúčam ak sa jedna o server poslednú možnosť a to
Minimal. Takto sa nám nainštaluje základné prevedenie FreeBSD a tým si zabezpečíme, že systém nebude obsahovať pre nás nepotrebné veci.
Zvolíme si akým spôsobom stiahneme potrebné dáta, keďže sme použili FreeBSD 7.2-RELEASE-i386-bootonly.iso, tak použijeme buď
FTP alebo
FTP Passive. Ja som pri inštalácií zvolil
FTP Passive.
Vyberieme si odkiaľ chceme sťahovať potrebné dáta, primárne je nastavené ftp.freebsd.org, ale je tam aj
Slovenská republika vďaka čomu budeme dáta sťahovať oveľa rýchlejšie.
Tu si zvolíme sieťovú kartu, cez ktorú sme pripojený k internetu a nakonfigurujeme si sieť buď sami alebo zvolíte DHCP. Ja som zvolil DHCP.
Takto vyzerá nastavenie sieťovej karty.
Po stiahnutí nám inštalácia zagratuluje, že sme úspešne nainštalovali FreeBSD.
Ďalej sa nás inštalácia spýta na pár vecí, napríklad či bude daný stroj využívaný ako gateway, či chcete nakonfigurovať inetd, či chcete povoliť SSH login (tu zvoľte yes), či chcete nastaviť časové pásmo, či chcete aby mal systém podporu binárnych Linuxových aplikácií (ja som zvolil no, pokiaľ zvolíte yes, tak sa balík na podporu stiahne), ďalej môžete nastaviť myš pokiaľ ju chcete používať, taktiež sa spýta či chcete nainštalovať aplikácie na sprevádzkovanie napríklad web servera, tam by som tiež zvolil no a toto všetko si nainštaloval cez porty.
Tu zvolíme yes pre vytvorenie klasického účtu a pomocou User si vytvoríme užívateľské konto, ktoré pridáme do skupiny
wheel, čo nám zabezpečí to, že ak sa cez ssh pripojíme na náš systém z vonku, tak pomocou užívateľa v tejto skupine sa prihlásime cez príkaz
su pod konto
root. Je to viac menej ochrana konta root z vonku.
Tu vidíte kam je potrebné skupinu
wheel zadať.
Zvolíme no a ukončíme inštaláciu pomocou
Exit install. Počítač sa nám reštartuje a ak ste urobili všetko tak ako je v tomto obrázkovom manuále, tak sa vám zobrazí toto:
Systém máme teda nainštalovaný, blahoželám :-)
Ďalej si môžete stiahnuť porty (ktoré som vyššie spomínal) pomocou príkazu
portsnap fetch extract odkiaľ budete všetko inštalovať. Porty nájdete potom v
/usr/ports. Pomocou
whereis nazovaplikacie môžete vyhľadať aplikácie (napr. irssi, mc, etc.), alebo cez:
cd /usr/ports
make search name="nazovaplikacie"Je možné samozrejme použiť aj inštalovanie softvéru z bináriek, ale ja som skôr za inštaláciu zo zdrojákov a medzi nami som z bináriek ešte ani neskúšal nainštalovať nejaký softvér okrem serveru pre Unreal Tournament, ak mám pravdu povedať. Ak si chcete spojazdniť svoj web server tj. Apache, PHP, MySQL, phpMyAdmin, tak postupujte podľa inštrukcií v tomto článku ďalej.
Predpokladám, že máte už systém nainštalovaný, článok berte s rezervou a hlavne ho neberte ako nejaký profesionálny návod. Som len laik a mám to len ako hobby, takže sa dá niečo možno lepšie vyriešiť. Pomaly sa s FreeBSD učím a toto snáď pomôže aj iným.
Očakávam, že ak sa niekto pustíte do FreeBSD a chcete si spraviť vlastný web server, tak dúfam že čo to viete o Apache a jeho konfigurovaní a samozrejme aj niečo o FreeBSD, lebo ak by ste išli presne podľa tohto návodu, tak minimálne Apache určite nespustíte, keďže je potrebné jeho
konfiguračný súbor nastaviť. Možno vám pomôže
táto kniha o Apache. Toto som robil na verzii FreeBSD 7.2, čiže či vám to presne tak pôjde aj na nejakej staršej verzii nemôžem zaručiť.
Pre inštalovanie a konfigurovanie týchto aplikácií je potrebné aby sme boli prihlásený ako root. Ak sa chystáte inštalovať cez ssh, tak defaultne má FreeBSD zablokovaný ssh prístup ako root. Čiže sa musíte prihlásiť ako užívateľ ktorý je v skupine
wheel a cez príkaz
su sa prihlásite ako
root. Ďalej predpokladám, že ste správne nainštalovali FreeBSD a taktiež máte stiahnuté porty (tie stiahneme pomocou príkazu
portsnap fetch extract,
etc.) odkiaľ budeme všetko inštalovať. Pomocou
whereis nazovaplikacie si môžete vyhľadať iné aplikácie ako irssi, mc, etc., alebo cez:
cd /usr/ports
make search name="nazovaplikacie"MySQLcd /usr/ports/databases/mysql50-server
make BUILD_OPTIMIZED=yes BUILD_STATIC=yes
make install cleanDo súboru
/etc/rc.conf pridáme
mysql_enable="YES" pre spustenie MySQL servera pri štarte systému. Pomocou
/usr/local/etc/rc.d/mysql-server start spustíme MySQL server. Následne nastavíme heslo pre používateľa root:
/usr/local/bin/mysqladmin -u root password ''tajneheslo''.
Apachecd /usr/ports/www/apache22
make install cleanDo súboru
/etc/rc.conf pridáme
apache22_enable="YES" pre spustenie Apache pri štarte systému. Pri spustení môže nastať problém s accf_http, ja som ho vyriešil pomocou
kldload accf_http. Pre zapnutie modulu pri štarte systému treba editovať
/boot/loader.conf a pridať tam
accf_http_load="YES". Taktiež sa mi stalo, že ak som spustil apache pomocou
/usr/local/etc/rc.d/apache22 start a následne som pozrel jeho status
/usr/local/etc/rc.d/apache22 status, tak nebežal. Pričom pri štarte vypísalo, že je Apache spustený. Došiel som nato, že treba v konfiguračnom súbore (
/usr/local/etc/apache22/httpd.conf) vypnúť modul mod_unique_id (#LoadModule unique_id_module libexec/apache22/mod_unique_id.so).
PHPcd /usr/ports/lang/php5
make install clean
cd /usr/ports/lang/php5-extensions
make install clean
Spustí sa nám config, kde si pozaškrtávame čo potrebujeme. Nachádza sa tam aj Suhosin, čiže ak ho zaškrtneme, tak ho nemusíme neskôr doinštalovať a môžeme jeho inštaláciu čo je nižšie preskočiť.
cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
(PHP extensions /usr/local/etc/php/extensions.ini)Editujeme konfiguračný súbor (
/usr/local/etc/apache22/httpd.conf) Apache a pridáme tam:
# pre Apache 1.3.x
LoadModule php5_module libexec/apache/libphp5.so
AddModule mod_php5.c
# pre Apache 2.x
LoadModule php5_module libexec/apache22/libphp5.so<IfModule mod_dir.c>
<IfModule mod_php3.c>
<IfModule mod_php5.c>
DirectoryIndex index.php index.php3 index.html
</IfModule>
<IfModule !mod_php4.c>
DirectoryIndex index.php3 index.html
</IfModule>
</IfModule>
<IfModule !mod_php3.c>
<IfModule mod_php5.c>
DirectoryIndex index.php index.html index.htm
</IfModule>
<IfModule !mod_php4.c>
DirectoryIndex index.html
</IfModule>
</IfModule>
</IfModule>AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
//Ak chceme spracovávať htm a html súbory ako PHP skripty, tak to bude vyzerať nasledovne:
AddType application/x-httpd-php .php .htm .html
AddType application/x-httpd-php-source .phpsRiadok s:
DirectoryIndex index.htmzmeníme za:
DirectoryIndex index.php index.htm index.htmlRiadok s:
#Include etc/apache22/extra/httpd-languages.confzmeníme za:
Include etc/apache22/extra/httpd-languages.confEditujeme súbor
/usr/local/etc/apache22/extra/httpd-languages.conf a na koniec riadku pridáme
AddDefaultCharset On. Následne reštartujeme Apache pomocou:
/usr/local/etc/rc.d/apache22 restart. Do konzoly napíšeme
echo "<?php phpinfo(); ?>" >> /usr/local/www/apache22/data/test.php a takto si môžeme overiť či nám PHP funguje.
phpMyAdmincd /usr/ports/databases/phpmyadmin
make install cleanEditujeme súbor
/usr/local/etc/apache22/httpd.conf a pridáme tam:
Alias /phpmyadmin /usr/local/www/phpMyAdmin
<Directory "/usr/local/www/phpMyAdmin">
Order allow,deny
Allow from all
</Directory>Ďalej treba vytvoriť konfiguračný adresár zadaním príkazov:
cd /usr/local/www/phpMyAdmin
mkdir config
chmod 777 configA pomocou
/usr/local/etc/rc.d/apache22 restart reštartujeme Apache.
Ak všetko beží, tak cez http://nazovstranky/phpmyadmin/scripts/setup.php treba phpMyAdmin ponastavovať. Následne treba skopírovať z adresára phpMyAdmin/config konfiguračný súbor do adresára phpMyAdmin nasledujúcim príkazom:
cp config/config.inc.php .Na záver zmažeme konfiguračný adresár a nastavíme chmod na konfiguračný súbor:
rm -rf config
chmod 440 config.inc.phpeAcceleratoreAccelerator slúži na zrýchlenie PHP skriptov tak, že si ukladá predspracované skripty v cache pamäti, vďaka čomu urýchľuje ich opätovné spúšťanie. eAccelerator sa nachádza medzi portami a presne tu
/usr/ports/www/eaccelerator, čiže:
cd /usr/ports/www/eaccelerator
make install cleanNásledne treba editovať súbor
php.ini (
/usr/local/etc/php.ini) a pridať tam pre:
zend_extension="/usr/local/lib/php/20060613/eaccelerator.so"Po skompilovaní, sa vypíše presná cesta.
Takto nejako vyzerá nastavenie eAcceleratoru:
extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"Zmena shmall a shmmax:
# sysctl -w kern.ipc.shmmax=536870912
kern.ipc.shmmax: 33554432 -> 536870912
# sysctl -w kern.ipc.shmall=131072
kern.ipc.shmall: 8192 -> 131072Do
/etc/sysctl.conf pridáme:
kern.ipc.shmmax=536870912
kern.ipc.shmall=131072Ďalej treba vytvoriť adresár eaccelerator a nastaviť chmod:
mkdir /tmp/eaccelerator
chown www /tmp/eaccelerator
chmod 0700 /tmp/eacceleratorA pomocou
/usr/local/etc/rc.d/apache22 restart reštartujeme Apache.
SuhosinSuhosin stiahneme
tu, ale ako tak čítam teraz tú stránku, tak Suhosin by sa mal tiež nachádzať medzi portami vo FreeBSD. Takže to môžete skúsiť cez
whereis php-suhosin a mal by byť tu
/usr/ports/security/php-suhosin, čiže:
cd /usr/ports/security/php-suhosin
make install cleanAk chcete stiahnuť zdrojáky priamo zo stránky, tak pokračujte:
wget http://download.suhosin.org/suhosin-0.x.x.tgz
tar xfv suhosin-0.x.x
cd suhosin-0.x.x
phpize
./configure
make
make installNakoniec je potrebné editovať súbor
php.ini (
/usr/local/etc/php.ini) do ktorého vložíme na koniec toto:
extension=suhosin.so uložíme a reštartujeme Apache.
BezpečnosťsuPHP zabezpečí, že každý užívateľ bude spúšťať skripty pod svojim kontom. Každý užívateľ bude mať nadefinovaný svoj php.ini súbor v ktorom bude nastavená direktíva openbasedir tak, že bude smerovať na adresár konkrétneho užívateľa. Ďalej tiež spomínaný Suhosin. suPHP je taktiež vo FreeBSD a konkrétne tu
/usr/ports/www/suphp, čiže:
cd /usr/ports/www/suphp
make install cleanĎalšie zabezpečenia na úrovni PHP môžu byť nasledovné:
===========
SAFE MODE
===========
PHP skripty budú mať prístup len k súborom ktorých vlastníkom je užívateľ, ktorý spustil skript
safe_mode = On
PHP skripty budú mať prístup len k súborom ktorých vlastníkom je skupina apache
safe_mode = Off
safe_mode_gid = On
PHP skripty budú môcť spúšťať binárky, ktoré sú v špecifickom adresári
safe_mode_exec_dir = /var/www/bin
PHP skripty budú mať prístup len k premenným prostredia (ENV VARS) s nadefinovaným prefixom
safe_mode_allowed_env_vars = PHP_
=====================================
CO BUDE MOCT PHP CITAT A ZAPISOVAT
=====================================
PHP bude mať prístup (RW) len k súborom zadefinovaných v ceste premennej open_basedir
open_basedir = /cesta/k/suborom/ku/ktorym/ma/php/pristup
PR: open_basedir = /var/www/
=========================
ZOBRAZOVANIE INFORMACII
=========================
Vypnutie zobrazovaní informácií o PHP v HTTP hlavičkách
expose_php = Off
Vypnutie zobrazovania php chýb a varovaní
display_errors = Off
===========
LOGOVANIE
===========
Zapnutie logovania chýb
log_errors = On
Zadefinovanie cesty k logom
error_log = /cesta/k/logu
Register globals su peklo - OFF
register_globals = Off
========
LIMITY
========
Maximálny čas vykonania skriptu
max_execution_time = 30
Maximálny čas pre parsovanie vstupu
max_input_time = 60
Maximálna pamäť v MB obsadená jedným skriptom
memory_limit = 8M
Maximálna veľkosť pre uploadovaný súbor
upload_max_filesize = 2M
Maximálna veľkosť POST requestu
post_max_size = 8M
Vypnutie nebezpečných funkcií
disable_functions = proc_nice, proc_terminate, proc_get_status, proc_close, proc_open, ini_alter, dl, system, exec, pfsockopen, fsockopen, curl_init, curl_setopt, curl_exec, curl_close, leak, shell_exec, proc_open, syslog, link, readlink, symlink, error_log, ini_restore, openlog, passthru, socket_create, socket_write, shmop_close, shmop_delete, shmop_open, shmop_read, shmop_size, shmop_size
Vypnutie nebezpečných tried funkcií
disable_classes = posix
Vypnutie vzdialených URL (HTTP URL) - problém hlavne ak názov súboru je od užívateľa bez riadného ošetrenia vstupu
allow_url_fopen = Off
Vypnutie includovania pomocou URL
allow_url_include = Off
Vypnutie magic_quotes_gpc - vstup sa bude filtrovať na úrovni PHP skriptu
magic_quotes_gpc = Off
Vypnutie UPLOADOVANIA súborov
file_uploads = Off
Vypnutie session ID v URL
session.use_trans_sid = OffĎalej je dobré použiť modul pre Apache
mod_security, ktorý slúži na detekciu útokov a ochranu web aplikácií pred ne/automatizovanými útokmi. Jeho výhodou je možnosť zamedzenia Cross site scriptingu, SQL injections a ďalším lahôdkam.
Dobré je prestaviť aj
ServerTokens v konfiguračnom súbore Apache. Defaultne tam býva nastavená hodnota
Full a odporúčam ju zmeniť za
Prod. Vtedy útočník nezistí akú verziu Apache používate. Ak sa mýlim, tak ma opravte, ale nedošiel som nijak k verzii Apache, keď som tam nastavil hodnotu
Prod. Tu sú všetky možnosti s príkladom:
ServerTokens Prod[uctOnly]
Server sends (e.g.): Server: Apache
ServerTokens Major
Server sends (e.g.): Server: Apache/2
ServerTokens Minor
Server sends (e.g.): Server: Apache/2.0
ServerTokens Min[imal]
Server sends (e.g.): Server: Apache/2.0.41
ServerTokens OS
Server sends (e.g.): Server: Apache/2.0.41 (Unix)
ServerTokens Full (or not specified)
Server sends (e.g.): Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2Článok bol zobrazený 11531 krát a obsahuje 2281 slov
Pridané 10. februára 2014