Sie sind auf Seite 1von 199

GNU/Linux Centos 5.

Miguel ngel Nieto <miguelangel@irontec.com> Irontec Internet y Sistemas sobre GNU/Linux

Irontec Curso bsico Linux

Objetivos del curso Dominar las distintas posibilidades de GNU/Linux dentro de la empresa.

Trabajar tanto desde el entorno de consola como desde el entorno de escritorio.

Administracin bsica de un sistema GNU/Linux basado en RedHat.

Y por encima de todo, aprender a buscar la informacin que necesitamos para solventar los posibles problemas.

Irontec Curso bsico Linux

Antes de nada...

GNU GPL Linux Software Libre Kernel GNU/Linux Distribucin Linux Debian (K)Ubuntu KDE Gnome Emule
3

Paquete

Irontec Curso bsico Linux

Introduccin

Programas informticos Tipos de Software


Software privativo Shareware Freeware Software libre

Irontec Curso bsico Linux

Introduccin

Qu es eso del Software Libre?

Irontec Curso bsico Linux

Introduccin

4 Libertades: Libertad 0: Libertad para ejecutar el programa para cualquier propsito. Libertad 1: Libertad para estudiar y adaptarlo a las necesidades. Libertad 2: Libertad para redistribuir copias. Libertad 3: Libertad para mejorar el programa y publicarlo con esas modificaciones.

Irontec Curso bsico Linux

Introduccin

Inicios del Software libre


Richard Stallman (1983 Funda GNU Ver.7) Linus Torvalds (1991 Crea Linux) 1992 GNU/Linux (Ver. 7)

Irontec Curso bsico Linux

Introduccin Conceptos Generales sobre GNU Linux (I) Qu es GNU ? GNU is not UNIX, proyecto iniciado por Richard Stallman (1983). Objetivo: Sistema totalmente libre. Apoyado en la licencia GPL. Kernel: HURD (fracaso). Qu es Linux ? Kernel liberado por Linus Torvalds en 1991 con licencia GPL. Arquitectura Mononuclear, multiplataforma (I386, AMD64, PowerPC, ...). Uso: Servidores, estaciones de trabajo, sistemas empotrados...

Irontec Curso bsico Linux

Introduccin

Conceptos Generales sobre GNU Linux (II)

Qu son Redhat, Debian, SuSE ... ? Son Distribuciones de GNU Linux. Diferentes formas de empaquetar el ncleo, las herramientas GNU y el resto de software (libre o no). Gestionadas por: empresas grupos de personas. organismos ...

Irontec Curso bsico Linux

Introduccin

DistribucionesGNULinux(I) Debian:ProyectofundadoporIanMurdocken1993, proyectoconorganizacinjerrquicatotalmente horizontal.Objetivoprincipal:competirconlas distribucionescomercialesparapodergarantizarel exitodeGNULinux. Redhat:Empresafundadaen1994porMarcEwing, ofrecesoportetcnicoprofesionalygarantasde escalabilidad.Plataformaliderenelmercado.

10

Irontec Curso bsico Linux

Introduccin

DistribucionesGNULinux(II) Mandrakesoft:Nacidaen1998,conobjetivo principal:instalacinyusodiariosencillos. Crecimientoespectacularen2aos(3a100 empleados). SuSE:Proyectodeempresaaleman,iniciadoen 1993.PrimerasversionesbasadasenSlackware.En laactualidaddistribucintotalmentepropia.Ofrecen soporteprofesionaldecalidad,similaraldeRedHat.

11

Irontec Curso bsico Linux

Introduccin

DistribucionesGNULinux(III) Slackware:DistribucindesarrolladaporPatrick Volkerding.PrimeraversinpublicadaenAbrilde 1993.Noofrecesoportetcnicoprofesionaldirecto. Knoppix:EselSistemaLive(ejecucindesde CDRomsininstalacin)mspopular.Soporta prcticamentetodoslosdispositivoshardwaredel mercado.Muypopularcomomtododeiniciacina GNULinux.

12

Irontec Curso bsico Linux

Introduccin

DistribucionesGNULinux(IV) Ubuntu:DistribucinbasadaenDebian,centradaen elsistemadeescritorio(aunquetambindisponede versinservidor).Nuevaversincada6meses. CentOS:Distribucinbasadaenelcdigofuentede RedHat.Concadanuevaversinenterprisede RedHat,Centosdescargaelcdigo,locompilaycrea supropiaversin.Es100%compatibleanivelbinario conRedHat.

13

Irontec Curso bsico Linux

Introduccin

Versiones

SubVersin: Parindicaestable Imparindica inestable

2.4.19

2.5.3

Versin Enlaprctica,sedenomina versinatodoelconjunto.

Release

14

Irontec Curso bsico Linux

Introduccin

Situacin de GNU/Linux

15

Irontec Curso bsico Linux

Introduccin SituacinrealdeGNULinux Lasestadsticasnosiempresonmuyobjetivas,perose calculanlassiguientescifras: Servidores:Prcticamentetodoslosservidores potentesseejecutansobreunderivadodeUNIX (GNULinux,*BSD...). Equiposdeescritorio:Existenciadenumerosos gestoresdeventanas(KDE,GNOME,...)apariencia estticayusabilidadmuymejorada. Dispositivosempotrados:GNULinuxestpresente ennumerososdispositivosWifi(802.11b/g)(Cisco LinksysWRTG54G,SMC),entelfonoscelulares

16

Irontec Curso bsico Linux

Introduccin SituacinrealdeGNULinuxenelpanorama empresarial


Soporte:LavaprincipaldeingresoenelmundodeGNULinuxes elsoporte.ServiciossobreGNULinux.Eldesarrollonocopael mercadocomoenotrossistemasoperativos(Laruedayaest inventada). Apoyodegrandesempresas:EntreotrasIBMsehaposicionado enfavordeGNULinux,afrontandodirectamentedemandasdeSCO UNIXsobreposibleviolacindecopyrightdeLinux. PosturadeMicrosoft: 2001:Proyectohechoporaficionados,noesserio 2004:Esnuestraprincipalamenaza BillGates

17

Irontec Curso bsico Linux

Introduccin SituacinrealdeGNULinuxenelpanorama empresarial:Desarrolloysistemas

Desarrollo(web):Lapuntadelalanzaresideen solucionesLAMP(LinuxApacheMySQL,PHP): Pros:Rapidez,seguridad,integracincon prcticamentetodoslosprotocolosycomunidadde desarrolladoresmuyactiva(numerosaslibrerasy cdigoreutilizable). Contras:IntegracinconsolucionesMSWindows

18

Irontec Curso bsico Linux

Introduccin SituacinrealdeGNULinuxenelpanorama empresarial:Desarrolloysistemas

Sistemas:EselpuntofuertedeGNULinux: estabilidad,seguridad,escalabilidadeintegracin prcticamentetotal: Solucionesdeseguridad(VPNs,Ids,Firewalls,...) Solucionesdetiemporeal(sistemasde monitorizacin,...) RoutingAvanzado(OSPF,BGP,VRRP,....) Servidores:DNS(Bind9),Web(Apache),FTP (Proftpd),Netbios(Samba)....

19

Irontec Curso bsico Linux

EJERCICIO

Visitar los siguientes enlaces: http://www.kernel.org http://gnu.org http://freshmeat.net http://www.centos.com http://es.wikipedia.org/wiki/Software_libre

20

Irontec Curso bsico Linux

Instalacin de CentOS

Instalacin de CentOS

21

Irontec Curso bsico Linux

Instalacin de CentOS

Se puede descargar CentOS desde su pgina web. http://www.centos.org Se puede descargar en distintos Cds o en un solo DVD. La ltima versin estable es 5. Para instalarlo es necesario disponer de espacio en el disco duro y que el ordenador pueda arrancar desde el lector de Cds. La instalacin es del estilo siguiente-siguiente... finalizar :)

22

Irontec Curso bsico Linux

Instalacin de CentOS

Comprobacin del medio.

23

Irontec Curso bsico Linux

Instalacin de CentOS

Seleccin de idioma. Se aplicar tanto al entorno de consola como al entorno de escritorio.

24

Irontec Curso bsico Linux

Instalacin de CentOS

Seleccin de idioma del teclado.

25

Irontec Curso bsico Linux

Instalacin de CentOS

Particionado del disco duro. Es necesario que el disco duro est vaco o que en caso contrario tengamos una particin vaca en la que realizar la instalacin.

26

Irontec Curso bsico Linux

Instalacin de CentOS

Seleccin y creacin de particiones. Como mnimo debe existir / y swap.

Qu problemas tiene el uso exclusivo de /?

27

Irontec Curso bsico Linux

Instalacin de CentOS

Sistemas de ficheros

VFAT Ext2 Ext3 RaiserFS XFS y muchos otros...

28

Irontec Curso bsico Linux

Sistemas de ficheros en Unix

En un sistema Unix todo son archivos: memoria fsica, ratn, modems, teclado... Filosofa de diseo de grn xito y potencia, aunque tambin peligrosa: un simple error de permisos puede permitir modificar todo un disco duro. Tipos de archivos:

ficheros planos directorios ficheros especiales (dispositivos)


orientados a carcter orientados a bloque

29

Irontec Curso bsico Linux

Sistemas de ficheros en Unix

Desplazndose por el sistema de ficheros

30

Irontec Curso bsico Linux

Sistemas de ficheros en Unix

Estructura de los Sistemas de Ficheros

Estndar de la Jerarqua de Ficheros (FHS)

Se encarga de definir los directorios principales y sus contenidos en Linux y otros sistemas Unix. Mayor facilidad en el uso de distintos sistemas Unix.

31

Irontec Curso bsico Linux

Instalacin de CentOS

rbol tpico de directorios de un sistema GNU/Linux (ls -p /)


bin/ dev/ home/ lost+found/ proc/ sbin/ usr/ boot/ etc/ lib/ mnt/ root/ tmp/ var/

32

Irontec Curso bsico Linux

Instalacin de CentOS

/sbin

Contiene los binarios esenciales para que funcione el sistema. Incluye los programas para la administracion, configuracion del hardware y mantenimiento. find, lilo, fdisk, init, ifconfig etc /usr/sbin contiene los binarios para el administrador pero no esenciales para el sistema. Este directorio es solo accesible por ROOT

33

Irontec Curso bsico Linux

Instalacin de CentOS

/bin

Contiene los comandos imprescindibles para el usuario Accesibles para root como para los usuarios no privilegiados bash, csh, cp, mv, rm, cat, ls... /usr/bin contiene los binarios para el usuario pero que no son imprescindibles.

34

Irontec Curso bsico Linux

Instalacin de CentOS

/boot Contiene el kernel y lilo deja aqu las copias de seguridad del sistema de arranque /dev TODO EN LINUX ES UN FICHERO

/dev/hda1 Particion 1 del disco duro 1 master /dev/cdrom CDROM ... /etc/X11/xorg.conf Sistema X /etc/resolv.conf /etc/lilo.conf
35

/etc Ficheros de configuracin del sistema


Irontec Curso bsico Linux

Instalacin de CentOS

/home Directorios de los usuarios del sistema (Linux es multiusuario)

/home/username

Archivos del usuario Configuraciones especficas del usuario

/lib Libreras compartidas del sistemas /lost+found Directorio donde se dejan los archivos que FSCK recuperara despus de una cada del sistema. (Sistemas de ficheros sin Journaling)

36

Irontec Curso bsico Linux

Instalacin de CentOS

/mnt Punto de montaje genrico donde se montarn los dispositivos. /proc Directorio especial que hace las funciones con interfaz con el nucleo /root Es el directorio home de root /tmp Es un directorio temporal en el que cualquier usuario puede escribir. Se borra despues de un reinicio /var Directorio donde se guardan los datos variables como el correo, colas de impresion y logs...
37

Irontec Curso bsico Linux

Instalacin de CentOS

/usr Directorio donde se encuentran todos los programas


/usr/src/linux Kernel de Linux /usr/doc Documentacin de los programas

38

Irontec Curso bsico Linux

Instalacin de CentOS

Grub es el gestor de arranque. Se encargar de arrancar CentOS y cualquier sistema operativo que detecte.

39

Irontec Curso bsico Linux

Instalacin de CentOS

Configuracin de la red Ethernet. Puede ser por DHCP o con IP fija.

40

Irontec Curso bsico Linux

Instalacin de CentOS

Especificar contrasea para root. El usuario root es el Administrador de la mquina y tiene permiso para todo.

41

Irontec Curso bsico Linux

Instalacin de CentOS

Ahora toca seleccionar que deseamos instalar en el sistema. Por defecto se instalar el escritorio Gnome.

42

Irontec Curso bsico Linux

Instalacin de CentOS

Ya est, instalacin de CentOS finalizada. Ya nos podemos autodenominar hackers.

43

Irontec Curso bsico Linux

Configuracin inicial

Con el primer inicio del sistema accederemos a un asistente de configuracin. Se desactivar el Cortafuegos y SELinux para evitar problemas durante el curso. Crearemos un usuario sin privilegios.

44

Irontec Curso bsico Linux

EJERCICIO

Navegar por el sistema de ficheros y comprobar que lo que vemos se ajusta o no al mapa. Comprobar la versin del ncleo y ver en la web si existe una versin nueva. Se podr actualizar?

45

Irontec Curso bsico Linux

Comandos bsicos

Comandos bsicos

46

Irontec Curso bsico Linux

Introduccin a GNU/Linux

Shells

Existen muchas shells: sh,csh,ksh,bash... Entorno de trabajo:

Case sensitive: sensible a maysculas (ECHO != echo). Sintxis: comando arg1 arg2... argn Si un programa no est en el PATH: ./programa Prompt:

$: usuario normal #: usuario administrador (root)

47

Irontec Curso bsico Linux

Comandos bsicos

Comandos para el manejo del sistema de ficheros


ls (lista contenido de directorios) cd / pwd (cambia /muestra la ruta de directorio) touch (crea fichero vaco o actualiza existente) cp / mv / rm (copia / mueve/ elimina fichero) mkdir / rmdir (crea / elimina directorio) man / info (ayuda sobre comandos) echo (muestra una lnea de texto) date / cal (muestra la hora del sistema) file (muestra el tipo de fichero) halt / reboot (apaga el sistema) sleep (cuentra atrs)

48

Irontec Curso bsico Linux

Comandos bsicos

Comandos para el manejo del sistema de ficheros (II)


linux:~$ ls -lha / linux:~$ pwd linux:~$ cd ../../etc linux:~$ touch /home/linux/fichero linux:~$ date +%d/%m/%y linux:~$ cp -a /var/log /backup/ linux:~$ mkdir -p /tmp/prueba/creacion/directorio linux:~$ rm -rf /home/linux/carpeta/

49

Irontec Curso bsico Linux

Comandos en GNU/Linux

Comandos para bsqueda de archivos


linux:~$ find / -name passwd linux:~$ locate halt linux:~$ whereis cat adduser linux:~$ which grep linux:~$ whereis cd linux:~$ find ~/ -type f -atime +5 -exec rm {} \;

50

Irontec Curso bsico Linux

EJERCICIO

Ir a tmp. Crear un fichero llamado prueba. Renombrarlo a nominas. A continuacin copiar nominas a nuestra home. Una vez hecho, buscamos en todo el disco duro los ficheros con nombre nominas y los borramos.

51

Irontec Curso bsico Linux

EJERCICIO

Comprobar con file distintos ficheros del disco duro y comprobar los resultados que nos d. Cambiar la fecha del sistema (buscar informacin en google). Vamos a adelantarnos al 2009. Programar un reinicio del sistema dentro de dos minutos.

52

Irontec Curso bsico Linux

EJERCICIO

Localizar el comando ifconfig e intentar ejecutarlo. Ejecutar echo $PATH Qu es esa informacin? Ejecutarlo como usuario root. Qu diferencias encontramos?

53

Irontec Curso bsico Linux

Sistemas de ficheros en Unix

Rutas en el sistema de ficheros

Absolutas: desde el directorio raiz hasta el archivo deseado. Relativas: desde el directorio actual hasta el archivo deseado. *: sustituye una cantidad cualquiera de caracteres ?: sustituye exactamente un carcter []: sustituye un carcter de los indicados

Caracteres especiales

Expansin de comandos y archivos

54

Irontec Curso bsico Linux

EJERCICIOS

Ir a /home. Acceder a /home/consultec mediante ruta completa y relativa. Crear fichero nominas en nuestro home y hacer un ls con * ? y []. Haciendolo de las tres formas, nos tiene que dar como resultado nicamente el fichero nminas Buscar en el disco duro todos los ficheros que empiecen por n.

55

Irontec Curso bsico Linux

Introduccin a GNU/Linux

Tuberas

Un proceso en un sistema UNIX-like tiene inicialmente abiertos 3 canales:

0: STDIN o entrada estndar 1: STDOUT o salida estndar 2: STDERR o salida de error Metes crudo por 0 (STDIN), consigues gasolina por 1 (STDOUT) y bastantes residuos por el desage 2 (STDERR).

Imaginmonos una refinera:

56

Irontec Curso bsico Linux

Introduccin a GNU/Linux

Tuberas

Redirigiendo la salida de un comando:

> : redirigir STDOUT a un fichero:


ls > listado.txt

>>: redirigir STDOUT al final de un fichero (aadir):


ls >> listados.txt

2>: redirigir STDERR a un fichero:


ls 2> errores.txt

2>>: redirigir STDERR al final de un fichero:


ls 2>> errores.txt

2>&1: redirigir STDOUT y STDERR a un fichero:


ls > salida 2>&1

57

Irontec Curso bsico Linux

EJERCICIO

Aadir datos al fichero nomina mediante echo. Juan 1000 euros Pedro 980 euros Jose 800 euros Listarlo con cat y el cat enviarlo a otro fichero nuevo llamado copia.nominas. Comparar los ficheros con md5sum. Modificar uno y volverlo a comparar.

58

Irontec Curso bsico Linux

EJERCICIO

Usando STDIN, STDOUT utilizar cat para crear otro fichero llamado nominas2 con los siguientes datos: Elisa 1200 euros Pepa 1400 euros Sara 200 euros No se puede usar echo!

59

Irontec Curso bsico Linux

Comandos en GNU/Linux

Comandos para paginar y visualizar archivos


cat (muestra el contenido de ficheros por pantalla) more / less (pagina el contenido de ficheros) head / tail (muetra las primeras / ltimas lneas de un fichero) grep (busquedas basadas en expresiones regulares)

60

Irontec Curso bsico Linux

Comandos en GNU/Linux

Comandos para paginar y visualizar archivos (II)


linux:~$ cat -n /etc/passwd linux:~$ more /etc/fstab linux:~$ less /etc/passwd linux:~$ cat /etc/passwd /etc/group linux:~$ tail -f /var/log/syslog linux:~$ head -n 1 /etc/passwd linux:~$ grep -ir consultec /etc/passwd

61

Irontec Curso bsico Linux

EJERCICIO

Mostrar la primera linea del fichero nominas. Mostrar la ltima linea del fichero nominas. Abrir dos consolas, en una un tail y con la otra aadir lineas con echo. Para que nos puede servir el tail -f? Hacer un tail del servicio httpd y acceder a nuestra web.

62

Irontec Curso bsico Linux

Comandos en GNU/Linux

Otros comandos interesantes


linux:~$ df -h linux:~$ du -sh /var/log linux:~$ tar cvzf /var/log/backup.tgz /etc/ /home/ linux:~$ history linux:~$ sort -r /etc/group linux:~$ wc -l /etc/passwd

63

Irontec Curso bsico Linux

EJERCICIO

Contar el nmero de lneas que tiene el fichero de nominas. Comprimir el fichero de nominas y comprobar su tamao. Descomprimirlo y volver a comprobar su tamao.

64

Irontec Curso bsico Linux

Introduccin a GNU/Linux

Tuberas

Redirigiendo la entrada de un comando:

<: redirigir el contenido de un fichero a STDIN:


tr a A < fichero.txt

| : es posible recoger la salida de un desage y conducirlo a la entrada de otro comando.


cat fichero.txt | tr a A

65

Irontec Curso bsico Linux

EJERCICIO

Usando los comandos ya vistos mostrar del fichero /etc/ passwd nicamente los usuarios que comiencen por s.

66

Irontec Curso bsico Linux

Comandos bsicos

El sistema es multitarea, podemos dejar multiples procesos corriendo en background. Con control+z llevamos el siguiente proceso a background. Con fb [nmero de proceso] lo traemos de nuevo al frente. Con bg listamos el ltimo proceso enviado a background.

67

Irontec Curso bsico Linux

EJERCICIO

Ejecutar los siguientes tres comandos e ir enviandolos a background: sleep 70 sleep 80 sleep 90 Una vez hecho, se debe volver a traer uno a uno al frente.

68

Irontec Curso bsico Linux

Comandos bsicos

Es posible crear alias de comandos, de forma que sea ms sencillo de recordar para nosotros. alias apagar=halt

69

Irontec Curso bsico Linux

EJERCICIO

Crear un alias de nombre lc que nos muestre los ficheros y directorios del lugar donde nos encontramos en colores distintivos y con todos sus datos (tamao, propietarios, permisos...).

70

Irontec Curso bsico Linux

Compresores

Tar es un comando que nicamente empaqueta. Gzip es un comando que comprime. Uniendo tar+gzip podemos empaquetar una serie de ficheros y comprimirlos. Buscar en google como empaquetar y comprimir /home/ alumno Una vez hecho, descomprimirlo en /tmp

71

Irontec Curso bsico Linux

Administracin de usuarios

Administracin de usuarios

72

Irontec Curso bsico Linux

Gestin de Usuarios y Grupos

Caractersticas de usuarios Unix

Los sistemas Unix son sistemas multiusuario. Cada usuario tiene una serie de caractersticas propias y asociadas:

uid: identificativo de usuario (debe ser nico) gid: identificativo de grupo home: carpeta de trabajo o personal shell: interprete de comandos who/whoami/id (muestra informacin de usuarios) su/sudo (cambia de usuario o privilegios)

Comandos:

73

Irontec Curso bsico Linux

Gestin de Usuarios y Grupos

Gestin de Usuarios

adduser (crear usuarios) usermod (modificar usuarios) deluser (eliminar usuarios)

Gestin de Grupos

groupadd (aade grupo o usuario a grupo) groupmod (modifica grupo) delgroup (elimina grupo o usuario de grupo)

74

Irontec Curso bsico Linux

Gestin de Usuarios y Grupos

Gestin de Usuarios
linux:~$ adduser alumno linux:~$ groupadd curso linux:~$ adduser -home /home/alumno -shell /bin/sh -uid 5001 -groups curso alumno linux:~$ usermod -shell /bin/bash alumno linux:~$ usermod -G softwarelibre alumno

Esto aade a alumno al grupo softwarelibre

75

Irontec Curso bsico Linux

Gestin de Usuarios y Grupos

Cambiando el propietario y grupo

Para cambiar el propietario o grupo puede hacerse a travs del nombre o del identificativo (uid o gid).

chown (cambiar el propietario y grupo) chmod (cambiar los permisos)

76

Irontec Curso bsico Linux

Gestin de Usuarios y Grupos

Cambiando el propietario y grupo


linux:~$ ls -l ~/documentos/linux.pdf -rw-rw-r-- 1 alumno alumno 2684 ene 2 21:09 linux.pdf linux:~$ chown alumno:curso ~/documentos/linux.pdf linux:~$ ls -l ~/documentos/linux.pdf -rw-rw-r-- 1 alumno curso 2684 ene 2 21:09 linux.pdf linux:~$ id alumno uid=500(alumno) gid=500(curso) grupos=500(curso) linux:~$ chown 500 ~/documentos/linux.pdf linux:~$ ls -l ~/documentos/linux.pdf -rw-rw-r-- 1 alumno curso 2684 ene 2 21:09 linux.pdf

77

Irontec Curso bsico Linux

Administracin de permisos

Permisos de ficheros en sistemas Unix

Todos los archivos en Unix tienen permisos que indican que y quien puede hacer o no hacer una accin con el archivo. Es la base de la seguridad de Unix. 2 formas de notacin:

Modo alfabtico Modo octal

78

Irontec Curso bsico Linux

Administracin de permisos

Permisos de ficheros en sistemas Unix

Modo alfabtico

79

Irontec Curso bsico Linux

Administracin de permisos

Permisos de ficheros en sistemas Unix

Modo octal

80

Irontec Curso bsico Linux

Administracin de permisos

Cambiando los permisos

Solo es posible alterar los permisos si el usuario que lo est haciendo es el propietario del archivo.

chmod [ugoa][+-][rwx] archivo u (propietario), g (grupo), o (resto), a (todos) + / -: aadir / eliminar permisos r (lectura), w (escritura), x (ejecucin) chmod [modo_octal] archivo

81

Irontec Curso bsico Linux

EJERCICIO

Crear como root un fichero /tmp/nominas y darle permisos de lectura solo a consultec, no a alumno. Iniciar sesin con alumno y comprobar si lo puede leer.

82

Irontec Curso bsico Linux

EJERCICIO

Con el usuario alumno crear una carpeta que solo la pueda ejecutar, leer y escribir el usuario alumno. Dentro de ella crear un fichero llamado prueba y comprobar si desde consultec se puede leer.

83

Irontec Curso bsico Linux

EJERCICIO

Con alumno crear un fichero llamado privado y darle permisos para que solo el pueda acceder al fichero. Luego intentar abrirlo con root.

84

Irontec Curso bsico Linux

EJERCICIO

Abrimos /etc/passwd y comprobarlos los cambios. Le quitamos la posibilidad de iniciar sesin a alumno. Luego probamos a iniciar sesin con el.

85

Irontec Curso bsico Linux

EJERCICIO

Borramos el usuario alumno y comprobamos a continuacin los permisos del fichero prueba y su carpeta de tmp. Intentar crear ficheros por todo el disco duro, comprobando as donde tenemos permiso.

86

Irontec Curso bsico Linux

Montaje de dispositivos

Montaje de dispositivos

87

Irontec Curso bsico Linux

Montaje de dispositivos

Diferencia Linux <-> Windows

En Windows los directorios se montan sobre unidades fsicas:


C:\Carpeta D:\Drivers\vga

En Linux los dispositivos se montan en directorios de la estructura de ficheros:


/home/usuario /media/cdrom

88

Irontec Curso bsico Linux

Montaje de dispositivos

Dispositivos y devices asociados

Disco duro IDE y CDROM: /dev/hdXY

X: Nmero de disco/dispositivo_IDE (a, b, c...) Y: Nmero de particin (1, 2, 3...)


/dev/hda /dev/hda1 /dev/hdb3

Disco duro SCSI, SATA y externos USB: /dev/sdXY


/dev/sda /dev/sda1 /dev/sdc4

89

Irontec Curso bsico Linux

Montaje de dispositivos

Particiones primarias y lgicas


Mximo 4 primarias:
/dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4

Una de ellas se puede establecer como particin extendida:


/dev/hda4

Se pueden crear varias particiones lgicas en una extendida:


/dev/hda5 /dev/hda6 ...

Linux puede arrancar desde una particin lgica, no as Windows que requiere una primaria.

90

Irontec Curso bsico Linux

Montaje de dispositivos

/etc/fstab
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> proc /proc proc defaults /dev/hda1 /dev/hda3 /dev/hda2 /dev/hdb1 /dev/hdc / /home none /media/hdb1 /media/cdrom0 ext3 ext3 swap ext3 <dump> 0 <pass> 0 1 2 0 1 0

defaults,errors=remount-ro 0 defaults 0 sw 0 defaults 0 0

udf,iso9660 user,noauto

La opcin user permite que un usuario normal (no root) monte la particin.

91

Irontec Curso bsico Linux

Montaje de dispositivos

mount

Para montar dispositivos manualmente. Si el dispositivo existe en fstab:

mount punto_de_montaje mount /dev/dispositivo

Ej:

mount /dev/hdc = mount /media/cdrom0

Si el dispositivo no existe en fstab:

mount -t TIPO_SIS_FICHEROS /dev/dispositivo punto_montaje

Ej:

mount -t iso9660 /dev/hdc /media/cdrom0 mount -t ext3 /dev/hdb1 /media/disco_2 mount -t vfat /dev/hda2 /mnt/windowsXP

92

Irontec Curso bsico Linux

Montaje de dispositivos

mount (II)

Notas:

Una particin de tipo VFAT no dispone de permisos ni dueos/ grupos as que no se puede usar el comando chown ni chmod para permitir a usuarios la escritura.

La particin por defecto es del usuario que la monta (la puede montar cualquiera si tiene la opcin user). Se puede fijar el dueo de la particin con la opcin uid, el grupo con gid y los permisos con umask (ojo, umask es la mscara invertida).

man mount !!

93

Irontec Curso bsico Linux

Montaje de dispositivos

umount
umount punto_de_montaje

Desmonta un dispositivo:
umount /dev/dispositivo

Slo si el dispositivo no est usado por ningn proceso!

Si un usuario tiene una terminal en /media/cdrom no se podr desmontar el dispositivo. Para comprobar qu procesos estn usando un dispositivo:

lsof punto_de_montaje Ej: lsof /media/cdrom

94

Irontec Curso bsico Linux

EJERCICIO

Vamos a crear una carpeta llamada montaje y un disco duro virtual de 5 megas. Primero vemos como podriamos particionarlo. Luego montaremos el disco duro en la carpeta y trabajaremos con el.
mkdir montaje dd if=/dev/zero of=fichero bs=1 count=5120000 mkfs.ext3 fichero mount -o loop fichero montaje

95

Irontec Curso bsico Linux

EJERCICIO

Nos metemos en la carpeta y creamos un fichero. Abrimos otra consola y desmontamos la carpeta. Configuramos el fstab para que automticamente monte el dispositivo al iniciar el sistema.

96

Irontec Curso bsico Linux

Editor VI

Es el editor que encontraremos en todo UNIX. Es necesario conocer el funcionamiento bsico para poder editar ficheros. Tiene varios modos de funcionamiento, visual, comando y edicin. Tiene muchsimas opciones...

http://www.infor.uva.es/~arturo/Asig/EstSO/manvi.pdf

97

Irontec Curso bsico Linux

Enlaces duros y simblicos

Enlaces duros y simblicos

98

Irontec Curso bsico Linux

Enlaces

Duros: En ocasiones es necesario dar a un mismo archivo distintos nombres o, para mantener la integridad de los datos, se hace necesario que un mismo archivo que va a ser modificado por varias personas pueda estar representado por un nombre distinto con distintos permisos cada uno. Dada la representacin que GNU/Linux le da a los archivos es posible que dos o ms nombres apunten al mismo contenido en el disco rgido..

99

Irontec Curso bsico Linux

Enlaces duros y simblicos

Simblicos: A diferencia con los enlaces duros, estos enlaces solo dan otro nombre a un archivo pero no hacen un enlace al nivel de inodo. Se puede hacer una comparacin con los "Accesos directos" de Windows95. La orden ln -s genera un enlace simblico.

100

Irontec Curso bsico Linux

Enlaces duros y simblicos


Creacin de un enlace duro [punisher@shyris ~]$ [punisher@shyris ~]$ [punisher@shyris ~]$ 2747992 -rw-r--r-- 2 2747992 -rw-r--r-- 2 touch hola ln hola adios ls -li hola adios punisher users 0 jun 12 16:40 adios punisher users 0 jun 12 16:40 hola

Que pasa si borramos el fichero original?

101

Irontec Curso bsico Linux

Enlaces duros y simblicos


Creacin de un enlace simblico [punisher@shyris ~]$ ln -s adios hastaluego [punisher@shyris ~]$ ls -li adios hastaluego 2747992 -rw-r--r-- 2 punisher users 0 jun 12 16:40 adios 2748015 lrwxrwxrwx 1 punisher users 5 jun 12 16:44 hastaluego -> adios

Que pasa si borramos el fichero original?

102

Irontec Curso bsico Linux

Crontab

Crontab

103

Irontec Curso bsico Linux

Tareas peridicas

cron

El demonio cron permite la ejecucin programada de procesos, scripts o simples comandos. Cron mira cada minuto si tiene que lanzar algn proceso y en caso afirmativo lo lanza. No se puede planificar una ejecucin de forma ms precisa. Cada usuario tiene su tabla de planificacin (crontab) aunque tambin existen una tabla de planificacin global del sistema (/etc/crontab) y una serie de directorios especiales.

104

Irontec Curso bsico Linux

Tareas peridicas

cron

La sintaxis tpica de los ficheros de cron consiste en 6 campos:


* * * * * [user] comando parametros minuto: 0-59. Nmero, rango, intervalo o lista (separada por comas). hora: 0-23. da del mes: 1-31. mes: 1-12 o nombres. da de la semana: 0-7 o nombres. usuario: slo en ficheros comentados anteriormente. comando: el resto de la lnea es el comando a ejecutar.

Nota: Tambin puede haber lneas al principio con declaracin de variables y comentarios (#). Ms info (man 5 crontab).
105

Irontec Curso bsico Linux

Tareas peridicas

cron

Ejemplo de cron de un usuario (root):


PATH=$PATH:/usr/bin:/usr/local/bin # los viernes cada 2 horas... * */2 * * 5 cd /root/scripts; ./generaEstadisticas.sh # cada da por la noche 20 3 * * * /root/scripts/backupDiario.sh # rotacin de backups cada mes 0 1 1 * * cd /root/scripts; ./rotaBackups.sh

106

Irontec Curso bsico Linux

Tareas peridicas

cron

Creacin o edicin del fichero de cron del usuario actual:


$ EDITOR=vi $ export EDITOR $ crontab -e (se edita...) :wq (se guarda y se sale)

Mostrar el contenido del cron de un usuario:


$ crontab [-u user] -l

107

Irontec Curso bsico Linux

Tareas peridicas

cron

Directorios especiales:
/etc/cron.daily/ /etc/cron.hourly/ /etc/cron.monthly/ /etc/cron.weekly/

Los ficheros ejecutables que metamos en esos directorios se ejecutarn en su momento por el usuario root. NO DEBEN SER FICHEROS DE CRON, sino scripts o programas.

108

Irontec Curso bsico Linux

EJERCICIO

Crear una tarea que se ejecute a las 13:45 los lunes una nueva linea al fichero /tmp/programado con el texto hola. Crear una tarea que se ejecute cada 3 minutos aadiendo el texto adios al mismo fichero. Crear una tarea que cada hora borre el fichero. Lo abrimos con tail -f y vemos el progreso.

109

Irontec Curso bsico Linux

Programacin Bsica en Shell

Programacin Bsica en Shell (Bash)

110

Irontec Curso bsico Linux

Shell Scripts

Script = Guin Tareas repetitivas se pueden agrupar en un guin y ejecutarse automticamente (Batch Processing).

Es sencillo ejecutar 4 comandos para crear un buzn de correo. No lo es tanto para crear 20.000 buzones. Es sencillo hacer un bucle que se repita 20.000 veces ;-)

111

Irontec Curso bsico Linux

Shell Scripts

Nuestro primer shell script

Usamos un editor y creamos el fichero hola.sh:


#!/bin/sh echo hola

Con #! en la primera lnea indicamos quin debera interpretar el resto de comandos (/bin/sh). Posteriormente escribimos los comandos separados por saltos de lnea.

112

Irontec Curso bsico Linux

Shell Scripts

Variables

Una variable tiene un nombre y un valor, y sirve para dotar de dinamismo a nuestros scripts:
FECHA=15/07/2004 echo Hoy es $FECHA

FECHA es el nombre de la variable. $FECHA es su valor.

Para asignar un valor, se utiliza =. SIN ESPACIOS!!!

113

Irontec Curso bsico Linux

Shell Scripts

Variables de entorno

Al arrancar una shell, ya hay muchas variables definidas, son las variables de entorno.

Podemos ver su valor con el comando env. Si se define una variable en una shell, slo tiene valor en esa shell, a no ser que se exporte a los programas hijo. export USUARIO=joaquin Si desde esa shell lanzamos un script u otro programa, la variable USUARIO contendr joaquin.

mbito de una variable:

114

Irontec Curso bsico Linux

Shell Scripts

Variables: interactividad

Es posible leer del usuario el valor de una variable, dotando a nuestros scripts de interactividad. cat hola.sh
#!/bin/sh echo Dime tu nombre: read NOMBRE echo Hola $NOMBRE, encantado de conocerte

115

Irontec Curso bsico Linux

Shell Scripts

Variables: argumentos

Es posible pasar los parmetros o argumentos que queramos y utilizarlos dentro del script. cat nombre.sh
#!/bin/sh echo Nombre: $1 echo Primer Apellido: $2 echo Segundo Apellido: $3

./nombre.sh Juan Lpez Martnez ./nombre.sh Maria Dolores Pradera Snchez $1, $2, $3... ${10}, ${11}: argumentos $0 es el propio script.

116

Irontec Curso bsico Linux

Shell Scripts

Variables: argumentos especiales


$#: nmero de argumentos que nos han pasado. $*: todos los argumentos. $* = $1 $2 $3... $@: todos los argumentos. $@ = $1 $2 $3... $_: comando anteriormente ejecutado. $$: PID del propio proceso shell.

117

Irontec Curso bsico Linux

Shell Scripts

Variables: sustitucin de comandos

Es posible almacenar en una variable el resultado de la ejecucin de un comando. Dos sintaxis:

Acentos graves: compatibilidad


LISTADO=`ls`

Con $(): anidable


LISTADO=$(ls) LISTADO=$(ls $(cat directorios.txt))

118

Irontec Curso bsico Linux

Shell Scripts

expr: Permite realizar operaciones aritmticas.

Sintaxis: expr ARG1 OP ARG2


$ SUMA=`expr 7 + 5` $ echo $SUMA 12 $ expr 7 \> 5 operadores!) $ expr \( 7 + 5 \) \* 2 (ojo espacios!)

(ojo escapar

119

Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin

Condiciones: test

test $NOMBRE == Juan(==, !=, >, <, >=, <=) test $DINERO -eq 1000 (-eq, -ne, -gt, -lt, -ge, -le) test -f /etc/passwd cero = verdadero no cero = falso (AL REVS QUE EN C!!) (-f, -d, -l, -r, -w, -x)

Modifican el valor de $?

http://www.ss64.com/bash/test.html

120

Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin

if: alternativa simple. Sintaxis:


if condicin_1 then comandos elif condicin_2 then comandos else comandos fi

121

Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin

if. Ejemplo:
if test $NOMBRE == Juan then echo Hola Juanin, qu tal? elif test $NOMBRE == Pedro then echo Pedreteee, cunto tiempo! else echo No te conozco fi

122

Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin

case: cmodo para evitar alternativas anidadas. Sintaxis:


case $VARIABLE in VALOR1) comandos ;; VALOR2) comandos ;; *) comandos; esac

123

Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin

case. Ejemplo:
case $NOMBRE in Juan) echo Hola Juanin, qu tal? ;; Pedro) Pedreteee, cunto tiempo! ;; *) echo no te conozco; esac

124

Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin

while. Ejecucin de 0 a N veces. Sintaxis:


while condicin do comandos done

125

Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin

while. Ejemplo:
N=1 while [ $N -lt 100 ] do echo Repito esta frase, ya voy $N veces N=$(expr $N + 1) sleep 1 # Esperamos 1 segundo done

126

Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin

until. Ejecucin de 0 a N veces. Idntico a while con la condicin negada. Sintaxis:


until comando do comandos done

127

Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin

until. Ejecucin de 0 a N veces. Idntico a while con la condicin negada. Sintaxis:


N=1 until [ $N -ge 100 ] do echo Repito esta frase, ya voy $N veces N=$(expr $N + 1) done

128

Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin

for: ejecucin repetitiva asignando a una variable de control valores de una lista. Sintaxis:
for VARIABLE in LISTA do comandos done

129

Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin

for. Ejemplo:
for N in Sopa Carne Pan de ajo do echo Hoy comemos $N done

130

Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin

for: la LISTA define la separacin de cada elemento por el valor de la variable IFS (que por defecto vale \t\n). Ejemplo:
IFS=: echo Directorios en el PATH... for DIR in $PATH do echo $DIR done

131

Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin

for. Ejemplos numricos:


for N in 1 2 3 4 5 6 7 8 9 10 do echo N ahora vale $N done for N in $(seq 10) do echo N ahora vale $N done

132

Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin

select: muestra las opciones especificadas en LISTA y asigna a VARIABLE la opcin escogida. Sintaxis:
select VARIABLE in LISTA do comandos done

133

Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin

select: Ejemplo:
select OPCION in Doner Kebab Pizza do case $OPCION in Doner Kebab) echo Mmmm... break;; Pizza) echo Slurppp! break;; *) echo No s qu es eso esac done

IMPORTANTE: sin el break el select seguira ejecutndose indefinidamente.

134

Irontec Curso bsico Linux

Shell Scripts

function

Podemos modularizar los scripts agrupando tareas en funciones. Es necesario que una funcin est definida ANTES de que sea llamada. Dentro de una funcin, $1, $2, $3, etc. sern los parmetros pasados a la funcin, no al script en s.

135

Irontec Curso bsico Linux

Shell Scripts

function. Ejemplo:
#!/bin/sh function suma { echo $(expr $1 + $2) } suma 4 6 suma 3 234

136

Irontec Curso bsico Linux

Shell Scripts

source, .

Con source o con . podemos incluir el cdigo de otro script en el nuestro:


#!/bin/sh source funciones.sh # ah se define suma suma 1 3 suma 12 12312

137

Irontec Curso bsico Linux

EJERCICIO

Crear un script que nos pida nombre de usuario y contrasea. Una vez tengamos los datos los aadimos al fichero /tmp/datos A continuacin nos pregunta si deseamos continuar insertando datos. Si la respuesta es si, volvemos a empezar, si es no terminamos la aplicacin.

138

Irontec Curso bsico Linux

EJERCICIO

Por cada fichero en /bin hacer un md5sum y archivar los datos en /tmp/seguridad. Programar una tarea para que lo haga todos los das a las 10 de la noche.

139

Irontec Curso bsico Linux

EJERCICIO

Crear una calculadora. Si el usuario escribe 2 + 5, que le muestre el resultado por pantalla. Se debe salir del bucle cuando el resultado de una operacin sea 82.

140

Irontec Curso bsico Linux

Redes

Redes

141

Irontec Curso bsico Linux

Configuracin de la red

Las interfaces de red se configuran en el fichero:


[root@localhost network-scripts]# cat ifcfg-eth0 # Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] DEVICE=eth0 BOOTPROTO=dhcp HWADDR=00:0C:29:3D:90:4F ONBOOT=yes [root@localhost network-scripts]# cat ifcfg-lo DEVICE=lo IPADDR=127.0.0.1 NETMASK=255.0.0.0 NETWORK=127.0.0.0 BROADCAST=127.255.255.255 ONBOOT=yes NAME=loopback

142

Irontec Curso bsico Linux

Configuracin de la red

Configuracin manual de la red

ifconfig: configura interfaces de red. Asigna IP, mscara, gateway, etc.


$ ifconfig eth0 192.168.0.12 netmask 255.255.255.0 up

route: aade rutas estticas. Ejemplo tpico:


$ route add default gw 192.168.0.1 $ route add -net 10.10.0.0 netmask 255.255.255.0 gw 192.168.0.100 $ route -n (muestra tabla de rutas)

/etc/resolv.conf: indica los servidores DNS


$ cat /etc/resolv.conf nameserver 195.235.113.3

143

Irontec Curso bsico Linux

Configuracin de la red

IP alias: crear un interfaz de red sobre otro.

Una misma red fsica puede albergar distintas redes con distinto direccionamiento y rango.
$ ifconfig eth0:1 192.168.1.123 netmask 255.255.255.0

$ ifconfig eth0:1 eth0:1 Link encap:Ethernet HWaddr 00:14:85:E8:D3:AF inet addr:192.168.1.123 Bcast:192.168.1.255 Mask:255.255.255. UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:217 Base address:0xe800

144

Irontec Curso bsico Linux

Configuracin de la red

Configuracin manual de la red

/etc/hosts: realiza una resolucin directa de nombre a IP sin realizar consulta DNS. Normalmente este fichero se mira antes de preguntar al servidor DNS (slo para consulta de tipo A). Para asegurarnos que el sistema pregunte al DNS o al fichero '/etc/hosts' para resolver nombres de host hay que mirar el fichero '/etc/nsswitch.conf'

145

Irontec Curso bsico Linux

Configuracin de la red

Configuracin automtica de la red (DHCP)

Configuracin para el arranque: en /etc/network/interfaces definimos la interfaz como inet dhcp Configuracin manual:

se utiliza un cliente dhcp como dhclient o pump


# dhclient eth0 # pump -i eth0

146

Irontec Curso bsico Linux

Comandos bsicos de administracin de red ping: manda un mensaje ICMP echo request. Se utiliza normalmente para comprobar si un interfaz de red remoto est levantado.
$ ping 212.55.8.132 PING 212.55.8.132 (212.55.8.132) 56(84) bytes of data. bytes from 212.55.8.132: icmp_seq=1 ttl=242 time=166 ms hay conectividad!

Nota: Si no hay ping puede que el trfico ICMP est filtrado por algn firewall.

147

Irontec Curso bsico Linux

Comandos bsicos de administracin de red

telnet: protocolo de terminal remoto

Se utiliza para conectarse a una mquina remota.


$ telnet IP puerto (default 23)

NO es un protocolo seguro (SSH s). Se utiliza tambin para comprobar estado de servicios remotos. Ejemplo:
$ telnet www.euskalnet.net 80 Connected to eui3h.euskaltel.es. Escape character is '^]'.

el servidor web funciona!

148

Irontec Curso bsico Linux

Comandos bsicos de administracin de red

netstat: muestra conexiones de red

Comando potente que permite mostrar casi toda la informacin de la configuracin TCP/IP de la mquina (man netstat). Ejemplos:
netstat netstat netstat netstat netstat -atup # muestra tambien procesos -a # muestra todas las conex. -a | grep LISTEN -a | grep ESTABLISHED -nrv # muestra tabla de rutas

149

Irontec Curso bsico Linux

Comandos avanzados administracin de red

iptraf:

150

Irontec Curso bsico Linux

Comandos avanzados administracin de red

netcat (nc): navaja suiza de red Capaz de funcionar como cliente, como servidor, etc.
telnet 127.0.0.1 80 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. GET / <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <html> <head> ...

Lo mismo con netcat (nc):


echo GET / | nc 127.0.0.1 80

Cliente/Servidor:
nc -l -p 5000 cat fichero | nc 192.168.1.1 5000
151

Irontec Curso bsico Linux

Comandos avanzados administracin de red

nmap: escaneador de red Permite comprobar que puertos estn o no abiertos. Nos dice el sistema operativo y la versin de los servicios que estamos escaneando.
[root@shyris punisher]# nmap -sS -O 127.0.0.1 Starting Nmap 4.65 ( http://nmap.org ) at 2008-06-13 08:40 CEST Interesting ports on localhost.localdomain (127.0.0.1): Not shown: 1713 closed ports PORT STATE SERVICE 111/tcp open rpcbind 978/tcp open unknown Device type: general purpose Running: Linux 2.6.X OS details: Linux 2.6.17 - 2.6.24 Uptime: 0.013 days (since Fri Jun 13 08:22:15 2008) Network Distance: 0 hops

152

Irontec Curso bsico Linux

Iptables

IPTABLES

153

Irontec Curso bsico Linux

Iptables

Cortafuegos Netfilter/Iptables

Remplaza a Ipchains desde el Kernel 2.3. iptables: herramienta del espacio de usuario que permite:

Reglas para filtrado de paquetes. NAT.

Firewall stateful (controla estados de conexiones). Soporte IPv6.

154

Irontec Curso bsico Linux

Iptables

Tablas y cadenas

155

Irontec Curso bsico Linux

Iptables

Destino: nuestra mquina

156

Irontec Curso bsico Linux

Iptables

Origen: nuestra mquina

157

Irontec Curso bsico Linux

Iptables

Paquetes Reenviados (Forwarded)

158

Irontec Curso bsico Linux

Iptables

Tabla mangle

Para modificar paquetes:

TOS (Type of Service) TTL (Time To Live) MARK (marcar un paquete) -> iproute2, QoS

No usar esta tabla para para DNAT, SNAT o Masquerading !

159

Irontec Curso bsico Linux

Iptables

Tabla nat

Slo para hacer NAT (Network Address Translation). DNAT:

Cambiar la IP destino. Ej: Redirigir entrantes a una DMZ con IP's locales. Cambiar la IP origen a una definida (esttica) Para dar salida a equipos LAN con IP's locales. Igual que SNAT con ms carga de procesador. Cada vez chequea la IP saliente que debe asignarle.

SNAT:

Masquerade:

Ej: Router Linux con IP pblica dinmica.

160

Irontec Curso bsico Linux

Iptables

Tabla filter

Filtrado de paquetes. Se puede hacer filtrado en otras tablas, pero no es recomendable ! Acciones como:

Aceptar un paquete (ACCEPT). Desecharlo (DROP).

161

Irontec Curso bsico Linux

Iptables

Estado de los paquetes


NEW: paquete nuevo. ESTABLISHED: comunicacin ya establecida. RELATED: relaionada a otra comunicacin ESTABLISHED.

Para protocolos como FTP que incluyen puerto de transmisin de datos dentro de datos de aplicacin.

Hace falta un mdulo para Netfiler: ip_conntrack_ftp.

--state

Para comparar el estado de un paquete. TCP, UDP o ICMP.

El estado de conexiones se aplica sobre:

UPD y ICMP gracias al mdulo ip_conntrack.

162

Irontec Curso bsico Linux

Iptables

Estado de los paquetes (II)

Ejemplo:

Nuestra mquina enva un paquete a otra mquina:


Estado de la comunicacin: NEW. Cadena OUTPUT. Estado de la comunicacin: ESTABLISHED. Cadena PREROUTING.

La mquina destino nos responde con otro paquete.


163

Irontec Curso bsico Linux

Iptables

Listar reglas actuales


iptables -L -v iptables-save

Lista las reglas en un formato vlido para iptables-restore.


iptables-save > fichero-reglas (salva las reglas a fichero) iptables-restore < fichero-reglas (carga reglas desde fichero)

164

Irontec Curso bsico Linux

Iptables

Comando iptables

Sintaxis para aadir una regla: Los scripts de iptables constan de muchas lneas similares.

iptables [-t tabla] comando [comparacin] [objetivo/salto]

165

Irontec Curso bsico Linux

Iptables

Comandos
-A : Aade la regla al final de la cadena. iptables -A INPUT (aade una regla al final de la cadena INPUT) -D : Borrar una regla (hay que ponerla entera). -R : Reemplaza una regla. -I : Inserta una regla en la posicin indicada. -L : Lista todas las reglas (de la cadena especificada). -F : (Flush) Elimina todas las reglas (de la cadena especificada).

166

Irontec Curso bsico Linux

Iptables

Comparaciones

Comparaciones genricas:

-p, --protocol : Para comprobar si es TCP, UDP o ICMP. iptables -A INPUT -p tcp -s, --src : Comparacin de IP origen. iptables -A INPUT -s 192.168.1.10 iptables -A INPUT -s 192.168.1.0/24 iptables -A INPUT -s ! 192.168.1.0/24 (invertir) -d, --dst : Comparacin de IP destino. iptables -A INPUT -d 192.168.0.1 iptables -A INPUT -d 192.168.0.0/16 -i, --in-interface : Interfaz origen.

Slo vlida en INPUT, FORWARD y PREROUTING.


(por cualquier

iptables -A INPUT -i eth0 iptables -A INPUT -i eth+ eth) -o, --out-interface : Interfaz de salida.

Slo vlida en OUTPUT, FORWARD y POSTROUTING.


iptables -A FORWARD -o eth0
167

Irontec Curso bsico Linux

Iptables

Comparaciones implcitas

Comparaciones que se cargan implcitamente:

TCP UDP ICMP


iptables -p TCP (o UDP, ICMP)

Estas comparaciones se cargan con la opcin -p:

168

Irontec Curso bsico Linux

Iptables

Comparaciones implcitas TCP

-p tcp

--sport : Puerto origen. iptables -A INPUT -p tcp --sport 1003 iptables -A INPUT -p tcp --sport 100:200 (rango) iptables -A INPUT -p tcp --sport ! 22 (invertir) --dport : Puerto destino (dem) --tcp-flags : Flags TCP:

SYN, FIN, ACK, ACK SYN


iptables -A INPUT -p tcp --tcp-flags SYN iptables -A INPUT -p tcp --tcp-flags SYN,FIN,ACK SYN

169

Irontec Curso bsico Linux

Iptables

Comparaciones implcitas UDP

-p upd

--sport : Igual que en TCP. --dport : Igual que en TCP.

170

Irontec Curso bsico Linux

Iptables

Comparaciones implcitas ICMP

-p icmp

--icmp-type : Tipo de ICMP. iptables -A INPUT -p icmp --icmp-type 8

Se puede ver un listado con:


iptables -p icmp --help

171

Irontec Curso bsico Linux

Iptables

Comparaciones explcitas

Se deben cargan explcitamente con opcin -m (--match).

--state ESTADO : Verifica el estado de la conexin.

NEW, INVALID, ESTABLISHED, RELATED

iptables -A INPUT -m state --state RELATED,ESTABLISHED --limit VALOR : Limitar el n de paquetes por tiempo. iptables -A INPUT -m limit --limit 3/hour --mac-source : MAC origen. iptables -A INPUT -m mac --mac-source
00:00:00:00:11:22

--mark : Comprobar paquetes marcados anteriormente. iptables -t mangle -A INPUT -m mark --mark 1

Ms comparaciones:

TOS, TTL, multiport...

172

Irontec Curso bsico Linux

Iptables

Objetivos/Saltos

Accin que se ejecuta sobre el paquete.


-j ACCIN

Salto: Mandar el paquete a otra cadena:


-j cadena

Podemos crear cadenas propias:


iptables -N cadena_tcp iptables -A INPUT -p tcp -j cadena_tcp

173

Irontec Curso bsico Linux

Iptables

Objetivos
ACCEPT : Aceptamos el paquete.

El paquete deja de compararse en la cadena actual y en las cadenas de la tabla actual ! El paquete podra ser filtrado en otra tabla !

DROP : Deseacha un paquete. REJECT : Rechaza un paquete (enva un ICMP informativo al origen). LOG : Loguea el paquete en ssylog. DNAT : Cambiamos la IP destino.

Slo en cadenas PREROUTING y OUTPUT de la tabla nat.


iptables -t nat -A PREROUTING -p tcp -d 85.80.23.54 --dport 80 -j DNAT --todestination 192.168.168.10:80
174

Irontec Curso bsico Linux

Iptables

Objetivos (II)
SNAT : Cambiamos la IP origen.

Slo en la cadena POSTROUTING de la tabla nat.


iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 90.90.90.90:1024-3200

MASQUERADE : Cambiamos la IP origen (detecta la IP)

Slo en la cadena POSTROUTING de la tabla nat.


iptables -t nat -A POSTROUTING -p tcp -o eth0 -j MASQUERADE -to-ports 1024-3200

REDIRECT : Redirigir paquetes hacia la mquina.

Slo en cadenas PREROUTING y POSTROUTING de tabla nat.


iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT -to-ports 8080

Util para proxy transparente.

Otros objetivos:

RETURN, QUEUE, MIRROR, MARK, TOS, TTL, ULOG


175

Irontec Curso bsico Linux

Iptables

Poltica por defecto

Dos filosofas:

1: Todo abierto y cerrar aquello que no queramos 2: Todo cerrado y abrir aquello que queramos Mucho ms segura la 2 !

Poltica por defecto en cada cadena (slo se cumple si el paquete no coincide con ninguna regla):
iptables -P cadena poltica

Denegamos acceso a la mquina y otras mquinas:


iptables -P INPUT DROP iptables -P FORWARD DROP

Permitimos acceso total al exterior desde nuestra propia mquina:


iptables -P OUTPUT ACCEPT

176

Irontec Curso bsico Linux

Iptables

Poltica por defecto (II)

OJO con el interfaz lo !

lo es el interfaz de localhost. Si ponemos: Solucin: Aadir:

iptables -P INPUT DROP Estamos bloqueando los accesos por red en localhost !

iptables -A INPUT -p ALL -i lo -j ACCEPT

177

Irontec Curso bsico Linux

Iptables

sysctl

Para habilitar el rutado:


#> echo 1 > /proc/sys/net/ipv4/ip_forward

Ms elegante:
#> sysctl -w net.ipv4.ip_forward=1

Para dejarlo definitivo (activo en el arranque):

Fichero /etc/sysctl.conf: net/ipv4/ip_forward=1

178

Irontec Curso bsico Linux

Iptables

Notas a recordad

No bloquear todos los ICMP ! por qu??

Supone cargarse la mitad del protocolo de internet.

No olvidarse del interfaz lo. Cargar mdulos necesarios para nuestras reglas.

Imprescindible el mdulo ip_tables !

179

Irontec Curso bsico Linux

Iptables

Ejemplo

Aspectos comunes de los scripts:

Borrado de las reglas aplicadas actualmente (flush) Aplicacin de polticas por defecto para INPUT, OUPUT, FORWARD Listado de reglas iptables.

180

Irontec Curso bsico Linux

Iptables

Ejemplo (II)
#!/bin/sh ## SCRIPT de IPTABLES ## Red local: eth0 - 192.168.0.0/24 ## Internet: eth1 IP dinmica # Borrar reglas: iptables F iptables t nat F # Poltica por defecto: iptables P INPUT DROP iptables P OUTPUT ACCEPT iptables P FORWARD DROP iptables t nat P PREROUTING ACCEPT iptables t nat P POSTROUTING ACCEPT # Permito acceso local: iptables -A INPUT -p ALL -i lo -j ACCEPT

181

Irontec Curso bsico Linux

Iptables

Ejemplo (III)
# Masquerading para red local con IP pblica dinmica: iptables t nat A POSTROUTING s 192.168.0.0/24 -o eth1 j MASQUERADE # Dejo pasar los paquetes ICMP: iptables A INPUT p ICMP j ACCEPT # Acepto paquetes de conexiones ya establecidas: iptables A INPUT p TCP m state state RELATED,ESTABLISHED j ACCEPT # Permitir SSH a la mquina: iptables A INPUT p TCP dport 22 m state state NEW j ACCEPT # Redirigir HTTP a una mquina local: iptables t nat A PREROUTING i eth1 p tcp dport 80 j DNAT to 192.168.0.2:80

182

Irontec Curso bsico Linux

Iptables

Ms info:

http://iptables-tutorial.frozentux.net/spanish/chunkyhtml

Tutorial completo de Iptables en castellano.

183

Irontec Curso bsico Linux

Paquetes de software

Paquetes de software

184

Irontec Curso bsico Linux

Paquetes de software

Un paquete es un fichero que contiene un programa, scripts de instalacin y ficheros de configuracin. Es posible instalar, eliminar programas y actualizar el sistema completo con un solo comando, yum. Tambin es posible instalar paquetes a mano sin yum, pero tendremos que resolver el problema de dependencias manualmente.

185

Irontec Curso bsico Linux

Paquetes de software

Instalar: yum install nombrepaquete Eliminar: yum remove/erase nombrepaquete Actualizar paquetes: yum update Actualizar sistema: yum upgrade Buscar paquete: yum search textodebusqueda Mostrar info de paquete: yum info nombrepaquete

186

Irontec Curso bsico Linux

Paquetes de software

Qu es un repositorio? El repositorio es un almacn de paquetes. Los repositorios pueden estar en internet, en un medio extrable como un CD, en el disco duro... Se configuran en /etc/yum.repos.d [kbs-CentOS-Extras]

name=CentOS.Karan.Org-EL$releasever - Stable gpgcheck=1 gpgkey=http://centos.karan.org/RPM-GPG-KEY-karan.org.txt enabled=1 baseurl=http://centos.karan.org/el$releasever/extras/sta ble/$basearch/RPMS/

187

Irontec Curso bsico Linux

Paquetes de software

Tambin es posible instalar paquetes a mano sin usar YUM, mediante rpm. Las dependencias las tenemos que gestionar notrosos.
[root@localhost alumno]# rpm -i pidgin-2.0.23.el5.i386.rpm warning: pidgin-2.0.2-3.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID e8562897 error: Failed dependencies: libgtkspell.so.0 is needed by pidgin-2.0.23.el5.i386 libpurple.so.0 is needed by pidgin-2.0.23.el5.i386

188

Irontec Curso bsico Linux

Paquetes de software

Algunas opciones de rpm. Instalar: rpm -i nombrepaquete Borrar: rpm -e nombrepaquete Ver paquetes instalados: rpm -qa Actualizar paquete: rpm -Uvh

189

Irontec Curso bsico Linux

Servicios y Niveles de Ejecucin

Servicios y Niveles de Ejecucin

190

Irontec Curso bsico Linux

Proceso de arranque

La BIOS busca un dispositivo de inicio (disco duro, CDROM,..) y pasa el control al MBR (512 bytes). Se carga el gestor de arranque (instalado en MBR). Se carga el kernel. Se monta el sistema de ficheros raiz (/). Se inicia el init (el abuelo de todos los procesos). Se lee el archivo /etc/inittab. Se ejecutan los scripts indicados por el nivel de ejecucin de arranque.

191

Irontec Curso bsico Linux

Gestores de arranque

Grub

Grub (Grand Unified Bootloader) es un gestor de arranque capaz de arrancar diferentes sistemas operativos en diferentes particiones y discos duros. Normalmente se instala en el MBR (master boot record) del disco duro principal. El archivo de configuracin en Debian GNU/Linux es: /boot/grub/menu.lst No es necesario ejecutar ningn comando para que se tengan en cuenta los cambios realizados.

192

Irontec Curso bsico Linux

Gestores de arranque

Grub

Grub no es capaz de distinguir entre dispositivos IDE, SCSI u otros. Sintaxis:

Dispositivos

(dispositivo[particion][,letra_particion])
(hd0) (fd0) (hd0,1) 0 # disco maestro IDE primario # disquetera # particin 2 del maestro IDE

Ficheros

Es necesario indicar la ruta completa


(hd0,0)/boot/grub/menu.lst

193

Irontec Curso bsico Linux

Gestores de arranque

Grub

Datos de interes del archivo menu.lst:


default timeout 0 3

title Ubuntu, kernel 2.6.12-10-386 root (hd0,1) kernel /boot/vmlinuz-2.6.12-10-386 root=/dev/hda2 ro quiet splash initrd /boot/initrd.img-2.6.12-10-386 savedefault boot title root savedefault makeactive chainloader Microsoft Windows (hd0,2)

+1
194

Irontec Curso bsico Linux

Niveles de Ejecucin

En los sistemas Unix hay 7 (0...6) niveles de ejecucin


nivel nivel nivel nivel nivel

0: estado de parada (halt) 1: monousuario 2, 3 y 5: multiusuario 4: no tiene un uso especfico 6: estado de reinicio (reboot)

195

Irontec Curso bsico Linux

Niveles de Ejecucin

Init

Es el primer proceso que se crea (PID=1). Se configura mediante /etc/inittab.

Sintaxis
id:nivel:accion:proceso

id: nombre de la lnea nivel: nivel o niveles en los que la lnea debe procesarse accion
wait (espera), once (solo 1 vez), respawn (rearranca una vez finalizado), off (ignora la lnea)

proceso: path del proceso a ejecutar

196

Irontec Curso bsico Linux

Niveles de Ejecucin

Init

Valores tpicos del archivo /etc/inittab:


id:2:initdefault l0:0:wait:/etc/init.d/rc l1:1:wait:/etc/init.d/rc l2:2:wait:/etc/init.d/rc l3:3:wait:/etc/init.d/rc 0 1 2 3

1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 z6:6:respawn:/sbin/sulogin # CTRL-ALT-DEL! ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

197

Irontec Curso bsico Linux

Arranque del sistema

Cuando la mquina se inicia en un nivel de ejecucin N se ejecutan todos los scripts que empiecen por 'S' o 'K' contenidos en /etc/rcN.d/ con las siguientes particularidades. Si el nombre del script comienza por S se le pasa como parmetro 'start'.

Si el nombre del script comienza por K se le pasa como parmetro 'stop'.

Normalmente todos estos ficheros de /etc/rcN.d son enlaces a scripts localizados en /etc/init.d/

198

Irontec Curso bsico Linux

Configurando servicios en arranque y parada

chkconfig

Herramienta para configurar automgicamente los enlaces a los scripts de init tipo System V que estn en /etc/rcN.d/ [S|K]NNnombre y que apuntan a los scripts /etc/init.d/nombre. Ejemplos
# chkconfig --list # chkconfig --level 345 sendmail off

199

Das könnte Ihnen auch gefallen