Documentos de Académico
Documentos de Profesional
Documentos de Cultura
de la empresa.
el entorno de escritorio.
en RedHat.
2
Irontec Curso bsico Linux
Antes de nada...
GNU GPL
Software Libre Linux
Kernel
GNU/Linux
Distribucin Linux Debian
Paquete
KDE (K)Ubuntu
Gnome Emule
3
Irontec Curso bsico Linux
Introduccin
Programas informticos
Tipos de Software
Software privativo
Shareware
Freeware
Software libre
4
Irontec Curso bsico Linux
1
Introduccin
5
Irontec Curso bsico Linux
1
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.
6
Irontec Curso bsico Linux
Introduccin
7
Irontec Curso bsico Linux
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
Irontec Curso bsico Linux
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 ...
9
Irontec Curso bsico Linux
1 DistribucionesGNULinux(I)
Introduccin
Debian:ProyectofundadoporIanMurdocken1993,
proyectoconorganizacinjerrquicatotalmente
horizontal.Objetivoprincipal:competirconlas
distribucionescomercialesparapodergarantizarel
exitodeGNULinux.
Redhat:Empresafundadaen1994porMarcEwing,
ofrecesoportetcnicoprofesionalygarantasde
escalabilidad.Plataformaliderenelmercado.
10
Irontec Curso bsico Linux
1 DistribucionesGNULinux(II)
Introduccin
Mandrakesoft:Nacidaen1998,conobjetivo
principal:instalacinyusodiariosencillos.
Crecimientoespectacularen2aos(3a100
empleados).
SuSE:Proyectodeempresaaleman,iniciadoen
1993.PrimerasversionesbasadasenSlackware.En
laactualidaddistribucintotalmentepropia.Ofrecen
soporteprofesionaldecalidad,similaraldeRedHat.
11
Irontec Curso bsico Linux
1 DistribucionesGNULinux(III)
Introduccin
Slackware:DistribucindesarrolladaporPatrick
Volkerding.PrimeraversinpublicadaenAbrilde
1993.Noofrecesoportetcnicoprofesionaldirecto.
Knoppix:EselSistemaLive(ejecucindesde
CDRomsininstalacin)mspopular.Soporta
prcticamentetodoslosdispositivoshardwaredel
mercado.Muypopularcomomtododeiniciacina
GNULinux.
12
Irontec Curso bsico Linux
1 DistribucionesGNULinux(IV)
Introduccin
Ubuntu:DistribucinbasadaenDebian,centradaen
elsistemadeescritorio(aunquetambindisponede
versinservidor).Nuevaversincada6meses.
CentOS:Distribucinbasadaenelcdigofuentede
RedHat.Concadanuevaversinenterprisede
RedHat,Centosdescargaelcdigo,locompilaycrea
supropiaversin.Es100%compatibleanivelbinario
conRedHat.
13
Irontec Curso bsico Linux
1 Versiones
SubVersin:
Introduccin
Parindicaestable
Imparindica
inestable
2.4.19 2.5.3
Versin Release
Enlaprctica,sedenomina
versinatodoelconjunto.
14
Irontec Curso bsico Linux
1 Introduccin
Situacin de GNU/Linux
15
Irontec Curso bsico Linux
1 SituacinrealdeGNULinux
Introduccin
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
1 SituacinrealdeGNULinuxenelpanorama
Introduccin
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
1 SituacinrealdeGNULinuxenelpanorama
Introduccin
empresarial:Desarrolloysistemas
Desarrollo(web):Lapuntadelalanzaresideen
solucionesLAMP(LinuxApacheMySQL,PHP):
Pros:Rapidez,seguridad,integracincon
prcticamentetodoslosprotocolosycomunidadde
desarrolladoresmuyactiva(numerosaslibrerasy
cdigoreutilizable).
Contras:IntegracinconsolucionesMSWindows
18
Irontec Curso bsico Linux
1 SituacinrealdeGNULinuxenelpanorama
Introduccin
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
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
22
Irontec Curso bsico Linux
Instalacin de CentOS
23
Irontec Curso bsico Linux
Instalacin de CentOS
Seleccin de idioma.
24
Irontec Curso bsico Linux
Instalacin de CentOS
25
Irontec Curso bsico Linux
Instalacin de CentOS
26
Irontec Curso bsico Linux
Instalacin de CentOS
27
Irontec Curso bsico Linux
Instalacin de CentOS
Sistemas de ficheros
VFAT
Ext2
Ext3
RaiserFS
XFS
y muchos otros...
28
Irontec Curso bsico Linux
29
Irontec Curso bsico Linux
30
Irontec Curso bsico Linux
31
Irontec Curso bsico Linux
Instalacin de CentOS
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
35
Irontec Curso bsico Linux
Instalacin de CentOS
36
Irontec Curso bsico Linux
Instalacin de CentOS
37
Irontec Curso bsico Linux
Instalacin de CentOS
38
Irontec Curso bsico Linux
Instalacin de CentOS
39
Irontec Curso bsico Linux
Instalacin de CentOS
40
Irontec Curso bsico Linux
Instalacin de CentOS
41
Irontec Curso bsico Linux
Instalacin de CentOS
42
Irontec Curso bsico Linux
Instalacin de CentOS
43
Irontec Curso bsico Linux
Configuracin inicial
44
Irontec Curso bsico Linux
EJERCICIO
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
48
Irontec Curso bsico Linux
Comandos bsicos
linux:~$ pwd
linux:~$ cd ../../etc
49
Irontec Curso bsico Linux
Comandos en GNU/Linux
linux:~$ whereis cd
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
52
Irontec Curso bsico Linux
EJERCICIO
53
Irontec Curso bsico Linux
Caracteres especiales
*: sustituye una cantidad cualquiera de caracteres
?: sustituye exactamente un carcter
[]: sustituye un carcter de los indicados
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
Imaginmonos una refinera:
Metes crudo por 0 (STDIN), consigues gasolina por 1
(STDOUT) y bastantes residuos por el desage 2 (STDERR).
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
58
Irontec Curso bsico Linux
EJERCICIO
59
Irontec Curso bsico Linux
Comandos en GNU/Linux
60
Irontec Curso bsico Linux
Comandos en GNU/Linux
61
Irontec Curso bsico Linux
EJERCICIO
62
Irontec Curso bsico Linux
Comandos en GNU/Linux
linux:~$ history
linux:~$ wc -l /etc/passwd
63
Irontec Curso bsico Linux
EJERCICIO
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
66
Irontec Curso bsico Linux
Comandos bsicos
67
Irontec Curso bsico Linux
EJERCICIO
68
Irontec Curso bsico Linux
Comandos bsicos
69
Irontec Curso bsico Linux
EJERCICIO
70
Irontec Curso bsico Linux
Compresores
71
Irontec Curso bsico Linux
Administracin de usuarios
Administracin de usuarios
72
Irontec Curso bsico Linux
73
Irontec Curso bsico Linux
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
linux:~$ adduser alumno
75
Irontec Curso bsico Linux
76
Irontec Curso bsico Linux
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:~$ 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
78
Irontec Curso bsico Linux
Administracin de permisos
79
Irontec Curso bsico Linux
Administracin de permisos
80
Irontec Curso bsico Linux
Administracin de permisos
81
Irontec Curso bsico Linux
EJERCICIO
82
Irontec Curso bsico Linux
EJERCICIO
83
Irontec Curso bsico Linux
EJERCICIO
84
Irontec Curso bsico Linux
EJERCICIO
85
Irontec Curso bsico Linux
EJERCICIO
86
Irontec Curso bsico Linux
Montaje de dispositivos
Montaje de dispositivos
87
Irontec Curso bsico Linux
Montaje de dispositivos
88
Irontec Curso bsico Linux
Montaje de dispositivos
89
Irontec Curso bsico Linux
Montaje de dispositivos
90
Irontec Curso bsico 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
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
Desmonta un dispositivo:
umount /dev/dispositivo
umount punto_de_montaje
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
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
96
Irontec Curso bsico Linux
Editor VI
http://www.infor.uva.es/~arturo/Asig/EstSO/manvi.pdf
97
Irontec Curso bsico Linux
98
Irontec Curso bsico Linux
Enlaces
99
Irontec Curso bsico Linux
100
Irontec Curso bsico Linux
101
Irontec Curso bsico Linux
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
Tareas peridicas
cron
Ejemplo de cron de un usuario (root):
PATH=$PATH:/usr/bin:/usr/local/bin
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)
107
Irontec Curso bsico Linux
Tareas peridicas
cron
Directorios especiales:
/etc/cron.daily/
/etc/cron.hourly/
/etc/cron.monthly/
/etc/cron.weekly/
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 (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
#!/bin/sh
echo hola
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
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.
mbito de una variable:
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.
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
116
Irontec Curso bsico Linux
Shell Scripts
117
Irontec Curso bsico Linux
Shell Scripts
Con $(): anidable
LISTADO=$(ls)
LISTADO=$(ls $(cat directorios.txt))
118
Irontec Curso bsico Linux
Shell Scripts
119
Irontec Curso bsico Linux
Shell Scripts
http://www.ss64.com/bash/test.html
120
Irontec Curso bsico Linux
Shell Scripts
if condicin_1
then
comandos
elif condicin_2
then
comandos
else
comandos
fi
121
Irontec Curso bsico Linux
Shell Scripts
122
Irontec Curso bsico Linux
Shell Scripts
case $VARIABLE in
VALOR1) comandos
;;
VALOR2) comandos
;;
*) comandos;
esac
123
Irontec Curso bsico Linux
Shell Scripts
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
while condicin
do
comandos
done
125
Irontec Curso bsico Linux
Shell Scripts
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
until comando
do
comandos
done
127
Irontec Curso bsico Linux
Shell Scripts
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
129
Irontec Curso bsico Linux
Shell Scripts
130
Irontec Curso bsico Linux
Shell Scripts
IFS=:
echo Directorios en el PATH...
for DIR in $PATH
do
echo $DIR
done
131
Irontec Curso bsico Linux
Shell Scripts
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
133
Irontec Curso bsico Linux
Shell Scripts
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
138
Irontec Curso bsico Linux
EJERCICIO
139
Irontec Curso bsico Linux
EJERCICIO
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:
142
Irontec Curso bsico Linux
Configuracin de la red
nameserver 195.235.113.3
143
Irontec Curso bsico Linux
Configuracin de la red
$ 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
145
Irontec Curso bsico Linux
Configuracin de la red
# dhclient eth0
# pump -i eth0
146
Irontec Curso bsico Linux
$ 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!
147
Irontec Curso bsico Linux
$ telnet www.euskalnet.net 80
Connected to eui3h.euskaltel.es.
Escape character is '^]'.
148
Irontec Curso bsico Linux
149
Irontec Curso bsico Linux
iptraf:
150
Irontec Curso bsico Linux
151
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
156
Irontec Curso bsico Linux
Iptables
157
Irontec Curso bsico Linux
Iptables
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.
SNAT:
Cambiar la IP origen a una definida (esttica)
Para dar salida a equipos LAN con IP's locales.
Masquerade:
Igual que SNAT con ms carga de procesador.
Cada vez chequea la IP saliente que debe asignarle.
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.
El estado de conexiones se aplica sobre:
TCP, UDP o ICMP.
UPD y ICMP gracias al mdulo ip_conntrack.
162
Irontec Curso bsico Linux
Iptables
163
Irontec Curso bsico Linux
Iptables
164
Irontec Curso bsico Linux
Iptables
Comando iptables
Sintaxis para aadir una regla:
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.
iptables -A INPUT -i eth0
iptables -A INPUT -i eth+ (por cualquier
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
Estas comparaciones se cargan con la opcin -p:
iptables -p TCP (o UDP, ICMP)
168
Irontec Curso bsico Linux
Iptables
169
Irontec Curso bsico Linux
Iptables
170
Irontec Curso bsico Linux
Iptables
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
!
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
175
Irontec Curso bsico Linux
Iptables
176
Irontec Curso bsico Linux
Iptables
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
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
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
185
Irontec Curso bsico Linux
Paquetes de software
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
188
Irontec Curso bsico Linux
Paquetes de software
189
Irontec Curso bsico Linux
Servicios y Niveles
de Ejecucin
190
Irontec Curso bsico Linux
Proceso 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) # disco maestro IDE primario
(fd0) # disquetera
(hd0,1) # particin 2 del maestro IDE
0
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 0
timeout 3
194
Irontec Curso bsico Linux
Niveles de Ejecucin
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 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
z6:6:respawn:/sbin/sulogin
# CTRL-ALT-DEL!
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
197
Irontec Curso bsico Linux
198
Irontec Curso bsico Linux
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