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
- > 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
- a > ver como estan los limites actualemnte
- f → tamaño del fichero
- 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
