polla lpi v0.1

Upload: ruben-mendoza-espinoza

Post on 12-Jul-2015

99 views

Category:

Documents


0 download

TRANSCRIPT

Unidad 1 Explorando Lneas de comando Linux Las lneas de comando son interpretadas por el SHELL, este se encarga de verificar y ejecutar la orden. Explorando opciones del Shell Linux: bsh Bourne Shell, descontinuado en Linux, base del BASH bash Bourne Again Shell, mejora sibstancial del bsh, viene por defecto en la mayor cantidad de distros Linux. csh C Shell, usado en crculos de desarrolladores tcsh Proviene del csh , difiere la forma en que se asignan las variables con el resto de Shells. ksh Korn Shell fue diseado con las mejores caractersticas del bsh y el csh y se las extendieron. zsh Es la evolucin del ksh incorporando caractersticas de los nuevos shells. El archivo /bin/sh es un vnculo simblico que apunta generalmente a /bin/bash. Usando un Shell Si la sesin es de texto por defecto sale el shell predeterminado bash. Si la sesin es grfica autentiquese y luego carge xterm o konsole. Comandos externos e internos Comandos Internos Interconstruidos en el Shell, varan dependiendo del shell usado. Comandos dentro de la carpeta bin, sbin

* Lista incompleta para mas referencias busque: man bash TIP: Los comandos internos tienen mayor jerarqua que un comando externo. Ejecutando comandos Cuando el shell recibe un comando del usuario, revisa si es un comando interno, si no est en su lista, lo busca dentro de los directorios que tenga el PATH. PATH es la variable de entorno que contiene las rutas donde se encuentran los programas. El usuario la puede modificar. Correr programas que no estn dentro del PATH ./myprog /home/carlos/myprog Poner el directorio ./ en el PATH?? Trucos del Shell Completar los comandos Tecla tabulacin y teclas direccionales, ayudan a escribir menos y evitar cometer errores de escritura (TYPOS). /.bash_history Archivo que guarda todos los comandos ejecutados en la lnea. Hasta 500. Se accede a el por medio de las teclas UP y DOWN Bsqueda: Puedes buscar una lnea con CTRL+R: Escriba cadenas nicas para encontrar la lnea. Bsqueda de pero tambin puede buscar con CTRL+R. (CTRL +R de nuevo para buscar otra ocurrencia). CRTL+G. Cancela La bsqueda. CRTL+S: Igual que CTRL+R -1Busca hacia delante. CTRL+p CTRL+N CTRL+a CTRL+e CTRL+b CTRL+f CTRL+d CTRL+t ESC U LInea arriba Linea abajo Inicio de la lnea Fin de la lnea Mueve un carcter a la izquierda Mueve un carcter a la derecha Borra un carcter Transpone los caracteres el actual con el anterior y avanza el carcter. Convierte en mayscula la palabra

Comandos Externos

Ejemplos comandos internos* pwd Directorio Actual cd Cambia directorio actual echo Muestra mensaje en pantalla exec myprog Ejecuta un programa time Toma tiempo de ejecucin set Muestra variables de entorno exit , logout Sale de la sesin

ESC L ESC C ESC T CTRL+X CTRL+E

desde el cursos Convierte en minscula la letra Convierte slo la primera letra Transpone palabras Abre el editor predeterminado

Se puede revisar el historial con el comando history Para limpiarlo history c Obteniendo ayuda Sistema de aydua basado en texo man. Uso: man comando Ej: man less man 5 passwd Section Description number 1 Programas ejecutables 2 Llamadas al sistema provistas por el kernel 3 Llamadas a libreras 4 Dispositivos 5 Formatos de archivo 6 Juegos 7 Miscelanea 8 Comandos de Administracin del sistema 9 Kernel Routines Info Hace lo mismo que man, algunos comandos han sido migrados a info, se caracteriza por tener enlaces de hipertexto. info info Para ms informacin Tambin hay informacin en la web tipo TUTORIAL con tlpd (the Linux Documentation Project) http://tldp.org Flujos de datos: Redirecciones, canalizaciones, pipes, streams. Entrada Estndar Entrada que acepta el

programa, generalmente es la del teclado. Salida Estndar Texto que sale a algn dispositivo, generalmente la pantalla. Error Estndar Mensajes importantes de error que pueden ser redireccionados a otra salida. Linux trata a los flujos como archivos. #echo $HOSTNAME > nombre.txt Operadores de redireccin: Operador de Accin redireccin > Crea un nuevo archivo >> Agregar a un archivo existente 2> Redirige el error estndar a un archivo nuevo 2>> Agrega a un archivo nuevo el error estndar &> Crea un archivo con Ambas error estndar y salida estndar < Usa los contenidos como entrada estndar SHOW DATABASES; Toda lnea termina con un punto y coma, si no lo hace esperar el ingreso de un comando multilinea. Crear y usar una base de datos: mysql> CREATE DATABASE test; mysql>USE test; mysql>SHOW TABLES; Crear una tabla: mysql>CREATE TABLE objects (name VARCHAR(30), color VARCHAR(20), size FLOAT, hardness

ENUM(soft, medium, hard), value DECIMAL(10,2)); revisar la creacin de la tabla mysql> DESCRIBE objects; Ingresar datos: mysql> INSERT INTO objects VALUES(lizard,green,6,soft,10.00); Consultar datos en la tabla mysql>select * from objects; Corregir datos o actualizar: mysql>UPDATE objects SET size=5 WHERE name=lizard; Obtener datos de la base SELECT campos FROM tabla [ WHERE condiciones] [ ORDER BY campo]; mysql>SELECT value,color FROM objects; Filtrar informacin: SELECT * FROM objects WHERE color=green SELECT * FROM objects WHERE size > 10; SELECT * FROM objects WHERE hardness=soft AND value>7.50; SELECT * FROM objects WHERE hardness=soft ORDER BY value; Combinar datos de varias tablas Para este ejemplo vamos a crear otra tabla: mysql> CREATE TABLE locations (id INTEGER, name VARCHAR(30), location VARCHAR(30), cond INTEGER); mysql> INSERT INTO locations VALUES(1, banana, kitchen, 9); Consultar datos de dos tablas mysql> SELECT objects.name, objects.color, locations.location FROM objects, locations WHERE objects.name=locations.name AND objects.color=green; Una segunda forma de combinar datos es con JOIN, la diferencia, una tabla va en from y la otra en JOIN. mysql> SELECT objects.name, objects.color, locations.location FROM objects JOIN locations

WHERE objects.name=locations.name AND objects.color=green; Agrupar registros mysql> SELECT objects.name, objects.value, SUM(value) FROM objects, locations WHERE locations.name=objects.name GROUP BY value; Borrar datos DELETE FROM tabla WHERE condiciones mysql> DELETE FROM locations WHERE name=tree AND location=back yard ; DELETE * FROM locations; Para borrar una tabla se usa: DROP TABLE locations;

Unidad 10 ASEGURANDO EL SISTEMA Administrando la seguridad de la red La mayora de equipos Linux son usados como servidores y muchas veces concectados directamente al Internet, por lo tanto es importante mantenerlos seguros. Hacker vs cracker Hacker es aficionado, cracker es un criminal ciberntico. Super Server Es un servidor que escucha en los puertos y una vez que es iniciada la comunicacin, da paso al programa que realmente atiende la peticin Su uso ahorra memoria y es ms seguro ya que el super server protege a todos los servers que maneja. Los dos super servers ms populares son inetd y xinetd. Inetd trabaja con TCP Wrappers Xinetd tiene su seguridad interconstruida Pueden ser aplicadas ambas protecciones a la vez. Configurando inetd Para ver que super server se ejecuta puedes usar el comando: #ps ax | grep inetd Puedes controlar el servidor va: El archivo /etc/inetd.conf el directorio /etc/inted.d Ejemplo de una lnea de configuracin: ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd -l Opcin Descripcin Nombre del Es el nombre con que aparece servicio en /etc/services Tipo de Socket stream para TCP, dgram para UDP y raw para otras conexiones. Protocolo Usualmente tcp y udp wait/nowait Wait no se libera el socket hasta terminar. Nowait se comienza la conexin y se librea el socket para otro. Tcp trabaja siempre con nowait. User El usuario con que se corre el socket, se usa root y nobody,

Server name Parameters

de preferencia escoja el de menos privilegios El archivo del servidor que se ejecuta. En el ejemplo es un TCP Wrapper. Todos despus del nombre del servidor son parmetros. En este ejemplo al usar TCP Wrappers se debe poner el verdadero servidor.

En lugar de usar un archivo de configuracin monoltico nuevas versines permiten partir la configuracin en varios archivos dentro del /etc/inetd.d Despues de modificar el archivo deber reiniciar el servicio: /etc/rc.d/init.d/ inetd restart Tambin se puede usar reload. TIP: Se puede enviar una seal SIGHUP con kill para que recargue su configuracin: #kill HUP pid Controlando el acceso va TCP Wrappers TCP Wrappers es implementado a travs del programa tcpd, y hace dos cosas: Chequea si un cliente esta autorizado a entrar al servidor Revisa si el cliente tiene la autorizacin. TCP Wrappers es configurado a travs de dos archivos: /etc/host.allow. Lista los computadores que tienen acceso al servidor. /etc/host.deny. Lista los computadores que no tienen acceso al servidor. Si la IP est en ambos archivos host.allow toma mayor precedencia. El formato bsico es: daemon-list: client-list Opcion Daemonlist Clien-list Descripcion Es el nombre del servicio segn /etc/services Ejemplos: .universidad.com 192.168.7. ALL 192.168.7. EXCEPT 192.168.7.105

No todos los servidores estn protegidos por el TCP-Wrappers. Algunos son: Telnet, ftp, tftp, rlogin, finger, POP, IMAP. Sin embargo otros servidores podran utilizar el TCP Wrappers. Configurando XINETD Es el extended super server, provee la funcionalidad de inetd ms opciones de seguridad similares a TCP Wrappers. Viene incluido en FEdora, Red-Hat, MAndriva, SUSE, etc. Configurando el XINETD El archivo de configuracin es el /etc/xinetd.conf Cada servicio que se instala bajo xinetd se configura en /etc/xinetd.d. La configuracin es similar al inetd.conf pero lo hace partiendo en mltiples l;ineas las opciones ejemplo: service ftp { socket_type = stream protocol = tcp wait = no user = root server = /usr/sbin/in.ftpd server_args = -l } Existe un parmetro extra que ayuda a no ejecutar los servicios a menos que se desea disable = yes. Puedes usar la lnea de opcin general del archivo para deshabilitar ms de un servicio disabled = ftp shell. Luego de configurar se reinicia y se prueba: /etc/rc.d/init.d/xinetd restart Controlando el acceso va xinetd Va Red Puedes hacer que slo se escuhce por una interfaz, local o red local: bind = 127.0.0.1 bind = 192.168.3.100 Permitir La opcin only_from permite atender Ips o slo de ciertas IPs redes only_from = 192.168.7.0/24 only_from = 192.168.7.1 192.168.7.2 Bloquear La opcin no_access es opuesta a IPs o only_from, es tu lista negra de IPs. redes no_access = 192.168.7.50

Tiemode Tiempo especificado de acceso: acceso access_times = 9:00-13:00 Estas opciones se ponen en cada archivo del servicio si quiere afectar slo al servicio. Si desea que sean generales para todos debera ponerlas en el /etc/xinetd.conf. Deshabilitar servidores sin uso Es buena opcin deshabilitar los servicios activos en el sistema que no estn siendo utilizados, para hacerlo existen varias opciones: Netstat lsof nmap Scripts de inicio Netstat Para ver los servidores innecesarios use: #netstat -ap Muestra las conexiones activas y las que slo escuchan #netstat -lp Muestra las conexiones que escuchan. No las conectadas. Usar lsof Muestra los archivos abiertos, quienes los estn accediendo. Pero sisrve para saber que servicios estn sido accedidos en la red. #lsof -i Las opciones son: [46][protocol][@hostname|hostaddr][:service|por t] Opcin Descripcin 46 IPv$4o UPv6 Protocol TCP o UDP Hostname IP o nombre asociado con el sistema remoto Service/port El nombr del servicio tal como en /etc/services, o puede usar port el numero. Ejemplos: #lsof -i :80 #lsof [email protected]:445 #lsof iTCP:80 #lsof i | grep LISTEN Es importante ver las conexiones activas sobre todo las que no han sido establecidas por si

mismo, de esta manera se puede monitorear posibles intentos de ataque. Network Scanner Permiten identificar servicios abiertos en la red. nmap y nessus son network scanners, este ltimo incluso identifica vulnerabilidades. #nmap sT mail.mos.com.ec Chequeo bsico de los puertos abiertos. Se recomienda usar esta herramientas desde fuera del equipo, mientras que netstat y lsof desde dentro. -sT -sU Escaneo de puertos TCP Escaneo de peurtos UDP

Cuidado del shoulder surfing Use un password solo en un sistema Tenga cuidado de la ingeniera social

Escoger un buen password Usar nombres, palabras comunes, fechas, nombres de mascotas o nmeros de telfonos es un psima opcin. Use una coleccin aleatoria de letras, dgitos y caracteres especiales. En Linux viejos el limite mximo era de 8 caracteres. Ahora no hay limite mximo, pero si mnimo de 4 a 6 caracteres. Hay programas como crack que se encarga de adivinar los passwords, selo para comprobar sus passwords. La mayora de distribuciones usan shadow passwords, esto es que el password se guarda en el archivo /etc/shadow Con respecto al cambio de passwords y su vigencia se recomienda usar usermod o chage. Limitando el acceso de root Root puede hacer todo, por lo tanto debe ser restringido Con su user root puede impersonar cualquier usuario. #su -c /usr/sbin/lsof -i Sirve para ejecutar un comando como root. Usar root, puede ser perjudicial por que los atancantes pueden obtener la contrasea ms rpidamente. Es mejor usar otro usuario y ejecutar como root slo las tareas necesarias, esto se hace con su y sudo. SUDO Sirve para asignar comandos de superusuario a usuarios sin privilegios, es una forma de delegar tareas sin llegar a ser root. Esto se hace en el archivo /etc/sudoers que se lo edita con visudo. El archivo consta de dos tipos de entrada, aliases y especificaciones de usuario.

NEssus esta construido sobre nmap y es ms sofisticado. Examinando archivos de configuracin. 1. Los scripts de inicio del sistema 5 SysV que residen en: /etc/init.d/rc?.d /etc/rc.d/rc?.d /etc/rc?.d Y hay que revisar que no exista scripts no autorizados, deshabiltelos, generalmente comienzan con S##server. 2. Otro archivo a considerar es el de configuracin del super server 3. En sistemas ms antiguos se iniciaba los programs dentro del /etc/inittab Fjese que no tenga inicios de login por modem: 1:2345:respawn:/sbin/mingetty --noclear tty1 Desinstalando y reconfigurando servidores Deshabilite los servicios innecesarios Desinstale los paquetes Seguridad local Asegurar passwords, limitando el acceso a root, poniendo limites a los usuarios y seguir los archivos con SUID y GUID. Asegurar Passwords Sugerencias: Use passwords fuertes. Cambie passwords con frecuencia Use shadow passwords Mantenga los passwords en secreto Use protocolos remotos seguros

User_Alias SUPERUSERS = cmontes, %tecnicos, !scervantes Cmnd_Alias YUM = /usr/bin/yum, /bin/rpm Cmnd_Alias APAGAR = /sbin/shutdown -h 23\:00, /sbin/halt Host_Alias SERVIDORES = mail.mos.com.ec, tux.universidad.com SUPERUSERS SERVIDORES = YUM, APAGAR

Ejemplos:

User Alias define que el usuario cmontes y los del grupo tcnicos estn etiquetados como SUPERUSERS a excepcin de scervantes. Comand Alias define dos Alias uno YUM para los comandos de isntalacion de paquetes yum y rpm, y otro APAGAR para los comandos de apagado halt y un shutdown con opciones. Host alias define dos nombres de equipos desde los cuales se podr ejecutar los comandos sudo. Una ves definidos los aliases se arma el permiso: que se intepreta, Los SUPERUSERS logueados en SERVIDORES pueden ejecutar los comandos YUM y APAGAR. Como usuario cmontes logueese y escriba: $sudo -l Le dir los comandos que puede ejecutar como root. Para ejecutarlos escriba $sudo /usr/bin/yum Y luego escriba su password y listo. Otro ejemplo: jose ALL = NOPASSWD: /usr/sbin/useradd Aqu no se especifican alias, otra variante es que a Jos no se le pide password al ejecutar el sudo. Configurar lmites de Memoria, procesos y de Login. Para evitar que procesos consuman todos los recursos se puede limitar haciendo uso del PAM. /etc/security/limits.conf Los datos a configurar en ese archivo son: domain type item value Domain El mbito donde se aplica: Usuario, grupo, o todos * Type hard / soft hard no puede ser excedido, soft puede ser excedido es hard ans soft. item core. Tamao de los archivos principales data. Tamao del rea de datos del

programa. fsize. Tamao de archivos creados por el usuario nofile. Numero abierto de archivos. rss. Tamao de memoria residente. stack. Tamao de la pila cpu. Tiempo en minutos de la CPU para un solo proceso. Nproc. Numero de procesos concurrentes Maxlogins. Numero de logins simultneos. Prority. Prioridad de los procesos. value El valor aplicado al lmite. Data,rss y stack son realcionados a la memoria que consume un programa, son medidas en kilobytes. Ejemplos: @limited hard cpu 2 A los usuarios del grupo limited se les permitir ejecutar procesos que no tomen ms de 2 minutos de CPU, a los 2 minutos se cortar. @tecnicos pablito hard maxlogins 1 hard nofile 2

Todos los del grupo tcnicos solo se podrn loguear una vez, mientras que Pablito no puede tener ms de dos archivos abiertos a la vez. Limitando con el comando Ulimit Al ser ulimit una herramienta de lnea de comandos slo limita las sesiones de consola no las de interfase de usuario GUI. #ulimit a Muestra todas las limitaciones, otras son: -c -f -n -u -t -v -s -m -d -l -H/-S Tamao de los archivos core dump Tamao del archivo Nmero de archivos abiertos Numero de procesos que el usuario puede correr Tiempo total de ejecucin permitido Total de memoria virtual, Tamao total de la pila Tamao de la memoria residente Tamao de la seccin de datos Tamao mximo que puede ser bloqueado en la memoria Causa respectivamente H Hard S soft limits.

Otra forma de evitar que se logueen en el sistema es crear el archivo /etc/nologin, si existe no se puede loguear ningn usuario que no sea root. Buscar archivos con permisos SUID y GUID. No es conveniente tener archivos ejecutables con esto seteado, es mejor desactivarlos, primero hay que encontrarlos, para hacerlo: #find / -perm +6000 type f Por defecto en una distro vienen activado: su, ping, mount, passwd, umount Usando SSH Introduccin 1. En el pasado la terminal remota de preferencia era telnet, sin embargo SSH se ha abierto popularidad. 2. SSH provee terminal, transferencias de archivos como FTP y tuneles seguros. 3. VNC, Telnet y XWindows son clientes remotos de texto y raficos pero todos lo hacen con texto plano. 4. SSH fue diseado con tcnicas fuertes de cifrado. 5. SSH tambin permite crear tneles permitiendo que protocolos sin cifrado puedan sacar la ventaja del cifrado de SSH. Generalidades 1. Pero todo tiene su precio, usar SSH aumenta el consumo de CPU y lo degrada ms si lo usa con X. 2. OpenSSH es una implementacin del SSH. 3. OpenSSH puede ser lanzado desde los superservers o desde un script de inicio SYSV. Configurar opciones SSH en tu sistema /etc/ssh/sshd_config Se configura como: opcin valor Opcin Protocol PermitRootLogin X11Forwarding Descripcin 1,2 2 es mas seguro Si se pone no impide el login del usuario root. Para poder correr comandos Xwindows dentro de una sesin SSH.

Uso de las claves Para que funcione el cifrado SSH usa el conjunto de clave privada y publica. Las claves privadas estn guardadas en /etc/ssh y son llamadas ssh_host_rsa_key y ssh_host_dsa_key. Las claves publicas se llaman igual pero con la extensin .pub. Si tu sistema no tiene las claves debes crearlas con ssh-keygen. #ssh-keygen q t rsa1 f /etc/ssh/ssh_host_key C N #ssh-keygen q t rsa f /etc/ssh/ssh_host_rsa_key C N #ssh-keygen q t dsa f /etc/ssh/ssh_host_dsa_key C N Apenas las cree debe cambiar los permisos a 700 en las claves privadas. Cuando un cliente se conecta a un servidor guarda las claves en /.ssh/known_hosts Pero hay una carpeta global en /etc/ssh/ssh_known_hosts Controlando el aceso Contrasea TCP Wrappers Firewall /etc/nologin Copiando con SSH #scp miarchivo.txt [email protected]:/carpetas SSH sin clave Para esto es necesario crear un certificado en el cliente y copiarlo a servidor ssh-keygen -q -t rsa -f .ssh/id_rsa -C ' ' -N 'Para frase' Luego copiar el archivo resultante, id_rsa.pub en el servidor en la ruta del usuario que se va a logonear, ejemplo si desea hacerlo con root #cat id_rsa.pub >> /root/.ssh/authorized_keys Luego al loguearse desde el cliente, pide la PARA FRASE pngala una sla vez y luego nunca ms. Por si acaso puede escribir: $ssh -2 root@servidor

Usando ssh-agent Es una alternativa a utilizar SSH sin password PAra esto debes cargar un shell con el agente ssh #ssh-agent /bin/bash Luego se debe de aadir la clave publica a la sesin: #ssh-add .ssh/id_rsa Ahora slo basta conectarse y sin clave #ssh root@IP LOgin Scripts de SSH Usa los mismos de Linux pero tiene su propio archivo sshrc. Tneles SSH Para hacer esto vaya al archivo de configuracin /etc/ssh/sshd_config Y habilite la lnea: AllowTcpForwarding yes En el cliente deber ejecutar algo como esto: #ssh N f L 142:mail.luna.edu:143 [email protected] -N -f -L No ejecutar un comando remoto Ejecutar en background Crea un tnel

#gpg --armor --export [email protected] > clave2.pgp.pub Esta genera una salida en ASCII En el cliente que desea empezar a usar el cifrado se pone: $gpg --import archivo.pub Listar claves $gpg list-keys Cifrar un archivo En el ejemplo roxanna es el archivo: $gpg --out roxanna.cifrado --recipient [email protected] --armor --encrypt roxanna El email es puesto como identificador de que juego de claves usa. Descifrar: gpg --out chivo-descifrado --decrypt chivocifrado Uso con correo electrnico Firmar un correo Envio #gpg --clearsign archivo-original Rcibo #gpg --verify archivo-recibido Cifrar y firmar Envio #gpg --sign archivo-original Recibo #gpg --decrypt archivo-recibido

Ahora puede configurar el cliente de correo en la IP de la boca del tnel en el puerto 142 y SSH lo conducir al otro lado del tunnel cifrado. Consideraciones de seguridad. 1. Evite configuraciones innecesarias 2. Trate de solo aceptar conexiones tipo 2 3. Trate de usar un solo Compytador para acceder a la consola 4. Respalde y protega las claves 5. Tenga ssh actualizado Usando GPG Es necesario cifrar mensajes de correo o archivos. GPG GNU Privacy Guard es una reimplementacin de GPG Pretty Good Privacy. Primero genere las claves #gpg --gen-key Se crear una carpeta llamada /.gnupg con las claves Ahora toca exportar la calve publica #gpg --export [email protected] >gpg.pub

Booteo de Linux El proceso de booteo. 1. El sistema es encendido, direciones especiales hacen que el CPU corra el BIOS. 2. El BIOS hace el POST y busca el boot sector. 3. Lee el MBR y carga BOOT LOADER 4. BOOT LOADER carga el Kernel por defecto. 5. Kernel detecta e inicializa hardware y carga modulos, monta la particin raz y arranca el proceso init. 6. Segn conf de initab se selecciona un runlevel. 7. Init inicia los servicios del sistema segn scripts de inicio. 8. Se invoca al prompt para el login.