vaiwa
4/14/2015 - 11:44 PM

Networking TCP/IP

Networking TCP/IP

MAC Adresy

ifconfig          # zjišťuje MAC adresu
ifconfig -a       # zobrazí i rozhraní, která nejsou aktivní

Vzdálené zjištění MAC adresy pomocí protokolu SNMP, viz dole

IP Adresy

# Testování dostupnosti IP adresy
ping adresa
ping adresa -s packet_size  # nastavuje velikost datagramu (64B)
ping adresa -i interval     # nastavuje jak často se bude posilat EchoRequest (1/s)
ping adresa -f              # flood ping, posila pakety a za kazdy request vykresli tecku, po prochodu reply ji zase smaze

Packet Sniffery

  • odchytává všechny pakety na rozhraní, i ty, které nepatří této stanici
  • zobrazuje hlavičky a dekóduje je

tcpdump

tcpdump -i eth0
tcpdump -i eth0 -s velikost  # kolik z každého paketu uloží
tcpdump -i eth0 -v           # zobrazí vice informaci z hlaviček
tcpdump -i eth0 -n           # nepřekládá ip adresy na jména
tcpdump -i eth0 -w file      # zapisuje sebrané pakety do souboru

tshark

paket sniffer s podrobnou analýzou

tshark -V

uložení do souboru

tcpdump -v -i eth0 -w "soubor"
tcpdump -v -i eth0 > /tmp/log001
]```



## Překlad Adres

### ARP
Address Resolutin Protocol
překládá adresy IP -> MAC
```markdown
arp

arping

arping 10.0.0.22         # ziskání MAC adresy

vm15:~# arping 10.0.0.22
ARPING 10.0.0.22
42 bytes from 00:16:3e:00:00:22 (10.0.0.22): index=0 time=3.280 msec

DHCP

  • umožňuje automatickou konfiguraci sítě stanic
  • centrální přidělování IP adres a dalších informací o síti (DNS server, maska sítě, default router)
  • periodicky obnovuje informace
  • klient i serve si pamatují minulý stav => klient dostává stejnou IP adresu
  • klient je standardně identifikován pomocí MAC adresy, ale lze použít i jiný identifikátor
  • DHCP serverů může být v síti několik (pozor na útočníky!)

zobrazení průběhu přidělování adres

dhclient -v eth0

Automatické získávání adres v Linuxu (Debian)

  • v souboru /etc/network/interfaces nastav:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp

Restart nastavení sítě v Linuxu (Debian)

/etc/init.d/networking restart

DNS

  • Pro překlad doménového jména -> IP adresy (a zpět)
  • Hierarchická distribuovaná databáze
  • Rozdělená na zóny (např. cuni.cz, pod ní spadají všechny poddomény, pokud nebyly delegovány)

hostname

  • doménové jméno s přiřazenou IP adresou (A záznam)

Resource Records (RR)

  • záznamy v DNS databázi Skládá se z položek:
vlastník (doména)
jméno - identifikace položky
class - pro Internet IN
TTL   - jak dlouho může klient držet záznam v cache
typ   - viz dole (A, AAAA, CNAME, ...)
RDATA - data, interpretace záleží na typu

Typy RR:

A      - překlad na IPv4 adresu
AAAA   - překlad na IPv6 adresu
SOA    - Start of Authority (informace o zóně)
NS     - Name Server
MX     - Mail eXchanger (mail server pro doménu, priorita - může jich být víc)
CNAME  - alias pro jiné jméno
PTR    - ukazatel do jiné části DNS stromu

Testován DNS

vm15:~# nslookup idnes.cz
Server:         195.113.19.71
Address:        195.113.19.71#53

Non-authoritative answer:
Name:   idnes.cz
Address: 194.79.52.192

DIG

  • swiss knife pro testování služby DNS
  • zobrazuje podrobné odpovědi od name serveru
dig server dotaz typ
  - server je name server, kterého se ptáme
  - dotaz je jméno, na které se ptáme
  - typ je typ RR záznamu na který se ptáme
  - typ může být ANY pro všechny záznamy, AXFR pro přenos zóny

  + trace - nerekurzivní dotaz
  + qr    - zobrazit dotaz
  + trace - zobrazit celou odpověď

PTR

ukazatel na doménové jméno

  • složí ke zpětnému překladu IP adresa => doménové jméno dig -x 195.113.18.123

CNAME

uvádí, že nějaké doménové jméno je alias za jiné

  • mohou se řetězit, neměly by se (zdržuje)
  • pro doménu, která je aliasem nesmí existovat záznamy jiných typů
  • MX a NS záznamy nesmí ukazovat na alias

whois

protokol pro dotazování do databáze (např databáze domén)

  • získává údaje o doménách
whois idnes.cz

TCP a UDP

transportní protokoly nad IP

přidaná hodnota k IP:

porty - přidávají k IP adresám ještě jemnější adresaci

TCP přidává navíc:

obousměrné spolehlivé spojení

  • spolehlivost zajištěna pomocí potvrzování došlých dat protistranou a retransmisí ochrana před zahlcením příjemce
  • odesilatel může odeslat jen určitý objem dat, pak musí počkat na potvrzení) nehodí se pro broadcasty, multicasty (nardozíl od UDP)

porty

  • na jednom portu může probíhat více spojení
  • unikátní musí být pouze čtveřice IP1:port1 <=> IP2:port2
  • každý uzel v síti má 65535 TCP a 65535 UDP portů

otevřený port

  • na portu čeká (naslouchá) server pro nějakou službu a odpovídá na požadavky o spojení

uzavřený port

  • port je neobsazý
  • UDP vátí ICMP zprávu port unreachablem
  • TCP vrátí na požadavek odpověď s nastaveným RST příznakem

Porty 1-1023 jsou privilegované (může je obsadit jen root)

Komunikace se serverem můžeme např. pomocí programů telnet a netcat

netcat

nástroj pro komunikaci se serverem

nc localhost daytime       # komukice pomocí TCP
nc -u localhost daytime    # komukice pomocí UDP

netstat

umožňuje vypsat spoustu informací o síťování na daném stroji

netstat -l  # naslouchající porty

netstat -t  # aktivní TCP spojení včetně jejich stavu
netstat -u  # aktivní UDP spojení včetně jejich stavu
netstat -w  # aktivní soket spojení včetně jejich stavu
netstat -p  # přidává PID procesů

netstat -r  # směrovací tabulka
netstat -s  # statistika dat na rozhraních

nmap

zjišťuje jaké služby na vzdáleném počítači poslouchají

# použití:
nmap cíl      # pro TCP
nmap -sU cíl  # pro UDP

# podporuje více druhů scannování (man nmap)
nmap -O cíl       # zapíná OS finger-print

SSL a TLS

SSL - Secure Socket Layers

  • mezi transportní a aplikační vrstvou
  • brání odposlechu, změně dat a podvrhování zpráv
  • používá se ve spoustě internetových služeb: HTTP, FTP, LDAP, SMTP, POP3, IMAP, ...

TLS - Transport Layer Security

  • následovník protokolu SSL

##SSH

SSH - Secure SHell

  • zabezpečená obdoba telnet protokolu
  • umožňuje dnes širší použití (přenos souborů, přesměrování portů, přesměrování X session)
  • spíše než shell přístup se dnes jedná o sestavení šifrovaného kanálu mezi dvěma uzly v internetu
  • používá TCP port 22
  • používá public-key cryptography (ale né certifikáty - tím se liší od SSL/TLS)
  • otisky klíčů serverů se ukládají v souboru (při příštích připojeních se kontrolují a hlásí se změna)
  • umožňuje různé způsoby ověřování uživatele (heslo klíč, ...)
### Installace
sudo apt-get install openssh-server
### how-to-automate-ssh-login-with-password
Generate a rsa keypair:
# ssh-keygen
then copy it on the server with one simple command:
# ssh-copy-id hostname
you can now log in without password:
# ssh hostname

Port forwarding

SSH je také možné použít na přesměrování:

 - TCP portu z lokálního počítače na jiný počítač a port pomocí šifrovaného kanálu
 - nebo naopak TCP portu ze vzdáleného počítače

SCP

kopírování souborů

příkaz SCP - požívá se podobně jako příkaz CP
scp user@host:fileFrom user@host:fileTO

SNMP

Simple Network Management Protocol

  • slouží k monitorování a nastavení síťových zařízení (routery, switche, tiskárny, ...)
  • umožňuje získat informace o stavu zařízení, případně je i nastavit
  • zařízení mohou generovat asynchronní události (trap), které jsou zasílány SNMP manageru, jež na daný stav může reagovat
  • používá porty UDP 161 a 162
port 161 - naslouchá na něm zařízení
port 162 - naslouchá na něm SNMP manager

programy pro práci se SNMP: snmpget, snmpset, snmpwalk

# příklad:
vm15:~# snmpwalk -v1 -c public 10.0.0.100
SNMPv2-MIB::sysDescr.0 = STRING: Linux bug.ms.mff.cuni.cz 2.6.18-53.1.13.el5xen #1 SMP Tue Feb 12 14:04:18 EST 2008 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (763702) 2:07:17.02
SNMPv2-MIB::sysContact.0 = STRING: root
SNMPv2-MIB::sysName.0 = STRING: bug.ms.mff.cuni.cz
SNMPv2-MIB::sysLocation.0 = STRING: MS
...
(strasne dlouhy)
# zjištění MAC adresy tiskárny eliska.ms.mff.cuni.cz
vm15:~# snmpwalk -v1 -c public eliska.ms.mff.cuni.cz | grep IF-MIB::ifPhy
IF-MIB::ifPhysAddress.1 = STRING: 0:1:e6:3:6f:7a
IF-MIB::ifPhysAddress.2 = STRING:
### SNMP Instalace

sudo apt-get install snmp     # instalace klienta
sudo apt-get install snmpd    # instalace serveru

sudo vim /etc/snmp/snmpd.conf # nastavení - především odkomentovat řádek:
                                            agentAddress udp:161