GNU/Linux LPIC-1 / 22 de Octubre de 2018

Añadir puerta de enlace de forma temporal:

LA puerta de enlace debe de ser de la mimsa red a la que estamos conectados

sudo ip route del default via 192.168.1.2 dev eno1 => Borramos puerta de enlace

¿hay algún servidor DHCP por aquí? Si hay alguien, que me dé IP y todo lo demás!
sudo dhclient -v eno1

permanent manual i permanent dinámica: las 2 maneras que nos quedan de aprender a configurar la IP en nuestro ordenador

Configurar las tarjetas de red:

sudo nano /etc/network/interfaces

Aquí van todas las configuraciones de todas las tarjetas de red de nuestro sistema

Activació y creació de la tarjeta loopback (“The loopback network interface): tarjeta para que la máquina pueda conectarse con sigo misma.

Este fichero se carga siempre al arrancar el ordenador.

Configuración de la tarjeta de red de forma manual y permanente:

Para que se ponga en marcha, o reiniciamos la máquina o reiniciamos el servicio 

Un servicio es un programa en ejecucion en segundo plano.

sudo systemctl stop servicio-x => parar el servicio servicio-x
sudo systemctl start servicio-x => parar el servicio servicio-x

forma clásica:

sudo /etc/init.d/networking stop => Muy antiguo!

sudo systemctl status networking

sudo systemctl enable networking

sudo systemctl disable networking => es una putada! lo deshabilita!

sudo systemctl mask networking => evita que se ejecute, para ejecutarlo, hay que arrancar el servicio a mano

En el escritorio, se usa otro programa independiente a networking
Network Manager:

sudo systemctl stop NetworkManager

cat /etc/resolv.conf => aquí se ponen los servidores DNS

Hay una manera de poner los DNS en interfaces, pero tendremos que tener instalado un programa llamado “resolvconf”, que se encarga de que si hay alguna linea de configuracion de DNS en interfaces, la copia en resolv.conf (al reainiciar el servicio networking):

auto eno1
iface eno1 inet dhcp
=> es como suele estar configurado: pide IP por DHCP al arrancar la máquina


systemctl status systemd-networkd

Systemd se come todo!

Systemd quiere homogeizar todo entre Red Hat y Debian, del modo que por ejemplo, la configuración de red, sea usando los mismos modos para los dos sistemas.

devuan.org => Igual que Debian, pero sin SystemD! jajajajaja

Servicio alternativo a “networking”, que es de SystemD:

SystemD (System Daemon)

NetworkD (Network Daemon)

Lo normal seria hacer un disable del networking y utilizar el NetworkD

systemctl disable networking
sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd
sudo systemctl status systemd-networkd

en /etc/systemd/network se configuran las tarjetas de red
cada tarjeta tendrá su fichero independiente de configuración
sudo tarjeta1.network

aquí dentro ponemos:

[Match]
Name=eno1

[Network]
Address=192.168.1.200/24
Gateway=192.168.1.1

sudo systemctl stop systemd-networkd
sudo systemctl start systemd-networkd

systemctl status => si hay algún error con la configuración de la red, sale aquí

Si queremos DHCP en el fichero de configuracion de red por systemd, simplemente:

[Match]
Name=eno1

[Network]
DHCP=yes


https://github.com/q2dg/LPIC1/blob/master/IntroduccioXarxesLinux.pdf
comando ping

rtt = route time…? estadísticas de tiempo

ping -c 4 www.hola.com => enviamos sólo 4 paquetes

ping -c 4 -i 3 www-hola.com => intérvalo de 3 sergundos entre paquete y paquete

sudo ping -f www.hola.com (parametro f se ha de hacer como Root, f=flujo, envía paquetes a chorro)
punto=se ha enviado un paquete. Cuando recibimos la respuesta, se borra el punto
Si aparecen muchos puntos, es que se pierden paquetes

mtr www.hola.com (tracert en Windows)

ncurses (programa de terminal)
X11=programa gráfico

StDev=desviación standard

mtr -c 4 www.hola.com
mtr -c 4 -r www.hola.com => Sólo muestra el resultado final

ss == Socket (extremo de una conexión)

netstat, NO USAR! obsoleto, usar “ss”

ss -tu
Conexiones TCP, que son fiables (comprobación de errores: paquetes repetidos, perdidos, desordenados, defectuoso, etc).
Conexiones UDP no tienen ese mecanismo de control de comprobación de errores. Pero las conexiones son más rápidas.

puerto: numero asociado a un extremo de la conexión (socket). Un extremos ha de tener un puerto y el otro extremo, otro puerto.
Los puertos sirven para tener muchos servidores en una misma máquina. Servicios separados por puertos.

puerto 443: puerto por defecto que escuchan los servidores HTTPS.
el navegador por defecto usa el puerto 80.
SSH, puerto 22.

HTTP: peticiones sin encriptar
HTTPS: peticiones encriptadas (seguras) -> Servidores web HTTPS. Escuchan en el puerto 443.

Lista de puertos asignado por la IANA:

https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml

puerto 53: servidores DNS

Puerto 53836, puerto “basurilla”, asignado por nuestra máquina cliente. Son puertos de “usar y tirar”.
Número máximo de puertos: 65535

ss -tunl

Puertos abiertos que tenemos

Puertos abiertos: disponibles para que alguien se comunique con nosotros

Útil para ver si tenemos algún troyano

  • => cualquier IP de las que mi máquina tenga. Si especifica IP, sólo para esa IP.

::: => lo mismo que el *, pero es para IPv6

Programas concretos que están detrás de un puerto:
sudo ss -tunlp

sshd: demonio ssh
web que hace estadisticas
estadisticas servidores web usados en el mundo

Manipular conexiones: “Cortafuegos”, cerrarlas, redirecionarlas, etc
Comando “iptables”: sudo iptables -L

Comando ncat (o netcat), o nc (es una navaja suiza, MUY útil)

Te puedes inventar un servidor web si quieres con esto!!
Establece una conexión con otro lado
Crea un hilo, una carretera, una conexión entre 2 puntos.

nc -l -p 5000 => ponemos en marcha el servidor: se pone a escuchar en el puerto 5000:


Enviamos un fichero:
nc 192.168.20.204 5000 < /etc/fstab

nc -l -p 5000 > unfichero.txt => cuando reciba lo que sea, lo pondrá en unfichero.txt

nc -l -p 5000 < unfichero.txt => envia unfichero.txt al cliente

“net cat web server” XP XD 🙂

Clonación remota de un disco:
nc -l -p 5000 | dd of=/dev/sdc
y en otro terminal (en otra maquina): dd if=/dev/sdb | nc 192.168.20.200 5000

Backup en una ISO:
nc -l -p 5000 | dd of=archivo.iso
y en otro terminal (en otra maquina): dd if=/dev/sdb | nc 192.168.20.200 5000

Servidor a la espera de que alguien se conecte para enviarle la ISO:
dd if=archivo.iso | nc -l -p 5000
y en otra maquina: nc 192.168.20.200 5000 | dd of=/dev/sdb

Se puede hacer streaming de video, por ejemplo! Y un montón de cosas!

Comando nmap

es un escaneador, ¿que ordenadores hay encendidos en mi red? ¿qué puertos tiene abiertos?

OJO! Un puerto abierto = una puerta abierta! OJO!!

¿Qué máquinas hay encendidas en la red? Scan network (sn):

nmap -sn 192.168.20.0/24

“Kali Linux” tiene herramientas como en nmap.

Rangos: nmap -sn 192.168.20.5-30

¿Qué puertos abiertos tiene cierta máquina?

namp -p 20-4000 -A, nos dá información d elos programas relacionados con los puertos abiertos
podemos ver qué hay en ese servidor! :-O

Comando host (cliente DNS)

hace una petición DNS y el ÇDNS te contesta:

nombre canónico y “alias”

apt install dnsutils

¿qué ventajas tiene tener servidores DNS propios? Velocidad.

Le preguntamos a otro DNS (no al nuestro), resolver el nombre

Por que la ip resuleta puede ser diferente? por granjas de servidores “clones” con diferentes IPs, pero que balancean la carga de los servidores web.

A los DNSs se les puede preguntar otras cosas, a parte de la resolución del nombre.

wget

wget -r –no-parent

https://github.com/robots.txt
http://softlibre.unizar.es/manuales/linux/

comando curl: es un cliente http (hace peticiones como si fuera un navegador)

Cabeceras del cliente:

Cada peticion tiene un conjunto de datos q sirven para informarle al servidor del contexto de esa petición: quien soy, de donde vengo, por qué te lo pido, etc…

cabecera “reference”: de qué web venía antes.

cabecera “host”: a qué servidor estoy conectándome

content-type: ¿qué tipo de cosa le está devolviendo el servidor al cliente?

Pues, el comando curl permite estudiar todo esto desde el terminal

301: ahi no hay nada que ver, hay que ir a otro sitio (redireccion): https://www.hola.com/

Muestra el código fuente:

https://www.hola.com

curl -L https://www.hola.com => redirige automáticamente si se encuentra con 301

REST APIs
Manera que tienen los programas para comunicarse entre sí.
Pueden usar un servidor web normal para enviar y recibir comandos.

curl http://www.bd.com/usuarios/pepe – “obtener datos de pepe” en formato JSON, por ejemplo
“Servidor REST” (para almacenar datos)


SHELL SCRIPTS

VARIABLES:

x=35
y=22
echo La variable x vale $x y la variable y vale $y

z=x+y

“cliphandler” 🙂 adelantar y que el espectador se queda “aaaaaahhh qué será?” 🙂

Operaciones matemáticas: $$(( … ))