Linux u funkciji web server
Napisao Svetozar Kolesar četvrtak, 17 mart 2011 10:17
Proces testiranja Linux servera i alati
0. Uvod
Linux kao operativni sistem obiluje programskim paketima koji omogućavaju da on postane i ostane web server. Dva programska paketa koja su pokrenuta na najvećem broju web servera su Apache i MySQL. Apache je web server koji isporučuje HTML sadržaje na zahtev korisnika, a MySQL je sistem za upravljanje relacionim bazama podataka koji skladišti i isporučuje podatke na zahtev web aplikacije.Za nesmetano funkcionisanje web servera neophodan je što tačniji i detaljniji uvid u funkcionisanje Linux servera i mreža. Alati pomoću kojih je moguće podići na viši nivo funkcionisanje i sigurnost Linux servera i mreža su Sysstat i Wiredshark. Sysstat je alat za praćenje aktivnosti sistema. Wireshark je mrežni paket analizator.
Ovaj rad prikazuje osnovnu primenu ovih paketa i njihovu ulogu u nesmetanom radu Linux servera i mreža.
1. Linux kao web server
Na Linux sitemima rade mnoge aplikacije koje funkcionišu kao web serveri. U tu svrhu se koriste PHP, Perl, Java, Pajton ili/i Rubi, zajedno sa Apache i MySQL, PostgreSQL, DB2 ili Oracle serverom. Savremene distribucije Linux sistema omogućavaju da se za kratko vreme postave osnovni servisi neophodni za funkcionisanje web servera. Naravno potpuna optimizacija i nesmetano funkcionisanje svakog sistema je dug i nimalo lak posao.Najrasprostranjenija Linux distribucija je Ubuntu, a odmah za njom je RedHat zajedno sa svojom besplatnom verzijom FedoraCore. Za njima zaostaje SuSe.
1.1. Apache ::: web server
Apache HTTP server, obično se naziva Apache (Apač), je web server koji je jedan od najznačajanijih faktora u početnom razvoju World Wide Web-a. Apache je bio prva prava alternativa serveru korporacije Netscape Communications (trenutno poznatom kao Sun Java Web Server), i od tada predstavlja dostojnog takmaca po pitanju funkcionalnost i performansi svim drugim web serverima. Većina web servera na svetu koristi Apache pokrenut pod Linux operativnim sistemom.U 2009. godini je postao prvi Web server na kome je pokrenuto 100 miliona web sajtova.
Apache je razvijen i održavan od strane otvorene zajednice programera pod pokroviteljstvom fondacije Apache softver. Objavljen pod "Apache License". Apache se karakteriše kao "open source" software.
Od aprila 1996. Apache je najpopularniji HTTP softver. Od septembra 2009. Apache opslužuje više od 54.48% sajtova od ukupnog broja svih sajtova i preko 66% od najprometnijih milion.
Osnovne funkcije i opcije Apache se proširuju kompajliranim modulima. Neki uobičajeni moduli su Piton, Tcl i PHP. Popularne moduli su mod_access, mod_auth i mod_auth_digest, kao i SSL i TLS podrška (mod_ssl), proxy modul (mod_proxy), URL rewriter (mod_rewrite).
Popularna metoda kompresije na Apache je mod_gzip koja služi da smanji veličinu web stranice.
Virtualni hosting omogućava da jedan Apache server opslužuje više različitih sajtova istovrmeno.
1.2 MySQL ::: sistem za upravljanje relacionim bazama podataka
Za funkcionisanje bilo kod dinamičkog sajta neophodan je sistem za upravljanje bazama podataka. Danas su najrasprostranjeniji sistemi sa relacionim bazama podataka (relational database management system - RDBMS), a među njima najzastupljenija MySQL naročito u web sistemima.
MySQL je sistem za upravljanje relacionim bazama podataka (RDBMS) koji radi kao server i obezbeđuje višekorisnički pristup velikom broju baza podataka.
MySQL razvojni tim je napravio izvorni kod dostupan pod uslovima GNU Opšte javne licence. MySQL je u vlasništvu i pod pokroviteljstvom neprofitne firme, švedske kompanije MySQL AB, koja je sada u vlasništvu kompanije Sun Microsystems, a ova je u vlasništvu Oracle korporacije.
Kao odgovor na kupovinu od strane Oraclea članovi MySQL zajednice stvorili nekoliko alternativnih ogranaka u strahu da bi kompanija Oracle mogla da prestane s razvojom ove aplikacije jer je direktna konkurencija drugim njihovim proizvodima.
Besplatni software-ski projekti i aplikacije koje zahtevaju potpuno funkcionalan sistem za upravljanje bazama podataka često koriste MySQL. Takvi projekti su Joomla, WordPress ali i drugi software izgrađen na LAMP platformi. MySQL se takođe koristi u mnogim aplikacijama visokog protoka i prometa uključujući Wikipedia, Google i Facebook.
2. Alati i proces testiranja Linux servera
2.1. Sysstat
Neophodna alatka za testiranje Linux systema je sysstat paket. Sysstat je dobar alat za praćenje većine aktivnosti sitema, jer može da prikaže gotovo sve relevantne informacije, uključujući i mrežnu aktivnost, opterećenje sistema i još mnogo toga.Sysstat paket sadrži aplikacije za praćenje performansi sistema i aktivnosti.
Obuhvata četiri grupe alata za praćenje i analizu (SAR / SADC / sadf, iostat, mpstat, pidstat) globalnih performansi sistema.
Prati veliki broj različitih mernih jedinica:
1. Ulaz / izlaz i statitika prenosa podataka (globalno, po uređaju, po particiji, po mrežnom sistemu fajlova i po Linux taku / PID)
2. Statistika procesora (globalne, po procesoru i po Linux tasku / PID), uključujući i podršku za virtuelizovane arhitekture
3. Statistika korišćena memorije i swap prostora
4. Statistika virtuelne memorije, straničenja i sistemskih grešaka
5. Statistika korišćenja memorije i grešaka po tasku (po PID)
6. Globalna CPU i statistika greške straničenja za zadatke i svu njihovu decu
7. Statistika kreiranja procesa
8. Statistika prekida (globalne, po procesu i prekida, uključujući i potencijalne APIC-e)
9. Detaljnu mrežnu statitiku: aktivnost mrežnih uređaja (broj paketa i prenos) uključujući i greške na mrežnim uređajima; statistika mrežnog saobraćaja za IP, TCP, ICMP-i UDP protokole na osnovu SNMPv2 standarda, podrška za IPv6 verziju protokola.
10. Statistika aktivnosti NFS servera i klijenta
11. Statistika socketa
12. Statistika pokrenutih red i opterećenja sistema
13. Statistika kernel tabele i korišćenja
14. Statistika sistemskih i Linux zadataka
15. Statistika swap particije
16. Statistika aktivnosti konzola
17. Statistika menadžmenta napajanja
Programi koji su deo Sysstat paketa:
* Iostat - izveštaji o radu procesora, ulazno / izlaznih uređaja, particijama i mrežnim uređajima.
* Mpstat - izveštaji o radu procesora pojedinačni ili kombinovani
* Pidstat - izvještaji o radu Linux procesa, procesora, memorije, itd.
* SAR - prikuplja i čuva izveštaje i informacije o aktivnosti sistema (procesora, memorije, diskova, prekida, mrežnih interfejsa, kernel tabele itd.)
* SADC - je sistemski skupljač podataka, koristi se kao background proces SAR procesa.
* Sa1 - prikuplja i skladišti podatke u binarnoj formi u sistemu dnevnih aktivnosti. To je frontend SADC-a, dizajniran tako da bude pokrenut iz cron-a.
* Sa2 - kreira dnevni sažeti izveštaj o aktivnostima. To je frontend SAR, dizajniran da se pokrene iz cron-a.
* Sadf - prikazuje podatke koje prikuplja SAR u više formata (csv, KSML-a, itd) Ovo je korisno za učitavanje podataka sa performansama u bazu podataka ili za kreiranje tabele sa grafikonima.
Jedno od ograničenja ovog sistema je što je minimalni period testiranja jedna sekunda, ali to je adekvatno vreme za testiranje sistema.
Sistem vrlo lako konfigurišemo da prikuplja podatke
# uzimanje uzorka funkcionisanja sistema na svakih 10 min
*/10 * * * * /usr/local/lib/sa/sa1 3 3 &
# generisanje dnevnog izveštaja
53 23 * * * /usr/local/lib/sa/sa2 -A &
Nakon završetka procesa prikupljanja možemo generisati razne izveštaje.
sadf -dt /var/log/sa/sa30 -- -B
hostname;interval;timestamp;pgpgin/s;pgpgout/s;fault/s;majflt/s;pgfree/s;pgscank/s;pgscand/s;pgsteal/s;%vmeff
km20146.keymachine.de;110;2010-01-30 18:48:40; 30.58; 121.74; 1104.39; 0.00; 574.99; 96.17; 0.00; 95.79; 99.60
(prikazana su samo prva dva reda izveštaja. kompletan izveštaj sa kreiranim grafikonima u prilogu)
2.2. Wireshark
Među najboljim alatima za testiranje mrežnih paketa je Wireshark.Wireshark je mrežni paket analizator. Njegov zadatak je da uhvati sve mrežne pakete i kasnije da ih prikaže što detaljnije.
Ovaj set alata možemo da razumemo kao uređaj koji ispituje šta se dešava unutar mrežnog kabla ili kao voltmetar koji koristi električar da ispita šta se dešava unutar električnog kabla (ali na višem nivou, naravno).
U prošlosti, takve aplikacije su bile veoma skupe. Međutim, sa pojavom Wiresharka dosta toga se promenilo.
Neke od njegovih primena su:
- administratori mreže koriste ga za rešavanje probleme sa mrežom
- inženjeri mrežne sigurnosti ga koriste za ispitivanje sigurnosnih problema
- programeri ga koriste prilikom testiranja implementacije protokol
- koristi se i za učenje mrežnih protokola
Funkcije Wireshark-a
Neke od mnogih funkcija Wireshark-a:- Postoji u Linux i Windows varijanti
- Hvata live pakete za mrežnog uređaja
- Paketi sadrže vrlo detaljne informacije
- Mogućnost čuvanja i naknadne analize uhvaćenih paketa
- Uvoz i izvoz podataka iz i za druge programe
- Filter za pakete sa mnogo kriterijuma
- Pretraga paketa sa mnogo kriterijuma
- Automatsko obeležavanje različitih paketa kojama i na osnovu filtera
- Kreiranje statistike.
Ta komanda je
tshark -i 3 -a duration:300 -b duration:300 -w /backup/wireshark/shark &>/dev/null 2>&1
Priloženi skript omogućava jednostavan tekstualni API za konfigurisanje tshark aplikacije, koju koristimo da uhvatimo mrežni protok i kasnije ga analiziramo.
#!/bin/sh
#This script needs to be copied to the /bin directory.
# You need to set yourself as the root user to set the permissions on this script to make it executable and to run this script.
# Set the permissions using this command: chmod 755 /bin/menushark1.0.sh
echo ""
echo "********************* Menushark Version 1.0 *****************************"
echo "********************************************************"
echo "* menushark is an attempt to create a menu system to allow users to *"
echo "* employ the use of tshark by answering a few menu questions. The *"
echo "* menushark script also gives you the command that the menu system has *"
echo "* made to try to teach you how to use tshark at the command line. *"
echo "* Here's what it does: *"
echo "* 1)Asks you questions to put together a command line. *"
echo "* 2)Shows you the command line it created. *"
echo "* 3)It runs the command. *"
echo "* 4)A capture file is created, rights on it are changed - read by all. *"
echo "*************************************************************"
echo "*************************************************************"
echo ""
echo "*************************************************************"
echo "* Remember - you have to run this as the root user. *"
echo "*************************************************************"
echo "Press enter to continue"
echo ""
read
echo "Reading Interfaces available by using the tshark -D command."
echo ""
tshark -D
echo ""
echo "Select which interface would you like to capture from?"
echo "Then press enter."
read interface
echo ""
echo "You chose interface $interface."
echo ""
echo "Type a filename for the capture file."
echo "Then press enter"
read inputfile
echo ""
capfile="$inputfile"
echo "You are creating a cature file named $capfile."
echo ""
PS3="Choose (1-27):"
echo "Choose a Protocol or port filter from the list below - Select 1 for NO FILTER."
echo "Then press enter."
select filter in "" tcp udp ip ip6 ether icmp icmp6 fddi tr arp rarp "port 20 or 21" "port 22" "port 23" "port 25" "port 37" "port 53" "port 69" "port 80" "port 110" "port 161 or 162" "port 443" "port 514" "port 1719 or 1720" "dst port 5010" "port 5060 or 5061"
do
break
done
echo""
echo "To filter on a host name or IP address for the capture filter"
echo "type it here then press enter. Or just hit enter for NO FILTER"
echo ""
read inputhost
echo ""
host="$inputhost"
echo ""
echo "You chose to filter using $filter $host."
echo ""
echo "Press CTRL c to stop the capture"
echo ""
echo "Command being executed by the menu script:"
echo "tshark -i $interface -w $capfile $filter $host"
echo ""
echo "Capture started:"
date
# Now write the string created to the command line for the user
tshark -i $interface -w $capfile $filter
echo ""
echo "Capture finished:"
date
chmod 644 $capfile
echo ""
echo "The file $capfile has been set with attributes of 644 using the command:"
echo "chmod 644 $capfile - so it can be read by anyone."
echo ""
echo "Your current directory is:"
pwd
echo ""







