Voi incerca sa va fac o mica prezentare asupra a cum trebuie gandit atunci cand dorim sa folosim un server dedicat pentru un site oarecare. Cum sunt un adept linux voi scoate din discutie varianta Windows. Pentru un astfel de server puteti folosi un computer second-hand sau daca sunteti ca mine si aveti garajul plin ochi de componente mai vechi, le puteti folosi pe acelea.
Inainte de instalarea unui server trebuie sa intelegeti ca un server inseamna inainte de orice altceva stabilitate. Din acest punct de vedere primul lucru care trebuie sa-l implementati este o partitie de tip minim RAID-1. Ce inseamna puteti gasi pe Wikipedia, iar cum se poate implementa un sistem RAID-1 software puteti gasi AICI.
1. Alegerea unei distributii corespunzatoare.
FIRST THING: Instalarea unui server se face OFF-LINE !!!
Cum probabil ca ati observat la diversi hosteri online una dintre distributiile cele mai folosite in cadrul providerilor de astfel de servicii este CentOS. CentOS este o distributie foarte asemanatoare cu RedHat sau Fedora. In principiu este un derivat, pachetele precompilate fiind de tip RPM. Ceea ce trebuie sa intelegeti este ca CentOS nu este folosit pentru stabilitate, sau viteza de catre acesti provideri. Principalul motiv este sustinerea de catre firma CPanel oferita pentru aceasta distributie. Spre deosebire de fratiorul ei mai mare RedHat, CentOS este o distributie gratuita... alaturi de CPanel devenind astfel o platforma ideala de lansare pentru providerii de hosting..
Totusi, pentru o siguranta cat mai buna se poate spune ca aceasta nu este distributia optima. In cautarea unei distributii corespunzatoare ma voi opri la Slackware. Multi, ca si mine dealtfel, sunt adeptii distributiilor bazate pe Debian, datorita usurintei in ultizare, dar Deb-urile sunt totusi pline de vulnerabilitati, ceea ce le transforma in niste servere destul de inapte in ceea ce inseamna web hosting. Slackware pe de alta parte, desi mai greoi, prezinta un grad mult mai bun de securitate. Mirror-ul de update pentru Romania (unul dintre ele, referindu-ma aici la serghei.net manageriat de Serghei din cadrul firmei Evolva) este unul dintre cele mai bune, update-urile facandu-se relativ la timp iar viteza de download fiind Gbps metropolitan.
2. Instalarea sistemului de operare.
Pentru o securitate sporita va recomand instalarea Slackware in modul "expert" sau folosind tag files daca aveti ceva experienta cu slack-ul. Acest lucru va duce la inlaturarea tuturor pachetelor neesentiale de pe server, oferind un plus de securitate precum si viteza necesara unui server de calitate. Totusi in timpul instalarii va sugerez sa deselectati pachetul apache si sa-l compilati din surse mai apoi, in varianta in care doriti apache2. Orice pachet neesential TREBUIE inlaturat, cu exceptia surselor kernelului stabil si evident a headerelor. Se gasesc suficiente tutoriale on-line despre cum se poate recompila un kernel Slackware. Pentru cei care nu au suficienta experienta cu aceasta distributie, un punct de plecare poate fi cartea oficiala despre Slackware pe care o puteti descarca gratuit de aici http://www.slackbook.org/.
3. Primele lucruri dupa instalare.
Din punct de vedere al securitatii o structura eficienta in cazul unui server "home" arata asa:

Evident trebuie luat in considerare cata banda de upload detineti precum si dimensiunea site-ului. Pentru a evita complicatiile specifice linux in ale caror amanunte nu voi intra va recomand ca filtrarea sa o faceti la nivelul routerului local, pachetele ce vin pe portul 80 indreptandu-le catre serverul web si blocand orice altceva.
Urmatorul pas il reprezinta crearea unui utilizator obisnuit pentru a evita compilarile de pe utilizatorul "root". Pentru o securitate sporita va trebui sa recompilati kernelul Slackware lasand doar optiunile specifice web hosting-ului si cele iptables necesare pentru evitarea unui atac simplu. Ceea ce este necesar sa intelegeti este ca pe un abonament "home" atacurile de tip DOS sau DDOS nu pot fi blocate, datorita capacitatii mici de rutare de care dispun routerele de tip "home", acestea intrand in stare de congestie in general dupa depasirea unei bariere de 1024 de sesiuni realizate cu serverul respectiv.
Daca dispuneti de banda suficienta si de o conexiune directa in placa de retea a serverului va rog sa deschideti un thread separat.
Un alt pas dupa instalarea sistemului de operare este necesitatea securizarii ssh. Aceasta poate fi realizata simplist dezactivand utilizatorul root folosind
PermitRootLogin NO in /etc/ssh/sshd_config si restrictionand clasa de acces pe portul 22 la clasa dvs. privata, sau avansat folosind chei criptate, tcpwrappers s.a.m.d.
4. Instalarea Apache si PHP.
Ceea ce va sugerez in cazul compilarii apache si php este sa folositi doar optiunile strict necesare. In cazul in care constatati dupa instalare ca ati selectat de exemplu module care nu le folositi, aceste le puteti dezactiva din fisierul de configuratie apache. Totodata, exista numeroase scripturi de
jailing precum si tutoriale despre cum se instaleaza si folosesc ce va pot permite rularea serverului intr-un mediu izolat de restul sistemului de operare.
Pentru prevenirea intruziunilor se poate folosi
Snort IDS desi configurarea lui este destul de greoaie chiar si pentru cei destul de experimentati.
Pentru evitare unui SYN flood simplu de pe acelasi ip, iptables este suficient, existand nenumarate scripturi online de limitare a numarului de conexiuni simultane. UDP-ul poate fi blocat la fel de usor, fie la nivel de router, fie la nivel de server prin implementarea unei simple reguli la inceputul firewall-ului linux de genul
iptabels -p UDP -s any --dport 80 -j DROP.
Daca doriti sa vedeti cat este de sigur serverul dvs. dupa ce ati parcurs toti acesti pasi, puteti instala o distributie linux oarecare in VmWare pe desktop-ul dvs. si sa folositi
nikto pentru a va scana propriul server, urmand sa vedeti ce alte probleme de securitate exista. Va recomand sa-l scanati din interiorul retelei si nu din afara ei, folosindu-va de tot ceea ce stiti despre serverul dvs. si de toate privilegiile posibile pentru descoperirea vulnerabilitatilor pe care le puteti cauta apoi on-line si "inchide".
Pentru a va asigura ca nu aveti rootkits sau troieni pe server puteti folosi utilitarul
rkhunter precum si programa scanari automate periodice ale serverului folosindu-va de sistemul cron.
Multa bafta!