środa, 15 października 2014

Hypper Text Makeup Language

HTML (ang. HyperText Markup Language) – hipertekstowy język znaczników, obecnie szeroko wykorzystywany do tworzenia stron internetowych
.
 



HTML pozwala opisać strukturę informacji zawartych wewnątrz strony internetowej, nadając znaczenie poszczególnym fragmentom tekstu – formując hiperłącza, akapity, nagłówki, listy – oraz osadza w tekście dokumentu obiekty plikowe np. multimedia bądź elementy baz danych np. interaktywne formularze danych.
HTML umożliwia określenie wyglądu dokumentu w przeglądarce internetowej. Do szczegółowego opisu formatowania akapitów, nagłówków, użytych czcionek i kolorów, zalecane jest wykorzystywanie kaskadowych arkuszy stylów.
W składni HTML wykorzystuje się pary znaczników umieszczone w nawiasach ostrokątnych, np. <title> i </title> lub <h1> i </h1>.
HTML pozwala również na osadzanie ciągów instrukcji języków skryptowych, umieszczonych pomiędzy znacznikami <script> i </script>
Należy nadmienić, że HTML, będąc językiem znaczników, nie jest zaliczany do języków programowania – w jego składni nie przewidziano wyrażeń obliczeniowych, warunkowych czy iteracyjnych.
Ważną cechą HTML-a, która przyczyniła się do popularności systemu WWW oraz Internetu, jest niezależność od systemu operacyjnego i wykorzystywanego sprzętu komputerowego.


Język HTML składa się z kilku kluczowych komponentów:
  • znaczników (i ich atrybutów),
  • typów danych,
  • referencji znakowych,
  • odwołań w postaci encji,
  • deklaracji typu dokumentu.
Prosty przykład strony WWW w HTML-u z ustawieniem języka polskiego:

 

poniedziałek, 13 października 2014

Bezpieczeństwo w SIECI



Sieć Internet w swojej pierwotnej postaci, podobnie jak i system operacyjny Unix, miała służyć przed wszystkim środowisku akademickiemu. W ostatnich latach, ze względu na dynamiczny rozwój Internetu i jego wykorzystywanie m.in. do celów komercyjnych stało się jasne, że niezbędne jest położenie większego niż do tej pory nacisku na kwestie bezpieczeństwa.

Dla zapobiegania naruszeniom bezpieczeństwa komputerów, informowania o znanych zagrożeniach i sposobach ich unikania, pomocy przy usuwaniu skutków ewentualnych naruszeń i koordynowania odpowiednich działań międzyinstytucjonalnych powołano w USA organizację o nazwie CERT. Organizacja ta wydaje m.in. biuletyny rozpowszechniane w sieci informujące o nowo poznanych zagrożeniach. Posiada swoje odpowiedniki w wielu krajach. Jak dotąd, nie istnieje polski odpowiednik CERT.



Zagrożenia bezpieczeństwa w sieci Internet można ogólnie podzielić na następujące klasy:
-uzyskanie dostępu do danych transmitowanych przez sieć lub przechowywanych na dołączonych do sieci komputerach przez osoby niepowołane;
-uzyskanie dostępu do innych zasobów (moc obliczeniowa komputerów itd.) przez osoby niepowołane;  -utrata danych na skutek złośliwej ingerencji zewnętrznej;  -
fałszerstwo danych (dotyczy zwłaszcza poczty elektronicznej, gdzie zachodzi m.in. możliwość podszywania się pod innego nadawcę).



Techniki, jakimi można posłużyć się dla osiągnięcia któregoś z w/w celów, opierają się przede wszystkim na wykorzystaniu:

- wad protokołu TCP/IP i protokołów pokrewnych (DNS, SMTP);

- błędów w oprogramowaniu systemowym.

- błędów administratora lub użytkownika systemu.



W każdej z powyższych kategorii można podać liczne przykłady, jak również sposoby zabezpieczania się przed tymi metodami. I tak np. mechanizmy TCP/IP pozwalają na fałszowanie adresu IP nadawcy pakietu - komputer do którego adresy te docierają, interpretuje je jako wysłane przez inny komputer, niż w rzeczywistości miało to miejsce. Sposobem na zabezpieczenie się przed taką formą ataku jest rezygnacja z usług sieciowych, które opierają autentyfikacją (sprawdzenie tożsamości użytkownika) na jego adresie IP (np. NFS w wersji podstawowej), lub ograniczenie ich do lokalnej podsieci (ukrytej za routerem filtrującym "podejrzane" pakiety).

Protokół TCP/IP nie zawiera wbudowanych mechanizmów szyfrowania przesyłanych danych. Umożliwia to przechwytywanie danych przez osoby trzecie, zwłaszcza w przypadku mediów transmisyjnych takich jak Ethernet, funkcjonujących na zasadzie magistrali. Czynione są obecnie próby włączenia szyfrowania (enkrypcji) danych jako opcji w nowej wersji protokołu IP (IPv6); tymczasowym rozwiązaniem jest stosowanie szyfrowania nie w warstwie transmisyjnej (TCP/IP), lecz na poziomie aplikacji. Przykładowe rozwiązania zostaną omówione poniżej.

Najczęstszym sposobem naruszenia bezpieczeństwa w sieci jest pozyskanie dostępu do cudzego konta na komputerze pracującym w systemie wielodostępnym (np. Unix) przyłączonym do sieci Internet. Cel ten można osiągnąć między innymi wykorzystując błędy w oprogramowaniu systemowym. Typowym przykładem jest błąd odkryty niedawno m.in. w systemie AIX (wersja Unixa firmy IBM), umożliwiający dowolnemu użytkownikowi na dowolnym komputerze w sieci Internet dostęp do konta "root" (tzn. administratora systemu) każdego komputera w sieci Internet pracującego pod systemem AIX. Tego typu naruszenie bezpieczeństwa tradycyjnie określa sie "włamaniem" do komputera. Włamanie na konto administratora jest szczególnie niebezpiecznym przypadkiem, umożliwia bowiem włamywaczowi dostęp do danych wszystkich użytkowników danego komputera, a także ułatwia zatarcie w systemie śladów włamania.



Przyczyny i rodzaje zagrożeń związanych z funkcjonowaniem sieci i podłączeniem do Internetu.





Sniffing (podsłuch (dosł. węszenie) transmisji danych) Używając programów typu analizator pakietów można "podsłuchać" transmisję TCP, taką jak np. sesje TELNET czy FTP, gdzie wszystkie wymieniane dane to "gołe" pakiety i dzięki temu przechwycić hasło wymagane przy logowaniu się, po przechwyceniu hasła można wejść na konto użytkownika i spróbować wykorzystać np. exploita dzięki któremu spodziewamy się dostać prawa administratora. Warto zauważyć że programy tego typu korzystają z "promiscous mode", a więc aby uruchomić taki program należy JUŻ mieć gdzieś prawa administratora systemu (najlepiej w domenie gdzie znajduje się obiekt naszego ataku), takie programy to LanWatch, IPtrace, snoop, sniffit, LinuxSniffer, Ipinvestigator, strobe.



Spoofing (podszywanie się pod legalną "zarejestrowaną" maszynę) podszywanie ma na celu ominięcie zabezpieczeń związanych z dostępem do usług tylko dla wybranych adresów, np. tylko lokalni użytkownicy mogą korzystać z usługi która może okazać się niebezpieczną po udostępnieniu jej światu zewnętrznemu. Programy reprezentujące ten typ ataków to: fakerwall i spoofer.



Cracking (łamanie haseł z passwd metodą słownikową, lub też próbkowanie programu autoryzującego słowami z odpowiednio przygotowanych słowników). Są jeszcze systemy, gdzie "czyste" passwd można sobie skopiować przez TFTP, lub też po "zorganizowaniu" sobie konta zwykłego użytkownika skopiować passwd, i programem crack z odpowiednią ilością słowników próbkować po kolei wszystkie konta. Dostęp do passwd można też uzyskać wykorzystując tzw. błąd phf niektórych serwerów webowych i ich CGI, istnieją nawet programy wyszukujące takie serwery. Można też próbkować w ten sposób sam program autoryzujący (np. w POP3) , lecz jest to łatwe do wykrycia, ze względu na ruch generowany w sieci i obciążenie maszyny autoryzującej.



Hijacking (przechwytywanie zdalnej sesji legalnego użytkownika systemu), metoda przejęcia sesji użytkownika oparta o mechanizm połączeniowy protokołu TCP (3-way handshaking) na czym opiera się TELNET, oraz wygenerowanie odpowiedniego numeru sekwencyjnego. Forma ataku, którą trudno jest wykryć, a użytkownik którego sesja jest przechwytywana, może zorientować się że cos jest nie tak, po nagłym 'resecie' sesji, lub później przeglądając to co robił, programem 'history'. Administrator może rozpoznać tę formę ataku po wykryciu stanu DESYNCH połączenia, oraz lekko zwiększonej ilości pakietów TCP ACK w segmencie, zwiększa się także współczynnik utraty pakietów. Aby uchronić się przed tym rodzajem ataku, należy zrezygnować z TELNET'a na rzecz np. SSH, lub też zaimplementować KERBEROSA.



Denial of Service (blokada usług świadczonych przez system). Przez wysyłanie niewłaściwie sformowanych pakietów, lub flood'owanie danego portu systemu, można spowodować jej zawieszenie, lub też zawieszenie całego systemu, wykorzystują błędy w implementacji obsługi gniazd (np. zbyt długie pakiety ICMP ) itp. Ratunkiem przed tego typu atakami są jedynie patche (czyli łatki) na oprogramowanie, oraz zaopatrzenie się w odpowiednie narzędzia logujące zdarzenia. W pewnych określonych sytuacjach sprawę rozwiązuje jednak dopiero zakup FIREWALL'a.



Wykorzystywanie tzw. exploit'ów. Exploity to małe programy głównie w C i PERL'u, które wykorzystują dziury w oprogramowaniu systemowym (np. SUID), polegające głównie na przepełnianiu buforów i skokach podprogramów w losowe miejsce w pamięci normalnie zabronione dla użytkownika (GCC trampolines) , dzięki czemu można uzyskać prawa administratora systemu. Ta forma ataku może się powieść, jednak intruz musi najpierw zdobyć konto na danej maszynie. Obroną przed tego typu atakiem, jest śledzenie na bieżąco list dyskusyjnych poświeconych dziurom w oprogramowaniu sieciowym (BUGTRAQ, linux-security), regularnym sprawdzaniem logów.


środa, 8 października 2014

Podstawowe protokoły sieciowe

  Protokół jest to zbiór procedur oraz reguł rządzących komunikacją, między co najmniej dwoma urządzeniami sieciowymi. Istnieją różne protokoły, lecz nawiązujące w danym momencie połączenie urządzenia muszą używać tego samego protokołu, aby wymiana danych pomiędzy nimi była możliwa.

Do najważniejszych protokołów należą:

  • TCP/IP
  • IP
  • SLIP
  • PPP
TCP/IP (ang. Transmission Control Protocol / Internet Protocol) - to zespół protokołów sieciowych używany w sieci Internet. Najczęściej wykorzystują go systemy Unixowe oraz systemy Windows, choć można stosować go również w systemach Novell NetWare. Zadanie protokołu TCP/IP polega na dzieleniu danych na pakiety odpowiedniej wielkości, ponumerowaniu ich w taki sposób, aby odbiorca mógł sprawdzić, czy dotarły wszystkie pakiety oraz ustawieniu ich we właściwej kolejności. Kolejne partie informacji wkładane są do kopert TCP, a te z kolei umieszczane są w kopertach IP. Oprogramowanie TCP po stronie odbiorcy zbiera wszystkie nadesłane koperty, odczytując przesłane dane. Jeśli brakuje którejś koperty, wysyła żądanie ponownego jej dostarczenia. Pakiety wysyłane są przez komputery bez uprzedniego sprawdzenia, czy możliwa jest ich transmisja. Może się zdarzyć taka sytuacja, że do danego węzła sieci, gdzie znajduje się router, napływa więcej pakietów, aniżeli urządzenie może przyjąć, posegregować i przesłać dalej. Każdy router posiada bufor, który gromadzi pakiety czekające na wysłanie. Gdy bufor ulegnie całkowitemu zapełnieniu, nowo nadchodzące pakiety zostaną odrzucone i bezpowrotnie przepadną. Protokół, który obsługuje kompletowanie pakietów zażąda więc wtedy ponownego ich wysłania.

IP (Internet Protocol) - to protokół do komunikacji sieciowej, gdzie komputer klienta wysyła żądanie, podczas gdy komputer serwera je wypełnia. Protokół ten wykorzystuje adresy sieciowe komputerów zwane adresami IP. Są to 32-bitowa liczby zapisywana jako sekwencje czterech ośmiobitowych liczb dziesiętnych (mogących przybierać wartość od 0 do 255), oddzielonych od siebie kropkami. Adres IP dzieli się na dwie części: identyfikator sieciowy (network id) i identyfikator komputera (host id). Istnieje kilka klasy adresowych, o różnych długościach obydwu składników. Obowiązujący obecnie sposób adresowania ogranicza liczbę dostępnych adresów, co przy bardzo szybkim rozwoju Internetu jest dla niego istotnym zagrożeniem. W celu ułatwienia zapamiętania adresów wprowadzono nazwy symboliczne, które tłumaczone są na adresy liczbowe przez specjalne komputery w sieci, zwane serwerami DNS
.
SLIP (ang. Serial Line Interface Protocol) - to protokół transmisji przez łącze szeregowe. Uzupełnia on działanie protokołów TCP/IP tak, by możliwe było przesyłanie danych przez łącza szeregowe.

PPP (ang. Point to Point Protocol) - to protokół transferu, który służy do tworzenia połączeń z siecią Internet przy użyciu sieci telefonicznej i modemu, umożliwiający przesyłanie danych posiadających różne formaty dzięki pakowaniu ich do postaci PPP. Steruje on połączeniem pomiędzy komputerem użytkownika a serwerem dostawcy internetowego. PPP działa również przez łącze szeregowe. Protokół PPP określa parametry konfiguracyjne dla wielu warstw z modelu OSI (ang. Open Systems Interconnection). PPP stanowiąc standard internetowy dla komunikacji szeregowej, określa metody, za pośrednictwem, których pakiety danych wymieniane są pomiędzy innymi systemami, które używają połączeń modemowych.


Do innych popularnych protokołów sieciowych należą:
  • IPX/SPX
  • NetBEUI
  • FTP
  • NetDDE
  • SNMP
  • SMTP
  • CSMA/CD
  • DNS
  • DHCP
  • AARP
  • Gopher
  • ARP
  • HTTP
  • ICMP

MODEL OSI; TCP/IP


Adres IP (ang. IP address) – w protokole IP liczba nadawana interfejsowi sieciowemu, grupie interfejsów (broadcast, multicast), bądź całej sieci komputerowej, służąca identyfikacji elementów sieci w warstwie trzeciej modelu OSI – w obrębie sieci lokalnej oraz poza nią (tzw. adres publiczny).
Adres IP nie jest "numerem rejestracyjnym" komputera – nie identyfikuje jednoznacznie fizycznego urządzenia – może się dowolnie często zmieniać (np. przy każdym wejściu do sieci Internet) jak również kilka urządzeń może dzielić jeden publiczny adres IP. Ustalenie prawdziwego adresu IP użytkownika, do którego następowała transmisja w danym czasie jest możliwe dla systemu/sieci odpornej na przypadki tzw. IP spoofingu (por. man in the middle, zapora sieciowa, ettercap) – na podstawie historycznych zapisów systemowych.
W najpopularniejszej wersji czwartej (IPv4) jest zapisywany zwykle w podziale na oktety zapisywane w systemie dziesiętnym i oddzielane kropkami, rzadziej szesnastkowym bądź dwójkowym (oddzielane dwukropkami bądź spacjami).

OSI (ang. Open Systems Interconnection) lub Model OSI (pełna nazwa ISO OSI RM, ang. ISO OSI Reference Model – model odniesienia łączenia systemów otwartych) – standard zdefiniowany przez ISO oraz ITU-T opisujący strukturę komunikacji sieciowej.
Międzynarodowa Organizacja Normalizacyjna (ang. International Organization for Standardization) na początku lat osiemdziesiątych dostrzegła potrzebę stworzenia modelu sieciowego, dzięki któremu producenci mogliby opracowywać współpracujące ze sobą rozwiązania sieciowe. W taki sposób powstała specyfikacja Open Systems Interconnection Reference Model, która do polskich norm została zaadaptowana w 1995 roku.

Model ISO OSI RM jest traktowany jako model odniesienia (wzorzec) dla większości rodzin protokołów komunikacyjnych. Podstawowym założeniem modelu jest podział systemów sieciowych na 7 warstw (ang. layers) współpracujących ze sobą w ściśle określony sposób. Został przyjęty przez ISO w 1984 roku a najbardziej interesującym organem jest wspólny komitet powołany przez ISO/IEC, zwany Joint Technical Committee 1- Information Technology (JTC1). Formalnie dzieli się jeszcze na podkomitety SC.
Dla Internetu sformułowano uproszczony Model TCP/IP, który ma tylko 4 warstwy.


Model TCP/IP (ang. Transmission Control Protocol/Internet Protocol) – teoretyczny model warstwowej struktury protokołów komunikacyjnych. Model TCP/IP został stworzony w latach 70. XX wieku w DARPA, aby pomóc w tworzeniu odpornych na atak sieci komputerowych. Potem stał się podstawą struktury Internetu.