CEC-EPN - TCPIP sobre Linux

Anuncio
Bienvenidos a:
TCP-IP SOBRE LINUX
ING.SEGUNDO FEDERICO AREVALO CALDERON
PROTOCOLO TCP-IP SOBRE LINUX
Objetivos del Modulo
Después de completar este módulo los participantes deberán ser capaces de:
Enumerar y describir los principales protocolos
incluidos en el protocolo TCP / IP
Describir el modelo de capas TCP / IP
Discutir las principales características de los
principales protocolos TCP / IP.
Describir el direccionamiento IP
Qué es TCP/IP
Protocolo de control de transmisión / Protocolo
de Internet
Conjunto de protocolos que trabajan juntos
TCP, IP, UDP, ARP, ICMP, PPP, ...
Los estándares abiertos
Permite la comunicación entre sistemas
heterogéneos
Soporta diferentes tipos de redes físicas
HISTORIA
1960s
1970s
Agencia Principal de financiamiento de DARPA
ARPANET punto a punto de interconexion de lineas arrendadas
1980
1983
1980s
1980s
1990s
Internet establecida, ARPANET como backbone
TCP/IP en el uso obligatorio ARPANET
BSD UNIX incorporada TCP/IP
TCP/IP disponible en casi todos los sistemas informáticos
TCP/IP se convierte en el protocolo de elección para la mayoría de las organizaciones, el
crecimiento explosivo de Internet.
Peticiones de Comentarios (RFC)
¿Qué significa RFC?
¿Quién escribe estas RFC?
¿Cuáles son las RFC interesantes?
¿Cómo se pueden obtener?
http://bit.ly/13RhIE1
http://www.rfc-editor.org
Capas TCP/IP
Las aplicaciones como NFS, NIS, correo, DNS
UDP
Entrega no fiable para corregir
programa
TCP
Entrega fiable para corregir el
programa
IP
Suministro fiable de paquetes de sistema correcto
WAN
(Conexiones de módem, líneas de
arrendamiento, ...)
LAN
(Ethernet, Token Ring, ...)
Arquitectura de Red que soporta Linux
Redes de Área Amplia
- Conexiones Serial/modem/ISDN
- Protocolo CCITT X.25 (en desarrollo)
- ATM (en desarrollo)
- Frame Relay (dlci o sdla)
Redes de Área Local
- Ethernet (eth)
- Token Ring (tr)
- FDDI (fddi)
- ARCnet (arc)
- WiFi (eth)
Varios
- Loopback (lo)
- AX.25 (sl or ax)
LAN y el Protocolo ARP
La mayoría de las LAN se transmiten las redes en el nivel
más bajo
- Todo el mundo recibe lo que usted está enviando
Para identificar el receptor, se utiliza una dirección MAC
- 48 bits, únicos para el adaptador de red
- Notación: 02:60:8 C: 2E: 9B: CA
- Dirección Especial MAC FF: FF: FF: FF: FF: FF se utiliza
para las transmisiones
El protocolo ARP se usa para determinar la dirección MAC
de su partido
- Broadcast dirección IP de destino a cualquiera
- Sólo el destino responde con su dirección MAC
ARP se invoca automáticamente por IP si la dirección MAC
de destino No se conoce
- En caché en la tabla ARP
- Ver tabla con arp -a
WANs y el SLIP y Protocolos PPP
Para transmitir paquetes IP, se necesita una
técnica de encapsulación
SLIP:
- Técnica de encapsulación de IP única
PPP:
- Técnica de encapsulación para múltiples
protocolos (IP, IPX, DECnet,
...)
- Autenticación
- Negociación y configuración de conexión
Protocolo IP
Protocolo de entrega de paquetes:
- Mejor esfuerzo – Sin garantías
- Next-hop den enrutamiento de host de
destino basándome en la dirección IP
Características Adicionales
- Fragmentación y reensamblado de
paquetes si el paquete demasiado grande
para infraestructura.
- Indicación de prioridad.
- Capacidad de Difusión.
Dirección de Internet
Cada host en una red IP necesita una dirección
IP
- 32 bits
- Debe ser único
Las direcciones IP se escriben normalmente en
notación decimal de puntos:
Binario
10000001 00100001 10010111 00000111
Decimal-dot
129
.
33
.
151
.
7
Asignación de direcciones IP
Las direcciones IP asignadas en grupos ("clases") por parte
de la IANA (Internet Assigned Numbers Authority) a través
de los ISP
- Todas las direcciones en una clase tienen los
primeros n bits en común
Una clase se puede dividir para asignar a las redes
- Todos los hosts de una red tienen la primera n + m en
común
- Por lo tanto, los primeros n + m bits que identifican la
red
- Los últimos restos de 32-n-m identifican el host de la red
Ejemplo:
SERVICIOS DE RED EN LINUX
INTRODUCCIÓN
En este capítulo recorreremos los pasos necesarios para configurar el protocolo TCP/IP en una máquina:
- Asignación de direcciones IP a interfaces
o Estática
o Dinámica
- Ficheros implicados en configuración
TCP/IP
- Herramientas útiles a la hora de resolver
problemas relacionados con la red
NOMBRE DE LA MAQUINA
/etc/hostname
- Durante el arranque del S.O. se establece el
nombre de la máquina al ejecutarse el
comando hostname.
hostname nombre
- El archivo /etc/hostname contiene el nombre
del equipo que adopta el S.O. al iniciar el
equipo
- Los nombres de las máquinas pueden ser con
cualificación completa, o relativos al
dominio local.
web.dominio.local ftp.dominio.local --> Son
nombres
de
dominio
completamente
cualificados (FQDN)
web o ftp --> Son nombres locales de una
máquina, el primer componente del nombre.
Ficheros para la Resolución DNS
- El fichero host.conf indica el orden de las
fuentes que utilizará el resolver del S.O. para
obtener las resoluciones DNS que necesiten
las aplicaciones del equipo. Tiene dos
opciones:
Buscarlas dentro --> Fichero /etc/hosts.
Buscarlas fuera --> Fichero /etc/resolv.conf
host.conf
hosts
resolv.conf
Archivo /etc/host.conf
RESOLUCION DNS
- El fichero /etc/host.conf indica al sistema de
resolución qué servicios debe usar y en qué
orden.
- Las opciones del fichero host.conf deben
estar en líneas distintas. Los campos deben
separarse por blancos (espacios o
tabuladores).
- La opción order determina el orden en el que
los servicios de resolución se prueba en
primer lugar para intentar resolver el nombre.
# /etc/host.conf
# Tenemos servidor de nombres, pero no NIS.
order bin hosts
# Permitir direcciones múltiples
multi on
# Contra los nombresfalsos
Nospoof on
bin – para usar el servidor de nombres,
hosts – para buscar en /etc/hosts
nis – para buscar con NIS
Archivo /etc/host
RESOLUCION DNS
-
-
El fichero /etc/hosts representa un mecanismo simple de
resolución de nombres
Contiene un registro por línea, consistente en una
dirección IP, un nombre de máquina y de forma opcional,
una lista de alias para esa máquina.
Los campos se separan por tabuladores o espacios y el
campo con la @ IP debe empezar en la primera columna
# archivo /etc/hosts
#
# IP FQDN
aliases
#
# definición del bucle local
127.0.0.1
localhost
#
172.16.1.1
web.domaina.local
172.16.1.2
gate.dominio.local
#
172.16.1.1
mail.dominio.local
172.16.1.2
host.dominio.local
web
gate
mail
host
Tanto el nombre con cualificación completa (oficial) como
le nombre local se deben registrar en el fichero /etc/hosts,
para ser referidos al resolver su dirección IP
Archivo /etc/resolv.conf
RESOLUCION DNS
El fichero /etc/resolv.conf contiene las
direcciones IP de las máquinas que pueden
ofrecer servicios DNS a nuestro host.
La instrucción nameserver apunta a servidores
DNS que pueden utilizar el host para realizar
sus resoluciones.
search example.org
nameserver 192.168.1.4
nameserver 194.179.1.100
Archivo /etc/networks
- Del mismo modo que con las direcciones IP,
a veces también interesarle usar nombres
simbólicos para los números de red.
- Con este objetivo, el fichero /etc/hosts tiene
un compañero llamado /etc/networks, que
asocia nombres de red con los números
correspondientes y viceversa
# archivo /etc/network
dominioA-net 172.16.1.0
dominioB-net 172.16.2.0
# symbolic names for networks, see networks (5) for more
information link-local 169.254.0.0
Configuración Interfaz en Red
Ifconfig
Route
Comandos utilizados para configurar las
interfaces de red e iniciarla la tabla de
encaminamiento.
ifconfig – Permite asignar una @ IP y otros
parámetros a una interfase, así como su
actividad. Por activación nos referimos a
permitir que el núcleo envíe y reciba
datagramas IP a través de la interfaz.
route -- Permite añadir o quitar rutas de la tabla
de encaminamiento del núcleo.
Interficie de Bluce Local
(LOOPBACK)
El dispositivo de red loopback es una interficie
de red virtual que siempre representa al propio
dispositivo independientemente de la dirección
IP que se le haya asignado. Su IP es 127.0.0.1.
Se utiliza en tareas de diagnóstico de
conectividad y validez del protocolo de
comunicación, así como para indicar que el
destino del puntero o URL es el mismo host
Ejecutamos ifconfig lo
No es necesario configurar la interface, yaviene
por defecto
Ifconfig lo 127.0.0.1
Route add 127.0.0.1
Interfaces Internet
- En Linux las interfaces Ethernet se designan
con nombres res como eth0, eth1, eth2, ...
- La configuración de una interfaz Ethernet es
más o menos igual que la de la interfaz de
bucle local
Ejecutamos:
ifconfig
eth2
192.168.1.1
netmask
255.255.255.0
y luego ifconfig eth2
- Puede observarse que ifconfig ha
configurado la dirección de difusión
automáticamente (el campo Bcast de arriba)
a su valor usual, que es el de la red con todos
los bits de la máquina activados
Interfaces Internet
- La instrucción ifconfig de forma automática
introduce una entrada en la tabla de
encaminamiento que informa al núcleo de
que la red es accesible mediante eth0
Ejecutamos:
route –n
Nos lista la tabla de rutas IP del núcleo.
Encaminamiento a través de una pasarela
Para hacer saber a la máquina Linux como
alcanzar otras redes, se utiliza el concepto de
pasarelas o máquinas de enlace.
Estas pasarelas pueden unir dos o más
Ethernets, pero también pueden enlazar con el
exterior (Internet)
Desde la máquina web (perteneciente a
dominioa) queremos saber llegar al dominiob a
través de una pasarela, el equipo gate.
web$ route add dominiob gw gate
Añade un registro a la tabla de routing de la
máquina web para que pueda acceder a todas los
no dos de la red del dominiob a través de la
pasarela gate. Dominiob y gate debe de estar
incluidos en los ficheros /etc/hosts y
/etc/networks
Encaminamiento a través de una pasarela
Pasarelela por defecto
- Si el equipo gate también tiene una conexión
a Internet, ¿cómo podríamos acceder desde el
host web?
- Convirtiendo el equipo gate en la pasarela
por defecto del equipo web:
route add default gw gate
route add –net 0.0.0.0 netmask 0.0.0.0 gw gate
- El nombre de red default es una abreviatura
que representa la red 0.0.0.0, o ruta por
omisión. La ruta por omisión analiza cada
destino,y es la que será usada si no se
encuentra ninguna ruta más específica
Alias de IP
Los IP Alias permite configurar múltiples
direcciones IP (varios alias) en un sólo
dispositivo físico.
La configuración de un alias de IP es idéntica a
la de un dispositivo de red real. Se señalan
anteponiendo “:n” al dispositivo actual de red,
donde “n” es un entero.
ifconfig lo:0 172.16.1.1 – Crea un alias
numerado como 0 para la interfaz de bucle local
con la dirección 172.16.1.1.
Cada alias debe ser tratado como si fuera un
dispositivo diferente, y en lo referente al
software de IP del núcleo, así es; por más que
esté compartiendo su hardware con otro
interfaz.
Comandos de Configuración Red
hostname
Sintaxis: hostname [hostname]
Si no se especifica ningún nombre de equipo la
orden proporciona el
nombre del equipo. Si se especi fica el nombre
del equipo en hostname la orden cambia el
nombre local de la máquina.
host
Sintaxis: host hostname | IP_adress
Interroga el sistema para obtener la dirección IP
del equipo especificado en hostname o el
nombre del equipo que tiene una IP especificada
en IP_adress
dig
Sintaxis: dig hostname
La orden dig proporciona información de los
servidores DNS que gestionan el nombre de
dominio especificado en hostname.
Comandos de Configuración de Red
ifconfig
Sintaxis:
ifconfig interface parameters
La orden ifconfig permite crear y configurar las interfases de
red.
Si no se indican parámetros la orden muestra la configuración
de la interfase especificada. Si tampoco se indica la interfase
la orden muestra la configuración de todos las interfases de
red del sistema.
Parámetros:
Dirección – Configura la dirección IP de la interfase de red
especificada.
netmask mascara – Configura la mascara de red de la interfase
de red especificada.
broadcast – Dirección Configura la dirección IP de broadcast.
up/down Activa/desactiva la interfase de red especificada.
Comandos de Configuración de Red
Ifconfig:
Muestra
la
información
de
configuración de todas las interfases de red del
sistema.
ifconfig eth0 down: Desactiva la interfase de
red eth0
ifconfig eth0: Comprueba el estado de la
interfase eth0
ifconfig interfase dirección-ip: Configuración
básica interficie. Asigna dirección ip y la
activa. Los otros parámetros toman valores
asignados por omisión. Por ejemplo, la máscara
de subred por
defecto toma el valor
correspondiente al tipo de red al que
pertenece la dirección IP. Así, tendríamos
255.255.0.0 para una dirección de clase B.
ifconfig
eth0
100.200.26.1
netmask
255.255.255.0 broadcast
100.200.26.255: Configura la interfase de red
desde cero.
Comandos de Configuracion de Red
route
Sintaxis: route options
route [add|del] [-net|-host] destino
Permite mostrar la tabla de encaminamiento IP
del sistema. También permite añadir o eliminar
una entrada en la tabla de encaminamiento.
target puede ser una dirección IP numérica o un
nombre de equipo o el nombre default. La
orden route permite establecer las rutas de
encaminamiento estáticas de la red.
Opciones y Parámetros:
–net Especifica que el target especificado es una
red.
–host Especifica que el target especificado es un
equipo.
Comandos de Configuración de Red
Ejemplos route:
route –n Imprime la tabla de encaminamiento
del núcleo completa
si se ejecuta sin
argumentos (la opción –n hace que utilice la
notación de cuaternas en vez de los nombres de
las máquinas)
route add –net 192.168.1.0 gw 192.168.1.2
Agrega una ruta hacia una red a través de un
gateway (@ IP de la interficie next hop)
route add- host 192.168.1.250 dev eth0 Suma
una ruta hacia una máquina concreta a través de
una interficie local.
route add dominioa Suma una ruta a la tabla
de routing usando los nombres definidos en el
fichero /etc/networks. Esta forma evita escribir
el indicador –net, porque route sabe que se trata
de una red
Comandos de Configuración de Red
netstat
Sintaxis: netstat options
En función de la opción la orden netstat muestra
las interfases de red, los PID asociados a cada
interfase,…
Opciones:
-c Operación continua. Renueva la información
cada segundo hasta
que se cancela la orden mediante ctrl-c.
-i Muestra una lista con todos los interfase de
red.
-p Muestra una lista de los PID.
-r Muestra la información de la tabla de
encaminamiento.
–t Muestra las conexiones activas a puertos
TCP.
-u Muestra las conexiones activas a puertos
UDP. Si se incluye “a”
Comandos de Configuración de Red
ping
Sintaxis: ping hostname
La orden ping envía una petición de eco del
protocolo ICMP al equipo especificado en
hostname y muestra el tiempo transcurrido hasta
recibir la confirmación del eco. La opción por
defecto envía mensajes indefinidamente hasta
que se cancela la orden mediante ctrl-c.
Opciones:
-c n Se enviarán n mensajes. Al finalizar los
mensajes especificados se muestra la estadística
de los resultados.
Ejemplo:
ping –c 1 100.200.21.101
Comandos de Configuración de Red
Traceroute
Sintaxis: traceroute hostname
Muestra la ruta que los paquetes siguen hasta alcanzar la
destinación, mostrando todos las gateways y routes del
camino.
Archivo de Configuración de la Red
ARCHIVO /etc/network/interfaces
Contiene la información necesaria para configurar las
interficies de red del host al arrancar el sistema. También
permite establecer las rutas estáticas hacia otras redes
Archivo de Configuración de la Red
Para reiniciar la red TCP/IP del host:
/etc/init.d/networking restart
Configuración de Red Linux
Paso 1. ¿Qué orden permite mostrar la configuración y el
estado de todas las interfases de red de la máquina? Indicar
la dirección IP y la mascara de red de cada uno de las
interfases que dispone lamáquina.
Paso 2. ¿Qué orden permite mostrar el estado de la interficie
de la tarjeta utilizada para conectar el equipo a la red?
Copiar el resultado de la orden en la práctica.
Paso 3. Deshabilitar la interficie de la tarjeta de red anterior.
Paso 4. Configurar la dirección IP de la interficie de red
operativa del equipo Linux a 172.16.aula.1equipo
Paso 5. Modificar la dirección IP de la interficie operativa
de 172.16.aula.1equipo a 100.210.aula.1equipo.
Paso 6. Realizar un ping a la dirección ip de la pregunta
anterior. Enviar únicamente 4 paquetes.
Configuración de Red en Linux
Paso 7. Listar todos los comandos necesarios para configurar
la ruta estática de enrutamiento del pc linux del siguiente
esquema de tal manera que tenga acceso a toda la red. Listar
la tabla de enrutamiento final.
Configuración de Red en Linux
Paso 8. Cambiar el nombre de la máquina de
forma cuando se inicie el sistema. ¿Qué dichero
se debe de modificar?
Paso 9. Cambiar la dirección IP de la interficie
de red a 192.168.1.10, a través del fichero de
red (etc/network/interfaces)
Paso 10. Modificar la configuración del sistema
para añadir un gateway por defecto con
dirección IP 192.168.1.1. Indicar qué archivo es
necesario modificar y la sintaxis empleada.
Paso 11. Reinicializar la red del equipo
mediante comando.
SERVICIOS DE FILTROS DE PAQUETES
Qué es un Firewall?
- Un firewall también es conocido como muro
de fuego, este funciona entre las redes
conectadas permitiendo o denegando las
comunicaciones entre dichas redes. También
un firewall es considerado un filtro que
controla el tráfico de varios protocolos como
TCP/UDP/ICMP que pasan por el para
permitir o denegar algún servicio, el firewall
examina la petición y dependiendo de este lo
puede bloquear o permitirle el acceso Un
firewall puede ser un dispositivo de tipo
Hardware o software que de instala entre la
conexión a Internet y las redes conectadas en
el lugar
DMZ
- Un firewall con configuración DMZ indica
que va tener una zona Desmilitarizada o red
perimetral, es una red local en la cual se
encuentra dentro de una organización. Para
poder ser una zona tipo DMZ deben ver
servidores ofreciendo servicios de WWW,
FTP, DNS, Samba, etc, esto permite ofrecer
servicios de una red local hacia el exterior.
Dentro de esta zona se podrá tener acceso
desde la red local e internet y firewall
controlara los accesos a los servicios que se
encuentren alojados dentro de la DMZ
Firewall GNU/Linux
En GNU/Linux existe gran variedad de
herramientas que nos permite controlar nuestro
firewall desde un servidor que esté conectado a
internet y a la red local. Esta herramientas son:
Ipchains: Esta herramienta ya quedo en el
olvido ya que se usaba para kernel 2.4. Iptables:
Esta herramienta es la que se está ocupando
actualmente y apareció a partir del kernel 2.4 y
2.6 en adelante. Con Iptables crea las reglas más
rápidas y sencillas que ipchains. Shorewall: Es
una herramienta muy flexible, rápida y sencilla
que permite crear reglas iptables, en shorewall
se configuran varios archivos para poder
controlar el firewall de nuestra red. ufw: Esta es
un herramienta que nos permite crear reglas
iptables de una forma demasiado sencilla dentro
de distribuciones debian, ubuntu y derivados.
Protocolo de Internet
Conceptos Iptables
Antes de poder administrar nuestro firewall tendremos que saber para qué nos sirve cada de una de las tablas que usa iptables para sus reglas. Cuando nosotros
enviamos un paquete o una solicitud de servicio este pasa por 3tipos de tablas que debemos conocer.
Tablas. NAT
Esta tabla que debe ser usada cuando se desea hacer los
paquetes sean enrutados a una máquina cliente dentro de
una red local o DMZ, pero también podremos enmascarar
un red local y tener salida hacia internet. Dentro de esta
tabla tenemos las siguientes opciones:
•
•
•
DNAT: Este parámetro se emplea cuando tenemos
casos en donde se tiene un IP Publica y el servicio se
encuentra dentro de la red local o DMZ y el firewall
el encargado de redirigir esta petición a la máquina
en donde se encuentre el servicio.
SNAT: Esta opción se ocupa cuando queremos
esconder nuestra IP de red local o DMZ,
cambiándola dentro del firewall con la IP Publica del
servidor.
MASQUERADE: Hace lo mismo que SNAT, pero
MASQUERADE automáticamente convierte nuestra
IP de la red local o DMZ a IP publica y se
recomienda tener esta configuración cuando en
nuestra red asignamos IP de forma DHCP.
Tablas. Magle
Esta tabla se usa principalmente para modificar paquetes.
Dentro de esta tabla tenemos las siguientes opciones:
•
•
•
TOS: Es usado para definir o cambiar el tipo de
servicio de un paquete que puede ser usado para
configurar políticas en la red considerando a ser
enrutados los paquetes, no lo uses para paquetes que
vayan hacia internet.
TTL: Es usado para cambiar el campo tiempo de
vida de un paquete y con ello conseguir un TTL
especifico.
MARK: Se usa para marca los paquetes con valores
especifico, con estas marcas podremos limitar el
ancho de banda y generar colas
Tablas. FILTER
Esta tabla principal para el filtrado de paquetes que
podemos comparar y filtar paquetes dentro del firewall.
Dentro de esta tabla tenemos las siguientes opciones:
•
•
•
INPUT: Paquetes de entrada hacia nuestro firewall.
FORWARD: Paquetes enrutados por medio del
firewall a otra máquina.
OUTPUT: Paquetes de salida de nuestro firewall.
Estados.
Los estados en realidad son los seguimientos de conexiones
dentro del firewall. Para esto tenemos las siguiente
opciones:
•
•
•
•
ESTABLISHED: El paquete seleccionado se asocia
con otros paquetes en una conexión establecida.
INVALID: El paquete seleccionado no puede ser
asociado hacia ninguna conexion conocida.
NEW: El paquete seleccionado esta creando una
nueva conexión o bien forma parte de una conexión
de dos caminos.
RELATED: El paquete seleccionado esta iniciando
una nueva conexión en algún punto de la conexión
existente.
Podemos tomar decisiones a partir del estado del paquete
por medio del modulo state con el parametro “-m state”, se
refiere a la posibilidad de mantener información sobre el
estado de la conexión en memoria. El seguimiento de
conexiones se realiza en cadenas PREROUTING y
OUTPUT, el numero máximo de conexiones esta guardada
en /proc/sys/net/ipv4/ip_conntrack_max.
Protocolos.
Todos los servicios manejan protocolos para su
comunicaciones, por lo cual iptables podremos administrar
servicios dentro de los protocolos:
•
•
•
TCP: Protocolo de Control de Transmisión, este
protocolo es mas utilizado por los servicios ofrecidos
por algún servidor.
UDP: Protocolo de Datagrama de Usuario, sirve
para el envía de datagrama pero debe existir una
conexión establecida.
ICMP: Protocolo de Mensajes de Control y Error de
Internet, este protocolo solamente lo utilizamos
cuando hacemos envío de paquetes de un máquina a
otra, en resumen es un ping.
Para poder ocupar estos protocolos podremos ocupar el
parámetro -p.
Objetivos
Cuando nosotros creamos una regla iptables tenemos varias
acciones básicas en las cuales podremos indicar al firewall
que hacer con ellas. Estas acciones son:
•
•
•
•
•
•
ACCEPT: Acepta los paquete que pase por el
firewall.
DROP: Deniega los paquete que pase por el
firewall, cortando la comunicación.
REJECT: Funciona básicamente igual que el
objetivo DROP, aunque en este caso se devuelve un
mensaje de error al host que envío el paquete
bloqueado.
REDIRECT: Sirve para redirigir paquetes y flujos
hacia una máquina de la red local o DMZ. También
sirve para redirigir peticiones entre puerto del mismo
firewall para la activación de servicios.
MASQUERADE: Hace lo mismo que SNAT, pero
MASQUERADE automáticamente convierte nuestra
IP de la red local o DMZ a IP publica y se
recomienda tener esta configuración cuando en
nuestra red asignamos IP de forma DHCP.
LOG: Este objetivo funciona para registrar
información detallada sobre los paquetes que pasan
por el firewall.
Comando Iptables
Hasta este momento solamente sabemos sobre los conceptos de iptables pero ahora aprenderemos la estructura de la creación de la reglas de iptables y con parámetros
que podemos utilizar. El comando iptables contiene las siguientes opciones
Opción
Descripción
-A
Agrega una cadena iptables al firewall.
-C
Verifica una cadena antes de añadirla al firewall.
-D
Borra una cadena de iptables en el firewall
-E
Renombra una cadena de iptables.
-F
Libera o limpia de cadena en el firewall.
Inserta una cadena en una cadena en un punto
-I
especificado por un valor entero definido por el
usuario.
Lista todas las cadena de iptables aplicadas en el
-L
firewall.
Crea una nueva cadena con un nombre
-N
especificando por el usuario.
Configura la política por defecto en una cadena en
-P
particular y puede ser ACCEPT o DROP.
Reemplaza una regla en una cadena en particular,
-R
se debe especificar el numero de regla.
Borra cadenas especificada por el usuario, no se
-X
permiten borrar cadenas no creada por el usuario.
Pone en ceros los contadores de bytes y de
-Z
paquetes.
Comando Iptables. Parámetros
El comando iptables tiene varios parámetros que debemos conocer antes de ver su nomenclatura ya que estos parámetros nos sirve para indicar alguna propiedad a
nuestra regla creada dentro de firewall. Entonces revisemos los siguientes paramentas de iptables.
Parámetros
-d
-i
-j
-o
-p
-s
Descripción
Especifica IP destino, se ocupa para el
redireccionamiento de servicio dentro de la red
local o DMZ.
Especificamos una interfaces de entrada. Se
pueden especificar las conexiones que vienen
de internet, red local o DMZ
Especifica la acción a realizar.
Indica una interfaz de salida. Se ocupa
solamente para conexiones de la red local o
DMZ
Especificamos el tipo de protocolo a utilizar en
los paquetes.
Especificamos la dirección origen del envío de
paquetes.
--dport
Puerto de entrada o destino de algun servicio.
--sport
Puerto de salida de algún recurso, utilizado
dentro de la red local y DMZ
--to
IP destino del servicio.
Ejemplo
-d 192.168.10.5
-d 10.0.2.25
-i eth0
-i ppp0
-j ACCEPT
-j DROP
-o eth1
-o ppp0
-p tcp
-p udp
-s 192.168.1.0/24
-s 0.0.0.0/0
--dport 22
--dport 80
--sport 1863
--sport 2845
--to
192.168.1.10:80
Comando Iptables. Nomenclatura
Ahora aprenderemos la nomenclatura.
iptables -A [Filtro] [parametros de la regla]
[objetivo]
Comenzaremos a ver algunas reglas de iptables.
Ejemplo 1: Se aceptaran todas las peticiones que vengan por
la interfaz de red eth0.
iptables -A INPUT -i eth0 -j ACCEPT
Ejemplo 2: Se aceptan todas las peticiones de vayan al
puerto 80 por la interfaz eth0.
iptables -A INPUT -i eth0 -p tcp --dport 80 -j
ACCEPT
Ejemplo 3: Rechazamos todas las peticiones del protocolo
icmp en todas las interfaces de red, no aceptamos ping.
iptables -A INPUT -p icmp -j REJECT
Firewall Básico
Ahora veremos la configuración básica de un iptables, creando nuestra reglas y
describiéndola para que sirve cada una.
## Limpiando reglas de iptables en todas las tablas.
iptables -F iptables -X iptables -Z
1.
Establecemos política por defecto de cada de una de la tablas.
iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P
FORWARD ACCEPT
1.
Aceptamos conexiones locales en la interfaz lo
iptables -A INPUT -i lo -j ACCEPT
1.
Aceptamos todas la conexiones al puerto 22/ssh por la interfaz de red
eth0.
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
1.
Aceptamos todas la conexiones al puerto 80/apache por la interfaz de
red eth0.
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
1.
Rechaza todas la demas conexiones desde el puerto 1 al 1024 por
protocolo tcp/udp por la interfaz de red eth0.
iptables -A INPUT -i eth0 -p tcp --dport 1:1024 -j REJECT iptables -A INPUT i eth0 -p udp --dport 1:1024 -j REJECT}}}
Solamente queda verificar que haya ejecutado las reglas correctamente, para
verificarlo ejecutamos el siguiente comando.
lucifer:~# iptables -nL
Firewall LAN. 1
Ahora veremos como configurar un firewall del tipo LAN:
•
•
Los clientes de la red local podrán acceder a internet pero solo a
servicio de HTTP/HTTPS y DNS.
Desde internet se permitirá conectarse a servicios de HTTP/FTP que
están dentro de la red local.
## Limpiando reglas de iptables en todas las tablas.
iptables -F iptables -X iptables -Z iptables -t nat -F
1.
Establecemos política por defecto
iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P
FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat
-P POSTROUTING ACCEPT
1.
Todas la peticiones que vengan de internet hacia el
puerto 80 redirigirlo a la máquina de la red
local con IP 192.168.1.12:80. iptables -t nat -A PREROUTING -i ppp0 -p tcp -dport 80 -j DNAT --to 192.168.1.12:80
1.
Todas la peticiones que vengan de internet hacia el
puerto 21 redirigirlo a la máquina de la red
local con IP 192.168.1.52:21. iptables -t nat -A PREROUTING -i ppp0 -p tcp -dport 21 -j DNAT --to 192.168.1.52:21
1.
Aceptamos conexiones locales en la interfaz lo
iptables -A INPUT -i lo -j ACCEPT
1.
Tenemos acceso al firewall desde el segmento de
red 192.168.1.0 por la interfaz eth1
Firewall LAN. 2
iptables -A INPUT -s 192.168.1.0/24 -i eth1 -j ACCEPT
1.
Aceptamos que todo el trafico que viene desde la red local
vaya hacia los puertos
80/443 sean aceptadas estas son solicitudes http/https iptables -A FORWARD -s
192.168.1.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -s
192.168.1.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT
1.
Aceptamos que consultas de DNS de la red local
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -p udp --dport 53 -j ACCEPT
1.
Denegamos el resto de los servicios
iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -j REJECT
1.
Ahora hacemos enmascaramiento de la red local
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
1.
Rechaza todas la demas conexiones desde el puerto 1 al 1024 por
protocolo tcp/udp por la interfaz de red eth0.
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT
-s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP}}}
Firewall LAN/DMZ. 1
Ahora veremos como configurar nuestro firewall con la comunicación de la
LAN/INTERNET a DMZ:
•
•
Los clientes de la red local pueden conectarse a servicios del tipo
APACHE y SAMBA en la DMZ,
Desde internet se permitirá conectarse a servicios de APACHE que se
encuentran en DMZ.
## Limpiando reglas de iptables en todas las tablas.
iptables -F iptables -X iptables -Z iptables -t nat -F
1.
Establecemos política por defecto
iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P
FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat
-P POSTROUTING ACCEPT
1.
Todas la peticiones que vengan de internet hacia el puerto
8080 redirigirlo a la
máquina de la DMZ con IP 10.0.2.30:80. iptables -t nat -A PREROUTING -i
ppp0 -p tcp --dport 8080 -j DNAT --to 10.0.2.30:80
1.
Aceptamos conexiones locales en la interfaz lo
iptables -A INPUT -i lo -j ACCEPT
1.
Tenemos acceso al firewall desde la red local y DMZ
Firewall LAN/DMZ. 2
iptables -A INPUT -s 192.168.1.0/24 -i eth1 -j ACCEPT iptables -A INPUT -s
10.0.2.0/24 -i eth2 -j ACCEPT
1.
Ahora hacemos enmascaramiento de la Red Local
y DMZ
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.0.2.0/24 -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
1.
APACHE1 “Conexión del servicio desde la red
local a DMZ”
iptables -A FORWARD -s 192.168.1.0/24 -d 10.0.2.30 -p tcp –-dport 80 -j
ACCEPT iptables -A FORWARD -s 10.0.2.30 -d 192.168.1.0/24 -p tcp –-dport
80 -j ACCEPT
1.
Samba “Conexión del servicio desde la red local a
DMZ”
iptables -A FORWARD -s 192.168.1.0/24 -d 10.0.2.50 -p tcp –-dport 139 -j
ACCEPT iptables -A FORWARD -s 10.0.2.50 -d 192.168.1.0/24 -p tcp –-dport
139 -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT
-s 0.0.0.0/0 -p udp -dport 1:1024 -j DROP}}}
Reglas.
En este capítulo solo mostraremos algunas otras reglas que han faltado explicar.
Habilitando varios puerto en una regla
Dentro de iptables tenemos la capacidad de armar reglas
para nuestro firewall con varios puerto de conexión al
mismo.
Ejemplo 1: Permitimos las conexión desde cualquier equipo
de la red local al servidor en los puerto 22 y 80.
iptables -A INPUT -s 192.168.1.0/24 -p tcp -dport 22:80 -j ACCEPT
Ejemplo 2: Solamente permitiremos la conexion del cliente
con la IP 192.168.1.50 a los puertos 20 y 21.
iptables -A INPUT -s 192.168.1.50 -p tcp --dport
20:21 -j ACCEPT
Reglas. Proxy Transparente
Esta regla es de mucha ayuda para los administradores no
tener que ir cliente por cliente en la red a configurar sus
navegadores web que con esta hacemos un
redireccionamiento de puertos en el mismo servidor.
Toda peticiones que venga por la interfaz de red eth1 y con
salida al puerto 80 redirecciona al puerto 3128.
iptables -t nat -A PREROUTING -i eth1 -p tcp -dport 80 -j REDIRECT --to-port 3128
Reglas. Bloquear Pings.
Explicaremos varias reglas que podremos utilizar para
bloquear los ping. Ejemplo 1: Podremos bloquear los pings
que nos envíe un cliente o un segmento de red.
iptables -A INPUT -p icmp -s 192.168.1.0/0 -j
DROP
iptables -A INPUT -p icmp -s 192.168.1.100 -j DROP}}}
Ejemplo 2: Pero si quisiéramos bloquear completamente
hacia cualquier interfaz entonces esta seria la regla.
iptables -A INPUT -p icmp -s 0.0.0.0/0 -j DROP
Bloquear mac También es posible bloquear clientes, etc por
la MAC Address de su máquina cliente.
iptables -A INPUT -m mac --mac-source
00:15:C5:B5:33:6C -j DROP
Reglas Externas. VPN
Para un servicio como OpenVPN también es necesaria tener
sus propias reglas de iptables para hacer la conexiones a los
túneles. Aceptamos el trafico que entrada y salida por el
protocolo UDP por el servicio OpenVPN.
iptables -A INPUT -i ppp0 -p udp --dport 1194 -j
ACCEPT
iptables -A OUTPUT -0 ppp0 -p udp --sport 1194 -j
ACCEPT}}} En este caso la interfaz de escucha del servicio
es ppp0 pero también puede ser eth0. Permitimos la
conexión desde cualquier equipo por la interfaz tun.
[root@test ~]# iptables -A INPUT -i tun+ -j
ACCEPT
[root@test ]# iptables -A OUTPUT -o tun+ -j ACCEPT}}}
Permitimos que los equipos de las otras redes accedaan a
nuestra red..
[root@test ~]# iptables -A FORWARD -i tun+ -j
ACCEPT
[root@test ]# iptables -A FORWARD -o tun+ -j
SERVICIOS DE FILTRO DE PAQUETES
PROXY SQUID
¿Qué es un Servidor Intermediario?
Un Servidor Intermediario se define como una
computadora o dispositivo que ofrece un servicio de red que
consiste en permitir a los clientes realizar conexiones de red
indirectas hacia otros servicios de red. Durante el proceso
ocurre lo siguiente:
1. Cliente se conecta hacia un Servidor Proxy.
2. Cliente solicita una conexión, archivo u otro
recurso disponible en un servidor distinto.
3. Servidor Intermediario proporciona el recurso ya
sea conectándose hacia el servidor especificado o
sirviendo éste desde un caché.
4. En algunos casos el Servidor Intermediario
puede alterar la solicitud del cliente o bien la
respuesta del servidor para diversos propósitos.
Acerca de Squid.
URL: http://www.squid-cache.org/
Squid es un Servidor Intermediario de alto desempeño que se ha
venido desarrollando desde hace varios años y es hoy en día un muy
popular y ampliamente utilizado entre los sistemas operativos como
GNU/Linux y derivados de Unix®. Es muy confiable, robusto y
versátil y se distribuye bajo los términos de la Licencia Pública
General GNU (GNU/GPL). Siendo equipamiento lógico libre, está
disponible el código fuente para quien así lo requiera.
Entre otras cosas, Squid puede funcionar como Servidor
Intermediario y caché de contenido de Red para los protocolos
HTTP, FTP, GOPHER y WAIS, Proxy de SSL, caché transparente,
WWCP, aceleración HTTP, caché de consultas DNS y otras
muchas más como filtración de contenido y control de acceso por IP
y por usuario.
Squid consiste de un programa principal como servidor, un
programa para búsqueda en servidores DNS, programas opcionales
para reescribir solicitudes y realizar autenticación y algunas
herramientas para administración y herramientas para clientes. Al
iniciar Squid da origen a un número configurable (5, de modo
predeterminado a través dla opción dns_children) de procesos de
búsqueda en servidores DNS, cada uno de los cuales realiza una
búsqueda única en servidores DNS, reduciendo la cantidad de tiempo
de espera para las búsquedas en servidores DNS.
Squid. Equipamiento lógico necesario.
Para poder llevar al cabo los procedimientos descritos en
este y otros documentos relacionados, se requiere instalar al
menos lo siguiente:
•
•
•
Al menos squid-2.5.STABLE6
Todos los parches de seguridad disponibles para la
versión del sistema operativo que esté utilizando.
Un muro cortafuegos configurado con systemconfig-firewall, Firestarter o Shorewall.
Squid sólo se instala de manera predeterminada cuando se
instala el grupo de paquetes denominado «Servidor Web».
El procedimiento de instalación es exactamente el mismo
que con cualquier otro equipamiento lógico.
Squid. Instalación
Si se utiliza CentOS o Red Hat™ Enterprise Linux,
ejecute:
yum -y install squid
SELinux y el servicio de squid
En CentOS 6 y Red Hat™ Enterprise Linux 6, la política
squid_connect_any viene habilitada de modo
predeterminado. En CentOS 5 y Red Hat™ Enterprise
Linux 5, esta política viene deshabilitada de modo
predeterminado. Esta política hace que SELinux permita a
Squid aceptar conexiones de los clientes desde cualquier
dirección IP. Si utiliza CentOS 5 y Red Hat™ Enterprise
Linux 5, ejecute:
setsebool -P squid_connect_any 1
Para SELinux permita a Squid operar en modo transparente
en CentOS 6 y Red Hat™ Enterprise Linux 6, ejecute:
setsebool -P squid_use_tproxy 1
Squid. Antes de continuar
Evite dejar espacios vacíos en lugares indebidos. El
siguiente ejemplo muestra la manera incorrecta de habilitar
un opción.
Mal
# Opción incorrectamente habilitada.
http_port 8080
El siguiente ejemplo muestra la manera correcta de habilitar
un opción.
Bien
# Opción correctamente habilitada.
http_port 8080
Squid. Configuración Básica
Squid utiliza el archivo de configuración localizado en
/etc/squid/squid.conf y podrá trabajar sobre este utilizando
su editor de texto simple preferido. Existen un gran número
de opciones, de los cuales recomendamos configurar los
siguientes:
•
•
•
•
•
Al menos una Lista de Control de Acceso
Al menos una Regla de Control de Acceso
http_port
cache_dir
error_directory, sólo si va a personalizar mensajes de
error.
El resto de los opciones mencionados en este documento
son, valga la redundancia, opcionales.
Edite el archivo /etc/squid/squid.conf:
vi /etc/squid/squid.conf
Protocolo de Internet
Controles de Acceso
Parapoder controlar el tráfico de los clientes hacia Internet, es
necesario establecer Listas de Control de Acceso que definan una
red o bien ciertos anfitriones en particular. A cada lista se le asignará
una Regla de Control de Acceso que permitirá o denegará el acceso
a Squid.
Squid. Listas de Control de Acceso.1
De modo predeterminado en CentOS 6 y Red Hat™
Enterprise Linux 6, Squid habilita el acceso a todas las
redes locales, definidas en el RFC1918. Es decir, permite el
acceso a 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7
y fe80::/10.
# Example rule allowing access from your local
networks.
# Adapt to list your (internal) IP networks from
where browsing
# should be allowed
acl localnet src 10.0.0.0/8
# RFC1918 possible
internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible
internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible
internal network
acl localnet src fc00::/7
# RFC 4193 local
private network range
acl localnet src fe80::/10 # RFC 4291 link-local
(directly plugged) machines
Squid. Listas de Control de Acceso. 2
Deshabilite todo lo anterior, colocando una almoadilla (# al
inicio de cada línea.
# Example rule allowing access from your local
networks.
# Adapt to list your (internal) IP networks from
where browsing
# should be allowed
# acl localnet src 10.0.0.0/8
# RFC1918
possible internal network
# acl localnet src 172.16.0.0/12 # RFC1918
possible internal network
# acl localnet src 192.168.0.0/16 # RFC1918
possible internal network
# acl localnet src fc00::/7
# RFC 4193 local
private network range
# acl localnet src fe80::/10 # RFC 4291 link-local
(directly plugged) machines
Squid. Listas de Control de Acceso. 3
Regularmente una lista de control de acceso se establece con
la siguiente sintaxis:
acl [nombre de la lista] src [lo que
compone a la lista]
Si se desea establecer una lista de control de acceso que
abarque a toda la red local, basta definir la IP
correspondiente a la red y la máscara de la sub-red. Por
ejemplo, si se tiene una red donde los anfitriones tienen
direcciones del segmento IP 172.16.100.0/28, se puede
utilizar lo siguiente:
acl localnet src 172.16.100.0/28
También puede definirse una Lista de Control de Acceso
especificando un archivo localizado en cualquier parte del
disco duro y la cual contiene una lista de direcciones IP.
Ejemplo:
acl permitidos src
"/etc/squid/listas/permitidos"
Squid. Listas de Control de Acceso. 3
El archivo /etc/squid/listas/permitidos tendría un contenido
similar al siguiente:
172.16.100.1
172.16.100.2
172.16.100.3
172.16.100.15
172.16.100.16
172.16.100.20
172.16.100.40
Lo anterior estaría definiendo que la Lista de Control de
Acceso denominada permitidos estaría compuesta por las
direcciones IP incluidas en el archivo /etc/squid/listas
Squid. Reglas de control de acceso.1
Estas definen si se permite o deniega acceso hacia Squid. Se aplican a las Listas de Control de Acceso. Deben colocarse en la sección de reglas de control de acceso
definidas por el administrador, es decir, a partir de donde se localiza la siguiente leyenda:
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW
ACCESS FROM YOUR CLIENTS
#
La sintaxis básica de una regla de control de acceso es la
siguiente:
http_access [deny o allow] [lista de
control de acceso]
Para desactivar la configuración predeterminada y poder
utilizar una diferente, localice La línea que incluye
http_access allow localnet:
# Example rule allowing access from your
local networks.
# Adapt localnet in the ACL section to
list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost
Squid. Reglas de control de acceso.2
Deshabilite esta línea colocando una almohadilla (# al inicio de ésta:
# Example rule allowing access from your
local networks.
# Adapt localnet in the ACL section to
list your (internal) IP networks
# from where browsing should be allowed
# http_access allow localnet
http_access allow localhost
En el siguiente ejemplo se considera una regla que establece acceso
permitido a Squid a la Lista de Control de Acceso denominada
permitidos:
http_access allow permitidos
También pueden definirse reglas valiéndose de la expresión !, la cual
significa no. Pueden definirse, por ejemplo, dos listas de control de
acceso, una denominada lista1 y otra denominada lista2, en la misma
regla de control de acceso, en donde se asigna una expresión a una de
estas. La siguiente establece que se permite el acceso a Squid a lo que
comprenda lista1 excepto aquello que comprenda lista2:
http_access allow lista1 !lista2
Este tipo de reglas son útiles cuando se tiene un gran grupo de IP dentro
de un rango de red al que se debe permitir acceso y otro grupo dentro
de la misma red al que se debe denegar el acceso.
Squid. Aplicando Listas y Reglas de control de acceso
Una vez comprendido el funcionamiento de la Listas y las Regla de Control de Acceso, se procede a determinar cuales utilizar para la configuración.
Caso 1.
Considerando como ejemplo que se dispone de una red 172.16.100.0/28, si se desea definir toda la red local, se utilizaría la siguiente línea en la sección de Listas de Control de Acceso:
acl localnet src 172.16.100.0/28
Habiendo hecho lo anterior, la sección de listas de control de acceso debe quedar más o menos del siguiente modo:
Listas de Control de Acceso: definición de una red local completa
#
# Recommended minimum configuration:
acl all src 0.0.0.0/0
acl manager proto cache_object
acl localhost src 127.0.0.1/8
acl localnet src 172.16.100.0/28
A continuación se procede a aplicar la regla de control de acceso:
http_access allow localnet
Habiendo hecho lo anterior, la zona de reglas de control de acceso debería quedar de modo similar al siguiente:
Reglas de control de acceso: Acceso a una Lista de Control de Acceso.
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow localnet
http_access deny all
La regla http_access allow localnet permite el acceso a Squid a la Lista de Control de Acceso denominada localnet, la cual, en el siguiente ejemplo, está conformada por 172.16.100.0/28. Esto significa que
cualquier anfitrión desde 172.16.100.1 hasta 172.16.100.14 podrá acceder a Squid.
Squid. Aplicando Listas y Reglas de control de acceso
Caso 2. Parte 1
Si sólo se desea permitir el acceso a Squid a ciertas direcciones IP de la red local, deberemos crear un archivo que contenga dicha lista. Genere el archivo /etc/squid/listas/localnet, dentro del cual se incluirán
sólo aquellas direcciones IP que desea confirmen la Lista de Control de acceso. Ejemplo:
172.16.100.1
172.16.100.2
172.16.100.3
172.16.100.4
172.16.100.5
172.16.100.6
172.16.100.7
Denominaremos a esta lista de control de acceso como localnet:
acl localnet src "/etc/squid/listas/localnet"
Habiendo hecho lo anterior, la sección de listas de control de acceso debe quedar más o menos del siguiente modo:
Listas de Control de Acceso: definición de una red local completa
#
# Recommended minimum configuration:
acl all src 0.0.0.0/0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl localnet src "/etc/squid/listas/localnet"
A continuación se procede a aplicar la regla de control de acceso:
http_access allow localnet
Habiendo hecho lo anterior, la zona de reglas de control de acceso debería quedar de modo similar al siguiente:
Squid. Aplicando Listas y Reglas de control de acceso
Caso 2. Parte 2
Reglas de control de acceso: Acceso a una Lista de Control de Acceso.
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow localnet
http_access deny all
La regla http_access allow localnet permite el acceso a Squid a la Lista de Control de Acceso denominada localnet, la cual está conformada por las direcciones IP especificadas en el archivo
/etc/squid/listas/localnet. Esto significa que cualquier anfitrión excluido del archivo /etc/squid/listas/localnet se le denegará el acceso a Squid.
Opción cache_mgr.
Esta opción es de carácter informativo. De modo predeterminado, si algo ocurre con el caché, como por ejemplo que muera el procesos, se enviará un mensaje de aviso a la cuenta webmaster del servidor. Puede
especificarse una distinta si acaso se considera conveniente.
cache_mgr [email protected]
Opción http_port.
Esta opción es utilizado para indicar el puerto a través del cual escuchará peticiones Squid. EL valor predeterminado es 3128, es deicr, Squid escuchará peticiones a través del puerto 3128/tcp.
http_port 3128
El puerto estándar designado para servidores de caché de Internet (webcache) es el puerto 8080.
http_port 8080
Squid. Aplicando Listas y Reglas de control de acceso
Caso 2. Parte 3
La opción permite establecer también si se quiere utilizar una dirección IP en particular. Esto añade mayor seguridad al servicio, pues si se tiene dos tarjetas de red, una con una dirección IP pública y otra con una
dirección IP privada, se puede establecer que Squid solo permita conexiones desde la dirección IP privada.
http_port 192.168.80.1:8080
Si se necesita configurar un servidor proxy en modo transparente, solo es necesario añadir la opción intercept, misma que desde la versión 3.1 de Squid reemplaza a la opción transparent.
http_port 192.168.80.1:8080 intercept
Opción cache_dir.
Esta opción se utiliza para establecer que tamaño se desea que utilice Squid para almacenamiento de caché en el disco duro. De modo predeterminado Squid utilizará el formato ufs para crear en el directorio
/var/spool/squid un caché de 100 MB, dividido en jerarquías de 16 directorios subordinados, hasta 256 niveles cada uno:
cache_dir ufs /var/spool/squid 100 16 256
Se puede incrementar el tamaño del caché hasta donde lo desee el administrador. Mientras más grande sea el caché, más objetos se almacenarán en éste y por lo tanto se consumirá menos el ancho de banda. La
siguiente línea establece un caché de 2 GB:
cache_dir ufs /var/spool/squid 2048 16 256
El formato de cache ufs puede llegar a bloquear el proceso principal de Squid en operaciones de entrada/salida sobre el sistema de archivos cuando hay muchos clientes conectados. Para evitar que esto ocurra, se
recomienda utilizar aufs, que utiliza el mismo formato de ufs, pero funciona de manera asincrónica, consiguiéndose un mejor desempeño.
cache_dir aufs /var/spool/squid 2048 16 256
Squid. Aplicando Listas y Reglas de control de acceso
Caso 2. Parte 4
Opción maximum_object_size.
Esta opción se utiliza para definir el tamaño máximo de los objetos en el caché. Se recomienda establecerla en escenarios con alta carga de trabajo, puesto que permite evitar desperdiciar recursos de sistema
almacenando en el caché objetos de gran tamaño que probablemente sólo sean aprovechados por unos pocos usuarios, optimizando el uso del caché con objetos pequeños que de otro modo generarían una gran
cantidad de peticiones hacia las redes públicas. En el siguiente ejemplo se establece un límite de 48 MB para los objetos del caché.
maximum_object_size 48 MB
Opciones cache_swap_low y cache_swap_high.
Es posible realizar una limpieza automática del caché de Squid cuando éste llegue a cierta capacidad. La opción cache_swap_low establece el porcentaje a partir del cual se comenzará a limpiar el cache. La
opción cache_swap_high establece el porcentaje a partir del cual se comenzará a limpiar de manera agresiva el cache. En el siguiente ejemplo se establece que el cache se comienza a limpiar cuando alcanza el
90% y se comienza a limpiar de manera agresiva cuando alcanza el 95%.
cache_swap_low 90
cache_swap_high 95
Lo anterior permite tener un caché saludable que se limpia automáticamente. Se recomienda utilizar estas opciones en escenarios con alta carga de trabajo.
Squid. Aplicando Listas y Reglas de control de acceso
Caso 2. Parte 5
Opción cache_replacement_policy.
A través de esta opción se incluye soporte para los siguientes algoritmos para el caché:
LRU
Acrónimo de Least Recently Used, que traduce como Menos Recientemente Utilizado. En este algoritmo los objetos que fueron accedidos hace mucho tiempo, son
eliminados primero y manteniendo siempre en el caché a los objetos más recientemente solicitados. Ésta política es la utilizada por Squid de modo predeterminado.
LFUDA
Acrónimo de Least Frequently Used with Dynamic Aging, que se traduce como Menos Frecuentemente Utilizado con Envejecimiento Dinámico. En este algoritmo
los objetos más solicitados permanecen en el caché sin importar su tamaño optimizando la eficiencia (hit rate) por octetos (Bytes) a expensas de la eficiencia misma, de
modo que un objeto grande que se solicite con mayor frecuencia impedirá que se pueda hacer caché de objetos pequeños que se soliciten con menor frecuencia.
GDSF
Acrónimo de GreedyDual Size Frequency, que se traduce como Frecuencia de tamaño GreedyDual (codicioso dual), que es el algoritmo sobre el cual se basa GDSF.
Optimiza la eficiencia (hit rate) por objeto manteniendo en el caché los objetos pequeños más frecuentemente solicitados de modo que hay mejores posibilidades de
lograr respuesta a una solicitud (hit). Tiene una eficiencia por octetos (Bytes) menor que el algoritmo LFUDA debido a que descarta del caché objetos grandes que
sean solicitado con frecuencia.
El algoritmo recomendado y que ha demostrado mejor desempeño en escenarios de alta carga de trabajo es LFUDA.
cache_replacement_policy heap LFUDA
Opción cache_mem.
La opción cache_mem establece la cantidad ideal de memoria para lo siguiente:
•
•
•
Objetos en tránsito.
Objetos frecuentemente utilizados (Hot).
Objetos negativamente almacenados en el caché.
Los datos de estos objetos se almacenan en bloques de 4 Kb. La opción cache_mem especifica un límite máximo en el tamaño total de bloques acomodados, donde los objetos en tránsito tienen mayor prioridad.
Sin embargo los objetos frecuentemente utilizados (Hot) y aquellos negativamente almacenados en el caché, podrán utilizar la memoria sin utilizar hasta que esta sea requerida. De ser necesario, si un objeto en
tránsito es mayor a la cantidad de memoria especificada, Squid excederá lo que sea necesario para satisfacer la petición.
cache_mem 48 MB
Squid. Idioma y Arranque de Squid
EstableciendoelidiomadelosmensajesmostradosporSquidhaciaelusuario.
Squid incluye traducción a distintos idiomas de las distintas páginas de error e informativas que son desplegadas en un momento dado durante su operación.
Dichas traducciones se pueden encontrar en /usr/share/squid/errors/. Desde la versión 3.0 de Squid, el idioma se detecta automáticamente a partir del
navegador utilizado por el usuario. Es innecesario modificar opción alguno, salvo que se haya personalizado los mensajes, en cuyo caso conviene utilizar una
ruta distinta a la del idioma utilizado para evitar se sobre-escriban los archivos después de actualizar el sistema.
Iniciando,reiniciandoyañadiendoelservicioalarranquedelsistema.
Una vez terminada la configuración, para iniciar por primera vez Squid ejecute:
service squid start
Si necesita volver a cargar la configuración para probar cambios realizados, sin detener el servicio, ejecute:
service squid reload
Si necesita reiniciar para probar cambios hechos en la configuración, considerando que este proceso puede llegar a demorar algunos minutos,
ejecute:
service squid restart
Para que Squid inicie de manera automática junto con el sistema, ejecute:
chkconfig squid on
Squid. Depuracion de Errores
Cualquier error al inicio de Squid sólo significa que hubo errores de sintaxis, errores de
dedo o bien se están citando incorrectamente las rutas hacia los archivos de las Listas de
Control de Acceso.
Puede realizar diagnóstico de problemas indicándole a Squid que vuelva a leer
configuración, lo cual devolverá los errores que existan en el archivo
/etc/squid/squid.conf.
service squid reload
Cuando se trata de errores graves que impiden iniciar el servicio, puede examinarse el
contenido del archivo /var/log/squid/squid.out con el mandato less, more o cualquier
otro visor de texto:
tail -80 /var/log/squid/squid.out
Modificaciones Squid.
Si se utiliza un cortafuegos con políticas estrictas, como por
ejemplo Shorewall, es necesario abrir el puerto 8080 por
TCP (webcache), si se eligió utilizar el puerto 8080 en lugar
del 3128.
La regla para el archivo /etc/shorewall/rules de Shorewall,
que sólo permitirá el acceso hacia Squid desde la zona de
red de área local, correspondería a algo similar a lo
siguiente:
#ACTION SOURCE DEST
PROTO
#
ACCEPT loc
fw
tcp
#LAST LINE -- ADD YOUR ENTRIES
THIS ONE -- DO NOT REMOVE
DEST
PORT
8080
BEFORE
Para aplicar los cambios en Shorewall, ejecute:
service shorewall restart
Squid. Redireccionamiento Shorewall
La acción REDIRECT en Shorewall permite redirigir
peticiones hacia protocolo HTTP para hacerlas pasar a
través de Squid. En el siguiente ejemplo las peticiones
hechas desde la zona que corresponde a la red local serán
redirigidas hacia el puerto 8080 del cortafuegos, en donde
está configurado Squid configurado como Servidor Proxy
(Proxy) transparente.
#ACTION SOURCE DEST
PROTO
#
ACCEPT loc
fw
tcp
REDIRECT
loc
8080
#LAST LINE -- ADD YOUR ENTRIES
THIS ONE -- DO NOT REMOVE
DEST
PORT
8080
tcp
80
BEFORE
Squid. Exclusión de Sitios
En el caso de sitios que se quiera excluir de ser utilizados
con Squid, es decir, sitios problemáticos, se puede
configurar en Shorewall que el acceso sea directo, con una
configuración similar a la del siguiente ejemplo, donde se
excluye de pasar por Squid las peticiones dirigidas a las
redes 201.144.108.0/24 (IMSS.gob.mx) y 200.33.74.0/24
(SAT.gob.mx) y se abre el paso directo desde la red local
hacia esta red:
#ACTION
SOURCE
DEST
#
ACCEPT
loc
fw
REDIRECT
loc
8080
ACCEPT
loc
ACCEPT
loc
#LAST LINE -- ADD YOUR ENTRIES BEFORE
PROTO
tcp
DEST
PORT
8080
tcp
net:201.144.108.0/24
all
net:200.33.74.0/24
all
THIS ONE -- DO NOT REMOVE
Squid. Re-direccionamiento con Iptables.
Bajo ciertas circunstancias, se requerirá tener salida transparente hacia Internet para ciertos
servicios, pero al mismo tiempo se necesitará re-direccionar peticiones hacia servicio
HTTP para pasar a través del el puerto donde escucha peticiones Squid, como proxy en
modo transparente, es decir el puerto 8080/tcp, de modo que se impida la salida hacia
alguna hacia servidores HTTP en el exterior sin que ésta pase antes por Squid. Ningún
proxy conocido puede funcionar en modo transparente para los protocolos HTTPS, FTP,
GOPHER ni WAIS, por lo que dichos protocolos tendrán que ser filtrados a través del
NAT.
El re-direccionamiento se hace a través de iptables. Considerando para este ejemplo que la
red local se accede a través de una interfaz eth1, el siguiente esquema ejemplifica un redireccionamiento:
iptables -A INPUT -m state --state NEW -m tcp -p
tcp
\
-i eth1 --dport 8080 -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp \
--dport 80 -j REDIRECT --to-port 8080
service iptables save
CONFIGURACION DE SERVIDOR DHCP
Introducción. Acerca del Protocolo DHCP
•
•
•
Asignación manual: La asignación utiliza una tabla con direcciones
MAC (acrónimo de Media Access Control Address, que se traduce
como dirección de Control de Acceso al Medio). Sólo los anfitriones
con una dirección MAC definida en dicha tabla recibirá el IP
asignada en la misma tabla. Ésto se hace a través del parámetro
hardware ethernet combinado con deny unknown-clients.
Asignación automática: Una dirección de IP disponible dentro de
un rango determinado se asigna permanentemente al anfitrión que la
requiera.
Asignación dinámica: Se determina arbitrariamente un rango de
direcciones IP y cada anfitrión conectado a la red está configurada
para solicitar su dirección IP al servidor cuando se inicia el
dispositivo de red, utilizando un intervalo de tiempo controlable
(parámetros default-lease-time y max-lease-time), de modo que la
asignación de direcciones IP es de manera temporal y éstas se
reutilizan de forma dinámica.
URL: http://www.ietf.org/rfc/rfc2131.txt y
http://www.ietf.org/rfc/rfc2132.txt
DHCP. Equipamiento lógico necesario.
CentOS, Fedora™ y Red Hat™ Enterprise Linux.
Ejecute lo siguiente para instalar o actualizar todo necesario:
yum -y install dhcp
DHCP. Modificaciones en el Muro Cortafuegos.
Por lo general, jamás se abren puertos de DHCP a las redes públicas. Es necesario abrir los puerto 67 y 68 (BOOTPS y BOOTPC) por UDP, tanto para trafico
entrante como saliente.
Servicios Iptables
Asumiendo que el servicio funcionará a través de la interfaz eth1, puede utilizar el
mandato iptables del siguiente modo:
iptables -A INPUT -i eth1 -p udp -m state --state
NEW -m udp \
--sport 67:68 --dport 67:68 -j ACCEPT
service iptables save
O bien edite el archivo /etc/sysconfig/iptables:
vim /etc/sysconfig/iptables
Y añada el siguiente contenido:
-A INPUT -i eth1 -p udp -m state --state NEW -m udp
--sport 67:68 --dport 67:68 -j ACCEPT
Reinicie el servicio iptables a fin de que surtan efecto los cambios.
service iptables restart
DHCP. Shorewall
Edite el archivo /etc/shorewall/interfaces:
vim /etc/shorewall/interfaces
Asumiendo que el servicio funcionará a través de la interfaz eth1 (zona loc), añada la
opción dhcp a las opciones de la interfaz sobre la cual funciona el servicio dhcpd. Esta
opción, tras reiniciar el servicio shorewall, habilita las comunicaciones de entrada y
salida, para DHCP.
##########################################################################
#ZONE
INTERFACE
BROADCAST
OPTIONS
net
eth0
detect
blacklist
loc
eth1
detect
dhcp,blacklist
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE
Reinicie el servicio shorewall a fin de que surtan efecto los cambios.
service shorewall restart
DHCP. SELinux y el servicio DHCD
Se recomienda encarecidamente dejar activo SELinux y dejar como están las políticas predeterminadas.
Lo siguiente sólo aplica para CentOS 5 y Red Hat Enterprise Linux 5.
Si se desea eliminar la protección que brinda SELinux al servicio dhcpd, utilice el
siguiente mandato.
setsebool -P dhcpd_disable_trans 1
Si se desea eliminar la protección que brinda SELinux al sistema para funcionar como
cliente DHCP, utilice el siguiente mandato.
setsebool -P dhcpc_disable_trans 1
Ninguna de estás políticas existe en CentOS 6 y Red Hat Enterprise Linux 6.
DHCP. Iniciar, detener y reiniciar.
Para hacer que el servicio de dhcpd esté activo con el
siguiente inicio del sistema, en todos los niveles de
ejecución (2, 3, 4 y 5), ejecute lo siguiente:
chkconfig dhcpd on
Para iniciar por primera vez el servicio dhcpd, ejecute:
service dhcpd start
Para hacer que los cambios hechos a la configuración del
servicio dhcpd surtan efecto, ejecute:
service dhcpd restart
Para detener el servicio dhcpd, ejecute:
service dhcpd stop
DHCP. Procedimientos
Archivo de configuración /etc/sysconfig/dhcp
En el caso de disponer múltiples dispositivos de red en el
servidor, se recomienda que el servicio dhcpd solamente
funcione a través de la interfaz de red utilizada por la LAN.
Edite el archivo /etc/sysconfig/dhcpd y agregue el valor
eth0, eth1, eth2, etc., como argumento(s) del parámetro
DHCPDARGS o bien lo que corresponda a la interfaz
desde la cual accede la red local.
Edite el archivo /etc/sysconfig/dhcpd:
vim /etc/sysconfig/dhcpd
Para el siguiente ejemplo, considerando que eth1 es la
interfaz correspondiente a la LAN:
# Command line options here
DHCPDARGS=eth1
DHCP. Procedimientos.
Archivo de configuración dhcpd.conf
Considerando como ejemplo que se tiene una red local con
las siguientes características:
•
•
•
•
•
•
•
•
Dirección IP del segmento de red: 172.16.1.0
Dirección IP de difusión: 172.16.1.15
Máscara de sub-red: 255.255.255.240 (28 bit)
Puerta de enlace: 172.16.1.1
Servidor de nombres: 172.16.1.1
Servidor Wins: 172.16.1.1
Servidores de tiempo (NTP): recomendamos utilizar
los de NTP.org —es decir 0.pool.ntp.org,
1.pool.ntp.org, 2.pool.ntp.org y 3.pool.ntp.org— los
cuales son confiables y de acceso gratuito.
Rango de direcciones IP a asignar de modo dinámico:
172.16.1.2 hasta 172.16.1.14.
Puede utilizar el contenido de ejemplo, que se encuentra más
adelante, para adaptar o bien crear desde cero, un nuevo archivo
de configuración para el servicio dhcpd, ajustando los datos a una
red para un conjunto de sistemas en particular.
DHCP. Procedimientos.
Configuración Básica. 1
Descargue el archivo plantilla, con una configuración mínima recomendada, desde
AlcanceLibre.org, ejecutando lo siguiente:
cd /etc/dhcp/
mv dhcpd.conf dhcpd.conf.original
wget
http://www.alcancelibre.org/linux/secrets/dhcpd.conf
restorecon dhcpd.conf
cd
Si se utiliza CentOS 6 o Red Hat Enterprise Linux 6, edite el archivo
/etc/dhcp/dhcpd.conf.
vim /etc/dhcp/dhcpd.conf
Si se utiliza CentOS 5 o Red Hat Enterprise Linux 5, edite el archivo /etc/dhcpd.conf.
vim /etc/dhcpd.conf
DHCP. Procedimientos.
Configuración Básica. 2
Para efectos prácticos, utilice la siguiente plantilla y modifique todo lo que esté resaltado.
# Si se tienen problemas con equipos con Windows Vista/7/8
omita el parámetro
# server-identifier. Ésto aunque rompe con el protocolo DHCP,
permite a los
# clientes Windows Vista/7/8 poder comunicarse con el servidor
DHCP y aceptar
# la dirección IP proporcionada.
# server-identifier 172.16.1.1;
ddns-update-style interim;
ignore client-updates;
authoritative;
default-lease-time 900;
max-lease-time 7200;
option ip-forwarding off;
option domain-name "red-local.net";
option ntp-servers 0.pool.ntp.org, 1.pool.ntp.org,
2.pool.ntp.org, 3.pool.ntp.org;
shared-network redlocal {
subnet 172.16.1.0 netmask 255.255.255.240 {
option routers 172.16.1.1;
option subnet-mask 255.255.255.240;
option broadcast-address 172.16.1.15;
option domain-name-servers 172.16.1.1;
option netbios-name-servers 172.16.1.1;
range 172.16.1.2 172.16.1.14;
}
}
Lo anterior corresponde a la configuración básica recomendada para un servidor DHCP básico.
Una vez terminada la configuración, para iniciar el servicio ejecute:
service dhcpd start
DHCP. Procedimientos.
Asignación de direcciones IP estáticas
Para definir equipos con direcciones IP estáticas, pueden añadirse también en la
configuración de la siguiente forma, especificando el nombre de anfitrión, dirección MAC
y dirección IP:
host impresora {
option host-name "epl5900.redlocal.net";
hardware ethernet
00:24:2B:65:54:84;
fixed-address 172.16.1.59;
}
Edite el archivo /etc/dhcp/dhcpd.conf o bien /etc/dhcpd.conf, según corresponda:
vim /etc/dhcp/dhcpd.conf
DHCP. Procedimientos
Asignación de direcciones IP estáticas.
Un ejemplo de la configuración quedaría del siguiente modo:
# Si se tienen problemas con equipos con Windows Vista/7/8 omita el parámetro
# server-identifier. Ésto aunque rompe con el protocolo DHCP, permite a los
# clientes Windows Vista/7/8 poder comunicarse con el servidor DHCP y aceptar
# la dirección IP proporcionada.
# server-identifier 172.16.1.1;
ddns-update-style interim;
ignore client-updates;
authoritative;
default-lease-time 900;
max-lease-time 7200;
option ip-forwarding off;
option domain-name "red-local.net";
option ntp-servers 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org, 3.pool.ntp.org;
shared-network redlocal {
subnet 172.16.1.0 netmask 255.255.255.240 {
option routers 172.16.1.1;
option subnet-mask 255.255.255.240;
option broadcast-address 172.16.1.15;
option domain-name-servers 172.16.1.1;
option netbios-name-servers 172.16.1.1;
range 172.16.1.2 172.16.1.12;
}
# Equipos con IP fija.
host impresora {
option host-name "epl5900.red-local.net";
hardware ethernet 00:24:2B:65:54:84;
fixed-address 172.16.1.13;
}
host pc14 {
option host-name "pc14.red-local.net";
hardware ethernet 00:50:BF:27:1C:1C;
fixed-address 172.16.1.14;
}
}
Si realizó cambios en la configuración, reinicie el servicio dhcpd a fin de que surtan efecto los cambios.
service dhcpd restart
DHCP. DNS dinámico
El servidor DNS puede funcionar de modo dinámico permitiendo la actualización en
tiempo real de los nombres de anfitrión y las direcciones IP asociadas a éstos, a través de
la información enviada a través de un servidor DHCP.
Edite el archivo /etc/dhcp/dhcpd.conf:
vim /etc/dhcp/dhcpd.conf
Asumiendo que ya se dispone de un servidor DNS previamente configurado y
funcionando, para configurar el servidor DHCP a fin de que actualice automáticamente los
registros correspondientes en las zonas del servidor DNS, sólo basta añadir los parámetros
ddns-updates, ddns-domainname, ddns-rev-domainname, una inclusión para utilizar la
misma firma digital de la configuración del DNS y definir las zonas de localhost, zona de
re-envío y zona de resolución inversa del DNS, con los valores ejemplificados a
continuación, solamente siendo necesario reemplazar los valores resaltados.
Comprobaciones desde clientes DHCP
Abra una terminal, como usuario root y, asumiendo que se tiene una interfaz de red denominada eth0, utilice los siguientes
mandatos para desactivar la interfaz eth0 y asignar una nueva dirección IP a través del servidor dhcp.
ifdown eth0
dhclient -d -I nombre-equipo -H nombre-equipo eth0
Si se dispone de varios servidores DHCP y se desea probar la configuración de alguno en particular, puede añadir la opción -V al
mandato dhclient, definiendo como valor para esta opción, el mismo valor que fue asignado para el parámetro server-identifier,
establecido en el archivo /etc/dhcp/dhcpd.conf del servidor correspondiente.
ifdown eth0
dhclient -d -I nombre-equipo -H nombre-equipo -V 172.16.1.1 eth0
Edite el archivo /etc/sysconfig/network-scripts/ifcfg-eth0 o el que corresponda al dispositivo de red principal del sistema cliente:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
La configuración permanente del dispositivo de red, considerando como ejemplo la interfaz eth0 con dirección MAC
00:01:03:DC:67:23, solicitando los datos para los servidores DNS, puerta de enlace y servidores de tiempo, sería la siguiente:
DEVICE=eth0
ONBOOT=yes
USERCTL=yes
HWADDR=00:01:03:DC:67:23
TYPE=Ethernet
NM_CONTROLLED=no
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
PEERNTP=yes
DOMAIN=red-local.net
DHCP_CLIENT_ID=nombre-equipo
DHCP_HOSTNAME=nombre-equipo
Si utiliza NM_CONTROLLED=yes, deje que el servicio NetworkManager se encargue por si solo de aplicar los cambios. Si
utiliza NM_CONTROLLED=no, reinicie el servicio network a fin de que surtan efecto los cambios.
service network restart
SERVICIOS Y REDES NFS
Como instalar y configurar NFS en CentOS 6.2
Esta es la manera de instalar el servicio de NFS en un servidor Linux CentOS 6.2 y hacerlo accesible a las demás computadora en tu red. Supongo que ya tendrás un
servidor Linux CentOS 6.2 instalado y corriendo y algun cliente Linux sea Fedora, CentOS o Ubuntu.
El NFS requiere de varios servicios para su ejecucion:
•
•
•
rpcbind: (portmap en versiones anteriores de Linux) el demonio
de primario en que los demas demonios se basaran, rpcbind
gestiona las conexiones de las aplicaciones que utilizan la
especificación RPC. Por defacto, rpcbind usa el puerto TCP
111 en el que se hace una conexión inicial. Este se utiliza para
negociar un rango de puertos TCP, por lo general por encima
del puerto 1024, que se utilizará para la transferencia de datos
posteriores. Este servicio debe correr en el servidor y los
clientes NFS.
NFS: inicia los procesos RPC necesarios para atender el
sistemas de compatir archivos NFS. Este servicio solo debe
correr en el servidor NFS.
nfslock: Se utiliza para permitir que los clientes NFS bloquean
archivos en el servidor a través de los procesos de RPC. Este
servicio debe correr en el servidor y los clientes NFS.
Configuración NFS
Ahora vamos a configurar el lado servidor:
1. Instalemos los paquetes necesarios para que NFS
pueda correr.
$ yum install rpcbind nfs-utils nfs-utilslib
2.
Activemos los servicios para que se ejecuten
siempre cuando reiniciamos la máquina.
$ chkconfig --level 35 nfs on
$ chkconfig --level 35 nfslock on
$ chkconfig --level 35 rpcbind on
3. Iniciemos los servicios requeridos
$ service rpcbind start
$ service nfslock start
$ service nfs start
4. Verifiquemos que los puertos TCP estan activos
$ sudo rpcinfo
$ sudo vi /etc/exports
SERVICIOS Y REDES SAMBA
Sobre Samba
Samba es una implementación libre del protocolo de archivos
compartidos de Microsoft Windows (antiguamente llamado SMB,
renombrado recientemente a CIFS) para sistemas de tipo UNIX.
Samba configura directorios Unix-Linux (incluyendo sus
subdirectorios) como recursos para compartir a través de la red. Para
los usuarios de Microsoft Windows, estos recursos aparecen como
carpetas normales de red. Los usuarios de Linux pueden montar en
sus sistemas de archivos estás unidades de red como si fueran
dispositivos locales, o utilizar la orden smbclient para conectarse a
ellas muy al estilo del cliente de la línea de órdenes ftp. Cada
directorio puede tener diferentes permisos de acceso sobrepuestos a
las protecciones del sistema de archivos que se esté usando en Linux.
Por ejemplo, las carpetas home pueden tener permisos de lectura y
escritura para cada usuario, permitiendo que cada uno acceda a sus
propios archivos; sin embargo, deberemos cambiar los permisos de
los archivos localmente para dejar al resto ver nuestros archivos, ya
que con dar permisos de escritura en el recurso no será suficiente
Instalación de Samba
Para llevar a cabo la instalacion se necesitaran los siguientes
paquetes:
•
•
•
samba
samba-client
samba-common
Para instalarlos haga uso de la terminal como se muestra a
continuacion:
[BASH]# yum install -y samba samba-client sambacommon
Configuración de Samba.
Los ficheros que modificaremos seran:
Fichero /etc/samba/lmhosts
Fichero
/etc/samba/lmhosts
El fichero /etc/samba/lmhosts
es el fichero de gestión de los equipos de red estandar usado para resolver nombres a direcciones IP en el sistema. Podria decirse que este fichero es el equivalente al fichero /etc/hosts
que es un estandard de Linux-Unix y su estructura es identica a la que se muestra a continuacion:
192.168.220.100
desarrollo
192.168.220.101 ventas}}} La única diferencia es que los nombres de la columna derecha son nombres NetBIOS y solo son usados en linux por samba. Recordemos que los servidores DNS sirven para los casos
en donde un equipo requiere conectarse a otro y no tener que hacerlo por la direccion IP, por ejempo:
66.102.11.104
hydra
El fichero /etc/samba/lmhosts es una simplificación muy básica de ese proceso, pero sólo válida para tu propio equipo. Recordemos que el proposito del fichero /etc/hosts es resolver los nombres de equipos que no
pueden ser resueltos de otra manera. También se puede usar para resolver nombres de equipos en pequeñas redes sin servidor DNS. Es por ello que agregaremos al fichero
/etc/samba/lmhosts
El nombre que tiene especificado en el fichero
/etc/hosts
Ejemplo:
Fichero /etc/hosts/
-------------------------------------1.
2.
Do not remove the following line, or various programs
that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost localhost 192.168.1.105 servidor.empresa.com.mx}}}
Fichero /etc/samba/lmhosts
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 127.0.0.1 localhost 192.168.1.105 servidor.empresa}}}
Como podemos observar solo agregamos la linea final del fichero /etc/hosts al final del fichero /etc/samba/lmhosts
Configuracion de Samba.
Fichero /etc/samba/smb.conf
La configuracion basica de Samba se hara sobre el fichero localizado en:
/etc/samba/smb.conf
Configuraciondeparametrosglobales#
1.-Con la ayuda de algun editor de textos busque la siguiente linea
workgroup = MYGROUP
En esta linea puedes especificar un nombre para el grupo de usuarios que podran hacer uso de este recurso Ejemplo:
workgroup = Desarrollo
2.-Busque la siguiente linea
server string = Samba Server Version %v
En esta linea puedes poner un mensaje de bienvenida para el Servidor Samba Ejemplo:
server string = Servidor Samba Desarrollo
3.-Busque la siguiente linea
netbios name = MYSERVER
En esta linea deberas especificar el nombre que tiene asignado el equipo. Su nombre debe ser igual al especificado en el fichero /etc/samba/lmhosts Ejemplo:
netbios name = servidor.empresa
Configuración de Samba.
4.-Busque la siguiente linea
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
Esta linea especifica desde que segmentos de red escuchara peticiones el servidor Samba, cualquier otra interfaz no listada aqui sera ignorada Ejemplo:
interfaces = lo eth0 192.168.1.1/24 10.10.1.1
5.-Busque la siguiente linea
hosts allow = 127. 192.168.12. 192.168.13.
Esta linea especifica desde que segmentos de red escuchara peticiones el servidor Samba Ejemplo:
hosts allow = 192.168.12.2.
Note el punto al final de la linea
6.-Busque la siguiente linea
log file = /var/log/samba/log.%m
max log size = 50 }}} Esta lineas especifican la ubicacion donde quedaran los logs, en este caso la extensión sera conformado por el nombre del equipo desde la cual se hizo la conexión La segunda linea especifica el
tamaño máximo para los archivos de logs.
Configuraciondelosrecursoscompartidos
La configuracion de las recursos que compartiremos deben ir especificados al final del fichero
/etc/samba/smb.conf
Y deben seguir la siguiente estructura:
[nombreDescriptivoDelRecursoCompartido]
comment = Comentarios path = rutaDelREcurso public = yes writable = yes printable = no write list = desarrollo}}}
Configuración de Samba.
Algunas de las opciones que podemos agregar a esta estructura son las siguientes:
Directiva
Valor
Accion
encrypt passwords yes | no
Esta direcitva indica si las contraseñas seran cifradas cuando el usuario se autentique
usuario | grupo Lista a los usuarios o grupos a los cuales les negara el acceso
invalid users
valid users
usuario
Lista a los usuarios a los cuales el servidor les dará acceso
admin users
usuario
Lista a los usuarios que asumiran el rol de administrador
read list
usuario
Lista a los usuarios que solo podran leer el recurso compartido
write list
Lista a los usuarios que podran escribir en el recurso compartido
guest ok
usuario
yes | no
Define si se permitirá el acceso como usuario invitado o no
comment
Comentario
En esta seccion podras poner un comentario acerca del recurso que estas compartiendo
path
/ruta/del/recurso
yes | no
Define si el recurso podra ser visible o no
browseable
En esta seccion deberas especificar la ruta del recurso que compartes
Un ejemplo sobre el uso de estas opciones se ve a continuacion
[FacturasDiarias]
comment = Facturas path = /var/facturas guest ok = no write list = jefe directory mask = 1770 create mask = 0660 browseable = yes admin users = jefe contador valid users = jefe contador writable = yes public = yes
}}}
AltadeusuariosenSambA
Para dar de alta cuentas de usuario en Samba usaremos el comando useradd el cual debera ser aplicado segun la siguiente estructura
[BASH]# useradd -s /bin/nologin cuentaDeUsuario
el parametro
-s /sbin/nologin
Indicara al sistema que el usuario no tendra acceso al interprete de comandos
Configuración de Samba.
AsignaciondecontraseñasausuariosenSamba#
Para asignar contraseñas a los usuarios en Samba usaremos el comando smbpaaswd el cual debera ser aplicado segun la siguiente estructura
[BASH]# smbpasswd -a cuentaDeUsuario
Iniciar,deteneroreiniciarelservidorSamba#
Para iniciar el servidor samba por primera vez solo deberá teclear en terminal el siguiente comando:
[root@ localhost ~]# /etc/init.d/smb start
Igualmente existen opciones ya sea para reiniciar, detener, recargar o conocer el status en el que se encuentra el servidor Samba. Estas opciones pueden ser consultadas en la siguiente tabla:
start
Inicia el servicio
stop
Detiene el servicio
restart
Reinicia el servicio.-La diferencia con reload radica en que al ejecutar un restart este mata todos los procesos relacionado con el servicio y los vuelve a generar de nueva cuenta
reload
Recarga el servicio.-La diferencia con restart radica en que al ejecutar un reload este solamente carga las actualizaciones hechas al fichero de configuración del servicio sin necesidad de matar los procesos
relacionados con el mismo, por lo que podría entenderse que hace el cambio en caliente.
condrestart Reinicio Condicional.- Solamente se inicia si el servicio se encuentra ejecutándose.
status
Da a conocer el estado en el que se encuentra el servicio
Como alternativa también podemos ocupar el siguiente comando para iniciar el servidor samba
[root@ localhost ~]# service smb start
Y de igual manera podemos usar las opciones antes descritas en la tabla anterior. Recuerde que estos comandos se ejecutan como root.
ConectandoconelservidorSamba#
La forma para conectar al servidor samba desde terminal sigue la siguiente sintaxis
[BASH]# smbclient
//IPdelServidorSamba/recursoCompartido -U usuario
Descargar