joi, 27 august 2009

Conspect configurare server web linux

Am un client care vrea un server web / ftp cu mult spaţiu pe disc (sute de GB). Cum firmele de hosting din Romania nu ofera asa spaţiu generos pe disc, iar colocaţia costă prea mult, am decis să ţin pentru început serverul la mine.

Nu sunt expert în gestionarea unui server linux, aşa că notez aici diverse idei şi referinţe găsite pe web:

  • Instalez o versiune server, fără sistem grafic X (Gnome / KDE). Gestionarea sistemului o fac sau în linie de comandă, sau printr-o interfaţă accesibilă prin web (stil Cpanel / Plesk).
  • Utilitarul htop este o variantă îmbunătăţită a lui top - arată încărcarea sistemului pe fiecare procesor / nucleu, şi nivelul de folosire a memoriei fizice şi a celei virtuale.
  • Utilitare gratuite de gestionare a serverului web:
  • Module Apache2:
    • mod-bw - pot limita lăţimea de bandă şi numărul de conexiuni simultane, per virtual-host şi per director
    • mod-fastcgi - execuţia de programe PHP în mod fastcgi e mai rapidă şi mai sigură decât încărcarea modulului PHP în Apache şi execuţia scriptului de acolo. Explicaţie FastCGI, performanţa cu FastCGI, FastCGI şi PHP.
    • a2enmod, a2dismod - apache 2 enable / disable module
    • mod_deflate - Apache comprimă fişierele înainte de a le trimite pe reţea, spre client. Trebuie să văd dacă avantajul transferului rapid al fişierelor text/html merită consumul crescut de procesor pentru compresia în timp real.
    • eAccelerator - accelerator de script-uri PHP
    • Pro-memoria - să verific dacă E-TAGs nu sunt implicit activate - şi dacă sunt, poate să le dezactivez.
  • HDSentinel - citeşte starea hard-disk-urilor, poate modifica nişte reglaje de performanţă
  • Module Drupal - nu toate au legătură cu performanţa
  • Îmbunătăţire performanţe Apache
  • Optimizare Drupal
  • Testare site
    • Firebug + Net Pannel + YSlow (inclusiv tools ca smush.it)
    • http://webpagetest.org
    • Fiddler - proxy pentru windows, permite analiza traficului în reţea
  • Optimizări generale
    • Este esenţială reducerea numărului de fişiere servite pentru afişarea paginii
    • Toate CSS-urile - la începutul paginii
    • Toate JS-urile - la sfârşitul paginii - înainte de </body>. Asta include şi script-urile onClick, onLoad etc.
    • Capabilităţile browserelor de a încărca fişiere javascript, fişiere CSS şi imagini în paralel - UA Profiler
    • Cuzillion - generare de combinaţii de JS, CSS, frames etc., ca apoi să testez pe mai multe browsere cum afectează timpul de încărcare al paginii.
    • Păstrez doar modulele Apache pe care le folosesc. Şi în general, instalez doar pachetele pe care le folosesc, nimic în plus.
    • MySQL - InnoDB e recomandat pentru tabelele cu acces concurent scriere / citire (de exemplu cel de sesiuni).
    • APC - alternativă la eAccelerator (cică e mai stabil)
    • Apache Bankmark - comanda ab
    • Siege - site tester
    • Webtest Tools
    • Zend Server Community Edition - ar fi mai bun ca APC, care-ar fi mai bun ca restul celor gratuite.
    • Apache cu mod_fcgid

Referinţe:

sâmbătă, 22 august 2009

Drupal - problemă transmitere (upload) fişiere pe site

M-am confruntat recent cu următoarea situaţie în Drupal 6
  • Am ataşat mai multe fişiere (pdf, excel, imagini etc.) în câteva pagini din site.
  • Deşi erau salvate corect în subdirectorul /sites/default/files, fişierele nu puteau fi citite din pagina web - Apache dădea eroare de acces.
Analizând problema, am observat că
  • Fişierele sunt salvate cu permisiuni de acces 600 (rw- --- ---), adică nu pot fi citite decât de utilizatorul/procesul care le-a salvat. În mod normal, la alte firme de hosting, ele sunt salvate cu permisiuni 644 (rw- r-- r--), adică pot fi citite de orice utilizator/proces din sistem.
  • Procesele PHP (folosite de Drupal) folosesc un alt utilizator decât procesele Apache (care citesc fişierele transmise pe server).
Concluzia a fost că, dacă nu modific manual drepturile de acces la fişierele respective (sau dacă nu modific cumva drepturile cu care sunt salvate fişierele pe disc), ele nu vor fi accesibile pentru serverul Apache.

Soluţia mea este să folosesc un proces Drupal (deci PHP) ca să citească fişierele de pe disc. În pagina de administrare "/admin/settings/file-system" am setat opţiunea Download Method pe "Private - files are transferred by Drupal".

Apoi am activat dreptul utilizatorilor neautentificaţi de a vedea fişierele transmise pe server.

Asta a rezolvat problema pentru mine.

vineri, 21 august 2009

Memorarea parolelor serverelor de către administratorii de sistem

Gestionez găzduirea web/e-mail pentru mai multe domenii, ţinute de diferite firme de hosting. În plus administrez şi câteva reţele locale, ceea ce implică să lucrez de la distanţă sau local pe servere şi pe staţii de lucru. Ca urmare folosesc zeci de conturi de utilizator şi de parole.

Din comoditate, am început să folosesc aceleaşi parole pentru multe din conturile de utilizator gestionate. Şi m-am oprit şi m-am întrebat - "Ce soluţii SIGURE am pentru memorarea unui număr mare de parole ?"

După ce am studiat un pic, am început să folosesc următoarea metodă de memorare a parolelor:
  • Tipăresc parolele pe hârtie, sub formă de "password grid" - vezi The Password Grid - A Password Strategy şi Remembering Passwords with Password Grids.
  • Sistemul acesta îmi garantează că dacă pierd foaia cu parole la unul din clienţi, sau dacă cineva se uită peste umărul meu la hârtie, parolele sunt în siguranţă. Cred că doar în mâinile unui hacker parolele pot fi revelate. Iar riscul de existenţă de angajaţi hackeri la organizaţiile pentru care lucrez este Zero (în opinia mea).
  • Folosesc următorul script pentru generarea aleatoare a gridului de parole - Password Script Generator.
  • Salvez parolele într-un document, pe care îl memorez DOAR pe un memory stick care stă undeva la păstrare. După ce tipăresc parolele, folosesc documentul de pe stick doar când vreau să-l editez şi/sau să-l tipăresc.
  • Pentru că nu ţin parolele pe calculator, chiar dacă acesta e hackerit de la distanţă, parolele sunt în siguranţă.
  • Nu memorez parolele în programe de ftp sau în browser, câtă vreme le folosesc rar. Chiar dacă un hacker reuşeşte să citească parolele salvate în calculator, minimizez daunele pe care le-ar putea produce.