1. GNU/Linux Centos 5.1
Miguel Ángel Nieto <miguelangel@irontec.com>
Irontec – Internet y Sistemas sobre GNU/Linux
2. Irontec – Curso básico 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.
Administración básica de un sistema GNU/Linux basado
en RedHat.
Y por encima de todo, aprender a buscar la información
que necesitamos para solventar los posibles problemas.
2
3. Irontec – Curso básico Linux
Antes de nada...
GNU GPL
Software Libre Linux
Kernel
GNU/Linux
Distribución Linux Debian
Paquete
KDE (K)Ubuntu
Gnome Emule
3
4. Irontec – Curso básico Linux
Introducción
●
Programas informáticos
●
Tipos de Software
– Software privativo
– Shareware
– Freeware
– Software libre
4
5. Irontec – Curso básico Linux
1
Introducción
¿Qué es eso del Software
Libre?
5
6. Irontec – Curso básico Linux
1
Introducción
4 Libertades:
●
Libertad 0: Libertad para ejecutar el
programa para cualquier propósito.
●
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.
6
7. Irontec – Curso básico Linux
Introducción
●
Inicios del Software libre
– Richard Stallman (1983 – Funda GNU Ver.7)
– Linus Torvalds (1991 – Crea Linux)
– 1992 – GNU/Linux (Ver. 7)
7
8. Irontec – Curso básico Linux
1 Conceptos Generales sobre GNU Linux (I)
Introducción
➔
¿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...
8
9. Irontec – Curso básico Linux
1 Conceptos Generales sobre GNU Linux (II)
Introducción
➔
¿Qué son Redhat, Debian, SuSE ... ?
•
Son “Distribuciones” de GNU Linux.
•
Diferentes formas de “empaquetar” el núcleo, las
herramientas GNU y el resto de software (libre o
no).
•
Gestionadas por:
•
empresas
•
grupos de personas.
•
organismos ...
9
10. Irontec – Curso básico Linux
1 Distribuciones GNU Linux (I)
Introducción
➔ Debian: Proyecto fundado por Ian Murdock en 1993,
proyecto con organización jerárquica totalmente
horizontal. Objetivo principal: competir con las
distribuciones comerciales para poder garantizar el
exito de GNU Linux.
➔ Redhat: Empresa fundada en 1994 por Marc Ewing,
ofrece soporte técnico profesional y garantías de
escalabilidad. Plataforma lider en el mercado.
10
11. Irontec – Curso básico Linux
1 Distribuciones GNU Linux (II)
Introducción
➔ Mandrakesoft: Nacida en 1998, con objetivo
principal: instalación y uso diario sencillos.
Crecimiento espectacular en 2 años (3 a 100
empleados).
➔ SuSE: Proyecto de empresa aleman, iniciado en
1993. Primeras versiones basadas en Slackware. En
la actualidad distribución totalmente propia. Ofrecen
soporte profesional de calidad, similar al de RedHat.
11
12. Irontec – Curso básico Linux
1 Distribuciones GNU Linux (III)
Introducción
➔ Slackware: Distribución desarrollada por Patrick
Volkerding. Primera versión publicada en Abril de
1993. No ofrece soporte técnico profesional directo.
➔ Knoppix: Es el Sistema Live (ejecución desde
CDRom sin instalación) más popular. Soporta
prácticamente todos los dispositivos hardware del
mercado. Muy popular como método de iniciación a
GNU Linux.
12
13. Irontec – Curso básico Linux
1 Distribuciones GNU Linux (IV)
Introducción
➔ Ubuntu: Distribución basada en Debian, centrada en
el sistema de escritorio (aunque también dispone de
versión servidor). Nueva versión cada 6 meses.
➔ CentOS: Distribución basada en el código fuente de
Red Hat. Con cada nueva versión enterprise de
RedHat, Centos descarga el código, lo compila y crea
su propia versión. Es 100% compatible a nivel binario
con RedHat.
13
14. Irontec – Curso básico Linux
1 Versiones
Sub Versión:
Introducción
Par indica estable
Impar indica
inestable
2.4.19 2.5.3
Versión Release
●En la práctica, se denomina
versión a todo el conjunto.
14
15. Irontec – Curso básico Linux
1 Introducción
Situación de GNU/Linux
15
16. Irontec – Curso básico Linux
1 Situación real de GNU Linux
Introducción
Las estadísticas no siempre son muy objetivas, pero se
calculan las siguientes cifras:
➔ Servidores: Prácticamente todos los servidores
potentes se ejecutan sobre un derivado de UNIX
(GNU Linux, *BSD...).
➔ Equipos de escritorio: Existencia de numerosos
gestores de ventanas (KDE, GNOME, ...) apariencia
estética y usabilidad muy mejorada.
➔ Dispositivos empotrados: GNU Linux está presente
en numerosos dispositivos Wifi (802.11b/g) (Cisco
Linksys WRTG54G, SMC), en teléfonos celulares
16
17. Irontec – Curso básico Linux
1 Situación real de GNU Linux en el panorama
Introducción
empresarial
➔Soporte: La vía principal de ingreso en el mundo de GNU Linux es
el soporte. Servicios sobre GNU Linux. El desarrollo no copa el
mercado como en otros sistemas operativos (“La rueda ya está
inventada”).
➔Apoyo de grandes empresas: Entre otras IBM se ha posicionado
en favor de GNU Linux, afrontando directamente demandas de SCO
UNIX sobre posible violación de copyright de Linux.
➔Postura de Microsoft:
2001:“Proyecto hecho por aficionados, no es serio”
2004:“Es nuestra principal amenaza”
Bill Gates
17
18. Irontec – Curso básico Linux
1 Situación real de GNU Linux en el panorama
Introducción
empresarial: Desarrollo y sistemas
➔Desarrollo (web): La punta de la lanza reside en
soluciones LAMP (Linux Apache MySQL, PHP):
➔ Pros: Rapidez, seguridad, integración con
prácticamente todos los protocolos y comunidad de
desarrolladores muy activa (numerosas librerías y
código reutilizable).
➔ “Contras”: Integración con soluciones MS Windows
18
19. Irontec – Curso básico Linux
1 Situación real de GNU Linux en el panorama
Introducción
empresarial: Desarrollo y sistemas
➔Sistemas: Es el punto fuerte de GNU Linux:
estabilidad, seguridad, escalabilidad e integración
prácticamente total:
➔ Soluciones de seguridad (VPNs, Ids, Firewalls, ...)
➔ Soluciones de tiempo real (sistemas de
monitorización, ...)
➔ Routing Avanzado (OSPF, BGP, VRRP, ....)
➔ Servidores: DNS (Bind9), Web (Apache), FTP
(Proftpd), Netbios (Samba) ....
19
21. Irontec – Curso básico Linux
Instalación de CentOS
Instalación de CentOS
21
22. Irontec – Curso básico Linux
Instalación de CentOS
●
Se puede descargar CentOS desde su página web.
http://www.centos.org
●
Se puede descargar en distintos Cds o en un solo
DVD.
●
La última versión 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 instalación es del estilo siguiente-siguiente...
finalizar :)
22
23. Irontec – Curso básico Linux
Instalación de CentOS
●
Comprobación del medio.
23
24. Irontec – Curso básico Linux
Instalación de CentOS
●
Selección de idioma.
●
Se aplicará tanto al entorno de consola como al
entorno de escritorio.
24
25. Irontec – Curso básico Linux
Instalación de CentOS
●
Selección de idioma del teclado.
25
26. Irontec – Curso básico Linux
Instalación de CentOS
●
Particionado del disco duro.
●
Es necesario que el disco duro esté vacío o que en
caso contrario tengamos una partición vacía en la
que realizar la instalación.
26
27. Irontec – Curso básico Linux
Instalación de CentOS
●
Selección y creación de particiones.
●
Como mínimo debe existir / y swap.
●
¿Qué problemas tiene el uso exclusivo de /?
27
28. Irontec – Curso básico Linux
Instalación de CentOS
●
Sistemas de ficheros
– VFAT
– Ext2
– Ext3
– RaiserFS
– XFS
– y muchos otros...
28
29. Irontec – Curso básico Linux
Sistemas de ficheros en Unix
– En un sistema Unix todo son archivos: memoria física,
ratón, modems, teclado...
– Filosofía de diseño de grán éxito y potencia, aunque
también peligrosa: un simple error de permisos puede
permitir modificar todo un disco duro.
– Tipos de archivos:
●
ficheros planos
●
directorios
●
ficheros especiales (dispositivos)
– orientados a carácter
– orientados a bloque
29
30. Irontec – Curso básico Linux
Sistemas de ficheros en Unix
Desplazándose por el sistema de ficheros
30
31. Irontec – Curso básico Linux
Sistemas de ficheros en Unix
Estructura de los Sistemas de Ficheros
– Estándar de la Jerarquía 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
32. Irontec – Curso básico Linux
Instalación de CentOS
●
Árbol típico 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
33. Irontec – Curso básico Linux
Instalación 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
34. Irontec – Curso básico Linux
Instalación 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
35. Irontec – Curso básico Linux
Instalación 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 – Ficheros de configuración del sistema
– /etc/X11/xorg.conf – Sistema X
– /etc/resolv.conf
– /etc/lilo.conf
35
36. Irontec – Curso básico Linux
Instalación de CentOS
●
/home – Directorios de los usuarios del
sistema (Linux es multiusuario)
– /home/username
●
Archivos del usuario
●
Configuraciones específicas del usuario
●
/lib – Librerías compartidas del sistemas
●
/lost+found – Directorio donde se dejan los
archivos que FSCK recuperara después de
una caída del sistema. (Sistemas de
ficheros sin Journaling)
36
37. Irontec – Curso básico Linux
Instalación de CentOS
●
/mnt – Punto de montaje genérico donde
se montarán 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
38. Irontec – Curso básico Linux
Instalación de CentOS
●
/usr – Directorio donde se encuentran todos los
programas
– /usr/src/linux – Kernel de Linux
– /usr/doc – Documentación de los programas
38
39. Irontec – Curso básico Linux
Instalación de CentOS
●
Grub es el gestor de arranque. Se encargará de
arrancar CentOS y cualquier sistema operativo que
detecte.
39
40. Irontec – Curso básico Linux
Instalación de CentOS
●
Configuración de la red Ethernet. Puede ser por
DHCP o con IP fija.
40
41. Irontec – Curso básico Linux
Instalación de CentOS
●
Especificar contraseña para root. El usuario root es
el Administrador de la máquina y tiene permiso para
todo.
41
42. Irontec – Curso básico Linux
Instalación de CentOS
●
Ahora toca seleccionar que deseamos instalar en el
sistema. Por defecto se instalará el escritorio
Gnome.
42
43. Irontec – Curso básico Linux
Instalación de CentOS
●
Ya está, instalación de CentOS finalizada. Ya nos
podemos autodenominar hackers.
43
44. Irontec – Curso básico Linux
Configuración inicial
●
Con el primer inicio del sistema accederemos a un
asistente de configuración.
●
Se desactivará el Cortafuegos y SELinux para evitar
problemas durante el curso.
●
Crearemos un usuario sin privilegios.
44
45. Irontec – Curso básico Linux
EJERCICIO
● Navegar por el sistema de ficheros y comprobar que lo
que vemos se ajusta o no al mapa.
● Comprobar la versión del núcleo y ver en la web si
existe una versión nueva. ¿Se podrá actualizar?
45
47. Irontec – Curso básico Linux
Introducción a GNU/Linux
●
Shells
– Existen muchas shells: sh,csh,ksh,bash...
– Entorno de trabajo:
●
Case sensitive: sensible a mayúsculas (ECHO != echo).
●
Sintáxis: comando arg1 arg2... argn
●
Si un programa no está en el PATH: ./programa
●
Prompt:
– $: usuario normal
– #: usuario administrador (root)
47
48. Irontec – Curso básico Linux
Comandos básicos
Comandos para el manejo del sistema de ficheros
– ls (lista contenido de directorios)
– cd / pwd (cambia /muestra la ruta de directorio)
– touch (crea fichero vacío o actualiza existente)
– cp / mv / rm (copia / mueve/ elimina fichero)
– mkdir / rmdir (crea / elimina directorio)
– man / info (ayuda sobre comandos)
– echo (muestra una línea de texto)
– date / cal (muestra la hora del sistema)
– file (muestra el tipo de fichero)
– halt / reboot (apaga el sistema)
– sleep (cuentra atrás)
48
49. Irontec – Curso básico Linux
Comandos básicos
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
50. Irontec – Curso básico Linux
Comandos en GNU/Linux
Comandos para búsqueda 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
51. Irontec – Curso básico Linux
EJERCICIO
● Ir a tmp.
● Crear un fichero llamado prueba.
● Renombrarlo a nominas.
● A continuación copiar nominas a nuestra home.
● Una vez hecho, buscamos en todo el disco duro los
ficheros con nombre nominas y los borramos.
51
52. Irontec – Curso básico Linux
EJERCICIO
● Comprobar con file distintos ficheros del disco duro y
comprobar los resultados que nos dá.
● Cambiar la fecha del sistema (buscar información en
google). Vamos a adelantarnos al 2009.
● Programar un reinicio del sistema dentro de dos
minutos.
52
53. Irontec – Curso básico Linux
EJERCICIO
● Localizar el comando ifconfig e intentar ejecutarlo.
● Ejecutar echo $PATH ¿Qué es esa información?
● Ejecutarlo como usuario root. ¿Qué diferencias
encontramos?
53
54. Irontec – Curso básico 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.
●
Caracteres especiales
– *: sustituye una cantidad cualquiera de caracteres
– ?: sustituye exactamente un carácter
– []: sustituye un carácter de los indicados
●
Expansión de comandos y archivos
54
55. Irontec – Curso básico 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 nóminas
● Buscar en el disco duro todos los ficheros que empiecen
por n.
55
56. Irontec – Curso básico Linux
Introducción a GNU/Linux
●
Tuberías
– Un proceso en un sistema UNIX-like tiene inicialmente
abiertos 3 canales:
●
0: STDIN o entrada estándar
●
1: STDOUT o salida estándar
●
2: STDERR o salida de error
– Imaginémonos una refinería:
●
Metes crudo por 0 (STDIN), consigues gasolina por 1
(STDOUT) y bastantes residuos por el “desagüe” 2 (STDERR).
56
57. Irontec – Curso básico Linux
Introducción a GNU/Linux
Tuberías
– Redirigiendo la salida de un comando:
●
> : redirigir STDOUT a un fichero:
ls > listado.txt
●
>>: redirigir STDOUT al final de un fichero (añadir):
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
58. Irontec – Curso básico Linux
EJERCICIO
● Añadir 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
59. Irontec – Curso básico 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
60. Irontec – Curso básico 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 líneas de un
fichero)
– grep (busquedas basadas en expresiones regulares)
60
61. Irontec – Curso básico 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
62. Irontec – Curso básico 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 añadir
lineas con echo.
● ¿Para que nos puede servir el tail -f?
● Hacer un tail del servicio httpd y acceder a nuestra web.
62
63. Irontec – Curso básico 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
64. Irontec – Curso básico Linux
EJERCICIO
● Contar el número de líneas que tiene el fichero de
nominas.
● Comprimir el fichero de nominas y comprobar su
tamaño.
● Descomprimirlo y volver a comprobar su tamaño.
64
65. Irontec – Curso básico Linux
Introducción a GNU/Linux
Tuberías
– 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 desagüe y conducirlo a la
entrada de otro comando.
cat fichero.txt | tr a A
65
66. Irontec – Curso básico Linux
EJERCICIO
● Usando los comandos ya vistos mostrar del fichero /etc/
passwd únicamente los usuarios que comiencen por s.
66
67. Irontec – Curso básico Linux
Comandos básicos
● El sistema es multitarea, podemos dejar multiples
procesos corriendo en background.
● Con control+z llevamos el siguiente proceso a
background.
● Con fb [número de proceso] lo traemos de nuevo al
frente.
● Con bg listamos el último proceso enviado a
background.
67
68. Irontec – Curso básico 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
69. Irontec – Curso básico Linux
Comandos básicos
● Es posible crear alias de comandos, de forma que sea
más sencillo de recordar para nosotros.
● alias apagar=halt
69
70. Irontec – Curso básico 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 (tamaño,
propietarios, permisos...).
70
71. Irontec – Curso básico 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
72. Irontec – Curso básico Linux
Administración de usuarios
Administración de usuarios
72
73. Irontec – Curso básico Linux
Gestión de Usuarios y Grupos
Características de usuarios Unix
– Los sistemas Unix son sistemas multiusuario. Cada usuario
tiene una serie de características propias y asociadas:
●
uid: identificativo de usuario (debe ser único)
●
gid: identificativo de grupo
●
home: carpeta de trabajo o personal
●
shell: interprete de comandos
– Comandos:
●
who/whoami/id (muestra información de usuarios)
●
su/sudo (cambia de usuario o privilegios)
73
74. Irontec – Curso básico Linux
Gestión de Usuarios y Grupos
Gestión de Usuarios
– adduser (crear usuarios)
– usermod (modificar usuarios)
– deluser (eliminar usuarios)
Gestión de Grupos
– groupadd (añade grupo o usuario a grupo)
– groupmod (modifica grupo)
– delgroup (elimina grupo o usuario de grupo)
74
75. Irontec – Curso básico Linux
Gestión de Usuarios y Grupos
Gestión 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 añade a “alumno” al grupo “softwarelibre”
75
76. Irontec – Curso básico Linux
Gestión de Usuarios y Grupos
Cambiando el propietario y grupo
– Para cambiar el propietario o grupo puede hacerse a través
del nombre o del identificativo (uid o gid).
●
chown (cambiar el propietario y grupo)
●
chmod (cambiar los permisos)
76
77. Irontec – Curso básico Linux
Gestión 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
78. Irontec – Curso básico Linux
Administración 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 acción con el
archivo.
– Es la base de la seguridad de Unix.
– 2 formas de notación:
●
Modo alfabético
●
Modo octal
78
79. Irontec – Curso básico Linux
Administración de permisos
Permisos de ficheros en sistemas Unix
– Modo alfabético
79
80. Irontec – Curso básico Linux
Administración de permisos
Permisos de ficheros en sistemas Unix
– Modo octal
80
81. Irontec – Curso básico Linux
Administración 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)
●
+ / -: añadir / eliminar permisos
●
r (lectura), w (escritura), x (ejecución)
●
chmod [modo_octal] archivo
81
82. Irontec – Curso básico Linux
EJERCICIO
● Crear como root un fichero /tmp/nominas y darle
permisos de lectura solo a consultec, no a alumno.
Iniciar sesión con alumno y comprobar si lo puede leer.
82
83. Irontec – Curso básico 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
84. Irontec – Curso básico 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
85. Irontec – Curso básico Linux
EJERCICIO
● Abrimos /etc/passwd y comprobarlos los cambios. Le
quitamos la posibilidad de iniciar sesión a alumno.
Luego probamos a iniciar sesión con el.
85
86. Irontec – Curso básico Linux
EJERCICIO
● Borramos el usuario alumno y comprobamos a
continuación los permisos del fichero prueba y su
carpeta de tmp.
● Intentar crear ficheros por todo el disco duro,
comprobando así donde tenemos permiso.
86
87. Irontec – Curso básico Linux
Montaje de dispositivos
Montaje de dispositivos
87
88. Irontec – Curso básico Linux
Montaje de dispositivos
●
Diferencia Linux <-> Windows
– En Windows los directorios se montan sobre unidades
físicas:
C:Carpeta
D:Driversvga
– En Linux los dispositivos se montan en directorios de la
estructura de ficheros:
/home/usuario
/media/cdrom
88
89. Irontec – Curso básico Linux
Montaje de dispositivos
●
Dispositivos y “devices” asociados
– Disco duro IDE y CDROM: /dev/hdXY
●
X: Número de disco/dispositivo_IDE (a, b, c...)
●
Y: Número de partición (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
90. Irontec – Curso básico Linux
Montaje de dispositivos
●
Particiones primarias y lógicas
– Máximo 4 primarias:
/dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4
– Una de ellas se puede establecer como partición extendida:
/dev/hda4
– Se pueden crear varias particiones lógicas en una
extendida:
/dev/hda5 /dev/hda6 ...
– Linux puede arrancar desde una partición lógica, no así
Windows que requiere una primaria.
90
91. Irontec – Curso básico Linux
Montaje de dispositivos
●
/etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/hda1 / ext3 defaults,errors=remount-ro 0 1
/dev/hda3 /home ext3 defaults 0 2
/dev/hda2 none swap sw 0 0
/dev/hdb1 /media/hdb1 ext3 defaults 0 1
/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0
– La opción “user” permite que un usuario normal (no root)
monte la partición.
91
92. Irontec – Curso básico 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
93. Irontec – Curso básico Linux
Montaje de dispositivos
●
mount (II)
– Notas:
●
Una partición de tipo VFAT no dispone de permisos ni dueños/
grupos así que no se puede usar el comando “chown” ni
“chmod” para permitir a usuarios la escritura.
– La partición por defecto es del usuario que la monta (la puede
montar cualquiera si tiene la opción “user”).
– Se puede fijar el dueño de la partición con la opción “uid”, el
grupo con “gid” y los permisos con “umask” (ojo, “umask” es la
máscara invertida).
– ¡¡ man mount !!
93
94. Irontec – Curso básico Linux
Montaje de dispositivos
●
umount
– Desmonta un dispositivo:
umount /dev/dispositivo
ó
umount punto_de_montaje
– ¡ Sólo si el dispositivo no está usado por ningún proceso!
●
Si un usuario tiene una terminal en /media/cdrom no se podrá
desmontar el dispositivo.
●
Para comprobar qué procesos están usando un dispositivo:
lsof punto_de_montaje
Ej:
lsof /media/cdrom
94
95. Irontec – Curso básico 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
96. Irontec – Curso básico Linux
EJERCICIO
● Nos metemos en la carpeta y creamos un fichero.
● Abrimos otra consola y desmontamos la carpeta.
● Configuramos el fstab para que automáticamente monte
el dispositivo al iniciar el sistema.
96
97. Irontec – Curso básico Linux
Editor VI
●
Es el editor que encontraremos en todo UNIX. Es
necesario conocer el funcionamiento básico para
poder editar ficheros.
●
Tiene varios modos de funcionamiento, visual,
comando y edición.
●
Tiene muchísimas opciones...
http://www.infor.uva.es/~arturo/Asig/EstSO/manvi.pdf
97
98. Irontec – Curso básico Linux
Enlaces duros y simbólicos
Enlaces duros y simbólicos
98
99. Irontec – Curso básico 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
representación que GNU/Linux le da a los archivos
es posible que dos o más nombres apunten al
mismo contenido en el disco rígido..
99
100. Irontec – Curso básico Linux
Enlaces duros y simbólicos
●
Simbólicos: 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 comparación con los "Accesos directos"
de Windows95. La orden ln -s genera un enlace
simbólico.
100
101. Irontec – Curso básico Linux
Enlaces duros y simbólicos
Creación de un enlace duro
[punisher@shyris ~]$ touch hola
[punisher@shyris ~]$ ln hola adios
[punisher@shyris ~]$ ls -li hola adios
2747992 -rw-r--r-- 2 punisher users 0 jun 12 16:40 adios
2747992 -rw-r--r-- 2 punisher users 0 jun 12 16:40 hola
¿Que pasa si borramos el fichero original?
101
102. Irontec – Curso básico Linux
Enlaces duros y simbólicos
Creación de un enlace simbólico
[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
104. Irontec – Curso básico Linux
Tareas periódicas
cron
– El demonio cron permite la ejecución programada de
procesos, scripts o simples comandos.
– Cron mira cada minuto si tiene que lanzar algún proceso y
en caso afirmativo lo lanza. No se puede planificar una
ejecución de forma más precisa.
– Cada usuario tiene su tabla de planificación (crontab)
aunque también existen una tabla de planificación global
del sistema (/etc/crontab) y una serie de directorios
especiales.
104
105. Irontec – Curso básico Linux
Tareas periódicas
cron
– La sintaxis típica de los ficheros de cron consiste en 6
campos:
* * * * * [user] comando parametros
minuto: 0-59. Número, rango, intervalo o lista
(separada por comas).
hora: 0-23.
día del mes: 1-31.
mes: 1-12 o nombres.
día de la semana: 0-7 o nombres.
usuario: sólo en ficheros comentados anteriormente.
comando: el resto de la línea es el comando a
ejecutar.
– Nota: También puede haber líneas al principio con
declaración de variables y comentarios (#).
– Más info (man 5 crontab).
105
106. Irontec – Curso básico Linux
Tareas periódicas
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 día por la noche
20 3 * * * /root/scripts/backupDiario.sh
# rotación de backups cada mes
0 1 1 * * cd /root/scripts; ./rotaBackups.sh
106
107. Irontec – Curso básico Linux
Tareas periódicas
cron
– Creación o edición 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
108. Irontec – Curso básico Linux
Tareas periódicas
cron
– Directorios especiales:
/etc/cron.daily/
/etc/cron.hourly/
/etc/cron.monthly/
/etc/cron.weekly/
– Los ficheros ejecutables que metamos en esos directorios
se ejecutarán en su momento por el usuario root. NO
DEBEN SER FICHEROS DE CRON, sino scripts o programas.
108
109. Irontec – Curso básico 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
añadiendo 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
110. Irontec – Curso básico Linux
Programación Básica en Shell
Programación Básica
en Shell (Bash)
110
111. Irontec – Curso básico Linux
Shell Scripts
– Script = Guión
– Tareas repetitivas se pueden agrupar en un guión y
ejecutarse automáticamente (Batch Processing).
●
Es sencillo ejecutar 4 comandos para crear un buzón de correo.
●
No lo es tanto para crear 20.000 buzones.
●
Es sencillo hacer un bucle que se repita 20.000 veces ;-)
111
112. Irontec – Curso básico Linux
Shell Scripts
Nuestro primer shell script
– Usamos un editor y creamos el fichero hola.sh:
#!/bin/sh
echo hola
– Con #! en la primera línea indicamos quién debería
interpretar el resto de comandos (/bin/sh).
– Posteriormente escribimos los comandos separados por
saltos de línea.
112
113. Irontec – Curso básico 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
114. Irontec – Curso básico 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”.
– Ámbito de una variable:
●
Si se define una variable en una shell, sólo 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”.
114
115. Irontec – Curso básico 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
116. Irontec – Curso básico Linux
Shell Scripts
Variables: argumentos
– Es posible pasar los parámetros 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 López Martínez
– ./nombre.sh “Maria Dolores” Pradera Sánchez
– $1, $2, $3... ${10}, ${11}: argumentos
– $0 es el propio script.
116
117. Irontec – Curso básico Linux
Shell Scripts
Variables: argumentos especiales
– $#: número 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
118. Irontec – Curso básico Linux
Shell Scripts
Variables: sustitución de comandos
– Es posible almacenar en una variable el resultado de la
ejecución de un comando.
– Dos sintaxis:
●
Acentos graves: compatibilidad
LISTADO=`ls`
●
Con $(): anidable
LISTADO=$(ls)
LISTADO=$(ls $(cat directorios.txt))
118
120. Irontec – Curso básico Linux
Shell Scripts
Control del flujo de ejecución
– Condiciones: test
● test “$NOMBRE” == “Juan”(==, !=, >, <, >=, <=)
● test $DINERO -eq 1000 (-eq, -ne, -gt, -lt, -ge, -le)
● test -f /etc/passwd (-f, -d, -l, -r, -w, -x)
– Modifican el valor de $?
● cero = verdadero
● no cero = falso (¡¡AL REVÉS QUE EN C!!)
http://www.ss64.com/bash/test.html
120
121. Irontec – Curso básico Linux
Shell Scripts
Control del flujo de ejecución
– if: alternativa simple. Sintaxis:
if condición_1
then
comandos
elif condición_2
then
comandos
else
comandos
fi
121
122. Irontec – Curso básico Linux
Shell Scripts
Control del flujo de ejecución
– if. Ejemplo:
if test “$NOMBRE” == “Juan”
then
echo “Hola Juanin, ¿qué tal?”
elif test “$NOMBRE” == “Pedro”
then
echo “Pedreteee, ¡cuánto tiempo!”
else
echo “No te conozco”
fi
122
123. Irontec – Curso básico Linux
Shell Scripts
Control del flujo de ejecución
– case: cómodo para evitar alternativas anidadas. Sintaxis:
case $VARIABLE in
“VALOR1”) comandos
;;
“VALOR2”) comandos
;;
*) comandos;
esac
123
124. Irontec – Curso básico Linux
Shell Scripts
Control del flujo de ejecución
– case. Ejemplo:
case $NOMBRE in
“Juan”) echo “Hola Juanin, ¿qué tal?”
;;
“Pedro”) “Pedreteee, ¡cuánto tiempo!”
;;
*) echo “no te conozco”;
esac
124
125. Irontec – Curso básico Linux
Shell Scripts
Control del flujo de ejecución
– while. Ejecución de 0 a N veces. Sintaxis:
while condición
do
comandos
done
125
126. Irontec – Curso básico Linux
Shell Scripts
Control del flujo de ejecución
– 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
127. Irontec – Curso básico Linux
Shell Scripts
Control del flujo de ejecución
– until. Ejecución de 0 a N veces. Idéntico a while con la
condición negada. Sintaxis:
until comando
do
comandos
done
127
128. Irontec – Curso básico Linux
Shell Scripts
Control del flujo de ejecución
– until. Ejecución de 0 a N veces. Idéntico a while con la
condición negada. Sintaxis:
N=1
until [ $N -ge 100 ]
do
echo “Repito esta frase, ya voy $N veces”
N=$(expr $N + 1)
done
128
129. Irontec – Curso básico Linux
Shell Scripts
Control del flujo de ejecución
– for: ejecución repetitiva asignando a una variable de
control valores de una lista. Sintaxis:
for VARIABLE in LISTA
do
comandos
done
129
130. Irontec – Curso básico Linux
Shell Scripts
Control del flujo de ejecución
– for. Ejemplo:
for N in “Sopa” “Carne” “Pan de ajo”
do
echo “Hoy comemos $N”
done
130
131. Irontec – Curso básico Linux
Shell Scripts
Control del flujo de ejecución
– for: la LISTA define la separación de cada elemento por el
valor de la variable IFS (que por defecto vale “ tn”).
Ejemplo:
IFS=”:”
echo “Directorios en el PATH...”
for DIR in $PATH
do
echo $DIR
done
131
132. Irontec – Curso básico Linux
Shell Scripts
Control del flujo de ejecución
– for. Ejemplos numéricos:
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
133. Irontec – Curso básico Linux
Shell Scripts
Control del flujo de ejecución
– select: muestra las opciones especificadas en LISTA y
asigna a VARIABLE la opción escogida. Sintaxis:
select VARIABLE in LISTA
do
comandos
done
133
134. Irontec – Curso básico Linux
Shell Scripts
Control del flujo de ejecución
– 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 seguiría ejecutándose
indefinidamente.
134
135. Irontec – Curso básico Linux
Shell Scripts
function
– Podemos modularizar los scripts agrupando tareas en
funciones.
– Es necesario que una función esté definida ANTES de que sea
llamada.
– Dentro de una función, $1, $2, $3, etc. serán los parámetros
pasados a la función, no al script en sí.
135
137. Irontec – Curso básico Linux
Shell Scripts
source, .
– Con source o con “.” podemos incluir el código de otro
script en el nuestro:
#!/bin/sh
source funciones.sh # ahí se define suma
suma 1 3
suma 12 12312
137
138. Irontec – Curso básico Linux
EJERCICIO
● Crear un script que nos pida nombre de usuario y
contraseña.
● Una vez tengamos los datos los añadimos al fichero
/tmp/datos
● A continuación nos pregunta si deseamos continuar
insertando datos. Si la respuesta es si, volvemos a
empezar, si es no terminamos la aplicación.
138
139. Irontec – Curso básico 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 días a
las 10 de la noche.
139
140. Irontec – Curso básico 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
operación sea 82.
140
142. Irontec – Curso básico Linux
Configuración 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
143. Irontec – Curso básico Linux
Configuración de la red
Configuración manual de la red
– ifconfig: configura interfaces de red. Asigna IP, máscara,
gateway, etc.
$ ifconfig eth0 192.168.0.12 netmask 255.255.255.0 up
– route: añade rutas estáticas. Ejemplo típico:
$ 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
144. Irontec – Curso básico Linux
Configuración de la red
– IP alias: crear un interfaz de red sobre otro.
●
Una misma red física 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
145. Irontec – Curso básico Linux
Configuración de la red
Configuración manual de la red
– /etc/hosts: realiza una resolución directa de nombre a IP
sin realizar consulta DNS. Normalmente este fichero se
mira antes de preguntar al servidor DNS (sólo 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
146. Irontec – Curso básico Linux
Configuración de la red
Configuración automática de la red (DHCP)
– Configuración para el arranque: en /etc/network/interfaces
definimos la interfaz como “inet dhcp”
– Configuración manual:
●
se utiliza un cliente dhcp como dhclient o pump
# dhclient eth0
# pump -i eth0
146
147. Irontec – Curso básico Linux
Comandos básicos de administración 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 tráfico ICMP esté filtrado
por algún firewall.
147
148. Irontec – Curso básico Linux
Comandos básicos de administración de red
telnet: protocolo de terminal remoto
– Se utiliza para conectarse a una máquina remota.
$ telnet IP puerto (default 23)
– NO es un protocolo seguro (SSH sí).
– Se utiliza también 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
149. Irontec – Curso básico Linux
Comandos básicos de administración de red
netstat: muestra conexiones de red
– Comando potente que permite mostrar casi toda la
información de la configuración TCP/IP de la máquina
(man netstat).
– Ejemplos:
netstat -atup # muestra tambien procesos
netstat -a # muestra todas las conex.
netstat -a | grep LISTEN
netstat -a | grep ESTABLISHED
netstat -nrv # muestra tabla de rutas
149
150. Irontec – Curso básico Linux
Comandos avanzados administración de red
iptraf:
150
151. Irontec – Curso básico Linux
Comandos avanzados administración 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
152. Irontec – Curso básico Linux
Comandos avanzados administración de red
nmap: “escaneador de red”
●
Permite comprobar que puertos están o no abiertos.
●
Nos dice el sistema operativo y la versión 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
154. Irontec – Curso básico 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
155. Irontec – Curso básico Linux
Iptables
● Tablas y cadenas
155
159. Irontec – Curso básico 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
160. Irontec – Curso básico Linux
Iptables
● Tabla nat
– Sólo para hacer NAT (Network Address Translation).
– DNAT:
● Cambiar la IP destino.
● Ej: Redirigir entrantes a una DMZ con IP's locales.
– SNAT:
● Cambiar la IP origen a una definida (estática)
● Para dar salida a equipos LAN con IP's locales.
– Masquerade:
● Igual que SNAT con más carga de procesador.
● Cada vez chequea la IP saliente que debe asignarle.
– Ej: Router Linux con IP pública dinámica.
160
161. Irontec – Curso básico 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
162. Irontec – Curso básico Linux
Iptables
● Estado de los paquetes
– NEW: paquete nuevo.
– ESTABLISHED: comunicación ya establecida.
– RELATED: relaionada a otra comunicación ESTABLISHED.
● Para protocolos como FTP que incluyen puerto de transmisión de
datos dentro de datos de aplicación.
– Hace falta un módulo para Netfiler: ip_conntrack_ftp.
– --state
● Para comparar el estado de un paquete.
– El estado de conexiones se aplica sobre:
● TCP, UDP o ICMP.
– UPD y ICMP gracias al módulo ip_conntrack.
162
163. Irontec – Curso básico Linux
Iptables
● Estado de los paquetes (II)
– Ejemplo:
● Nuestra máquina envía un paquete a otra máquina:
– Estado de la comunicación: NEW.
– Cadena OUTPUT.
● La máquina destino nos responde con otro paquete.
– Estado de la comunicación: ESTABLISHED.
– Cadena PREROUTING.
163
164. Irontec – Curso básico Linux
Iptables
● Listar reglas actuales
– iptables -L -v
– iptables-save
● Lista las reglas en un formato válido para iptables-restore.
– iptables-save > fichero-reglas (salva las reglas a fichero)
– iptables-restore < fichero-reglas (carga reglas desde fichero)
164
165. Irontec – Curso básico Linux
Iptables
● Comando iptables
– Sintaxis para añadir una regla:
iptables [-t tabla] comando [comparación] [objetivo/salto]
– Los scripts de iptables constan de muchas líneas similares.
165
166. Irontec – Curso básico Linux
Iptables
● Comandos
-A : Añade la regla al final de la cadena.
iptables -A INPUT (añade 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 posición indicada.
-L : Lista todas las reglas (de la cadena especificada).
-F : (Flush) Elimina todas las reglas (de la cadena
especificada).
166
167. Irontec – Curso básico Linux
Iptables
● Comparaciones
– Comparaciones genéricas:
-p, --protocol : Para comprobar si es TCP, UDP o ICMP.
iptables -A INPUT -p tcp
-s, --src : Comparación 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 : Comparación 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.
● Sólo válida en INPUT, FORWARD y PREROUTING.
iptables -A INPUT -i eth0
iptables -A INPUT -i eth+ (por cualquier
eth)
-o, --out-interface : Interfaz de salida.
● Sólo válida en OUTPUT, FORWARD y POSTROUTING.
iptables -A FORWARD -o eth0
167
168. Irontec – Curso básico Linux
Iptables
● Comparaciones implícitas
– Comparaciones que se cargan implícitamente:
● TCP
● UDP
● ICMP
– Estas comparaciones se cargan con la opción -p:
iptables -p TCP (o UDP, ICMP)
168
169. Irontec – Curso básico Linux
Iptables
● Comparaciones implícitas 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
170. Irontec – Curso básico Linux
Iptables
● Comparaciones implícitas UDP
– -p upd
--sport : Igual que en TCP.
--dport : Igual que en TCP.
170
171. Irontec – Curso básico Linux
Iptables
● Comparaciones implícitas 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
172. Irontec – Curso básico Linux
Iptables
● Comparaciones explícitas
– Se deben cargan explícitamente con opción -m (--match).
--state ESTADO : Verifica el estado de la conexión.
● 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
● Más comparaciones:
– TOS, TTL, multiport...
172
173. Irontec – Curso básico Linux
Iptables
● Objetivos/Saltos
– Acción que se ejecuta sobre el paquete.
-j ACCIÓN
● 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
174. Irontec – Curso básico 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 podría ser filtrado en otra tabla
!
DROP : Deseacha un paquete.
REJECT : Rechaza un paquete (envía un ICMP informativo al
origen).
LOG : Loguea el paquete en ssylog.
DNAT : Cambiamos la IP destino.
● Sólo 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 --to-
destination 192.168.168.10:80
174
175. Irontec – Curso básico Linux
Iptables
● Objetivos (II)
SNAT : Cambiamos la IP origen.
● Sólo 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)
● Sólo 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 máquina.
● Sólo 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
176. Irontec – Curso básico Linux
Iptables
● Política por defecto
– Dos filosofías:
● 1ª: “Todo abierto y cerrar aquello que no queramos”
● 2ª: “Todo cerrado y abrir aquello que queramos”
● ¡ Mucho más segura la 2ª !
– Política por defecto en cada cadena (sólo se cumple si el
paquete no coincide con ninguna regla):
iptables -P cadena política
– Denegamos acceso a la máquina y otras máquinas:
iptables -P INPUT DROP
iptables -P FORWARD DROP
– Permitimos acceso total al exterior desde nuestra propia máquina:
iptables -P OUTPUT ACCEPT
176
177. Irontec – Curso básico Linux
Iptables
● Política por defecto (II)
– ¡ OJO con el interfaz “lo” !
● “lo” es el interfaz de localhost.
● Si ponemos:
iptables -P INPUT DROP
¡ Estamos bloqueando los accesos por red en localhost !
● Solución: Añadir:
iptables -A INPUT -p ALL -i lo -j ACCEPT
177
178. Irontec – Curso básico Linux
Iptables
● sysctl
– Para habilitar el rutado:
#> echo “1” > /proc/sys/net/ipv4/ip_forward
● Más 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
179. Irontec – Curso básico 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 módulos necesarios para nuestras reglas.
● ¡ Imprescindible el módulo ip_tables !
179
180. Irontec – Curso básico Linux
Iptables
● Ejemplo
– Aspectos comunes de los scripts:
● Borrado de las reglas aplicadas actualmente (flush)
● Aplicación de políticas por defecto para INPUT, OUPUT,
FORWARD
● Listado de reglas iptables.
180