###### tags: `xarxes` # Comandes de verificació de connectivitat ## Index 1. [ip](#ip) 2. [ifconfig](#ifconfig) 3. [ipconfig](#ipconfig) 4. [ping](#ping) 5. [arp](#arp) 6. [arping](#arping) 7. [nslookup](#nslookup) 8. [dig](#dig) 9. [host](#host) 10. [traceroute / tracert](#traceroute) 11. [netstat](#netstat) 11. [ss](#ss) 12. [route](#route) 13. [ncat](#ncat) 14. [nmap](#nmap) ## ip | Element | Valor | | -------- | -------- | | Sistema operatiu | GNU/Linux | | Definició | Serveix per comprovar, canviar i des/habilitar l'adreça ip d'una targeta de xarxa d'un ordinador | ### Comprovació de connexió Per comprovar quina adreça de xarxa tenim ho podem fer amb les següents comandes: ```bash= profe@estany:~$ ip a profe@estany:~$ ip addr profe@estany:~$ ip addr show profe@estany:~$ ip addr show enp7s0 ``` Les tres primeres ens mostra la configuració TCP/IP de totes les interfícies de xarxa del nostre ordinador. La darrera ordre ens mostra només la configuració de la interfície amb nom enp7s0. Normalment els noms de les interfícies cablejades comencen per e (d'ethernet) i en el cas de les sense fil per w. Vegeu el seu ús: [![asciicast](https://asciinema.org/a/c9vfz2V0671vuJNqi9uJ5patW.svg)](https://asciinema.org/a/c9vfz2V0671vuJNqi9uJ5patW) ### Canviar adreça ip Per afegir una adreça ip a una interfície es fa: ```bash= profe@estany:~$ sudo ip addr add 192.168.0.11/24 dev enp7s0 ``` En aquest cas afegim l'adreça 192.168.0.11/24 a la interfície cablejada enp7s0. Si volem eliminar una adreça ip d'un interfícies es fa amb la següent ordre: ```bash= profe@estany:~$ sudo ip addr del 192.168.0.11/24 dev enp7s0 ``` **S'ha de fer amb permisos de sudo** Vegeu el seu ús: [![asciicast](https://asciinema.org/a/bvkgXlzAnYzSkVjvnJtAUEBYU.svg)](https://asciinema.org/a/bvkgXlzAnYzSkVjvnJtAUEBYU) ### Habilitar / deshabilitar la targeta de xarxa Per deshabilitar (desconnectar) una interfície es fa: ```bash= profe@estany:~$ sudo ip link set enp7s0 down ``` Per tornar-la a connectar es fa: ```bash= profe@estany:~$ sudo ip link set enp7s0 down ``` **S'ha de fer amb permisos de sudo** Vegeu el seu ús: [![asciicast](https://asciinema.org/a/B9TWt6D31Q1kS2jcnIW9cTuN4.svg)](https://asciinema.org/a/B9TWt6D31Q1kS2jcnIW9cTuN4) Vegeu més explicació a [https://www.tecmint.com/ip-command-examples/] (https://www.tecmint.com/ip-command-examples/) ## ifconfig | Element | Valor | | -------- | -------- | | Sistema operatiu | GNU/Linux | | Definició | Serveix per comprovar, canviar i des/habilitar l'adreça ip d'una targeta de xarxa d'un ordinador. ** En versions noves de GNU/Linux en desús** | ### Comprovació de connexió Per comprovar quina adreça de xarxa ho podem fer amb les següents comandes: ```bash= profe@estany:~$ ifconfig profe@estany:~$ ifconfig -a profe@estany:~$ ifconfig enp7s0 ``` Les dues primeres ens mostra la configuració TCP/IP de totes les interfícies de xarxa del nostre ordinador. La darrera ordre ens mostra només la configuració de la interfície amb nom enp7s0. Normalment els noms de les interfícies cablejades comencen per e (d'ethernet) i en el cas de les sense fil per w. Vegeu el seu ús: [![asciicast](https://asciinema.org/a/3xb7sagE7Eoz01tsiReTsFcYJ.svg)](https://asciinema.org/a/3xb7sagE7Eoz01tsiReTsFcYJ) ### Canviar adreça ip Per afegir una adreça ip a una interfície es fa: ```bash= profe@estany:~$ sudo ifconfig enp7s0:1 192.168.0.11 netmask 255.255.255.0 broadcast 192.168.0.255 ``` En aquest cas afegim l'adreça 192.168.0.11/24 a la interfície cablejada enp7s0:1. En aquest cas per fer servir una pseudointerfície que permet que ifconfig doni més d'una IP a la mateixa targeta de xarxa. **S'ha de fer amb permisos de sudo** Vegeu el seu ús: [![asciicast](https://asciinema.org/a/okozQch0Kj8YXLChWenfj66Qr.svg)](https://asciinema.org/a/okozQch0Kj8YXLChWenfj66Qr) ### Habilitar / deshabilitar la targeta de xarxa Per deshabilitar (desconnectar) una interfície es fa: ```bash= profe@estany:~$ sudo ifconfig enp7s0:1 down ``` Per tornar-la a connectar es fa: ```bash= profe@estany:~$ sudo ifconfig enp7s0:1 up ``` **S'ha de fer amb permisos de sudo** Vegeu el seu ús: [![asciicast](https://asciinema.org/a/K7a9wW8HwfAypuT8ZSt0LllFS.svg)](https://asciinema.org/a/K7a9wW8HwfAypuT8ZSt0LllFS) Vegeu més explicació a [https://www.tecmint.com/ifconfig-command-examples/](https://www.tecmint.com/ifconfig-command-examples/) ## ipconfig | Element | Valor | | -------- | -------- | | Sistema operatiu | Windows | | Definició | Serveix per comprovar i renovar l'adreça ip d'una targeta de xarxa d'un ordinador | ### Consultar la configuració TCP/IP Per visualitzar la configuració bàsica de totes les interfícies: ```bash= ipconfig ``` Per visualitzar tota la configuració de totes les interfícies: ```bash= ipconfig /all ``` Per comprovar la informació DNS (les traduccions per nom lògic a IP) de la nostra interfície: ```bash= ipconfig /displaydns Adaptador ``` S'ha d'especificar quina interfície li correspon. És el nom posat a l'adaptador. ### Renovar configuracions TCP/IP Per renovar la configuració TCP/IP que assigna un servidor DHCP: ```bash= ipconfig /renew Adaptador ``` S'ha d'especificar quina interfície li correspon. És el nom posat a l'adaptador. Per renovar la configuració DNS (les traduccions per nom lògic a IP) rebuda pel servidor DHCP: ```bash= ipconfig /registerdns Adaptador ``` S'ha d'especificar quina interfície li correspon. És el nom posat a l'adaptador. Per eliminar les peticions DNS (les traduccions per nom lògic a IP) que s'han fet durant la sessió: ```bash= ipconfig /flushdns Adaptador ``` S'ha d'especificar quina interfície li correspon. És el nom posat a l'adaptador. Més informació a [https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/ipconfig](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/ipconfig) ## ping | Element | Valor | | -------- | -------- | | Sistema operatiu | GNU/Linux - Windows | | Definició | Serveix per comprovar la connectivitat d'un equip enviant missatges a altres dispositius | ## Exemple ordre EL ping envia un paquet de dades per la xarxa a un altre dispositiu. Així ens permet saber si la nostra configuració TCP/IP és correcte i al del destí. Utilitza el protocol [ICMP](https://ca.wikipedia.org/wiki/Internet_Control_Message_Protocol). L'ordre és: ```bash= ping ipDestí ping nomLogic ``` El destí pot ser una ip (8.8.8.8) o un nom lògic (excemple www.insjoandaustria.org) ## Paràmetres més interessants - -t (només per a Windows) eternament i s'acaba prement **ctr+c**. En GNU/Linux per defecte és etern. - -c número de solicituts . Per enviar un nombre concret de missatges. - -I interfície que s'usa. Si tenim wifi i cablejat decidir per quina enviem el missatge. - -i interval (*delay*) entre peticions expressat en segons. - -s mida del paquet (bytes). Per defecte són 64 bytes i el màxim són 65507 bytes. Ens permetrà conèixer millor el rendiment d'una xarxa en situacions d'estress amb volum de dades alt. - -b per fer el ping de broadcast. Hi ha un explicació sobre com saturar una xarxa amb pings fent el [Ping de la mort](https://es.wikipedia.org/wiki/Ping_de_la_muerte) però la majoria de servidors ja ho tenen previst, i per *Firewall* ho controlen o fins i tot hi ha servidors que no permeten rebre ping. Vegeu en el video demostració que el servidor DNS de Google el 8.8.8.8 no permet rebre pings amb paquet de dades gran. ## Principals usos El ping és de les comandes més usades per comprovar la bona instal·lació i configuració d'una xarxa. Principalment per: - per saber si la targeta xarxa interna funciona (es fa ping a la pròpia targeta de xarxa, IP de la xarxa 127.0.0.0 /8) - per saber si la targeta de xarxa té ben configurat el protocol TCP/Ip (ping sobre la pròpia IP que té la tarja) - per saber si hi ha connectivitat en la xarxa local. - per saber si hi ha connectivitat a xarxes externes i de fet saber si la gateway està ben configurada. - per saber si es resolen bé els noms. Comprovant la configuració DNS (realitzant un ping per nom i no ip) Vegeu el següent video explicatiu: [![asciicast](https://asciinema.org/a/LUwQjircOYfzvjVC4JUYaeamg.svg)](https://asciinema.org/a/LUwQjircOYfzvjVC4JUYaeamg) ## arp | Element | Valor | | -------- | -------- | | Sistema operatiu | GNU/Linux - Windows | | Definició | Serveix per consultar i gestionar la taula ARP del nostre equip. | ### Explicació ordre La taula arp ens permet treballar amb la taula ARP. La taula ARP és un registre que té l'ordinador per emmagatzemar l'equivalència entre IP (configuració lògica) i les MAC (configuració física) que usan per comunicar-se en les xarxes locals. Ja que quan es comunica per xarxa, sempre ho fa localment i s'usa adreces MAC. Si ha de fer connexió a l'exterior, es comuncia localment per la MAC de la porta d'enllaç. Aquest és el comportament del protocol [ARP](https://ca.wikipedia.org/wiki/ARP). ![](https://i.imgur.com/VS16skB.png) ### Consultar la taula Es fa amb l'ordre **arp** o posant el paràmetre **-a** ```bash= profe@estany:~/smx1m5/smxm5/uf3/a01$ arp Address HWtype HWaddress Flags Mask Iface _gateway ether 84:cf:bf:8b:9c:1c C wlp0s20f3 profe@estany:~/smx1m5/smxm5/uf3/a01$ arp -a _gateway (192.168.43.1) at 84:cf:bf:8b:9c:1c [ether] on wlp0s20f3 ``` ### Gestionar la taula Hi ha els següents paràmetres: - -s ip mac (afegeix una entrada estàtica a la taula ARP) ```bash= profe@estany:~/smx1m5/smxm5/uf3/a01$ arp -s 192.167.0.1 84:cf:bf:8b:9c:11 SIOCSARP: L’operació no és permesa profe@estany:~/smx1m5/smxm5/uf3/a01$ sudo arp -s 192.168.43.11 84:cf:bf:8b:9c:11 ``` Fixeu-vos que la primera falla perquè la ip no és de la mateixa xarxa local. ```bash= profe@estany:~/smx1m5/smxm5/uf3/a01$ ip addr show wlp0s20f3 3: wlp0s20f3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 30:24:32:b7:24:15 brd ff:ff:ff:ff:ff:ff inet 192.168.43.57/24 brd 192.168.43.255 scope global dynamic noprefixroute wlp0s20f3 valid_lft 2405sec preferred_lft 2405sec inet6 fe80::2e31:e74f:fccd:288d/64 scope link noprefixroute valid_lft forever preferred_lft forever ``` - -d ip (elimina una entrada d'aquella ip a la taula ARP) ```bash= profe@estany:~/smx1m5/smxm5/uf3/a01$ sudo arp -d 192.168.43.11 ``` ### Curiositat Hi ha un mètode clàssic d'espionatge a xarxa que és el *[Man in the middle](https://ca.wikipedia.org/wiki/Intercepci%C3%B3)* hi ha un equip que es fa passar per la gateway (normalment el router), espia i després ho reenvia al router veritable. Una manera d'evitar-ho és afegint una entra estàtica a la taula ARP on es posa la ip de la porta d'enllaç (*gateway*) i la MAC d'aquesta. Ja que la falsa porta d'enllaç es posa la mateixa IP que el router però no pot posar-se la MAC: Vegeu el següent video explicatiu: [![asciicast](https://asciinema.org/a/pNk37nWXdTmKkDtA68hGRO6di.svg)](https://asciinema.org/a/pNk37nWXdTmKkDtA68hGRO6di) ## arping | Element | Valor | | -------- | -------- | | Sistema operatiu | GNU/Linux | | Definició | Permet descobrir la mac d'una ip xarxa. Permete detectar duplicats | ### Exemples Per conèixer la MAC quan li fem ping: ```bash= profe@estany:~/smx1m5/smxm5/uf3/a01$ arping 192.168.43.1 -I wlp0s20f3 ARPING 192.168.43.1 from 192.168.43.57 wlp0s20f3 Unicast reply from 192.168.43.1 [84:CF:BF:8B:9C:1C] 5.100ms ``` El més habitual és l'ús d'aquesta ordre per detectar ip's duplicades. Vegeu en l'ordre següent com es descobreix si en una xarxa local hi ha IP's duplicades. ```bash= arp -D -I eth0 192.168.99.147; echo $? ``` ## nslookup | Element | Valor | | -------- | -------- | | Sistema operatiu | GNU/Linux - Windows | | Definició | Permet fer consultes DNS i així comprovar si ens funciona bé la resolució de noms| ### Ús Es posa el nom de la comanda i seguit la URL que volem comprovar o bé només la comanda i podrem anar comprovant diferents URL. Per tant comprovem: - que tenim bé el protocol TCP/IP - que accedim a xarxes externes (per tant ben configurada la gateway) - que tenim ben configurat el servidor de DNS I també sabem la IP que correspon a una URL i quin servidor DNS usem. ```bash= profe@estany:~/smx1m5/smxm5/uf3/a01$ nslookup www.google.com Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: www.google.com Address: 216.58.201.164 Name: www.google.com Address: 2a00:1450:4003:802::2004 profe@estany:~/smx1m5/smxm5/uf3/a01$ nslookup > www.google.com Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: www.google.com Address: 216.58.201.164 Name: www.google.com Address: 2a00:1450:4003:802::2004 > www.elperiodico.cat Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: www.elperiodico.cat canonical name = secure.grupozeta.es.edgekey.net. secure.grupozeta.es.edgekey.net canonical name = e12551.f.akamaiedge.net. Name: e12551.f.akamaiedge.net Address: 104.83.44.94 ``` En aquest cas veiem que elperiodico.cat té la ip 104.83.44.94 i el servidor DNS que usem és el prpi ordinador el 127.0.0.53. ## dig | Element | Valor | | -------- | -------- | | Sistema operatiu | GNU/Linux | | Definició | Permet fer consultar quina configuració té el servidor DNS que allotja un domini| ### Ús Aquí podem veure quina definició té l'entrada DNS que respon per al domnini www.google.com . ```bash= profe@estany:~$ dig www.google.com ; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> www.google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61389 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;www.google.com. IN A ;; ANSWER SECTION: www.google.com. 124 IN A 216.58.211.36 ;; Query time: 0 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) ;; WHEN: Fri Apr 17 09:58:04 CEST 2020 ;; MSG SIZE rcvd: 59 ``` En aquest cas veiem com està definit el registre en el DNS del domini www.google.com i veiem al final quin servidor he usat per fer la consulta, o sigui quin servidro DNS tinc (a partir de la línia ;; Query time: 0 msec). Per tant ens permet: - saber quina IP té una URL. - saber quina és la IP del meu servidor de DNS. ## host | Element | Valor | | -------- | -------- | | Sistema operatiu | GNU/Linux | | Definició | Permet conèixer quina ip té un nom lògic (un domini)| ### Exemple ús Es posa el domini (nom lògic d'una màquina) darrera la comanda i ens respon amb la seva ip v4 i v6. ```bash= profe@estany:~/smx1m5/smxm5/uf3/a01$ host www.google.com www.google.com has address 216.58.201.164 www.google.com has IPv6 address 2a00:1450:4003:809::2004 ``` En aquest cas no ens indica quin server DNS fem servir. Vegeu en aquest video les diverses ordres per comprovar DNS que tenim: [![asciicast](https://asciinema.org/a/eupqiafayPlJBhzjDOcAKodn4.svg)](https://asciinema.org/a/eupqiafayPlJBhzjDOcAKodn4) ## traceroute / tracert | Element | Valor | | -------- | -------- | | Sistema operatiu | GNU/Linux - Windows (comanda tracert) | | Definició | Permet conèixer el camí fins a un destí.| ### Exemple d'ús Hem de ficar com a paràmetre el destí (ip o nom de domini). ```bash= [08:30:57] juan ~ $ sudo traceroute www.google.com traceroute to www.google.com (172.217.17.4), 30 hops max, 60 byte packets 1 www.adsl.vf (192.168.0.1) 8.657 ms 8.671 ms 8.672 ms 2 * * * 3 10.183.74.21 (10.183.74.21) <MPLS:L=213946,E=0,S=1,T=1> 8.625 ms 10.918 ms 10.925 ms 4 * * * 5 * * * 6 * 172.29.1.109 (172.29.1.109) 14.021 ms * 7 212.166.147.222 (212.166.147.222) 17.376 ms 17.924 ms 212.166.147.58 (212.166.147.58) 17.887 ms 8 * 74.125.242.177 (74.125.242.177) 18.468 ms * 9 108.170.253.241 (108.170.253.241) 20.241 ms 142.250.46.166 (142.250.46.166) 20.435 ms 74.125.253.197 (74.125.253.197) 16.089 ms 10 mad07s09-in-f4.1e100.net (172.217.17.4) 14.814 ms 74.125.253.199 (74.125.253.199) 16.754 ms 108.170.253.231 (108.170.253.231) 20.327 ms ``` En aquest exemple vull veure el camí per arribar a www.google.com. El camí vol dir els routers per on passen els paquets des del meu router fins al destí. En aquest cas passem per 10 routers. Quan en un salt veiem \* \* \* vol dir que no podem obtenir informació de la ip en aquell salt. Pot ser degut a la configuració del router en qüestió, per raons de seguretat. Més exemples en aquest vídeo: [![asciicast](https://asciinema.org/a/ZcERI8ql2sw4E3q9iiPSvyQqV.svg)](https://asciinema.org/a/ZcERI8ql2sw4E3q9iiPSvyQqV) ## netstat | Element | Valor | | -------- | -------- | | Sistema operatiu | GNU/Linux - Windows | | Definició | Et dona el llistat de connexions de comunicació establertes des de la teva màquina| ### Exemple d'ús Amb l'opció -t, veiem les connexions tcp establertes. Amb -u, les udp. Amb l'opció -a veiem totes les connexions independentment de l'estat, establerta o no. Si no volem que la comanda ens tradueixi la sortida en noms de domini ni descripció de ports, usem -n. Amb l'opció -l veiem els ports que tenim oberts i en espera a que algú es connecti per a ells. si vull veure els serveis tcp en escolta al meu ordinador: ```bash= $ netstat -tln Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:631 :::* LISTEN ``` tinc el servei ssh (port 22) i el d'impressió (port 631). si no m'enrecordo que el port 22 era ssh, li trec l'opció n: ```bash= $ netstat -tl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN tcp6 0 0 localhost:ipp [::]:* LISTEN ``` Per fer ús de *netstat* necessiteu instal·lar el paquet *net-tools*: [![asciicast](https://asciinema.org/a/zkNJtVFyNUEQOdHZjMEHQKgaY.svg)](https://asciinema.org/a/zkNJtVFyNUEQOdHZjMEHQKgaY) Aquí podeu veure un vídeo exemple de la comanda *netstat* [![asciicast](https://asciinema.org/a/2ccanHSPRer9n4Kkr0hrGsGrW.svg)](https://asciinema.org/a/2ccanHSPRer9n4Kkr0hrGsGrW) ## ss | Element | Valor | | -------- | -------- | | Sistema operatiu | GNU/Linux| | Definició | Igual que netstat però més eficient.| ### Exemple d'ús Ports tcp establerts: ```bash= $ ss -tn ``` Estadística de ports ```bash= $ ss -s Total: 1063 TCP: 34 (estab 26, closed 4, orphaned 0, timewait 4) Transport Total IP IPv6 RAW 1 0 1 UDP 7 5 2 TCP 30 28 2 INET 38 33 5 FRAG 0 0 0 ``` ## route | Element | Valor | | -------- | -------- | | Sistema operatiu | GNU/Linux - Windows | | Definició | Et diu el router que utilitza la teva màquina per arribar a una determinada xarxa.| El normal és que només vegis la ruta per arribar a internet (que és la xarxa 0.0.0.0) i el teu router (*gateway*). Si en la teva xarxa local tinguessis dos routers perque un et dona accés a internet i l'altre a una altra xarxa local privada, aleshores la comanda route et podria donar dos valors o rutes, una per arribar a internet (xarxa 0.0.0.0) que estaria acompanyada pel teu gateway i una altra per arribar a l'altra xarxa local. ### Exemple d'ús ```bash= $ sudo route -n [sudo] contrasenya per a juan: Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.1 0.0.0.0 UG 600 0 0 wlp18s0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wlp18s0 192.168.0.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp18s0 ``` Aquí trobem tres línees, que són tres rutes. La columna *Destination* es refereix a la xarxa destí i la columna *Gateway* es refereix a quin és el router a qui he d'enviar els paquets per arribar a la xarxa de destí en qüestió. Per exemple, per arribar a la xarxa 0.0.0.0 he d'enviar els paquets a la 192.168.0.1, que és el meu router. La xarxa 169.254.0.0 és una xarxa que en realitat no existeix i que, per tant, no hem de fer res per arribar-hi, per això a la columna *Gateway* hi ha un 0.0.0.0. Per últim, per arribar a la xarxa a la que ja estic, la 192.168.0.0, no he de fer res, per tant a la columna *Gateway* també posa 0.0.0.0. Aquí teniu el vídeo relacionat amb la comanda: [![asciicast](https://asciinema.org/a/SLppThEcvPBwqWOmYme0LdhaJ.svg)](https://asciinema.org/a/SLppThEcvPBwqWOmYme0LdhaJ) ## ncat | Element | Valor | | -------- | -------- | | Sistema operatiu | GNU/Linux - Windows | | Definició | Permet llegir i escriure dades per la línia de comandes a través de connexions establertes amb altres màquines a la xarxa| ### Modes de connexió * **Connet mode** tu et connectes a una altra màquina (ets client). * **Listen mode** tu esperes a que una altra màquina es connecti a tu (ets servidor). ### Exemple d'ús Amb ncat vull que algú m'escrigui un missatge al meu terminal des d'una altra màquina. Suposem que la meva màquina té per ip la 192.168.0.12 i l'altra màquina es troba a la meva mateixa xarxa. 1. Obriré el port 3000 per a que es puguin connectar a mi: ```bash= MaquinaJuan(juan) ~ $ ncat -l 3000 ``` 2. Remòtament, a la mateixa xarxa, el Sergi es connecta a mi pel port 3000, que és per on estic escoltant jo: ```bash= MaquinaSergi(sergi) ~ $ ncat 192.168.0.12 3000 ``` 3. A partir d'ara, i en el mateix terminal, tot el que el Sergi escrigui abans de fer return es veurà en el meu terminal. [A veure si s'entèn amb aquest vídeo](https://drive.google.com/file/d/10MY_7h1t1kr89XVIl_q_RaIpgCS88l8r/view?usp=sharing) ### Altres exemples. Transferències de fitxers ncat té multitud d'usos, i molts d'ells molt divertits. Un dels altres usos pot ser el de la transferència de fitxers. La idea és la mateixa que en l'exemple anterior, però assegurant-se que el que reps de la màquina remota va a parar a un fitxer i, des de la màquina remota, no escric si no que fico com a entrada de dades el fitxer que vull enviar: 1. Obriré el port 3000 per a que es puguin connectar a mi i tot el que rebi que vafi a parar al fitxer salida.txt: ```bash= MaquinaJuan(juan) ~ $ ncat -l 3000 > salida.txt ``` 2. Remòtament, a la mateixa xarxa, el Sergi es connecta a mi pel port 3000, que és per on estic escoltant jo i com a entrada de dades fica tot un fitxer: ```bash= MaquinaSergi(sergi) ~ $ ncat 192.168.0.12 3000 < solucionExamen.txt ``` 3. En el moment que el Sergi executa l'ordre, enviarà el fitxer solucionExamen.txt fins a la meva màquina i es guardarà en el fitxer salida.txt. ### Instal·lació del paquet [![asciicast](https://asciinema.org/a/nS4Sc3wOzVB2lH2AoB1cmSQyn.svg)](https://asciinema.org/a/nS4Sc3wOzVB2lH2AoB1cmSQyn) ## nmap | Element | Valor | | -------- | -------- | | Sistema operatiu | GNU/Linux - Windows | | Definició | Escaneja ports oberts de màquines remotes | ### Instal·lació Ens podem baixar el paquet de la seva [web oficial](https://nmap.org/) on tindrem el paquet per GNU/Linux i per Windows. Si no, la podem trobar als repositoris de GNU/Linux. Per tant, executant: ```bash= $ sudo apt update $ sudo apt install nmap ``` Tindrem instal·lada l'eina nmap. ### Descripció de l'eina És una eina molt potent que ens permet obtenir molta informació sobre servidors i màquines remotes. Es fa servir molt en seguretat a la xarxa. Permet, per exemple: * Obtenir el llitat dels hosts que hi han en una xarxa. No només les seves ip, si no també ports oberts i sistemes operatius!!! * Veure els ports oberts d'una màquina remota. Saber quins ports oberts té una màquina (ports en escolta de peticions) és equivalent a saber quins serveis té!!! Per exemple, si té el port 80 obert o el port 443 obert, vol dir que aquella màquina té un servidor web. * Veure el software i la versió sobre un servei que té instal·lada una màquina remota. Per exemple, si té un Apache (servidor web) i quina versió. Informació molt útil perque permet saber aleshores si la màquina remota té algun forat de seguretat per culpa de la versió instal·lada d'alun servei. Normalment, si hi ha un software instal·lat amb una versió antiga, no actualitzada, pot tenir forats de seguretat i algun tipus d'atac a implementar contra aquella màquina. * Veure quin sistema operatiu i versió té la màquina remota!!! * ... ### Exemples d'ús 1. **Vull veure quins dispositius hi han a la meva xarxa** ```bash= $ nmap 192.168.0.0/24 Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-20 11:53 CEST Nmap scan report for www.adsl.vf (192.168.0.1) Host is up (0.012s latency). Not shown: 990 closed ports PORT STATE SERVICE 21/tcp filtered ftp 22/tcp filtered ssh 23/tcp filtered telnet 53/tcp open domain 80/tcp open http 443/tcp open https 515/tcp filtered printer 631/tcp filtered ipp 990/tcp filtered ftps 9100/tcp filtered jetdirect Nmap scan report for 192.168.0.10 Host is up (0.0074s latency). All 1000 scanned ports on 192.168.0.10 are closed Nmap scan report for 192.168.0.11 Host is up (0.096s latency). All 1000 scanned ports on 192.168.0.11 are closed Nmap scan report for 192.168.0.12 Host is up (0.000075s latency). Not shown: 999 closed ports PORT STATE SERVICE 22/tcp open ssh Nmap scan report for 192.168.0.251 Host is up (0.0100s latency). Not shown: 996 filtered ports PORT STATE SERVICE 443/tcp open https 1503/tcp open imtc-mcs 2191/tcp open tvbus 9080/tcp closed glrpc ``` Obting 5 dispositius comptant el router, que és el primer que surt i que té com a ports oberts el 53 (servei DNS), el 80 i el 443 (http i https, respectivament). 2. **Detecció de software de servei i sistema operatiu** Vaig a veure quin software fa servir el 192.168.0.12 pels seus ports oberts i quin sistema operatiu està fent servir: ```bash= $ sudo nmap -A -T4 192.168.0.12 Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-20 12:10 CEST Nmap scan report for 192.168.0.12 Host is up (0.000017s latency). Not shown: 999 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u1 (protocol 2.0) | ssh-hostkey: | 2048 f5:4b:9f:4d:c1:78:77:c0:1e:79:17:00:97:81:91:27 (RSA) | 256 0e:ef:9f:ce:ff:a8:38:8f:60:64:f8:e1:c3:21:a9:7b (ECDSA) |_ 256 6f:5d:4e:f5:5c:22:04:25:51:24:fb:2c:db:2d:90:53 (ED25519) Device type: general purpose Running: Linux 3.X OS CPE: cpe:/o:linux:linux_kernel:3 OS details: Linux 3.7 - 3.10 Network Distance: 0 hops Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel ``` L'opció *-A* és per a que em digui la versió de software i de sistema operatiu. Amb l'opció *-T4* la comanda anirà més ràpid. La informació que em dona és que al port 22 (servei ssh per a que d'altres màquines es connectin remòtament) hi ha instal·lat el *Openssh* per Debian 10. O sigui que ja sé que la màquina 192.168.0.12 és un Debian versió 10 (*Buster*). 3. **Si vull que em llisti només els hosts a la xarxa** Per aquest exemple farem servir l'opció -sP. Amb aquesta enviem paquets de tiups ICMP (ping) a tota la xarxa. ```bash= $ nmap -sP 192.168.0.0/24 Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-20 12:25 CEST Nmap scan report for www.adsl.vf (192.168.0.1) Host is up (0.0051s latency). Nmap scan report for 192.168.0.10 Host is up (0.0081s latency). Nmap scan report for 192.168.0.11 Host is up (0.026s latency). Nmap scan report for 192.168.0.12 Host is up (0.00012s latency). Nmap scan report for 192.168.0.251 Host is up (0.027s latency). Nmap done: 256 IP addresses (5 hosts up) scanned in 16.21 seconds ``` 4. **Vull veure el sistema operatiu** Faré servir l'opció -O. Per fer-la servir he d'acompanyar la comanda amb *sudo*. Escollo la ip 192.168.0.10 que no tenia cap port obert. ```bash= $ sudo nmap -O 192.168.0.10 Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-20 12:33 CEST Nmap scan report for 192.168.0.10 Host is up (0.011s latency). All 1000 scanned ports on 192.168.0.10 are closed MAC Address: 48:DB:50:48:CE:77 (Huawei Technologies) Too many fingerprints match this host to give specific OS details Network Distance: 1 hop OS detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 24.26 seconds ``` Si veieu, es tracta d'un dispositiu mòbil (*Huawei Technologies*).