ESCUELA POLITECNICA NACIONAL CARRERA DE INGENIERIA DE SISTEMAS TECNOLOGIAS DE VIRTUALIZACION Y CLOUD COMPUTING PRÁCTICA DE LABORATORIO 1: Realizado por: Alex Llumiquinga TEMA: COMANDOS DE CONECTIVIDAD Y AUDITORÍA DE SISTEMAS OPERATIVOS LINUX
Se usó para la práctica de laboratorio un computador portatil marca DELL con sistema operativo Debian, y sobre el Virtualbox como software de virtualización. En virtualbox se instalaron dos sistemas operativos ubuntu 10.04 LTS, configurándo la red en los tres sistemas operativos usando un bridge virtual de tal forma que podamos usar los comandos descritos en la práctica, el esquema armado se muestra a continuación:
Con este esquema armado realizamos la práctica y mostramos los resultados 1.
Pruebe los siguientes comandos: Ifconfig: -configure a network interface- este comando sirve para configurar las interfaces de red temporalmente mientras la sesión está activa una vez apagado el sistema operativo estas configuraciones se perderán, el comando ifconfig sin parámetros nos muestra el estado de las interfeces de red. El resultado del comando en el host anfitrión nos muestra 6 interfaces presentes en el sistema: 1. eth0: la interfaz ethernet 2. lo: Local Loopback 3. ppp0: Point to Point 4. vboxnet0: Interfaz ethernet para la conexión con las máquinas virtuales 5. wlan0: la interfaz inalámbrica En cada una de las interfaces que se muestran se resaltan los parámetros: dirección mac, en los casos en que este configurado también se muestra máscara de red. Para el caso de las interfaces que tienen enlaces físicos o lógicos activos se muestra un resumen de los paquetes enviados, recibidos, perdidos.
Profesor: Walter Fuertes Díaz.
Página de
hostname: Este comando nos muestra el nombre del computador, además es posible cambiarlo temporalmente, para cambiarlo de forma definitiva se tiene que editar el archivo /etc/hosts
ping: Envia y recive peticiones de echo mediante el envio de paquetes IP, es un comando de capa tres en el modelo TCP, muy usado para medir conectividad entre dos puntos y evaluarla, nos muestra el máximo, mínimo, promedio y la distribución de los peticiones enviadas y recibidas
Profesor: Walter Fuertes Díaz.
Página de
top: Muestra las tareas/procesos que se ejecutan actualmente en el sistema, también muestra la carga del procesador, de la memoria RAM, memoria swap en tiempo real. Muy útil cuando queremos descubrir que proceso está consumiendo recursos inesperados. Dentro de la ejecución del comando es posible matar las tareas que consideremos que no necesitan ser ejecutadas y están consumiendo recursos innecesarios.
ps -aux: El comando ps sirve para ver los procesos activos, a diferencia del comando top este los muestra y enseguida nos devuelve a la línea de comandos y top nos muestra en tiempo real lo que sucede. Existen direrentes opciones de uso mediante argumentos, -a para todos los procesos, u para los procesos del usuario que ejecuta el comando y x para los procesos ejecutados para otros usuarios este comando muestra su resultado en columnas, la primera columna muestra el usuario, la segunda el id del proceso PID, con consumo de memoria y cpu de ese proceso, a que hora inició el proceso, que tiempo lleva ejecutándose y cual fue la ordén que hizo que el proceso iniciara.
Profesor: Walter Fuertes Díaz.
Página de
free: muestra la cantidad de memoria usada, libre, usando el parámetro -t nos muestra el total de memoria, tanto RAM como swap
df -h: muestra un reporte del disco, espacio total, ocupado y espacio disponible, el parámetro -h es usado para que se pueda ver de forma más fácil usando mega, giga, etc, también suele usarse para ver que tipo de sistemas de ficheros que tienen las particiones o discos duros usando el parámetro -T Su resultado como la mayoría de comandos se muestra en columnas, la primera columna hace referencia al path del dispositivo, la segunda al tipo de sistema de ficheros usado, la tercera el tamaño de la partición o disco duro, la cuarta cuando espacio está usado, la quinta que espacio queda disponible, la sexta el porcentaje de uso y la séptima en que directorio está montado el dispositivo/partición.
Profesor: Walter Fuertes Díaz.
Página de
du -h: muestra el tamaño del directorio de trabajo actual mostrando archivos ocultos y no ocultos, el parámetro -h muestra de forma más entendible el tamaño, otra forma común de usarlo es du -sch *, el parámetro -s muestra el tamaño parcial de cada subdirectorio, el parámetro -c muestra el tamaño total del directorio y * para que tome en cuenta todo el contenido del directorio.
route: muestra y modifica las tablas de ruta, nos muestra las redes y porque interface deben salir así como la ruta por default
En el resultado de este comando, en la última fila nos dice que todas las peticiones que se hagan para la red 192.168.56.0 salgan por la interface vboxnet, la primera fila nos dice que las peticiones que no están roteadas en ninguna fila salgan por la interface ppp0
netstat: Estado de la red, nos muestra las conexiones establecidas, los puertos abiertos, el comando que Profesor: Walter Fuertes Díaz.
Página de
causó el proceso, muy útil al momento de asegurar el computador contra ataques.
man [commando]: sirve para ver documentación sobre un comando es específico, es posile buscar dentro del documento oprimiendo la tecla / y luego teclear lo que se desea buscar, avanzar con el teclado o retroceder
Profesor: Walter Fuertes Díaz.
Página de
nslookup: sirve para hacer consultas a servidores de nombres de dominios DNS, cuando se ingresa el comando y se da enter nos envia a un prompt en el que se puede consultar entradas NS, MX, A, etc de sitios en internet, por defecto consulta en el DNS por default del computador, también es posible consultar en servidores DNS externos.
vmstat: All igual que el comando free hace un reporte de la memoria virtual -swap- mucho más detallado, pudiendo obtener datos como, estadísticas de particiones swap, número de particiones swap, bloques de particiones swap, sectores de lectura, sectores de escritura, entre otros
Profesor: Walter Fuertes Díaz.
Página de
uname -a: muestra información del kernel del sistema operativo y del sistema como tal, usando varios parámetros se puede obtener solamente la información necesaria, -a para mostrar toda la información, -r para mostrar la versión del kernel, uname sin parámetros para mostrarnos que kernel usamos.
kill -9 [PROCCES ID]: mata un proceso, con los comandos ps, top podemos identificar los ID’s de los procesos y matarlos
arp -a: Address Resolution Protocol, conocido también como tabla de vecinos en donde están las direcciones MAC de los dispositivos que el equipo ha mantenido algún tipo de enlace, además muestra la interfaz por la que obtuvo el enlace, muestra también la dirección IP cuando se pasa el parámetro -n.
ifstat: muestra en tiempo real el uso de la interfaces del sistema, para mostrar las estadísticas de una interfaz específica, la forma de comando es: ifstat -i eth0
Profesor: Walter Fuertes Díaz.
Página de
Para ver la actividad en tiempo real de todas las interfases se usa el comando ifstat sin parámetros
2.
Escaneo de puertos: nmap [opción] DIR IP El comando nmap escanea puertos, nos dice los servicio asociados a esos puertos abierto o cerrados. Descubrimiento de direcciones IP activas nmap –sP DIR IP, este comando determina si el host está online usando paquetes ping, algunos resultados pueden ser engañosos, como en el caso del dominio www.epn.edu.ec el servidor está arriba sin embargo el servidor bloquea las peticiones ping, sin embargo para saber si el servidor está arriba se puede usar el comando con los parámetros -NP que se salta el firewall que pueda existir
Profesor: Walter Fuertes Díaz.
Página de
El resultado siguiente es de un host en donde no está bloqueado las peticiones ping
TCP: Exploración de puertos TCP activos
nmap –sT DIR IP Este comando nos muestra el puerto, el estado del puerto el servicio asociado al puerto
UDP: Exploración de puertos UDP activos
nmap –sU DIR IP
Exploración del tipo de SO de un equipo en red namp –O DIR IP Profesor: Walter Fuertes Díaz.
Página de
El resultado nos dice que el sistema operativo puede ser o tener algunos de los kernel listados, pero con exactitud, además de los saltos que pasó hasta llegar a la dirección IP obejetivo.
3
Conexión remota, encriptada apt-get install ssh (Para Ubunto o Debian). SSH es un protocolo que sirve para la conexión de entornos remotos de forma segura, tanto por línea de comando como para entornos X, manejo llaves de seguridad públicas y privadas RSA. APT=Advanced Packet Tool
ssh-keygen -t rsa1: genera una cadena conexión pública, esta cadena de conexión sirve para poder iniciar sesiones ssh sin tipear la clave, para esto debemos enviar nuestra clave pública a los sitios de conexión remota frecuente, estos sitios deben añadir nuestra llave en su lista de sitios autorizados y añadir la clave privada en nuestra máquina. Generamos la clave pública
Profesor: Walter Fuertes Díaz.
Página de
Copiamos nuestra clave pública en el sitio remoto al que queremos ingresar:
scp [nombre de archivo] root@DIR IP:/home/ : copia remota de archivos
Profesor: Walter Fuertes Díaz.
Página de
4.
Asignación manual de DIR IP ifstatus [ethO]
Profesor: Walter Fuertes Díaz.
Página de
ifconfig [ethO] [DIR IP][ MASK]up : Asignamos un ip virtual temporal a la interfaz eth0, que se perderá cuando reiniciemos el sistema
route add default gw [Dir IP del GW]: Asignamos un gatewal por default temportal que se perderá cuando reiniciemos el sistema, el la primera parte de este documento explicamos su comando y su interpretación
5.
Revisón de ficheros importantes: cat /proc/cpuinfo: Este archivo nos muestra las características de nuestro procesador
Profesor: Walter Fuertes Díaz.
Página de
/proc/meminfo: Este archivo nos muestra la información de la memoria Ram, swap y es usado por varios comandos para mostrar resultados
Profesor: Walter Fuertes Díaz.
Página de
/etc/fstab (ver el uso de los recursos): En este archivo se puede ver y modificar las particiones y discos duros montados al inicio del sistema, es importante que estos datos sean los adecuados de tal forma de evitar dramas al inicio del sistema, los comandos que ayudan mucho en la edición de este archivo son df, fdisk, se recomienda siempre editarlo con precaución sobre todo para evitar que nuestro sistema no arranque
Profesor: Walter Fuertes Díaz.
Página de
/etc/resolv.conf (ver la configuración del DNS): En este archivo se almacena los servidores de nombres a los que consulta nuestro sistema, el dominio al que pertenece.
/etc/bind/named.conf: Este archivo se crea cuando los servicios DNS están levantados, es decir, cuando el sistema brinda el servicio DNS
/etc/network/interfaces (ver el Direccionamiento IP): Este archivo muestra las direcciones IP, máscara, red, broadcast, gateway, de las interfaces configuradas como estáticas o se muestra como la figura siguiente en el caso de que las interfaces se configuren vía DHCP
/etc/partitions: no logramos encontrar este archivo, sin embargo vimos el comando df que ns permite saber el estados de las particiones en la primera parte del documento
6.
Manejo de archivos y cómo asignar permisos mkdir, cd, rm, Is, pwd, chmod, chown, chgrp
En la grafica anterior mostramos la creación de directorios, con el comando mkdir, el uso del comando pwd para saber en que directorio nos entontramos, el comando cd para cambiarnos de directorio, el comando touch para crear un archivo, el comando echo para añadir texto al archivo creado. Usamos el comando ls -l para listar el contenido de un directorio con detalles como permisos, propietario del archivo, su tamaño, fecha de creación. Profesor: Walter Fuertes Díaz.
Página de
Para cambiar de permisos usamos la siguiente sintaxis: chmod u+x archivo.txt significa que al usuario (propietario del archivo) le vamos a dar (+) permisos de ejecución al archivo.txt Se puede usar las siguiente maneras:
chmod g+r archivo.txt, al grupo le damos permisos de lectura sobre el archivo.txt
chmod o-w archivo.txt otros usuarios que no sean el propietario ni estén en el grupo le quitamos permisos de escritura sobre archivo.txt
Para cambiar de usuario y grupo a un archivo se usa la siguiente sintaxis: chown usuario.grupo archivo.txt donde usuario representa el propietario del archivo y grupo representa al grupo al que pertenece el prpietario En nuestro ejemplo cambiamos de propietario de root al usuario guaramo con el grupo guaramo. Nota: Por cada usuario que se crea también se crea un grupo del mismo nombre, el usuario es el único miembro del grupo en un inicio.
7.
Como detener, iniciar y re iniciar servicios /etc/init.d/[Servicio] stop, star, restart. Por ejemplo el servidor APACHE (Web server) /etc/init.d/apache2 start En el directorio /etc/init.d están los scripts o enlaces a scripts que sirven para deneter, iniciar, reiniciar, ver el estado de los servicios del sistema, en la figura mostramos con un ejemplo usando el servicio virtualhost en debian
Profesor: Walter Fuertes Díaz.
Página de
8
Comandos para SINCRONIZACIÓN
date: Sirve par ver la hora del sistema, se puede cambiar también la fecha y la hora usando el formato: date mmddhhmm (mm=mes, dd=día, hh=hora, mm= minutos)
time: este comando nos muestra entre otras cosas el tiempo que tarda un comando en ejecutarse, en el ejemplo mostramos con el comando ping con 4 peticines a google.com tarde 3.128 segundos
w: El comando nos muestra en la primera fila, la hora del sistema, el tiempo que el sistema está operativo Profesor: Walter Fuertes Díaz.
Página de
en nuestro caso 2 horas 45 minutos, el número de sesiones abiertas ya sean locales, de consola locales o remotas, la carga del procesador cada 15 min, 10, y 5 min.
Luego nos muestra ordenado por columnas el usuario, el modo en que está en el sistema, desde donde está en el sistema, la hora que se hizo login, que aplcación usa.
ntpd: network Time Protocol es un protocolo que se usa para la sincronización de horario en redes IP, usa el UDP para su transmición, por lo general se usa en sistemas como centrales telefónicas para uso de reportes, medición de horario en diferentes países con diferentes horarios. Ntpd sirve para que la máquina local sea en so un servidor NTP ntpdate: sirve para setear la hora y fecha desde algún servidor NTP, también para consultar la hora de algún servidor ntp como se muestra.
sleep: mantiene la línea de comando en estado “dormido” por la cantidad de segundos que se indique: sleep 5 (5 segundos)
9
Verificación de seguridades en Linux Consulte en el Web la estructura de un script-IPtable, diseñe uno, ejecútelo y muestre sus resultados ipchains, iptables El esquema armado es el siguiente:
El obejtivo es dar internet a las máquinas virtuales (ubuntu instalado) a través del host anfitrion (debian) usando scripts que configuren NAT. En la máquina virtual 1 levantaremos el servicio apache y ssh, bloquearemos el servicio para la maquina anfitrion y daremos el servicio para la máquina virtual 2 para los Profesor: Walter Fuertes Díaz.
Página de
dos servicios. Proceso: Por default el sistema anfitriion no permite el re-envio de paquetes de una interfaz a otra en nuestro caso queremos que las peticiones que se hagan a la interfaz vboxnet0 se redirijan a la interfaz eth0 para lograr nuestro hacer NAT. Para esto activamos el bit de re-envio que será temporal mientras el computador esté prendido:
En el equipo anfitrión que cuenta con dos interfaces eth0 y vboxnet0 se configura NAT, de tal forma que cuando las máquina virtuales que hagan peticiones hacia internet el host anfitrión redirija estas perticiones hacia la interfaz eth0 y justo antes de salir estas peticiones hacia internet, el host anfitrión deberá cambiar la dirección ip de la petición para que sea la dirección ip de la interfaz eth0 este proceso de cambio de dirección de origen se llama source NAT. Para hacer tal tarea usaremos IPTABLES.
iptables -t nat -A POSTROUTING -s 192.168.56.0/24 -o eth0 -j SNAT --to 192.168.1.121 Las opciones son las siguientes: ○ ○ ○ ○ ○
-t nat, sirve para saber que las opciones posteriores al comando se refieren a la tabla nat -A POSTROUTING, añadir la regla a la cadena postrouting justo después del enrutamiento, en nuestro caso cambiar la dirección ip de origen -s 192.168.56.0/24, -s=source, la regla se aplicará a los paquetes salgan desde la red 192.168.56.0 -o eth0, los paquetes que vengan del la red 192.168.56.0 saldrán por la interface eth0 que es la que tiene acceso a internet -j SNAT --to 192.168.1.121, cambia la dirección IP de origen a 192.168.1.121
Finalmente para guardar las reglas ejecutamos los comandos: iptables-save
Ahora dentro de la red 192.168.56.0 existe conexión a internet. Para la segunda parte instalaremos apache en nuestra máquina virtual 1 con dirección IP 192.168.51.121.
sudo aptitude install apache2
Tanto desde el host anfitrión como de la maquina virtual 2 se puede acceder al servidor apache y acceso ssh
Profesor: Walter Fuertes Díaz.
Página de
Profesor: Walter Fuertes Díaz.
Página de
Vamos a bloquear el acceso usando iptables a la máquina anfitrión, esto lo hacemos en la maquina virtual 1 con ip 192.168.56.101
Luedo probamos los accesos desde la máquina anfitrion con fracasos:
Y desde la máquina virtual 2 con éxito
10
Consulte el contenido del archivo sudoers En sistemas como ubuntu vienen por default habilitado el comando sudo, por seguridad para evitar que usuarios no permitidos usen instrucciones/comandos y causen daños, este archivo muestra los usuarios que pueden hacer uso de sudo, indica que los usuarios miembros del grupo admin tendrán todos los Profesor: Walter Fuertes Díaz.
Página de
privilegios del usuario root siempre que usen esudo por delante de cada comando ejecutar
11.
Fuentes ● Páginas de documentación man de los sistemas operativos Debian y Ubuntu ● http://www.brennan.id.au/index.html, Miles Brennan ● http://albertomolina.wordpress.com, Alberto Molina Coballes ● http://wiki.kartbuilding.net, Details, Installation, & Set-up of Debian based Linux Servers
Profesor: Walter Fuertes Díaz.
Página de