dnsmasq round-robin how to

Dnsmasq is currently compiled with round – robin algorithm (or a simple implementation of this algorithm). We make use of this capability for an very simple load balancing technique.
What dnsmasq & round robin do? Basically , we configure 1 host and give for him N° IP addresses , dnsmasq changes the IP order of this IP corresponding to one host after any single DNS request.
Whats the point?
After each new connection the IP responding will be the next in the list , doing so the requests will be balanced on 3 different servers managing 1 domain.
Let’s say we have a very big host called blackbox and for not bombing our host and the load we just add 3-5 or N servers for balancing the load of the server.

We give to our linux router/firewall an configuration like:
cat /etc/hosts
#
# /etc/hosts: static lookup table for host names
#

#<ip-address>    <hostname.domain.org>    <hostname>
127.0.0.1        localhost.localdomain    localhost darkinet
192.168.0.150 blackbox
192.168.0.151 blackbox
192.168.0.152 blackbox
#NOTE: In real life this should be something like blackbox.com with an public IP address.
#192.168.1.200           www.google.com   #I added google before lol 😀
# End of file

Ok, this is good, now lets see our simple configuration at work:
If we just $dig blackbox

;; ANSWER SECTION:
blackbox.		0	IN	A	192.168.0.150
blackbox.		0	IN	A	192.168.0.151
blackbox.		0	IN	A	192.168.0.152

The seccond response

;; ANSWER SECTION:
blackbox.		0	IN	A	192.168.0.151
blackbox.		0	IN	A	192.168.0.152
blackbox.		0	IN	A	192.168.0.150

The third response

;; ANSWER SECTION:
blackbox.		0	IN	A	192.168.0.152
blackbox.		0	IN	A	192.168.0.150
blackbox.		0	IN	A	192.168.0.151

So, we see that the order of the IP changes after each DNS request cyclically.
Then we restart dnsmasq
# /etc/init.d/dnsmasq restart

This is not for serious load balancing (yep it costs up to 4000 bucks or even more)
So in conclusion, if you are not

;; ADDITIONAL SECTION:
ns1.google.com.        329163    IN    A    216.239.32.10
ns2.google.com.        327587    IN    A    216.239.34.10
ns3.google.com.        331744    IN    A    216.239.36.10
ns4.google.com.        331744    IN    A    216.239.38.10

And you don’t have the need to use 4 server farms for a domain, than this may be your case.
Bye.

AW iptables firewall bash script 1.0 personal edition

Hi there,

Update, now bug fix release 1.1, the firewall was to restrictive and doesn’t allow fast internet browsint, fixed :)

First of all , from now on this website will be in english language, if some one from the staff wold like to translate, i can add a subdomain with a new installation of wordpress.
So, this is a simple bash script which creates  an stateful iptables firewall designed for blocking most common attacks at layer 3 & for on personal box’s.[not for gateways]
Implemented:
# a) Static rule based policies (not to be confused with a “static firewall”)
# b) Connection based stateful policies
# c) Sanity based policies
I have tested it and it blocks most nmap port-scans, syn floods, spoofing attacks and filter all ports , even open ones if the nmap sends more than 1 packet /s (very normal). I wanted to block also IPV6 traffic.
Here is the link ,
Enjoy:

http://albanianwizard.org/Postokodin/67

Save it as firewall.sh than execute it as root with sh firewall.sh and it will print the rules :)
GPLv3.

Linux Ubuntu komanda fsck

Pershendetje, kam kohe qe nuk kam shkruar ne blog pasi kam qene shum i zene. Sot do te trajtoj nje teme e cila mendoj se mund te jete e nevojshme per cdo perdorues jo ekspert te linux. Atehere para ca ditesh me doli nje problem me ubuntu me te cilin punoj ne pune pasi pati nje nderprerje dritash dhe une isha duke kryer nje proces kur e rinis sistemin perseri shoh qe sistemi nuk me hapej me. Sistemi me kerkonte nje check disk e lash dy here ta bente dhe sistemi perseri nuk startonte por me dilte nje console per recover e cila te jepte mundesine te veproje me komandat. Duke pare errorin qe me dilte “filesystem error” mendova te perdor nje komande qe quhet :

fsck – check and repair a Linux file system

sic tregon dhe vete emri kjo komande kontrollon filet e sistemit dhe nese gjen gabime i korigjon. Pasi e ekzekutova komanden:

sudo fsck

kontrolli i sistemit filloj dhe me pas gjeti gabime, me pas me kerkoi ti korigjonte mjaftoj qe une ti jepja nje yes dhe cdo error korigjohej. Me pas bera nje restart dhe sistemi u kthye si me pare. Per te pare te gjitha komandat e fsck mjafton te shkruani ne bash:

man fsck

ose per me shume informacion keni kete link:

http://manpages.ubuntu.com/manpages/hardy/man8/fsck.8.html

Ja nje nga pergjigjet e pyetjeve pse te pelqen linux. Nese do te kishim Windows do te duhej te vendosnim diskun dhe ta lenim repair dhe nese gjithmone e bente do te shihnim qe shume programe nuk do te punonin. Imagjinoni sikur sistemi te ishte nje web apo mail server dhe te ishte windows sa kohe te kerkone per riparim ndersa nje linux nuk do te kerkonte me shume se 1 minute.

Hacker VS Programatori – Demo

Pershendetje, jemi perseri ne nje nga temat e nxehta , kam pergatitur nje skenar ku per te shpjeguar “punen” qe bejn pershkruesit “private” public ne java kam shkruajtur versione te ndryshme te nje programi “banke” me funksione shume te thjeshta.
E futa “hackerin” ne loje sepse tema behet shume me interesante, leximi i kodit behet akoma me itneresant dhe ajo qe doja te shpjegoja (mbrojtja e variabilave dhe metodave ne programimin me objekte)  behet me e qarte dhe e kuptueshme.
Kodin e kam komentuar mire, ose me sakt “tabllon e ngjarjes” keshtu qe leximi i kodit do jete shume i mire… Nese nuk lexoni kod:
“Ne kemi nje perkufizim te pergjithshem per lamerat, themi qe jane njerez qe nuk lexojn kod” 
Kodin me gjithe udhezimet e perdorimit mund ta shkarkoni:
http://albanianwizard.org/pub/bhck.zip

Nje pjese te programit mund ta shihni tek:
http://albanianwizard.org/Postokodin/60

Kujtoj qe skenari eshte virtual, ne boten reale nje vulnerabilitet i tipit buffer overflow do ti jepte sulmuesit kontroll te plote mbi programin vulnerabel dhe kjo do te kompromentonte dhe pjesen tjeter te sistemit.
Sigurohet kenaqesi dhe info pa limit gjat leximit 😉
Have Phun 😛

RREGULLA TE ARTA PROGRAMIMI

Shpesh here nje program cilesor ben diferencen, e kam fjalen ne te gjitha aspektet.
Le te permendim disa rregulla te arta qe vertet bejn diferencen:

1. Ne cilen gjuhe ta shkruajm programin?

Shpesh here kjo eshte zgjedhje vendimtare pasi gjuha qe mund te kemi zgjedhur nuk eshte shume e pershtatshme per nje program te caktuar ndersa nje tjeter eshte shume here me e mire, psh te marrim nje rast banal si psh te perdoresh assembly per te koduar nje program me grafik te avancuar ose e kunderta te perdoresh cobol nderkohe qe te duhet nje program shume i shpejt (pra qe mund te kodohej ne assembly ose python qe jane gjuhe qe japin goxha shpejtesi)
Pra ky eshte hap themelor.

2. Dizajni imagjinar i programit

Kjo vertet them se eshte pika kryesore dhe themelore e te gjith kesaj, pasi nese ne e ideojm programin ne koken tone, me te gjitha pjeset e tij pastaj zbatimi eshte thjesht 20% e punes, nderkohe qe nje programator i mire ne UML mund te bente shume pune ne keto raste, njohuri te tilla japin stabilitet, siguri, funksionalitet.

3. Thjeshtesia

Sa me i thjeshte, aq me mire, nje program i thjesht ka fluiditet dhe eshte i thjesht per tu rregulluar ndersa nje program i komplikuar eshte shume i prirur per te pasur bug dhe vulnerabilitete, ndersa nje program i thjesht eshte edhe me i leht per tu rregulluar dhe kjo çon tek nje rregull tjeter qe eshte PAK RRESHTA.

4. Modulariteti

Ketu hyjm tek programimi me objekte, shpesh jane objektet qe na kursejn rreshta kodi dhe na japin thjeshtesi, nje rregull shume i rendesishem ketu eshte:
Mbaje MAIN() me sa me pak rreshta kodi, kjo do te thote qe nese ne bejm nje program (po e zeme ne java) mund te kemi 15 faile.java ku vetem njeri ka main() per te egzekutuar programin, nese ne i ndajm Konstruktoret dhe metodat ne secilin nga failet dhe mainin e mbajm me pak rreshta vetem sa per te egzekutuar objektet e shperndara atehere kjo do japi nje program shume te thjesht per tu shpjeguar edhe njerit qe nuk ja ka idene programimit.

5. Ridizaini

Gjate perfundimit te programit ka shume gjasa qe te na lindin ide te reja, ne keto raste edhe nese duam te bejm nje ridizajn te programit do te jete shume i thjesht pasi objektet klasat jane te ndara secila ne vendin e vet dhe metodat po ashtu keshtu qe duhet te jete shume e thjesht per te “lozur” me programin tone.

6. Algoritmi fitues

Shpesh algoritmi fitues nuk eshte ai me i komplikuar, por ai me i thjeshti, sepse thjeshtesi do te thote dhe fleksibilitet dhe kur kemi perpara nje projekt te perfunduar ku duhet te rregullojm bug-e kjo do te na kursente ore te tera.

Jane dhe shume te tjera, por per momentin po ndalohemi me keto. (jam duke ikur lol, shtoni metoda tek komentet)

Konfigurimi baze i Iptables ne nje Sistem Linux

Iptables eshte nje program shume i njohur dhe popullor per te gjithe perdoruesit e sistemeve Linux, ai eshte nje firewall goxha i mire dhe ne baze te tij jane ndertuar dhe shume te tjere.
Ne kete “mini-guide” te vogel do te shohim konfigurimin e tij te thjeshte.
Supozohet qe ky firewall te perdoret nga nje kompiuter personal, nese deshironi qe te perdorni firewallin nga ndonje server atehere normalisht duhet te lejoni sherbime te caktuara psh (httpd), (ssh), (ftp)(mysql)(dns) etj .
INSTALIMI

Shume i thjesht, ne shumicen e distribucioneve Linux e keni te instaluar, keshtu qe mund ta instaloni direkt nga package manageri.

KONFIGURIMI

Perpara kesaj duhet te fiksojm disa gjera te vogla shpejt e shpejt, Iptables ka disa “zinxhir” apo fronte ne te cilat kalojn paketat (sepse eshte thjesht nje software qe analizon paketat qe hyjn nga skeda ethernet apo wireless).
Kemi 3 tabela:
FILTER  : ka 3 fronte /INPUT/FORWARD/OUTPUT
NAT : nuk do merremi kesaj rradhe
MANGLE : nuk do merremi kesaj radhe

Ne kete here perderisa po behet fjale per nje konfigurim baze do te shohim vetem tabelen e pare, ate FILTER e cila na ndihmon te konfigurojm firewallin tone me ane te 3 fonteve, Input, forward [perdoret per te kaluar paketa nga makina jote tek nje makine tjeter, pra makina jote eshte thjesht nje “ure” dhe ti zgjedh ti kaloj apo jo]  output [kontrollon paketa qe gjenerohen nga sistemi e ne kete rast ti mund te kontrollosh psh nese dikush (user) nga makina jote kerkon te lidhet me ssh ti mund ta bllokosh duke percaktuar rregulla tek output] .
Ne rastin tone, do te shohim se ç’fare mund te bejm me Input i cili percakton se ç’fare duhet te bejm me paketat qe vijn ne kete zinxhir (pasi eshte kontakti i pare). Pra fronti i pare i “luftes” ku hyjn paketat nga jashte.
Kemi 3 rregulla te ndertuara ne kete front, kemi DROP, ACCEPT dhe REJECT.
ACCEPT – kemi kur paketa pranohet dhe kalon permes firewallit dhe ne kete rast pra eshte kur kemi nje port te hapur dhe nje server httpd. Koneksioni krijohet pa problem.
DROP –  i njohur ndryshe dhe si “blackhole” i cili thjesht injoron paketen duke mos derguar paket pergjigje per tek hosti origjinar.
REJECT – ndalon paketen te kaloj duke derguar nje paket pergjigje ICMP si “destinacioni eshte i paaritshem” duke lene te kuptoje se hosti eshte offline.

DROP versus REJECT
Kemi ndryshim midis ketyre 2 opcioneve qe na ofron iptables, ku secili ka te mirat dhe te keqiat e veta, psh ne aspektin e koneksionit, DROP do i thoshte klientit, ose atij qe kerkon te lidhet apo te sulmoj qe paketa ka humbur dhe ne baze te ligjeve te rrjetit automatikisht do te bente ritransmetimin e kerkeses derisa te perfundonte kurse Reject do ti thoshte qe ne fillim me nje paket “destination unreachable” ICMP keshtu qe do te thote kursim kohe dhe kursim rrjeti.

Per me shume info, provoni firewallin tuaj me netcat ,hping dhe nmap per te testuar keto 2 opcione.
Si fillim:
iptables -A INPUT -p icmp -j REJECT  #Blloko ç’do lloj ICMP-je qe vjen tek kompiuteri yt, gjithmon nese nuk ke ndonje sherbim (server\ftp etj) kjo do te kthej kompiuterin ne nje fare “fantazme” per skanerat qe nuk perdorin opcionin (no-ping)  te nmap.

iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT #Per te garantuar qe koneksionet qe jane te fiksuara te mos mbyllen.

Bllokojm lidhjet udp dhe tcp

iptables -A INPUT -p tcp -j REJECT –reject-with tcp-reset
iptables -A INPUT -p udp -j REJECT –reject-with icmp-port-unreachable
Bllokojm trafikun qe mund te kaloj nepermjet kompiuterit tone, ne kete rast psh evitohet qe kompiuteri te shnderrohet ne nje zombie:
iptables -P FORWARD DROP
Tani na ngelet te kontrollojm trafikun qe del nga kompiuteri yne, dhe nese duam qe te lejojm ç’do gje (eshte diçka normale nese nuk doni te kufizoni ndonje perdorues) atehere:
iptables -P OUTPUT ACCEPT

Krijojm 2 zinxhir te ri te personalizuar si:

iptables -N hapur
iptables -N interface

Persa i perket zinxhirit apo frontit interface do e perdorim per te lejuar komunikimet e brendshme te kompiuterit (loopback) qe mund te perdorin shume aplikacione keshtu qe :
iptables -A interface -i lo -j ACCEPT
KUJDES: nese japim psh iptables -A interface -i eth0 -j ACCEPT dhe eth0 perdoret per tu lidhur me internetin atehere kjo do te mbishkruaj rregullat e mesiperme dhe nuk do jet me firewall lol.
Kalojm tek zinxhiri “hapur” qe sapo krijuam.
Ketu mund te shtojm portat qe ne do i leme te hapura, psh per sherbime te ndryshme qe mund te ofrojm si web-server, ftp-server, mail-server, ssh e keshtu me radhe.
Keshtu qe:

iptables -A hapur -p tcp –dport 80 -j ACCEPT #kjo do te lejonte lidhjet e jashtme per tek porta 80, pra ne rastin tone me web-serverin.
Nese duam qe serverin ta vizitoj vetem ndonje miku yne qe psh ka ip 192.168.1.140 atehere japim ne vend te asaj qe shkruajtem:
iptables -A hapur -p tcp -d 192.168.1.140 –dport 80 -j ACCEPT

Kunder sulmeve te ndryshme

Te kujdesemi qe te gjitha paketat ne hyrje te jen kerkesa per sinkronizim, ne te kundert DROP IT!!

iptables -A INPUT -p tcp ! –syn -m state –state NEW -j DROP
Kjo do te evitonte nje sere sulmesh me nmap.
Kunder sulmeve te tipit “Fragmentation”
iptables -A INPUT -f -j DROP
Kunder XMAS scan
iptables -A INPUT -p tcp –tcp-flags ALL ALL -j DROP
Kunder FIN scan

iptables -A INPUT -p tcp –tcp-flags FIN ALL -j DROP

iptables -A INPUT -p tcp –tcp-flags ACK,FIN FIN -j DROP
Kunder NULL Scan

iptables -A INPUT -p tcp –tcp-flags ALL NONE -j DROP
Mbrojtje e pergjithshme:

iptables -A FORWARD -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j ACCEPT
Kunder “pingut te vdekjes”
iptables -A FORWARD -p icmp –icmp-type echo-request -m limit –limit 1/s -j ACCEPT
Kunder sulmeve syn fload dhe DoS
iptables -A FORWARD -p tcp –syn -m limit –limit 1/s -j ACCEPT
Kunder skanimeve SYN\RST
iptables -A INPUT -p tcp –tcp-flags SYN,RST SYN,RST -j DROP

Per sulme te personalizuara, personalizoni iptables, psh kunder nje sulmi FIN,SYN mbrojtja do te ishte:
iptables -A INPUT -p tcp –tcp-flags FIN,SYN FIN,SYN -j DROP

Kunder spoofing:

iptables -A INPUT -d 224.0.0.0/4 -j DROP
iptables -I INPUT -i eth0 -s 10.0.0.0/8 -j DROP
iptables -I INPUT -i eth0 -s 172.16.0.0/12 -j DROP
iptables -I INPUT -i eth0 -s 192.168.0.0/16 -j DROP
iptables -I INPUT -i eth0 -s 127.0.0.0/8 -j DROP

Thame qe ishte nje konfigurim i thjeshte, ky konfigurim firewalli mund te modifikohet shume here me shume, por shpresoj se do kem kohe dhe do e shkruajm ndonje skript ne bash :)
PS, te gjithe kesaj duhet ti shtoni psad dhe fwsnort.

Arch Linux – nje Tux i vertet

Pershendetje,

kisha kohe qe e vereja si sistem dhe shume here jam nisur ta provoj por per shkak te kohes, perteses (nganjehere) apo faktoreve te tjere nuk kam mundur ta instaloj.
Le ta ndajm bashk kete eksperienc,
Une e instalova me live-cd (rreth 300mb) dhe ne fillim ne pamjen e pare me kujtoi slackware sepse pak a shume gjate instalimit eshte e njejta gje perveçse Arch instalon vetem kernelin dhe modulet e tij qe te duhen per sistemin tend.
Ajo qe me beri shume pershtypje ishte se ne ndryshim nga shume distribucione te tjera, ti konfiguroje vet manualisht ç’do pjes te sistemit duke filluar qe nga bazat (rc.conf) e deri tek grub si bootloader, pra e ndertoje sistemin pak nga pak ashtu siç ta ka qejfi ty.
Fundi i instalimit ishte nje skermat e zeze me nje root@darkinet # perpara…
Ne fjale te tjera ne kompiuter ishte vetem nje sistem linux primitiv, pa grafik, pa sistem zeri, pa programe, pa server X pra pa gje prej gjeje, shkurt Linux shqeto.
Edhe package manageri ishte nje Pacman i cili administronte paketa tar.gz
Eksperienca ishte thjesht fantastike, per tu lidhur me nje rrjet wireless psh, ne jemi mesuar te klikojm tek network-manager dhe te lidhemi nderkohe qe me arch per tu lidhur duhet ne fillim te instaloje firemwarin e skedes wireless, ta pergatisje, te rregulloje network DAEMON-in ne rc.conf qe te startonte automatikisht, pastaj te pergatisje skeden me ifconfig , te skanoje manulisht per rrjete wireles, te lidheshe duke shkembyer çelesin dhe ne fund ti jepje nje dhcpcd wlan0 per te marr ip automatike.
Mbas kesaj, nje upgrade i sistemit dhe instalimi i kernelit te ri, mbas kesaj vjen zgjedhja jote se ç’fare ke deshire te perdoresh per zerin ALSA apo OSS, normalisht zgjodha ALSA si me modern he konfigurohet edhe ky me disa komanda , mbas kesaj u konfigurua serveri X (automatikisht pa xorg.conf) dhe mbas kesaj instalohet driveri i skedes grafike duke e shkarkuar nga repositoryt (harrova ,shtohet dhe user, dhe shtohen dhe repositoryt qe ke qejf).
Mbasi instalova dhe driverin e skedes grafike, u tundova paksa kur i dhash startx, doli nje ekran i zi dhe 2 terminale perball, u tundova sepse kisha deshire ta mbaja sistemin ne ate gjendje por pashe me vone qe disa programe grafike qe me nevoiteshin nuk punonin ne menyre korrekte. Ne te vertet nje perdorues kupton se si realisht funksionon sistemi operativ se si instalohen shtresat 1 nga 1 dhe se si ndertohet ashtu siç ta ka me shume qejfi ty.
Nje ligj shume i rendesishem qe kuptohet gjate kesaj eksperience eshte:
“Ç’do gje qe behet me grafike, ne realitet behet me komanda , poshte pamjes se bukur”
Ne fund si desktop zgjodha lxde (nese mendoni pse jo openbox, eshte perseri openbox ne rrenj por ka me shume opcione dhe eshte ca me i bukur) me vone i shtova programet qe me pershtateshin dhe ato qe me pelqenin me shume, sepse vertet ka shume zgjedhje si psh per networ-managerin, per audion, per editoret, per platformat per programim, per librarit e sistemit, per çeshtjet e siguris e keshtu me radhe..

Rezultati:
Nje sistem linux i ndertuar pothuajse vet sipas shijeve te tua personale qe nga fillimi deri ne fund, me programet qe do, me menyren e perdorimit qe do, pra super-elastik ose me sakt te detyronte te modifikoje ç’do gje per te te lene ty te beje sistemin dhe jo sistemi te te bente ty.
Starton ne 8-10 sekonda, dhe gjate gjith kohes duke marre parasysh se ka perfunduar si sistem (pra ç’fare kam pasur per tja instaluar ja kam instaluar) proçesori rri 0%-1% kurse RAM rri 200 maksimumi 300 mb.
Nuk eshte aspak minimalist pasi kam instaluar gati 5 gb software ne te.
Jashtzakonisht i shpejt dhe i qendrueshem, shume fleksibel tjesht linux 😉

Nese dikush kerkon ta instaloj nuk keshillohet per perdoruesit e rinj te linux ose ata qe nuk e kane perdorur me pare.
Gjithsesi gjeni nje dokumentim perfekt tek Arch Wiki Begginers Installation Guide.
Ja nje screen ne fund te instalimit: (ps edhe screenshot i behet me komanda 😀 )

Sfide programimi Java – I/O

Per programatoret java po sjellim nje ushtrim shume interesant dhe ne te njejten kohe nje sfide ne zgjidhjen e tij. Mua personalisht me mori rreth 40 minuta shume te kendshme. Problemi dhe zgjidhja eshte kompleks dhe kerkon intuite ne programim.

Ja ushtrimi:

/*
http://albanianwizard.org
arditi*at*hush*pik*ai
Liçence GPLv3
———————————————————–
Program i nje niveli relativisht te veshtire per temat I\O
Llogjika e ketij programi eshte goxha e komplikuar 😉
———————————————————–
>>Shkruaj nje program i cili lexon N (numer i pa percaktuar) grupe numrash te plote nga nje skedar ku fillim i secilit grupi shenohet me “grupi”.
>>Programi mund te perdori ç’faredo numri grupesh (pra numri i grupeve nuk eshte i limituar).
>>Programi mund te perdori vetem klasat java.util.Scanner; java.io (objektet qe permbajn Scanner new File, .next(), .trim() etj) dhe gjat zhvillimit te tij lejohet vetem while, if, else !
***********************************************************
Ja faili input
***********************************************************
grupi
2 1 6 3 1 4
grupi
grupi
1 19 1 5 2 4 1 2 1
grupi
10 11
12 13
7   8
9
***********************************************************
Ja dhe outputi

***********************************************************
Shuma e grupit 1, eshte e barabarte me 17
Grupi i 2-te nuk ka te dhena.
Shuma e grupit 3, eshte e barabarte me 36
Shuma e grupit 4, eshte e barabarte me 70
*/

Per c’do sqarim postoni ketu por besoj se nga vet shembulli ne fjale Input – Output e keni kuputar se per cfare ben fjale ushtrimi dhe si eshte kerkesa.

Pritet zgjidhja e tij deri ne 1 jave qe nga data e postimit (dmth sot).
Mbas 1 jave do te postoj vet zgjidhjen.
Programinuk me mori shume rreshta kod, thjesht duhet te mendohet mire zgjidhja. :)
Happy coding.

Skanimi dhe identifikimi

Ne kete paper do te trajtojme skanimin e nje hosti ne nje network, te gjejm portat qe perdor dhe te identifikojme sistemin e operimit qe perdor.
Ky pikerisht eshte hapi i dyte pasi kemi mbledhur informacione publike nga footprinting.
Nmap eshte nje nga toolset me te kompletuar dhe te mir per tu perdorur per kete qellim.
Ai eshte free kshu qe mund ta shkarkoni nga faqja zyrtare keni dhe version GUI per windows.

Para se te fillojm doja te benim nje permbledhje te shkurter mbi procesin e lidhjes TCP. Ato te cilet jane te informuar nga kjo ane mund te kalojne me poshte 😉
Kur nje lidhje TCP realzohet midis dy sistemeve, nje cikel i njohur “three way handshake” kryhet, Kjo perfshin shkembimin e 3 paketave dhe sinkronizimin e sistemeve me njeri tjetrin.
Sistemi i cili nis lidhjen dergon nje pakete sistemit me te cilin do qe te lidhet. Paketat TCP kane nje pjese (header) me nje fushe qe percakton “flamurin” (tipin e paketes)
Ketu do flasim per 6 tipat e mundshme te paketave, te cilat jane :
1. SYN (Synchronise) – permbajne nje numer sekuence te TCP, te cilat e njohin sistemin remote, se cilen sekuence te perdor per lidhjen pasardhese.
2. ACK (Acknowledge) – njehuri mbi marrjen dhe futjen e paketave.
3. FIN (Finished) – dergohet kur lidhja ka perfunduar
4. RST (Reset) – dergohet kur lidhja eshte per tu rikrijuar.
5. URG (Urgent) – do te thote qe segementi permban data urgjente
6. PUSH (Push)  – i tregon krahut qe po merr ne lidhjen TCP qe duhet te njoftoj procesin e marrjes per kete fakt.
Per te nisur nje lidhje TCP, sistemi qe fillon lidhjen dergon nje pakete SYN tek destinacioni, kjo e fundit do te dergoj nje pakete SYN nga ana e saj dhe nje ACK e cila do te njoftoj per ardhjen e paketes se pare.
Keto jane te kombinuara ne nje pakete te vetme SYN/ACK. Mbas kesaj sistemi i pare dergon nje pakete ACK per te informuar qe SYN/ACK arriti me sukses dhe qe mund te filloj shkembimi. Ky informacion do ju duhet per me poshte 😉

Ping
Menyra me e shpejte per te percaktuar nese nje host eshte “gjall” apo jo eshte te ping-ojme ate.
Kemi dy menyra pingimi me ane te nmap:
1. Dergojme nje kerkes echo ICMP, e cila ben qe ti kthehet si pergjigje nje paket ICMP. Nje host mund te konfigurohet qe mos ti pergjigjet
ketyre kerkesave kshuqe nuk eshte e then qe ai te mos jet “gjall” 😀 .

nmap -sP 192.168.1.*          – ne kete menyre do te pingojme te gjitha hostet

2. Per te verifikuar nqs jan bllokuar kerkesat ICMP apo eshte ne te vertet hosti down, bejm nje TCP Ping.
Nje tcp ping dergon nje paket SYN apo ACK te nje porte e caktuar (80 porta default) tek sistemi qe po skanojme.
Nqs nje RST apo nje SYN/ACK thehet atehere sistemi remote eshte online. Nqs jo atehere mund te jete offline ose porta e caktuar eshte e filtruar.

nmap -PT porta_qe_do_te_dergohet_paketa destinacioni

Per te ndaluar TCP ping apo ICMP ping mund te perdorim nje firewall te mir-konfiguruar.

Skanimi i portave
Eshte procesi i lidhjes me portat UDP dhe TCP te nje hosti per te percaktuar cilat porta jan hapur ne pritje te lidhjeve.
Skanimi mund te realizohet ne rrug te ndryshme. Keto qe paraqes me poshte jane me te perdorshmet:

1. Lidhje me ane te TCP.
Sic njihet TCP connect() scan, e ka marr emrin nga socket e programimit te UNIX e cila perdor nje thirrje te sistemit, connect()
per te realizuar nje lidhje me hostin. Nqs connect() realizohet me sukses lidhja realizohet, Nqs jo lidhja nuk realizohet, serveri mund te jete offline, porta mund te jete e mbyllur
apo mund te ket ndonje problem tj gjat rruges. Krijohet lidhja nje nga nje me portat kryesore ose nqs duam me te gjitha portat dhe per ato porta qe realizohet lidhja klasifikohen te hapura
te tjerat te mbyllura.
Gjeja e keqe eshte se kjo i regjistron ip derguese dhe indetifikohesh shpejte. Gjithsesi ky lloj skanimi mund te realizohet me ane te komandes -sT ne nmap.

2. Skanimi TCP SYN.
Ky tip skanimi ben qe te dergohet nje pakete SYN ne host. Nqs hosti eshte duke pritur lidhje ne nje porte te caktuar atehere kthen nje pakete SYN+ACK. Nqs hosti eshte online dhe nuk eshte ne pritje
ne ate porte atehere dergon nje pakete RST dhe nqs eshte e filtruar atehere nuk dergohet asgje. Kjo eshte rruga qe ndjek nmap per te skanuar. Ne kete rast nuk perfundohet i gjith cikli three-way handshake. Kjo menyre eshte e pakapshme(e fshehur) derisa nuk logohet nga hosti xD .

nmap -sS destinacioni -g porta – nqs firewall ka bllokuar ndonje porte.

3. Skanimi me ane te paketes FIN
Ne kete metode dergohet nje pakete FIN ne hostin qe do te skanojme. Nqs hosti eshte online por nuk eshte ne pritje ne nje porte te caktuar
atehere ai pergjigjet me nje pakete RST, perndryshme nqs nuk eshte ne pritje ne ate porte atehere nuk kthen pergjigje. Duhet te keni parasysh qe ne Windows perher hosti dergon nje paket RST. Kjo eshte ne interes per te
percaktuar sistemin operativ, por eshte me thjesht me fingerprining qe do te shohim me poshte.
Gjithashtu FIN dhe skanime te tj qe do te shohim me poshte jan e nevojshme per te shmangur firewall dhe IDS te cilat perqendrohen shumicen e rasteve tek paketat SYN.
Komanda per te realizuar FIN SKAN :
nmap -sF destinacioni

4. Skanimi me XMAS
Kjo metode skanimi perfshin dergimin e paketes TCP me flamujte FIN, URG, PUSH. Atehere nqs hosti eshte ne pritje ne nje porte te caktuar atehere kthen nje pakete RST, nqs jo atehere nuk kthen pergjigje.
Paketat FIN jane normalisht te perdorura per te hedhur posht nje lidhje TCP te realizuar.
Komanda: nmap -sX destinaioni

5. Skanimi NULL
Atehere, dergohet nje paket TCP me asnje flamur te inseruar ne header…Nqs hosti eshte ne pritje ne nje porte te caktuar atehere nuk kthen pergjigje, ne te kundert dergon nje pakete RST.
Komanda: nmap -sN desinacioni

6. Skanimi RPC
Ky lloj skanimi dergon paketa NULL ne menyre qe te kontrolloj nqs nje porte e caktuar eshte port RPC (remote procedure call) apo jo. Gjithashtu percakton programin dhe versionin.
Komanda: nmap -sR destinacioni

7. Skanimi IP Protocol
Ky lloj skanimi krontrollon protokollet te cilat jan te suportuara ne hostin qe po skanojme.
Komanda: nmap -sO destinacioni

8. Skanimi Window
Ky tip skanimi, eshte i ngjashem me ate ACK, shpesh na ndihmon te gjejme portat e hapura, te filtruara , jo te filtruara ne nje sistem.
Perdoret per te pecaktuar dhe OS e hostit, nje list te mir per te ber krahasime mund ta gjejm ne google.
Komanda: nmap -sW destinacioni

9. Skanimi UDP
Per te percakuar nqs nje host eshte ne pritje ne nje porte te caktuar UDP, nje pakete UDP dergohet ne ate porte. Nqs hosti nuk eshte ne pritje atehere nje paket ICMP na dergohet nga hosti.
Perndryshe nqs hosti eshte ne pritje ne nje port te caktuar atehere nuk dergohet asnje lloj pakete.
Komanda: nmap -sU destinacioni

10. Skanimi Idle
Skanimi Idle eshte nje skanim i avancuar, ku paketat te cilat dergojme ne hostin qe skanojme nuk mund te identifikojne sistemin qe po ben skanimin.
Nje host zombi mund te percaktohet per te ber kete skanim. Ky host zombi duhet fillimisht te plotesoj disa kritere qe te na realizohet skanimi.
Ky tip skanimi funksionon duke exploit-uar sekuencat IP ID te gjeneruara ne hostin zombi per te percaktuar portat e hapura ne hostin qe do te skanojme.
Ne fillim sqarojme…C’eshte IPID Cdo pakete ne internet ka nje ID identifikimi nje nr. Shume sisteme operative thjeshte e shtojne kete nr me  1 per cdo pakete qe dergojme.Duke kontrolluar me kujdes IPID, nje person qe po realizon skanimin mund te marri informacion sesa paketa jane derguar nga kontrolli i fundit.
Skanimi kontrollon IPID tek zombi dhe realizon nje lidhje me nje host qe do te skanohet, duke e ber ate te duket sikur vjen nga zombi 😀
Nqs porta qe skanohet eshte hapur nje SYN/ACK kthehet nga hosti qe po skanohet tek zombi :D, dhe ky i fundit ben reset lidhjes (RST) sepse ai nuk ka asnje lidhje me par ne memorje. Nqs porta eshte e mbyllur nje RST dergohet tek zombi dhe asnje paket tj nuk dergohet.
Atehere cfare bejm ne…Ne shkojme e kontrollojme IPID pasi e kemi kontrolluar njeher ne fillim. Nqs ajo eshte rritur me nje atehere porta eshte mbyllur sepse nuk i ka khyr pergjigje hostit qe skanojme dmth hosti ka derguar nje paket RST. Rritjen me e ka ber lidhja qe kemi kryer ne per te marr IPID.
Rasti dyte eshte kur rritet IPID me 2 ne kete rast nje paket eshte derguar tek ne dhe nje paket eshte derguar tek hosti qe po skanojme dmth, hosti i ka derguar nje SYN/ACK dhe zombi eshte pergjigjur me RST :D. Ne kete rast kemi porte te hapur, jo 100% e sigurte por ka shume shume mundesi. Rasti 3 eshte kur kemi rritje me me shum se 2 atehere hosti zombi
qe po perdorim nuk eshte per kete pune sepse ka shum trafik.
Komanda: nmap -sI zombi destinacioni

Nje her tj do te trajtojme kohen e dergimit te paketave, fingerprinting, skanime te fshehta si ne rastin e idle 😉
shpresoj te jete sa me teper informative :) .

Inkapsulimi – ja se si funksionon komunikimi ne network – rrjet

Kjo teme eshte ne podjum :), zakonisht keto jane gjerat kyçe qe shumica preferojn ti mbajn pervete (per studentet, pergjigjuni nese profesori ua ka thene keto gjera ) sepse njehere qe ke kuptuar kete, ke kuptuar realitetin se si funksionon networku me rrenje e dhemball.
Duke u bazuar gjithmon tek OSI kur flasim per shtresat e OSI-t dhe komunikimin, ky komunikim eshte Vertikal dhe Horizontal, le te shohim nje shembull praktik per te kuptuar ne menyre perfekte se ç’fare do te thote komunikim vertikal dhe horizontal.
Po marrim rastin tim qe po vizitoj albanianwizard.org me browserin Opera.
Ne kete rast, kompiuteri im ka nje IP, dhe severi ka nje IP te veten qe eshte baza e komunikimit, dhe ky komunikim midis browserit dhe faqes, ose me mire clientit dhe serverit behet ne baze te nje protokolli tani te pershkruajm se ç’fare ndodh ne realitet kur une klikoj linkun “Sisteme Operative” i cili duket ne frontalen e albanianwizard.org .

Ne rradhe te pare, ky klikim per kompiuterin nuk eshte asgje, browseri ne kete rast Opera i dergon nje grumbull bitesh Sistemit Operativ (ne kete rast Linux) ku ky i fundit ja dergon kernelit qe ja dergon proçesorit i cili di se ç’fare te bej dhe instruksionin ja dergon skedes wireless (perderisa po perdor wireless ne kete moment per lidhjen e internetit) te ciles i vijn  vetem impulse elektrike te larta (1) dhe te uleta (0)  ne te cilat jane te gjitha te dhenat e duhura dhe instruksionet per veprimin e deshiruar (pra paraqitjen ne ekran te faqes Sisteme Operative). Ketu jemi ne shtresen me te funidt te OSI-t ate qe quhet Shtresa Fizike qe perdor kabllin per te tejçuar kete grumbull bitesh te organizuar te quajtur PDU ne kete rast pasi vet shtresa 1 e OSI-t qe te kuptoj kete “grumbull bitesh” duhet qe vet grumbulli i biteve te plotesoje disa kushte te cilat jane kushtet e protokollit perkates ne kete rast. Mbas kesaj, ky grumbull paketash kerkon qe te shkoj tek serveri, dhe kalon ne nje nivel me te lart te OSI-t qe quhet: Data Link, ky lloj komunikimi quhet komunikim vertikal pasi te dhenat kalojn nga shtresa me e larte tek me e uleta (nga browseri i cili eshte aplikacion [application layer] tek skeda etherenet apo skeda wireless e cila eshte hardware [physical layer])  dhe nga me e uleta (ne kete rast hardwari qe perdor serveri) tek me e larta (vete aplikacioni server, psh apache web server eshte program dhe ne kete rast eshte aplikacion). Per kete arsye pra, meqenese paketat origjinale te gjeneruara nga nje klikim ne ekranin e kompiuterit per te pare nje faqe ne internet kaluan neper keto shtresa te rrjetit duke ecur ne menyre te njepasnjeshme, shtrese mbas shtrese ky lloj komunikimi quhet vertikal por nese e shohim rezultatin perfundimtar do te shohim qe te njejtat paketa kane qene nje here ne nivelin fizik (sipas OSI) tek kompiuteri im dhe njehere ne te njejtin nivel tek Serveri, keshtu qe krijohet nje komunikim horizontal , ose shembull nje here ne shtresen 7 (aplikative) ku une me maus nepermjet browserit klikova linkun  e faqes, dhe nje here tjeter kur serveri i faqes (qe eshte aplikacion dhe sipas OSI-t eshte ne nivelin 7) ju pergjigj kerkeses duke derguar permbajtjen e faqes ne grumbull bitesh shtrese mbas shtrese duke zbritur nga niveli 7 i vet, ne nivelin 6, nga niveli 6 ne te 5-stin e keshtu me rradhe deri ne nivelin 1, mbas kesaj kaloi informacioni ne nivelin 1 ne kompiuterin tim, e duke u ngjitur nivel mbas niveli, protokoll mbas protokolli arriti tek niveli 7 e ne kete moment browseri me paraqit permbajtjen e faqes “Sisteme Operative” ne ekran :)

Kuptuam pra, qe ne kete rast kemi transportim vertikal te te dhenave e ne te njejten kohe, transportim horizontal.
Nje pyetje me vend do te ishte, ç’fare i ndodh paketave kur kalojn  nga niveli 7 ne ate 6, e keshtu me radhe?, psh Serveri (albanianwizard.org) mori kerkesen nga Clienti (Browseri Opera ne shtepine time) per te paraqitur nje faqe qe gjendet ne te, e cila eshte kjo qe ne realitet per ne eshte nje faqe kurse per serverin eshte vetem nje grumbull te dhenash qe duhen derguar si pergjigje.
Ketu do te perdorim PDU dhe SDU si terma ashtu dhe Inkapsulimin te cilin do e shohim ne vazhdim.
Kur jemi ne shtresen (layer) 7 dhe serveri albanianwizard.org po dergon grupin e paketave, ky grumbull quhet PDU (Protocol Data Unit) pasi permban informacionet e nevojshme per protokollin ne te cilin po gjenerohet, dhe ka dhe te dhenat (data) ne brendesi.
Ne momentin qe kalon ne N – 1 (7 – 1 = 6) behet grumbulli i te dhenave qe shtresa 6 eshte supozuar te sherbej (service) keshtu qe ne kete moment (N-1) quhet SDU (Service Data Unit).
Ç’fare ndodhi?, grupi i paketave ishte PDU dhe SDU, si PDU + SDU = SDU?
Kjo ndodh, sepse Protocol Data Unit do te thote diçka vetem per shtresen (layerin e OSI-t) ne te cilin ndodhet dhe nuk do te thote asgje per shtresen qe vjen me mbrapa keshtu qe trajtohet si SDU (Service Data Unit) dhe ne momentin qe arrin tek shtresa 6 (N – 1) kete grumnbull te dhenash kjo shtres e vesh me PDU-n e saj [pra i gjeneron nje header dhe footer sipas kushteve te protokollit te saj] dhe kjo “veshje” apo “mbeshtjellje”  quhet INKAPSULIM
Keshtu qe jemi tek shtresa 6 te e cila ka ardhur nje PDU + SDU (qe trajtohet si SDU).
Tani qe shtresa 6 te kaloj tek shtresa 5 (sherbimin – SDU-n) duhet qe tek SDU-ja qe ka marr, te vendosi PDU-n e vet, dhe keshtu del SDU (i nivelit 6) + PDU-n e nivelit 5. Dhe edhe njehere e perserisim ky eshte saktesisht Inkapsulimi, apo ne shqipe me te thjesht “mbeshtjellja” e paketave.
Ja nje pamje per te pasur me te qarte se per ç’fare behet fjale:
Informatika Shqiptare

Siç e shohim te dhenat jane njelloj, pra “data” nuk ndryshon, por ne ç’do here qe zbresim 1 nivel grumbulli i paketave “vishet” me nje PDU te cilat jane te nevojshme qe kete grumbull te dhenash ta bejn te kuptueshem dhe te perdorshem ne shtresen N – 1 ( e cila ka protokollin e saj i cili mund te varjoj).
Ç’fare ndodh kur paketat ngjiten nga niveli 1 tek 7-ta?
Ndodh e kunderta, pra fillon zhveshja e grumbullit te paketave duke hequr PDU-t njeri mbas tjetrit, kjo eshte edhe arsyeja qe nese duam qe nuk mund te perdorim protokollin FTP nese ne porten 21 e kemi te mbyllur, panvarsisht se serveri psh mund te jete verpues ne ate port, dhe kjo eshte edhe arsyeja pse kemi ato qe quhen “porta sherbimi” dhe “porta te sherbyera , apo kliente”.
Nese ka pyetje, jane te mirepritura.