Académique Documents
Professionnel Documents
Culture Documents
Diciembre 2010
Cuaderno de Prcticas
Copyright
Esta documentacin es regida por los reglamentos de la GNU Free Documentation License y la GNU General Public License v3, sintase libre de copiar, modificar, aprender, distribuir y redistribuir esta documentacin; haga uso de su derecho como si fuere su deber.
Prefacio
Este cuaderno de practica esta diseado para hacer que estudiante obtenga el conocimiento necesario, que va desde un domino bsico, fundamental y administrativo del Sistema Operativo GNU/Linux para servidores hasta un nivel avanzado, si ste es completado en su totalidad. Este cuaderno es una iniciativa para poder ensear a los candidatos a poder dominar completamente estos sistemas, en particular usamos CentOS o Fedora. Cualquier sugerencia, correccin, duda, aclaracin y/o comentario sobre este cuaderno de trabajo, sintase libre se enviar un correo a: info@codigolibre.org
Capitulo 1
PRACTICA GNU/BASICO COMPLETO
1) Entremos a una seccin del modo consola Utilizando la combinacin de las teclas CTRL + ATL + F1, CTRL + ATL + F2 , CTRL + ATL + F3, CTRL + ATL + F4, etc 2) 3 formas terminamos una seccin en la consola : Con CTRL+D, exit, logout 3) Creamos un directorio para guardar nuestro trabajo: mkdir su-nombre 4) Nos cambiamos a este recien creado directorio: cd su-nombre 5) Crear un archivo con tres nombres de frutas uno debajo del otro y salimos con control ^D : cat > frutas (peras, manzanas, pia) 6) Creamos un archivo desde la salida de un comnado: ls -l /usr/share/man > listado.txt 7) Despleguemos el contenido del archivo frutas: cat frutas 8) Hacemos una copia del archivo frutas: cp frutas copia.txt 9) Copia de un archivo que no esta en nuestro directorio : cp /etc/passwd usuarios.txt 10) Renombramos el archivo copia.txt a vegetales: mv copia.txt vegetales.letras 11) Borramos un archivo: rm -i vegetales.letras 12) Creamos otro directorio vacio de nombre directorio: mkdir directorio 13) Movamos un archivo al directorio asi: mv listado.txt directorio/ 14) Completar nombres de archivos y comandos usando <tab>: ifc<tab><tab>o<tab>config , ls -l /u<tab>/sh<tab>man/ 15) Veamos un listado de los comandos que hemos escrito: history 16) Ejecutemos el ltimo comando: !! 17) Ejecutemos el comando numero 67 en el history: !67 18) Repetir comandos con teclas cursoras: <^> 19) Listemos el contenido de un directorio: ls /var/log 20) Una ruta relativa, es la que parte desde un punto y no empieza con /: cd ../Desktop/ 21) Una ruta absoluta es la que parte desde barra, para saber donde estamos: pwd 22) Crearemos otro directorio de nombre AA: mkdir AA 23) Borremos este directorio vaci recien creado : rm AA .- Nos da un errror, se borra con rmdir o rm -r 24) Cambimonos a otro directorio: cd /lib/modules/ 25) Regresemos donde nos encontrabamos antes de efectuar el CD: cd 26) Vamonos al directorio padre: cd .. 27) Los archivos o directorios ocultos se crean con un punto delante: a) mkdir .invisible b) touch .oculto 28) Listemos los archivos ocultos en el directorio HOME: ls -a /home/$USER 29) Tres formas de cambiarnos a nuestro directorio home: cd, cd ~ , cd /home/nombre-usuario 30) Encontremos archivos sin saber en que directorio se encuentran: locate passwd 31) Para usar locate debe como ROOT actualizar la base de datos del sistema: updatedb 32) Listar la informacion de permisos, propiedad, tamoo, y fecha de los los archivos: a) ls -l archivo b) stat archivo 33) Obtengamos informacin acerca de los comandos : a) man man b) man touch 34) Navegar por el man y finalmente salir: a) /buscar-palabra b) <space> c) Enter d) q 35) Solo listar las opciones de un comando : uname --help 36) Despleguemos donde estn las documentacin del sistema: ls /usr/share/doc/<tab><tab> 37) Algunos meta caracteres especiales que el shell interpreta: * ? [ ] [!] . 38) Ejemplos del uso de los metacaracteres: a) echo /usr/local/* b) ls -l /etc/*.conf c) ls -d /etc/rc[136]?d 39) Los corchetes [ ] para arreglos: ls /etc/[af]* 40) [^ ] Estamos indicando que debe concordar los caracteres que no se encuentran en el rango dado: ls -d /etc/rc[136]?d 41) El ; Para separar comandos en una linea del shell: cd /usr/share/man; sleep 1; ls -l ; sleep 2; clear; sleep 1; echo ACABO! 42) El uso de () para agrupar comandos como en aritmetica y dar prioridad: ls -l $(ls -d /etc/rc[136]*) 43) Cuidado con metacaracteres que hace este comando: ls -l /etc/.* > leerlo.txt 44) Espacios produce resultados no deseados: a) touch antonio perpinan b) touch antonio perpinan c) touch antonio\ perpinan 45) Usemos # Para sealar comentarios y permanescan en el history de comandos: ls -l /boot # es un comentario 46) Redireccionar la salida de un comando a un archivo: ls -ld /proc/[0-9]* > salida.txt 47) Ahora la salida de un archivo sera la entrada de un comando: wc -l < salida.txt 48) Ahora la salida de un comando sera la entrada del otro con TUBERIA(pipe): a) ls -l /dev/ | nl b) ls -l /bin | wc -l 49) Aadamos el contenido de un archivo a otro sin sobrescribirlo: cat /etc/passwd >> salida.txt 50) Enviemos la salida estandar y la de error de un comando a dos archivos: find /var >buenas.txt 2> malas.txt 51) Mezclemos la salida estndar de un comando con la entrada estndar de otro: cat /etc/X11/xorg.conf | wc 52) Declaramos una variable llamada ABIERTOS cuyo valor es solucion: ABIERTOS=solucion 53) Mira el valor de esa variable: echo $ABIERTOS
Practica de AWK...
La funcin bsica de awk es buscar lneas en ficheros (u otras unidades de texto) que contienen ciertos patrones. Cuando en una lnea se encuentra un patrn, awk realiza las acciones especificadas para dicho patrn sobre dicha lnea. Awk sigue realizando el procesamiento de las lneas de entrada de esta forma hasta que se llega al final del fichero. Operaremos sobre la salida de "ls -l /var" # Ejemplo simple de imprimir la linea que contiene el patron gdm ls -l /var/ | awk '/gdm/ {print $0 }' # Imprimir lineas que contienen diferente patrones como gdm y crash ls -l /var/ | awk '/crash/ {print $0 } /gdm/ {print $0}'
Navegar en el archivo Estos comandos trabajan en modo comando y modo visual. Comandos Vim Accion j o cursor arriva Mueve linea arriva k o cursor abajo Mueve una linea abajo l o cursor derecha Mueve un caracter a la derecha h o cursor izquierda Mueve un caracter a la izquierda. e Va al final de la palabra. E Va al final del espacio en blanco. b Va Al principio de la palabra. B Va al principio del espacio en blanco. 0 Va al principio de la linea. ^ Va al primer caracter que no es un espacio. $ Va al final de la linea. H Va a la primera linea de la pantalla. M Va al medio de la pantalla L Va a la ultima linea de la pantalla. :n Va a la linea numero n. Insertar y sobre escribir texto. Comando Vim i I a A o O C r R Tecla ESC Accion Inserta antes del cursor. Inserta al inicio de la linea actual. Agrega despues del cursor. Agrega al final de la linea actual. Abre una linea nuena debajo e inserta. Abre una nueva linea en sima e inserta. Cambia el resto de la linea actual. Sobre escribe un caracter. Entra en modo reemplazo de caracteres. Sale modo de insertar y va a modo de comando.
Editar bloques de text Los comandos de Vim Funcionan en el texto ya resaltados en el modo visual(V). Comando Vim Accion ~ Cambia los caracteres a mayuscula. > (V) Resalta a la derecha. < (V) Resalta a la izquierda. c (V) Cambia el texto resaltado. y (V) Copia el texto resaltado. d (V) Corta el texto ressaltado. yy o :y o Y Copia la linea actual. dd o :d Borra la linea actual. p Pega el Texto cortado. P Pega antes del cursor. Hacer y deshacer Comando Vim u U Ctrl + r Buscar Comando Vim /patron n N Accion Desacer Desacer todos los cambios en la linea actual. Rehacer Accion Busca archivo por patron. Busca la proxima ocurrencia. Busca la proxima ocurrencia en direccion opuesta. Accion Remplaza foo por bar. Trabaja en la linea actual. Trabaja en la linea numero. Trabaja en archivo completo. Remplaza toda las ocurrencias en la linea. Ignora la capitalizacion. No ignora la capitalizacion. Confirma cada substitucion. Remplaza cada ocurrencia de foo por bar en la linea 452. Remplaza toda ocurrencia de foo por bar pero en la linea actual. Remplaza cada ocurrencia de foo por bar en el archivo completo. Igual que arriva pero ignora la capitalizacion. Comfirma cada substitucion. En cada linea del archivo remplaza a foo por bar confirmando.
Remplazar Comando Vim :rs/foo/bar/a Donde (r) Puede ser: nada numero % Donde (a) Puede ser: g i I c Ejemplos :452s/foo/bar/ :s/foo/bar/g :%s/foo/bar/g :%s/foo/bar/gi :%s/foo/bar/gc :%s/foo/bar/c
10
11
Prctica #Captulo 2
Objetivo: El alumno accesar el BIOS para obtener informacin critica sobre el ordenador, pre-instalacin. Herramientas a usar en estas prcticas: mkswap, dd, swapon, y swapoff, du, df, free, cfdisk y fstab Introduccin : Todos los ordenadores comparten la caracterstica en comn de tener un BIOS. Un BIOS no es mas que el sistema bsico de entrada/salida Basic Input-Output System. es un cdigo de interfaz que localiza y carga el sistema operativo en la RAM. sta proporciona la comunicacin de bajo-nivel, operacin y configuracin con el hardware del sistema, que como mnimo maneja el teclado y proporciona salida bsica durante el arranque. La BIOS usualmente est escrita en lenguaje ensamblador. Ejemplo: 1. En un ordenador HP al pulsar la tecla DEL tenemos acceso al BIOS. 2.- Para identificar la memoria RAM de nuestro ordenador despus de haber accesado el setup, buscamos la paleta de opciones avanzadas (advanced), luego pulsamos ENTER en procesos, memoria y cache (Processor, Memory and Cache). 3. Se repetir el mismo proceso para identificar el procesador. 4. Para identificar los discos duros de nuestro ordenador una ves en el setup, buscamos la paleta avanzado (advanced) la opcin configuracin de dispositivos IDE (IDE device configuration).
Prctica #1 El BIOS
Lo primero que debemos hacer es identificar la memoria, procesos, y discos de nuestro ordenador. Para esto usualmente con solo presionar la tecla de DEL (puede variar dependiendo el ordenador) al encender el ordenador tendremos acceso a el BIOS. Entrar al BIOS, configuracin y identificacin de perifricos. En esta prctica debemos entrar al BIOS de un equipo y efectuar preguntas al alumno para que identifique entre algunas cosas: 1. Discos.- Tamao, Orden y Nombre, etc 2. Orden de Arranque 3. Activa o no el password del BIOS 4. Memoria usada en el vdeo 5. Identificar Reloj del Procesador y Monto de RAM
13
Prctica #8 Conectividad Herramientas a usar ifconfig, route, /etc/resolv.conf, y grficamente network-admin. Establecer la Direccin de ip a. Si es Esttica, para establecer una direccin IP esttica y su mascara y en encenderla, simplemente ejecuamos la siguiente sentencia: # ifconfig eth0 150.1.1.31 netmask 255.255.255.0 up b. Establecer la Pasarela: # route add default gw 10.0.0.1 c. Establecer los DNS: Debemos escribir al archivo /etc/resolv.conf e incluirle la siguiente linea: nameserver 10.0.0.254 nameserver 196.3.81.5 d. Nos lee la informacin de la interfaz de red (IP, mscara, etc.) para confirmar los cambios que deseamos efectuar # ifconfig eth0 e. Para detener el servicio de red 'eth0': # ifdown eth0 d. Para arranca el servicio de red 'eth0' # ifup eth0 2. Si es Dinmica: Para requerir una direccin desde un servidor dhcp que este en la red.: # dhclient eth0 1. Establecer la Mascara # ifconfig eth0 150.1.1.31 netmask 255.255.255.0
Capitulo 3 - INSTALACIN
1. Instalar UBUNTU 2. Instalar Fedora 3. Instalar CentOS
Captulo 4
1. El X
A. Identificacin de la arquitectura del X Server : 1. Servidor X 2. Protocolo X 3. Xlib B. Administradores de ventanas : 1. Gnome, kde, wmaker (temas, fondos , etc.) C. Administrador de pantalla (gdm, kdm, xdm) 4. Toolkit y Widget
Prctica #1 Editar el archivo configuracin gdm.conf : Realmente editamos a custom.conf para refleccionar los cambios /etc/gdm/custom.conf: Cambiar el autologin y el login temporizado para permitir que un usuario ingrese automticamente y probarlo. En el editor (VI o nano) buscar la linea que dicen o editarlo desde cero:
AutomaticLoginEnable=true AutomaticLogin=nombre_usuario TimedLoginEnable=true TimedLogin=nombre_usuario TimedLoginDelay=30... el tiempo
2. En el grfico existia una aplicacion que aun esta en Centos ya no en Fedora pero aun asi nos genera el archivo custom.conf: gdmsetup Cambiamos el tema de ingreso y permitimos la entrada remota. Prctica #2 Habilitar XDMCP y peticiones TCP en GDM Objetivos: Manejar desde un PC varios equipo ejecutando XDMCP via TCP como transporte. Es necesario tener GDM, por defecto GNU/Linux, como login grfico. Una vez logeados como root, editamos (con tu editor favorito) el fichero "/etc/gdm/custom.conf", y buscamos la etiqueta "[xdmcp]", encontraremos algo as: Enable=false y ponemos Enable=true Habilitar el TCP lo hacemos as en la siguiente linea: DisallowTCP=true y ponemos DisallowTCP=false Prctica #3 Habilitar xdmcp en tsclient Fedora Para habilitar el xdmcp en el cliente del terminal server (tsclient/rdesktop en ubuntu). Por defecto el programa terminal server client trae el xdmcp deshabilitado. Para corregir esto simplemente instalamos el xnest: # yum install xnest Si an no has habilitado el xdmcp, en Gnome y Fedora podemos: 1. Men System -> Administration -> Login window (tambin podemos ejecutar gdmsetup). 2. En la pestaa Remote cambiamos el Style a same as local. Esto solo afecta la ventana que le desplega al usuario al in tentar ingresar a nuestro sistema. 3. Deber reiniciar el GDM lo que tambin matara su sesin de X. # kill -HUP `cat /var/run/gdm.pid`
14
Reiniciamos el GDM con: # /etc/init.d/gdm restart Prctica #6 Exportar el Display Para exportar aplicaciones del X y enviarlas a otro host va el IP: # export DISPLAY 10.0.0.126:0.0 Enva las aplicaciones ejecutadas en el host local hacia el host con el IP 10.0.0.126 y se desplegar el display 0 y el monitor 0 del host local en el remoto. Para traer un escritorio desde otra mquina que esta exportando: X -query 10.0.0.126 :1 Desplegar en el Servidor X local en el display 1 el display exportado por el host con IP 10.0.0.126. Prctica #7 Usar VNC Si encendemos el vncserver ya sea manualmente o a travs del grfico va el centro de control de Gnome y el utilitario Escritorio Remoto (vino-preferences), alli podemos elegir las opciones de control y si debemos ser contactados antes de permitir el acceso. # vncserver Luego para conectarnos ejecutamos: $ xvncviewer 192.168.1.2 Abrimos una conexin con el host de IP '192.168.1.2' a partir del visor VNC Prctica #8 Usar el programa xhost y xauth xhost: usando este programa puede dar permiso a cualquier usuario en una mquina dada a escribir grficos en su pantalla. Ejemplo: usted est sentado frente a una mquina llamada host1. Para permitir el acceso a cualquier programa en el host2 a su pantalla en host1 debera escribir el siguiente comando, esto habra que escribirlo en un shell en el host1: # xhost +host2 xauth: es una autentificacin basada en cookies y mucho ms sofisticada. Con xauth se puede dar acceso a los usuarios de forma individual. Es mucho ms seguro que xhost. La autentificacin usa una cookie alojada en el fichero .Xauthority en el directorio personal de los usuarios. Si la mquina remota tiene una cookie vlida en este fichero entonces se garantizar el acceso. Para copiar la cookie desde la mquina frente a la que est sentado (host1) al host desde donde quiere lanzar el programa (host2) puede usar uno de los siguientes mtodos: 1) xauth extract - host1:0.0 | ssh host2 /usr/X11R6/bin/xauth merge 2) scp ~/.Xauthority host2:/ Prctica #9 Usar el terminal server client Nos dirigimos al menu: Aplicaciones -> Internet -> Cliente Terminal Server Prctica #10 ssh -x para usar recursos grficos remotamente Si deseamos usar una aplicacin grfica desde un host en nuestro host local: # ssh -X usuario@10.0.0.126
15
Tenemos que asegurarnos que tengamos corriendo el puerto 6000 o TCP X11. Para eso hacemos un nmap la maquina donde nos vamos a conectar y nos aseguramos que nuestro server tambin lo tenga corriendo: nmap 192.168.1.126 Luego para traer el escritorio desde la PC ejecutamos la sentencia: X -query 10.0.0.126 :1 Tenemos que exportar la variable del display de la mquina remota. export DISPLAY:10.0.0.126:0.0 Para volver a restaurar el display de nuestra maquina usamos el comando export DISPLAY=:0.0 Prctica #12 Usar el Xnest Xnest es parte del paquete de xorg-X11-xnest, y su funcin es tener un cliente X dentro de una ventana. Para saber mas sobre xnest leer el man de Xnest. Tambin es recomendada este tutorial de LinuxJournal donde habla de posibles funciones de como experimentar con nuevos desktop dentro del escritorio. Lo primero que hay que entender es la diferencia entre servidor y los puertos. Tambin es importante entender como trabaja X. El X original corre en el puerto 0, y nuevos X se debern correr en :1 :2 ... etc. La instruccin seria: # xnest :1 Cuando tenemos esto solo nos da una ventana en azul o negro, sin nada mas, si queremos correr algo sencillo (y que no coma recursos) podemos ejecutar una terminal. Como no podemos correr nada desde la X en ese momento correremos los comandos desde el display 0 osea desde nuestro escritorio actual. Corremos una terminal y ejecutamos el comando: # xclock -display :1 Inclusive podemos pasar algunos parmetros como: # xclock -foreground "Red" -geometry +450+250 -display :1 Este es un pequeo programa pero tambin podemos correr cosas mas elaboradas como una desktop de KDE. Para hacer esto simplemente debemos tener un terminal para arrancar el Escritorio KDE: # xterm -display :1 & Luego en el terminal ejecutamos: startkde &
CAPITULO 5
1. Documentacin y correccin de fallos Prctica #2 PS : # ps Procesos activos por una terminal del usuario actual, aportando identificador del proceso, terminal asociada, porcentaje de tiempo de procesador ocupado y nombre del proceso. Existen otros comandos como htop y ksysguard que es grafico pero lo hacemos con ps por tradicion y por su versatilidad en el terminal. Busca en todos los procesos activos del sistema los que contengan el trmino 'bash' : # ps -A | grep bash Todos los procesos activos del sistema, con informacin asociada (% de CPU, % de memoria, etc.): # ps -auwx Procesos activos por una terminal del usuario actual, con informacin asociada: # ps -u Procesos activos del sistema jerarquizados en forma de rbol: # pstree Para ver los procesos que est utilizando un usuario utilizas: # ps -u nombre_usuario Para ver todos los procesos que se ejecutan en el sistema utilizas: # ps -aux Prctica #2 Comando TOP y HTOP Ahora bien, el comando ps nos muestra una radiografa de los procesos en el momento, pero no nos muestra los cambios que se van teniendo. Para esto contamos con el comando top y mejorado aun mas htop. Prctica #3 Comando kill Elimina el proceso con PID '100' de forma inmediata, sin espera (seal nmero 9): # kill -9 100 Muestra todas las seales disponibles en el sistema con el comando 'kill': # kill -l Elimina el proceso con PID '100' (al no especificar el nmero de seal, se emplea por defecto la 15): # kill 100 Aplica la configuracin del fichero inetd.conf, sin detener el proceso inetd: # killall -HUP inetd Restaura (reinicia) el utilitario top: # killall top Elimina todos los procesos con nombre 'httpd': # killall httpd
16
17
5. Copiamos este hash encriptado a nuestro archivo menu.list y ponemos: password - -md5 $1$OaYzq1$hQNJqxuGB/oM7.etvNtbM. 6. Luego reiniciamos y ya esta, grub nos pedir una contrasea al intervenirlo. 7. Recuerde que la contrasea no es el hash sino dominicana D.- Eliminar single user 1. Desde grub podemos eliminar las entradas de single o recovery. 2. Ponerle contrasea a grub para que no puedan pasarle el parmetro single
18
CAPITULO 6
Sistemas de archivos Estudiar el contenido completo de BARRA (/) y todas sus carpetas: bin/ boot/ dev/ etc/ home/ lib/ lost+found/ media/ mnt/ opt/ proc/ root/ sbin/ selinux/ srv/ sys/ tmp/ usr/ var/ Prctica #1 Usuarios y Grupos El archivo de usuario, /etc/passwd, es un archivo de texto plano, donde cada lnea es una entrada distinta cuyos campos se separan con el caracter :. El primero de estos campos es el nombre del usuario, el segundo el password de forma encriptada, a travs de un proceso irreversible. Si en el campo de password aparece simplemente un caracter x o * propiamente tal, entonces el sistema utiliza passwords shadow, medida de seguridad para almacenar los passwords en otro archivo de nombre /etc/shadow, accesible solamente por el superusuario (root) y los programas de autenticacin propios del sistema. A continuacin examinaremos con mayor exactitud la estructura de estos dos archivos: /etc/passwd (lnea de ejemplo): root:x:0:0:Administrador del Sistema:/root:/bin/bash ^ ^^^ ^ ^ ^ | || | | | |<- Shell por defecto del usuario | || | | |<- Directorio home del usuario | || | |<- Campo opcional y utilizado solamente con fines informativos. | | | |<- GID, identificador numrico nico del grupo primario del usuario | | |- UID, identificador numrico nico del usuario | |<- Password encriptado del usuario |<- Nombre de usuario /etc/shadow (lnea de ejemplo): root:$1$zjxtZLtl$UHNQhadJEfRdsSL386N1HO.:11181:0::::: ^ ^ ^ ^ | | | |<- Das antes de que el password pueda ser cambiado | | |<- Das desde el 1o de Enero de 1970 en que el password fue cambiado | |<- Password encriptado |<- Nombre de usuario Calculo para buscar el da que fue cambiado ese password del cambio del password $ expr 13359 \* 24 \* 60 \* 60 1154217600 $ date -d "1970-01-01 1154217600 sec" Sun Jul 30 00:30:00 AST 2006 $ date -s "1970-01-01 1154217600 sec" Los campos adicionales son opcionales, generalmente dejados en blanco y representan los das antes que el password expire en que el usuario es advertido; das despus de que el password ha expirado en que la cuenta es deshabilitada; das desde el 1 de Enero de 1970 en que la cuenta fue deshabilitada y un campo reservado, respectivamente. Los grupos, por otra parte, se definen en un archivo llamado group, tambin en /etc. Su composicin se detalla a continuacin: /etc/group (lnea de ejemplo): daemon::2:root,bin,daemon ^ ^^ ^ | | | |- Lista de usuarios pertenecientes al grupo, separados por comas | | |- ID numrico nico del grupo | |- Password encriptado del grupo (generalmente no se utiliza) |- Nombre del grupo A pesar de que todos estos archivos se manipulan a travs de comandos especiales (passwd, chfn, chgrp, adduser, addgroup, etc.), al ser de texto plano pueden ser manejados con un simple editor de texto. Tanto en el archivo de password como de grupos debe existir por lo menos una entrada esencial para el funcionamiento del sistema: la del usuario root. /etc/shadow: /etc/passwd: /etc/skel: /etc/profile: .bash_profile .bashrc Contiene las contrasenas encriptadas de los usuarios entre otra informacion . Es el archivo que almacena cada usuario en el sistema Usado por useradd para configurar usuarios por defecto Es utilizado por el sistema como fichero de configuracion de bash. Es leido y los comandos incluidos en el, ejecutados, cada vez que el usuario entra en el sistema. Leido cuando el usuario arranca un subshell, escribiendo por ejemplo bash en la linea de comandos.
19
Practica 2 Cuenta root En sistemas operativos del tipo Unix, root es el nombre convencional de la cuenta de usuario que posee todos los derechos en todos los modos (mono o multi usuario). root es tambin llamado superusuario. Normalmente esta es la cuenta de administrador. El usuario root puede hacer muchas cosas que un usuario comn no, tales como cambiar el dueo de archivos y enlazar a puertos de numeracin pequea. No es recomendable utilizar el usuario root para una simple sesin de uso habitual, ya que pone en riesgo el sistema al garantizar acceso privilegiado a cada programa en ejecucin. Es preferible utilizar una cuenta de usuario normal y utilizar el comando su para acceder a los privilegios de root de ser necesario. Comando su Este comando se utiliza para cambiar de cuenta de usuario, tambin nos permite ejecutar una sentencia con permiso de administrador sin la necesidad de ser root. $su -c ifconfig: $su: $whoami: $pwd: $exit : $su - : $pwd: Ejecuta ifconfig con permiso de root, sin antes haber entrado ala cuenta root. Cambiate a la cuenta root sin cargar su variable de entorno. Una vez haya ejecutado la sentencia anterior, verifica quien eres. Ahora verifica en que lugar esta. salir del usuario root. Cambiate a la cuenta root ahora cargar su variable de entorno. Nuevamente verifica en que lugar esta.
Comando sudo sudo es una herramienta del sistema que permite a los usuarios especificados en el archivo de configuracin /etc/sudoers, la ejecucin de comandos con los privilegios de root, al que denominaremos "usuario privilegiado", de acuerdo a como se haya especificado en el mencionado archivo de configuracin. En /etc/sudoers, se especifica quien est autorizado a hacer que con los privilegios de quien. $sudo -V: Muestra la version de sudo. $sudo -e /etc/fstab: En el siguiente ejemplo, se utiliza el editor nano para editar el archivo /etc/fstab con permiso de root. $sudo -l: Muestra una relacin de los comandos que el usuario puede ejecutar. $sudo su usuario: Para cambiarnos a otro usuario ejecutamos la siguiente sintaxis. $sudo -u 0 ifconfig: Si queremos ejecutar un comando con los permisos de otro usuario por su UID $sudo su: Cambimonos al usuario root sin especificar el nombre del usuario. Practica de Usuarios y Grupos (Crear y Modificar) # useradd user1: Crea un usuario llamado user1 de modo simple. # grep -i user1 /etc/passwd: Comprueba que el usuario se ha creado. # passwd user1: Asignale un password al usuario # usermod -l prueba user1: Cambia el login del usuario a prueba. # chage -l prueba: Comprueba la fecha de espiracin del usuario. #usermod -c "usuario de prueba" prueba: Ponle un comentario al usuario que diga, usuario de prueba. # userdel -r prueba: Elimina el usuario y su directorio home. # useradd -e 2011-02-14 -d /opt -c "usuario de prueba" user0: Crea usuario toda opciones en una sola linea asignndole un directorio home user0. /etc/group: Archivo de los grupos al igual que passwd. # groupadd group1: Grea un grupo identificado como group1. # grep -i group1 /etc/group: Comprueba que se haya realizado con xito. # gpasswd group1: Ponle un password al grupo que acabas de crear. # groupmod -g 655 group1: Cambia el GID del grupo. # grep -i group1 /etc/group: Verifica el GID del grupo. # groupdel group1: Borra el grupo creado.
20
21
22
MODULO - ADMINISTRACION Capitulo 2 1. Defina el modelo de versiones del kernel de GNU/Linux, ej. 2.6.23-25. 1. Identificar el kernel actual desde la pagina http://www.kernel.org Prctica #1 Compilar el Kernel Administradores deberan poder administrar un kernel y sus mdulos cargables. Archivos, trminos y utilidades necesarias uname: # comando para desplegar entre otras cosas la version del kernel actual opciones -s, -p, etc /lib/modules/2.6.34.7-63.fc13.i686.PAE/kernel/ # Donde encontramos los modulos del kernel /lib/modules/2.6.34.7-63.fc13.i686.PAE/kernel/drivers/ # Donde se encuentran los modulos que cargamos /lib/modules/kernel-version/modules.dep # dependencias de modulos una con otra se genera con depmod -a /etc/modules.conf # Fue ya eliminado en el futuro /etc/modprobe.conf # Sera ya eliminado en el futuro y reemplazado por la carpeta /etc/modprobe.d # Carpeta de archivos de configuracion de los modulos /etc/modprobe.d/blacklist.conf # Ejemplo de archivo para evitar que un modulo sea cargado automaticamente depmod # Genera archivo de interdependencia de los modulos y el system map que esta en /boot insmod # Comando para insertar modulos en tiempo real rmmod # Comando para remover modulos en tiempo real lsmod # Comando para listar los modulos cargados en memoria modinfo # Comando para desplegar informacion de un modulo modprobe # Como insmod y rmmod es para insertar y remover modulos pero no tenemos que conocer el directorio que se encuentra modprobe -lt sound # Lista modulos disponibles puede ser net, wireless, video, etc El kernel El kernel (ncleo) es el corazn del sistema operativo. El es solamente una parte comparativamente pequea del sistema GNU/Linux total. Los kernels pueden ser monolticos, teniendo todas las funcionalidades dentro del mismo, o como modular teniendo mucho de la funcionalidad actuando separadamente como mdulos. Aunque Linux soporta mdulos del kernel, se dice que es monoltico a causa de que no est compilado sobre un microkernel. Algunos ejemplos de ncleos listos para usar en produccin: 1. Linux, desarrollado por Torvalds y colaboradores de todo el mundo. 2. Mach, un microkernel usado por sistemas operativos de Apple. 3. El HURD, el kernel del proyecto GNU Algunos componentes importantes de un kernel: 1. Soporte de memoria virtual 2. Multitarea 3. Intercambio de contexto 4. Drivers de dispositivo 5. Mdulos del kernel Prctica #3 Reconfiguracin, construccin e instalacin del kernel y sus mdulos Cuando instalamos una distribucin GNU/Linux, generalmente, esta viene con los paquetes precompilados y configurados para que puedan funcionar en la mayora de los ordenadores. Esto tiene algunas ventajas, como la fcil instalacin, pero tambin tiene sus inconvenientes. La finalidad de compilar nuestro propio Kernel es depurarlo de drivers y soportes genricos, e instalar nicamente lo necesario para que nuestro ordenador funcione. Qu conseguimos? Un Kernel ms pequeo y configurado para nuestro equipo (CPU, Drivers, Arquitecturaetc), consiguiendo as que nuestro sistema operativo sea ms rpido.: cd /usr/src/linux-2.6.XX.X Deberemos configurar nuestro kernel, recordando siempre que nuestro objetivo es hacer el kernel lo ms pequeo posible. Para realizar esta tarea, podramos ejecutar el comando make config, pero sera una tarea larga y muy complicada. Pero disponemos de interfaces que
23
24
$ cat /proc/sys/dev/cdrom/info
CD-ROM information, Id: cdrom.c 3.20 2003/12/17 drive name: sr0 drive speed: 24 drive # of slots: 1 Can close tray: 1 Can open tray: 1 Can lock tray: 1 Can change speed: 1 Can select disk: 0
Mediante la modificacin de archivos como autoclose o autoeject (que pueden contener 0 o 1) podemos controlar la activacin o desactivacin de esas caractersticas de la unidad de cd. /proc/sys/fs/: Este directorio contiene numerosos parmetros concernientes a los sistemas de archivos montados en el sistema, incluyendo cuotas, manejadores de archivo, inodos, etc: $ ls -l /proc/sys/fs/
total 0 -rw-r--r--r--r--r-drwxr-xr-x -r--r--r--rw-r--r-1 1 2 1 1 root root root root root root root root root root 0 0 0 0 0 Dec Dec Dec Dec Dec 9 15:40 aio-max-nr 9 15:40 aio-nr 9 13:56 binfmt_misc 9 15:40 dentry-state 9 15:40 file-max
Por ejemplo, si quisiramos incrementar la cantidad de manejadores de fichero (es decir, el nmero mximo de ficheros que pueden ser abiertos simultneamente), deberamos incrementar la cantidad que aparece en file-max. /proc/sys/kernel/: El contenido de este directorio incluye aspectos de configuracin y parmetros que afectan directamente el funcionamiento del ncleo, como por ejemplo el comportamiento de [Ctl+Alt+Supr] para reiniciar el sistema, el nombre del ordenador (ver ejemplo arriba), el nmero mximo de hilos de ejecucin que el ncleo puede ejecutar, etc. /proc/sys/net/: Este directorio permite ver y controlar el funcionamiento de muchos aspectos del ncleo relacionados con la red, incluyendo los diferentes protocolos queimplementa Linux (ethernet, ipx, ipv4, ipv6, etc). Por ejemplo, para permitir la retransmisin de paquetes entre dos tarjetas de red conectadas al ordenador, haramos lo siguiente: # echo 1 > /proc/sys/net/ipv4/ip_forward Otros ejemplos podrian ser: # cat /proc/sys/net/ipv4/tcp_syncookies # echo 1 > /proc/sys/net/ipv4/tcp_syncookies /proc/sys/vm/: Este subdirectorio permite la configuracin del subsistema de memoria virtual del ncleo, como por ejemplo el funcionamiento del servicio (o "demonio") de intercambio (kswapd), la cantidad de memoria que se dedicar a buffers del ncleo, el nmero mximo de reas de memoria que pueden tener los procesos, etc. Prctica #7 El mandato sysctl Como alternativa a escribir directamente el valor (o los valores) en los archivos de /proc/sys/, Linux dispone de un mandato denominado sysctl, que puede ser utilizado para leer y modificar todos los parmetros del kernel que se ubican en ese directorio. Por ejemplo, para modificar el nombre de la mquina, como veamos arriba, podramos ejecutar lo siguiente: # cat /proc/sys/kernel/hostname : nombre-host # sysctl -w kernel.hostname=otro-nombre : kernel.hostname = otro-nombre # cat /proc/sys/kernel/hostname : otronombre Ya que para cambiar un valor se emplea: /sbin/sysctl -w kernel.hostname=nombre-deseas El comando sysctl nos permite parametrizar parmetros del ncleo. No hace falta decir que son aquellos con los que fue compilado el ncleo. Toda la configuracin se hace a travs del fichero /etc/sysctl.conf: Prctica #8 La Orden stty El nombre stty probablemente signifique set tty, pero la orden stty tambin puede ser empleada para mostrar la configuracin de un terminal. Quizs an ms que setserial, la orden stty proporciona un desconcertante nmero de caractersticas configurables. Cubriremos
25
En los siguiente ejemplos establecemos los caracateres de borrar, fin de archivo, caracter de interrupcin y caracter de suspensin. stty erase ^h : Establece el caracter de borrar como ^h. Normalmente es la tecla Backspace. stty eof ^d : Establece el caracter de fin de archivo a ^d. stty intr ^c : Establece el caracter de interrupcin a ^c. Le permite detener los procesos ejecutandose en el primer plano de su terminal. stty susp ^z: Establece el caracter de suspender a ^z. Le permite suspender los procesos ejecutndose en el primer plano de su terminal.
Capitulo 3
Prctica #1 Los RPMS (La administracin de paquetes con RPM)
El Administrador de paquetes Red Hat (RPM) es un sistema de empaquetado abierto que trabaja en Red Hat Linux adems de otros sistemas Linux y UNIX que est a la disposicin de cualquiera. Red Hat, Inc. fomenta el uso de RPM por parte de otros vendedores para sus propios productos. RPM se puede distribuir bajo los trminos de GPL. RPM facilita las actualizaciones de sistema para el usuario final. Es posible instalar, desinstalar y actualizar paquetes RPM por medio de comandos breves. RPM mantiene una base de datos de los paquetes instalados y de sus ficheros, y usted puede hacer consultas y verificaciones poderosas en su sistema. Si prefiere una interfaz grfica, puede utilizar GnomeRPM para ejecutar muchos comandos RPM. RPM permite al desarrollador tomar el cdigo fuente del software y empaquetarlo en paquetes binarios y de fuente para los usuarios finales. Este proceso es bastante sencillo y se controla desde un nico fichero y parches opcionales creados por usted mismo. Esta clara delineacin de fuentes originarias y sus parches y las instrucciones de construccin facilitan el mantenimiento del paquete al ir apareciendo nuevas versiones del software. El comando rpm tiene varias opciones: rpm -q <nombre_paquete> Me dice si este paquete ya esta instalado o no. rpm -qa Me dice todos los paquetes que estn instalados. rpm -i <nombre_paquete> Instala el paquete. rpm -e <nombre_paquete> Desinstala un paquete. Los paquetes RPM normalmente tienen nombres de fichero como paquete-x.x.x.rpm. El nombre de fichero incluye el nombre de paquete (paquete), versin (x), lanzamiento (x) y arquitectura (x). La instalacin de un paquete es tan simple como teclear el siguiente comando en el intrprete de comandos de shell: # rpm -i paquete-.x.x.rpm paquete #################################### Tal vez usted haya borrado algunos ficheros accidentalmente, pero no est seguro de lo que ha eliminado. Si desea verificar su sistema entero y ver lo que podra hacer falta, podra intentarlo con el siguiente comando: rpm -Va Tal vez alguna vez ver un fichero que no reconoce. Para saber a qu paquete pertenece, tecleara: rpm -qf /usr/X11R6/bin/ghostview Responde: gv-3.5.8-10 Desea encontrar ms informacin sobre un determinado programa? Puede intentar el siguiente comando para localizar la documentacin
26
Podra encontrar un RPM nuevo y no saber para qu sirve. Para encontrar informacin sobre l, use el siguiente comando:
rpm -qip /var/cache/yum/i386/13/updates/packages/wine-wow-1.3.7-2.fc13.i686.rpm Name : wine-wow Relocations: (not relocatable)
27
Capitulo 4
Prctica #1 Los Procesos
Todos los procesos en Unix se identifican por un nmero llamado Identificador de Proceso (PID). El PID es la forma habitual de referirse a un proceso cuando se ejecuta un comando para el control de procesos . Slo los propietarios de un proceso y el administrador (root) puede realizar operaciones sobre el mismo
Comandos para el control de procesos ps: Muestra los procesos en el sistema. pstree o ptree: Muestra la jerarqua de procesos del sistema top y htop: Muestra en tiempo real el uso de CPU de los procesos pmap PID: Muestra la utilizacin de memoria de un proceso fuser fichero: Muestra los procesos que acceden un fichero. Muestra una letra indicando como accede al fichero:
c Directorio actual e Ejecucin f Fichero abierto r Directorio raiz m Biblioteca compartida
fuser -n tcp 22: Para listar todos los procesos conectados al puerto 22 nice -prioridad comando: Ejecuta un comando con una prioridad diferente renice -prioridad PID: Cambia la prioridad de un proceso kill -Seal PID: Enva una seal a un proceso. Parmetros: kill -l : Muestra todas las seales killall -Seal comando: Igual que kill pero enva la seal a todos los procesos correspondientes al nombrado comando free: Muestra la memoria libre en el sistema lsof: para listar archivos abiertos por los procesos Sin pasar ninguna opcin el comando lsof listara todos los archivos abiertos de todos los procesos actuales. Para listar los archivos abiertos por el usuario estudiante', o el usuario de ID numero ID 1000 use la opcin u. Para listar los archivos usados por el proceso numero 456, el proceso 123, o el proceso 789, usted deber usar el bandern p. Poniendo todo esto en practica un comando se ve de esta manera: lsof -p 456,123,789 -u 1000,estudiante Para listar todos los archivos abiertos en el dispositivo /dev/hd4, quedara as: lsof /dev/hd4 Para listar los procesos que utilizan el archivo /ruta/de/archivo, use: lsof /etc/passwd Ptools es un conjunto de herramientas de administracin de procesos que permiten el seguimiento y la depuracin de los procesos con facilidad. A partir de esta revisin, este conjunto de herramientas consta de los siguientes comandos: pmap: El comando pmap imprime la informacin del espacio de direcciones de un proceso. pgrep: El comando pgrep busca los procesos que tienen atributos que se ajustan a los criterios de seleccin especificados por los argumentos. Pkill: El comando pkill mata los procesos encontrados se le puede enciar la seal como opcion. Ptree: El comando ptree imprime el rbol de proceso de todos los procesos que coinciden con los argumentos especificados.
28
Captulo 6
Prctica #1 Permisos de Archivos y Directorios
Se asume que p1 p2 p5 p4 y p5 son archivos 1- Explique chmod u+x p1 p2 p3 2- Explique chmod 751 p3 3- Explique chmod a-w p1 Permisos
0 1 2 3 4 5 6 7 = = = = = = = = --- = sin acceso --x = ejecucin -w- = escritura -wx = escritura y ejecucin r-- = lectura r-x = lectura y ejecucin rw- = lectura y escritura rwx = lectura, escritura y ejecucin
La sintaxis para usar chmod con texto: chmod [ugo][+-][rwx] [nombre_archivo] Donde [u=user, g=group y o=other]; [+/- activa o desactiva los atributos siguientes] [r=read, w=write, x=execute] $ touch prueba.txt : $ls -l prueba.txt : $stat prueba.txt: $chmod 444 prueba.txt: $cat > prueba.txt: $chmod u+w prueba.txt: $cat > prueba.txt:
#! /bin/bash clear N=0 while [ $N -lt 10 ] do sleep 1 let N=N+1 echo $N done exit0
Crea un archivo vacio Verifica los los permisos del archivo. Verifica los permisos del mismo archivo. Cambia los permisos a solo pueda ser ledo no modificable ni ejecutable por el usuario grupo o otros. Trata de modificar el archivo. Agregale permiso de escritura al usuario en el archivo. Ahora modifica el archivo prueba.txt.
$cat prueba.txt: $chmod u-r prueba.txt: $cat > prueba.txt: $./prueba.txt: $chmod +x prueba.txt: $./prueba.txt:
Una vez este modificado el archivo prueba.txt visualiza su contenido. Quita el permiso de lectura al archivo prueba.txt. Verifica a ver si puedes visualizar el contenido del archivo. Ejecuta el archivo con ./ Debido a que el resultado anterior el cual fue negativo , ahora asignale permiso de ejecucion. Ejecuta nuevamente el archivo con ./
Prctica #1 El Demonio Cron Crond es un demonio del sistema que ejecuta peridicamente tareas programadas segn una combinacin de la hora, da del mes, mes, da de la semana y semana. La consulta de las tareas se realiza cada minuto. El principal fichero de configuracin del servicio cron es /etc/crontab, en el que las rdenes se especifican mediante lneas con el siguiente formato: minuto hora da mes da_semana comando No se tienen en cuenta las lneas en blanco y las lneas que comiencen por # se consideran comentarios, y se
29
Un asterisco * en alguno de los campos se entender como todos los valores posibles. Por lo tanto, un * en el campo mes se entender como que el comando se ejecuta todos los meses en el momento indicado en el resto de campos. 0 * * * * sync: ejecutar el comando sync el primer minuto de cada hora. 0 23 10 * * sync: ejecutar el comando sync todos los das 10 de cada mes a las 11:00 de la noche. Esto ejecutar el comando sync cada hora un el primer minuto. # crontab -l:Para obtener una lista de las entradas actuales del comando crontab, utilice la opcin -l. Un guin (-) entre los nmeros enteros indica un intervalo de nmeros enteros. Por ejemplo, 1-4 significa los nmeros enteros 1, 2, 3 y 4. Una lista de valores separados por comas (,) especifica una lista. Por ejemplo, 3, 4, 6, 8 indica esos cuatro nmeros enteros. El valor de un nmero entero se puede omitir dentro de un intervalo si se indica a continuacin del intervalo lo siguiente /<nmero entero>. Por ejemplo, 0-59/3 puede usarse para definir cualquier minuto excepto el tercero del campo minuto. Los valores que se omiten tambin pueden utilizarse junto con un asterisco. Por ejemplo, el valor */3 puede usarse en el campo de mes para omitir el tercer mes. Los usuarios diferentes del superusuario pueden configurar las tareas cron con la utilidad crontab. La sintaxis de dicho comando es la siguiente: crontab [-u usuario] fichero crontab [-u usuario] [{-l -r -e}] -l: Lista las tareas programadas -r: Borra todas las tareas programadas -e: Edita el fichero de tareas programadas. Todos los crontabs definidos por el usuario se almacenan en el directorio /var/spool/cron y se ejecutan utilizando los nombres de los usuarios que los han creado. Para crear un crontab como un usuario distinto de root, se inicia la sesin como ese usuario y se ejecuta el comando crontab e para modificar el crontab del usuario. El fichero usa el mismo formato que /etc/crontab. Tambin puede especificarse la orden peridica a ejecutar en un fichero. Los ficheros /etc/cron.allow y /etc/cron.deny se usan para restringir el acceso al servicio cron. El formato de los dos ficheros de acceso es un nombre de usuario en cada lnea. No est permitido espacio en blanco en ninguno de los ficheros. Si existe el fichero cron.allow, tan slo se permitir a los usuarios presentes en la lista utilizar cron y el fichero cron.deny se ignorar. Si cron.allow no existe, los usuarios listados en cron.deny no pueden usar cron. El usuario root puede utilizar siempre cron. Prctica #2 El Demonio At Mientras que cron se usa para programar tareas, el comando at se emplea para programar una nica tarea en un tiempo especfico. Para poder utilizar el comando at debe estar el paquete RPM at instalado y el demonio atd en funcionamiento. La sintaxis del comando at es la siguiente: at [-f fichero] [opciones] fecha El argumento fecha puede ajustarse a cualquiera de los siguientes formatos: HH:MM Por ejemplo, 04:00 especifica 4:00 AM. nombre-mes, da y ao Por ejemplo, May 15 2004. El ao es opcional. MMDDYY, MM/DD/YY, o MM.DD.YY Por ejemplo, 011504 para el da 15 de Enero del ao 2004. A continuacin se muestran algunos ejemplos del uso del servicio at: $ at 15:50 Feb 14 > mail castano s REUNION < /dev/null > CTRL-D job 6 at 200402-14 15:50 $ atq job 6 at 2004-02-14 15:50 $ atrm 6 Aqu tenemos otro ejemplo de un comando at: [root@localhost root]# at 1700 7.7 warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh at> echo "Acurdate del cumpleaos de tu hermano!" > ~/recordatorio.txt at> <CTRL+D>
30
31
32
Capitulo 2
Prctica #1 Prcticas Preliminares
Comando ifconfig : ifconfig permite conocer y cambiar la configuracin de la red, ya sean tarjetas NICs, Modems, Wireless, etc. * Para cambiar la configuracin de las tarjetas de red: ifconfig eth0 213.186.xx.xx netmask 255.255.255.0 broadcast 213.186.xx.255 * Como los valores que acabamos de dar son estndar, puede simplemente teclear: ifconfig eth0 213.186.xx.xx (la mscara de red y el broadcast propuestos corresponden a una direccin de clase C) * Al reinicio de la mquina, ya que este cambio se perder. Hay que modificar el fichero: /etc/sysconfig/network-script/ifcfg-eth0 * Puede utilizar linuxconf para simplificar la tarea. * Tambin se puede desactivar una tarjeta de red : ifconfig eth0 down * Y por su puesto reactivarla: ifconfig eth0 up Uso avanzado de ifconfig Configurar una interfaz de red virtual Las interfaces de red virtuales nos sirven para tener varias direcciones IP utilizando una misma tarjeta de red, y as ofrecer servicios en cada una estas direcciones. Esto puede hacerse usando una tcnica llamada "IP Aliasing", un standard en las versiones 2.2x, 2.4.x y 2.6.x del kernel. Tambin puedes configurarlo como mdulo en el kernel (ip_alias). Cmo hacemos que funcione?, es muy
33
Tu mquina ahora estar recibiendo peticiones para las cuatro IPs. Esto se logra creando dispositivos de red virtuales para manejar las peticiones. Ahora, esta es la forma manual de hacer las cosas, y para que nada sea omitido, siempre es sensato agregar routes.
# # # # # /sbin/route /sbin/route /sbin/route /sbin/route /sbin/route add add add add add -net 172.16.0.0 dev eth0 -host 172.16.16.1 dev eth0 -host 172.16.16.20 dev eth0:0 -host 172.16.16.55 dev eth0:1 -host 172.16.16.201 dev eth0:2
Tambien debes agregar tu gateway predeterminada de forma usual: # /sbin/route add default gw 172.16.16.39 Esto tambin puede hacerse en los archivos de configuracin. En Debian, por ejemplo, se hara agregando una nueva interfaz en /etc/network/interfaces por cada una de las Ips que quieres crear un alias.: iface eth0:0 inet static address 172.16.16.20 netmask 255.255.248.0 network 172.16.0.0 broadcast 172.16.23.255 Alternativamente, en sistemas Red Hat, se hace editando el archivo /etc/sysconfig/network-scripts/ifcfg-eth0:0 (o cualquiera de los dispsitivos en el que quieras crear un alias):
DEVICE=eth0:0 BOOTPROTO=static IPADDR=172.16.16.20 NETMASK=255.255.248.0 ONBOOT=yes
34
Para obtener la ruta que acaba de aadir cada vez que reinicie, situe el comando en el fichero /etc/rc.d/rc.local por ejemplo.
Comando arp ARP es el Address Resolution Protocol que se describe en el RFC 826 (http://www.faqs.org/rfcs/rfc826.html). ARP lo usa una mquina en red para averiguar la localizacin/direccin hardware de otra mquina en la misma red local. Las mquinas en Internet se conocen generalmente por sus nombres que se corresponden a direcciones IP. As es como una mquina en la red foo.com es capaz de comunicarse con otras mquinas que estn en la red bar.net. Una direccin IP, sin embargo, no puede decirte la localizacin fsica de una mquina. Aqu es donde entra ARP. Comando Traceroute La orden traceroute permite registrar la ruta seguida por un datagrama hasta un destino determinado. Su funcionamiento se basa en mensajes ICMP y en la variacin del parmetro TTL de las cabeceras IP. Averige el camino para alcanzar la mquina www.codigolibre.org, # traceroute -n www.codigolibre.org Comando ping Realiza una captura de los paquetes ICMP generados tras la ejecucin de la orden: # ping -c 4 www.codigolibre.org # ping 10.0.0.255 -b # ping -l 1500 localhost # ping -s 65500 localhost Aplica un filtro que te permita capturar nicamente los paquetes que contengan mensajes del protocolo ICMP Detn la captura cuando terminen los cuatro intentos y observa cuntos mensajes ICMP se producen, prestando especial atencin a los campos tipo, cdigo, y bytes de datos. Comando dig Dig es una herramienta (linea de comandos) disponible en prcticamente cualquier distribucin linux (aunque tambin hay alguna versin para windows) que te permite hacer consultas a un servidor dns. Dig precisa conocer la direccin IP de un servidor DNS al que consultar por defecto, direccin IP que toma del archivo resolv.conf que en Windows puedes encontrar en c:\windows\system32\drivers\etc\resolv.conf, y en sistemas GNU/Linux en /etc/resolv.conf.
35
La mayora de los servidores DNS estan configurados para, si no conocen la respuesta al query, encargarse ellos mismos de reformular la pregunta a otro servidor distinto. Esto se llama configuracin recurrente o amistosa (friendly, recursive). # dig -x numero_ip DNS inverso Una orden como dig www.codigolibre.org genera el siguiente resultado:
# dig www.codigolibre.org ; <<>> DiG 9.3.4 <<>> www.codigolibre.org ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12952 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.codigolibre.org. IN A ;; ANSWER SECTION: www.codigolibre.org. 8326 IN CNAME codigolibre.org. codigolibre.org. 9283 IN A 66.128.53.11 ;; AUTHORITY SECTION: codigolibre.org. 9283 IN NS ns7.dnetnoc.net. codigolibre.org. 9283 IN NS ns8.dnetnoc.net. ;; ADDITIONAL SECTION: ns7.dnetnoc.net. 83067 IN A 66.128.53.12 ns8.dnetnoc.net. 83067 IN A 66.128.53.13 ;; Query time: 2889 msec ;; SERVER: 10.0.0.1#53(10.0.0.1) ;; WHEN: Tue Jul 24 21:34:18 2007 ;; MSG SIZE rcvd: 146
Veamos la respuesta linea por linea, teniendo en cuenta que aquellas que comienzan con ; son comentarios introducidos por dig, no vienen del servidor dns: En las dos primeras lneas, dig se limita a informar de la versin del programa en ejecucin y del dominio objeto de consulta. La lnea ;; global options: printcmd se refiere a las opciones generales usadas en la consulta. Puedes evitar estas dos lineas utilizando la sintaxis de consulta dig +nocmd nombredominio.com La siguiente seccion Got Answer nos ofrece detalles de la consulta recibida, entre ellos, el nmero de respuestas recibidas, y si nos la ha dado o no una "autoridad" en dns. Las 'banderas' (flags) nos dan detalles de la consulta y respuesta: QR (Query/Response) sirve para diferenciar la consulta de la respuesta. RD (Recursion Desired), es una modalidad de la consulta, que es replicada en la respuesta con la bandera RA (Recursion Allowed), y significa que pedimos al server que si no puede resolver la respuesta por si mismo, consulte recursivamente a otro server. La aceptacin de la peticin por el server es opcional. AA significara que la respuesta es de un server autorizado. Otras flags son: TC (Truncated Response), que significa que la respuesta se ha fraccionado por ser de mayor tamao del permitido, AD (Authentic Data) y CD (Checking Disabled).
36
Despus de revisar la tabla de enrutamiento determinamos que el default gw 192.168.1.7 no esta configurado, cual comando podemos utilizar para configurarlo: # route add de fault gw 1 92.168 .1.7
37
Reglas de iptables Si deseas abrir otros puestos, slo tenis que agregar esas nuevas reglas, pero tengo direccin IP fija, como lo hago? Es muy fcil, en vez de usar masquerading, vamos a usar una solucin mejor: source NAT. Slo hay que cambiar la regla del nat (la primera en los ejemplos anteriores). Si la interfaz que tiene la IP fija es la eth0, y la IP fija es la 111.111.111.111, nos quedara: iptables -t nat -A POSTROUTING -o eth0- SNAT -to 111.111.111.111 # Habilito el SNAT iptables -A INPUT -i eth0 -p ICMP -j ACCEPT # Dejo pasar los paquetes ICMP iptables -A INPUT -i eth0 -p TCP --dport 80 -m state --state NEW -j ACCEPT # Permito conexiones al puerto 80 (HTTP) iptables -A INPUT -i eth0 -p TCP --dport 22 -m state --state NEW -j ACCEPT # Permito conexiones al puerto 22 (SSH) iptables -A INPUT -p TCP -m state -state RELATED -j ACCEPT # Acepto paquetes de conexiones ya establecidas iptables -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP # Rechazamos paquetes de conexiones nuevas iptables -A FORWARD -i eth0 -m state --state NEW,INVALID -j DROP # Rechazamos forwarding de conexiones no establecidas Ahora quiero redireccionar las conexiones a un puerto hacia un ordenador interno de mi LAN. Esto se llama destination NAT es bastante sencillo, slo hay que poner una regla adicional. Por ejemplo, si queremos redireccionar las conexiones al puerto 80 hacia el puerto 80 de un ordenador en la red interna (192.168.0.111). iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.111:80 Otro ejemplo sencillo y muy til, redireccionar el puerto 2022 del ordenador haciendo de NAT o firewall hacia el puerto 22 (ssh) de un ordenador de la red interna. iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2022 -j DNAT --to 192.168.0.111:22
Prctica #2 Prcticas Finales (Practica Numero 2) Seguridad Linux IPTABLES Escenario.- tenemos un computador personar conectado a la red de la fundacin cdigo libre dominicanos, en la cual tenemos los servicios de ssh y web corriendo. dicho equipo estn entrando persona sin autorizacin y queremos protegerlo con la siguiente caracterstica utilizando iptables. 1. todo los usuario tiene que tener accesos al servidor web. 2. le queremos dar acceso va ssh a un compaero de estudio. 3. denegar el acceso a todo el resto. De que forma podemos realizar dicha accin y con que comando podemos mostrar la configuracin actual en el pc y explique que otro mtodo tenemos para ver la configuracin de iptables. a). iptable -L -n b). Los archivo de configuracin
38
Requisitos.- Tener un escenario (topologa) similar a la figura. Se puede usar cualquier distribucin que tenga instalado iptables. para este laboratorio utilizamos la versin iptables v1.3.3. A menos que se especifique lo contrario no hay que ejecutar los siguientes pasos en cada firewall. Iniciar una sesin local y luego ejecuto los comando de iptables como root, Nota: Borrar todas las configuracin de los servidores despus de terminar cada practica y realice este procedimiento en cada servidor asignado antes de empezar su practica. al final del documento estn los comando necesario para realizar este proceso. No es recomendable realizar configuraciones de iptables desde una sesin remota al menos que sepa lo que esta realizando. Paso 1. Probamos la conectividad
ping 192.168.1.3 ping 192.168.1.4
Borrar la configuraciones existente iptables -F #Esto es equivalente al borrar todo la regla uno por uno Borro la regla de una cadena. iptables -X #Borrara una cadena vacia. iptables -Z #Poner a cero los contadores de paquetes y bytes de todas las reglas de una cadena iptables -t nat -F #los mismo que la primera pero especificando al nat
39