Montar un servidor gnupg: Install sks Sks build (crear la base de datos) Configurar los permisos de la base de datos: Chown -Rc debian-sks:debian-sks /var/lib/sks/DB Configurar el arranque automatico Edit /etc/default/sks con set initstart=yes

Restart server /init.d/sks start

Instalar gnupg en puppy: Wget http://dotpups.de/JR/gnupg.pup y luego pup2pet

Desde <http://www.murga-linux.com/puppy/viewtopic.php?t=3448>

O alternativamente: Wget www.pincho.org/gnupg.pet

Petget

Se puede ignorar el error, y es necesario agregar el path de /usr/local/gnupg/bin para que funcione Y crear un enlace simbolico Ln -s /usr/local/gnupg/libexec /usr/local/libexec

Export PATH=$PATH:/usr/local/gnupg/bin (deberia meterse en el /etc/profile, al final, o modificarlo en consecuencia)

Principio:

Ipv4, ipv6

http://ipv6.mx/index.php/component/content/article/189-ipv4-vs-ipv6-icual-es-la-diferencia

Diferencia fundamental: 4,294,967,296 direcciones

Desde <http://ipv6.mx/index.php/component/content/article/189-ipv4-vs-ipv6-icual-es-la-diferencia>

Contra

(670 mil billones) de direcciones por cada milímetro cuadrado de la superficie de la Tierra

Desde <https://es.wikipedia.org/wiki/IPv6>

Otra de las diferencias es el SLAAC para la autoconfiguracin de los routers

Presentar los distintos puertos de red, y poner algunos ejemplos de uso manual con el comando telnet 21, 22, 23, 25, 53, 80, 110, 135, 143, 443.

Ejercicio: Lluvia de ideas para decir puertos conocidos

Usar telnet y netcat (opciones -l ademas)

Telnet smtp.usc.es 25 Helo usc.es Mail from:marcos.fraga@usc.es Rcpt to:marcos.fraga@usc.es Data Aquí el texto del mensaje . (deberia responder con un ok message accepted) Quit

Telnet www.usc.es 80 Get /index.htm HTTP/1.1 Host:usc.es (lf)

Telnet ftp.udc.es 21 User anonymous Pass correo Cwd carpeta

/etc/services ftp 21/tcp ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp telnet 23/tcp

(….)

Tcp wrappers, sistema de seguridad. /usr/sbin/tcpd

Xinetd → con tcpd en la configuracion, usa hosts.allow

  1. > sin tcpd, usa solo los sistemas embebidos en xinetd

Inetd.conf (para el caso, cualquiera de los /etc/inet.d o /etc/xinet.d/)

Nombredelservicio tipodesocket protocolo wait/nowait user server (argumentos)

Nombredelservicio: httpd, in.ftpd, named (desde /etc/services) Basicamente, el puerto Tipodesocket: stream, dgram, raw (ver documentacion de cada caso. Consola, video tiempo real) Protocolo: tcp,udp,etc Wait: en el caso de stream, suele ser nowait (se independiza cada proceso) ver documentacion de cada servicio User: el usuario que deberia ejecutar el proceso (www-data para el caso de apache, por ejemplo) Server: programa a ejecutar. Puede ser tambien /usr/sbin/tcpd y el programa concreto como argumento.

Para el caso de xinetd, la sintaxis es distinta: Service nombredelpuerto {

Atributo operador valor
(…)

} Ejemplo real: Service login {

Socket_type	= stream
Protocol	= tcp
Wait	= no
User	= root
Server	= /usr/sbin/in.rlogind
Instances	=UNLIMITED

}

Bind “interface” Only_from lista de hosts desde donde se puede acceder al servicio No_access lista de hosts desde donde NO se puede acceder al puerto Access_times h:m-h:m (intervalo en el que el puerto esta disponible)

Hosts.allow sintaxis (igual que hosts.deny) (se leen cada vez que se necesitan)

Lista de demonios : lista de clientes : (opcional)

Lista de demonios: nombres de procesos, no de puertos (sshd en lugar de ssh, httpd en lugar de apache) O tambien ALL LOCAL (como el iexplore)

Lista de clientes: lista de host, ips o patrones especiales

Opcional: una lista de comandos que ejecutar cuando se valida la regla

Ejemplo:

ALL: .usc.es ALL: .udc.es EXCEPT adm.udc.es ALL: LOCAL Sshd: 172.24.63.54 #(solo acceso sshd desde esta ip)

Como saber si un demonio se puede usar con tcpd ? Pro ejemplo viendo si esta linkado contra libwrap.so

ldd /usr/sbin/sshd |grep libwrap

Mencionar el ufw y las bases de iptables, con los ejemplos de enrutamiento y nateo

Ver tablas del firewall antes y despues de ufw

Activar enrutamiento: /proc/sys/net/ipv4/ip_forward 1

Activar NAT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Mas en profundidad al final de la clase si el tiempo llega

Como verificar si hay un servicio escuchando en un puerto? Netstat -an -a todas las conexiones (las que estan a la escucha y las que estan conectadas) -n no resolver los nombres de los hosts (mostrar su ip) y cambiar los numeros de puerto por los nombres de services -p muestra el nombre del programa que utiliza cada scket (bueno, la mayoria

Lsof -i :5555

Inciso: nmap para escanear vulnerabilidades de seguridad: Nmap host

Nmap ip.* (una clase c)

Nmap -O host intenta averiguar el sistema operativo del host Nmap -O 172.24.63.87 ejemplo de acierto … Nmap -O 172.24.63.54 ejemplo de … ejem… aquí podemos ver la importancia de las comprobacinoes manuales de las cosas … ;)

Curiosidad acerca de tcpdump -i eth0 arp y una camara web …

Curiosidad del sistema de mensajes …

Wall write Mesg

(se puede ver el terminal con ps sin argumentos)

Sistema de inicio basado en rc?.d, con scripts con argumentos de start y stop

http://www.formandome.es/linux/configuracion-fichero-sudoers-en-ubuntu/ /etc/sudoers sintaxis: (comando visudo jijiji]

Defaults timestamp_timeout=

0 - siempre
Numero positiv, cada n minutos
Numero negativo, solo la primera vez

Usuario host = (usuario substituible:grupo substituible ) comando al que se aplica la regla

Podemos usar grupos en lugar de usuario, con %grupo

Si queremos que ns interprete las reglas automaticamente, podemos usar sudo -l

Ejemplo: marcos puede ejecutar el cmando … en … por la linea … Marcos ALL=(usuario:ALL) /bin/bash

Y un de vosotros puede ejecutar … %lpic102 ALL=(root:root) ALL

Ultima linea del archivo.

/etc/security/limits.conf Dominio tipo item valor

Dominio: usuario, @grupo, * Tipo: hard, soft Item:

Core -> tamaño coredump
Data -> datos del area de programa (seccion .data)
Fsize -> tamaño maximo de un fichero
Nofile-> numero maximo de ficheros abiertos
Cpu -> tiempo de cpu en minutos (de cpu, ver comando time)
Priority -> prioridad de los procesos del usuario (-20,19) (-20 maxima prioridad)

Ver time, nice

Comando propio del bash, para evitar accidentes: Ulimit

  1. a > ver como estan los limites actualemnte
  2. f → tamaño del fichero
  3. n → numero de ficheros

Curiosidad: Usar el comando rm para borrar el archivo /etc/noborrar-root (solo funciona el 6755 de usr/games/)

Sintaxis comandos de red

Ifconfig Ip addr Route Ip route Hosts Resolv.conf

A mayores software dnsmasq

SSH

Referencias: daniel J Barret - secure shell Michael Lucas - ssh mastering

Configuracion del servidor: /etc/ssh/sshd_config Opciones basicas: Protocol (1,2) Permitrootlogin X11forwarding AllowTcpForwarding

Fingerprint ECDSA para ubuntulpic102: 7a:da:5d:a2:f5:05:19:55:40:82:cb:d1:60:f6:72:99 Fingerprint ssh-rsa para ubuntulpic102: Aa:74:f8:4a:f5:62:60:ab:69:99:b2:e3:e6:18:8b:0e

Ficheros implicados en las comunicaciones de ssh: .ssh/id_rsa .ssh/id_rsa.pub .ssh/authorized_keys ~/.ssh/know_hosts .ssh/config

/etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key.pub /etc/ssh/ssh_known_hosts /etc/ssh/sshrc

Opciones de los comandos ssh:

Scp formatodelineadecopia (usuario@direccion:/path/fichero ) Rsh comando … igual que ssh (ver con which y file) Ssh -L -R

Ssh -L ipsdeacceso:puerto:ipseneldestino:puerto usuario@maquinadestino

Ssh -R → ver ambos en un dibujo Opciones interesantes para los tuneles: -N sin sesion (shell) -f → correr en segundo plano

Primero, demostracion de autenticacion remota sin usar contraseña. Luego, con contraseña. Y demostracion de COMO se debe usar realmente el sistema para que siga siendo seguro, y al mismo tiempo comodo.

Para crear las claves rsa:

Ssh-keygen -t rsa

Para crear las del host: ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N -t rsa ssh-keygen -f /etc/ssh/ssh_host_dsa_key -N -t dsa ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -N '' -t ecdsa

Para ver la lista de identificadores de host conocidos: Ssh-keygen -l -f ~/.ssh/known_hosts

Para conectarme luego remotamente contra otra maquina, tengo que guardar mi clave publica en ella: (fichero authrized_keys, una clave por linea) Tipo de clave - clave-muylarga- comentario que me permite distinguirlas

Generando las claves con una contraseña, con ssh-keygen, luego se usan: Ssh-agent bash Ssh-add (y nos pide la contraseña) Durante esa sesion, ya no nos la pide mas.

Ejercicio: Copiarlas con netcat, cuando sepamos hacer un tunel Presentar el comando ssh-copy-id

Obtener el fingerprint de un host local:

Ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub

Gpg (GNU pg)

Gpg –gen-key RSA 2048 0 - nunca caduca

Aceptar, poner los datos (el comentario no importa?) Poner contraseña para la clave privada

Usar rng -tools si la cosa se eterniza Rngd -r /dev/urandom (acelera BASTANTE las cosas)

Exportar la clave publica: Gpg –list-keys

Gpg –export correo > clavepublicagpg.pub O la version en texto plano: Gpg –armor –export correo > clavepublicagpgascii.pub

Usar servidor centralizado: Gpg –keyserver direcciondeinternet –send-keys UID Para publicar nuestra clave

Gpg –keyserver direcciondeinternet –recv-keys uid Para descargar una clave publica

Como usar las claves gpg:

CIFRAR: Gpg –armor –out salidacifrada.txt –recipient ID –encrypt archivodetexto.txt Sin el armor, sale en binario, y tambien se pueden codificar datos

DESCIFRAR: Gpg -out archivoenclaro.txt –decrypt archivocifrado.txt

FIRMAR: Gpg –sign archivo.txt Gpg –clearsign archvo.txt → en claro y firmado

Confirmar la firma: Gpg –verify archivofirmado.txt DESCIFRAR Gpg –decrypt archivofirmado > salidaenclaro

Revocar una clave gpg: Gpg –gen-revoke claveuid > revocation.gpg Gpg –import revocation.gpg

Y en un servidor, Gpg –keyserver direcciondeinternet –send-keys uidrevocation

Ejercicio:

Generar una clave publica gpg para cada uno Crear un archivo de texto con vuestro dni Obtener la clave publica gpg de marcos Cifrar el archivo de texto con ella Firmar el archivo cifrado con vuestra clave privada Subir el archivo cifrado firmado y la firma a una carpeta con vuestro nombre de usuario en /home/secreto Subir tambien un archivo de texto con vuestra clave publica

Examen completo lpic 102

http://www.pincho.org/lpic-102.pdf