2011-3770 sistemas operativos iii josé doñe instalación...
TRANSCRIPT
Nombre: Yonaira Castillo Soriano
Matricula: 2011-3770
Asignatura: Sistemas Operativos III
Instructor: José Doñe
Tema: instalación firewall
FIREWALL
El propósito de un cortafuegos (firewall) es
controlar el flujo de datos que salen o entran
por una interfase de red. Se construye
mediante un filtro de paquetes, que es un
código que lee el encabezado de un paquete
de red que recibe una interfase
(e.g. lo, eth0 o ppp0) y luego decide si
aceptarlo, rechazarlo o redirigirlo antes de
alcanzar un proceso local (daemon). En Linux, el filtro de paquetes es parte del
núcleo. A partir de la versión del núcleo 2.4 se reescribió completamente y pasó
a llamarse iptables, reemplazando al antiguo ipchains.
La palabra "cortafuegos" puede dar una sensación falsa de seguridad. No existe
red completamente segura y si bien un cortafuegos puede ser considerado una
primera línea de defensa, la vigilancia ante actividades extrañas en el
computador son esenciales para mantener el sistema seguro. Si no has leído
aún sobre la seguridad del sistema Debiansugerimos que lo hagas antes de
continuar.
Nuestra propuesta de cortafuegos intenta ser lo más simple y transparente
posible. Está ideada para proteger a una estación de trabajo o servidor Debian
de intrusos externos, sin restringir de modo alguno al usuario.
Filtro de paquetes
iptables es la herramienta que inserta o remueve "reglas" (rules) en la tabla
del filtro de paquetes del núcleo y es instalada por omisión en el sistema base.
El núcleo parte con una tabla que contiene tres listas básicas de reglas
llamadas "cadenas" (chain). Estas son INPUT, OUTPUT y FORWARD,
respectivamente (entrada, salida y redirección). Cuando un paquete entra a
una interfase de red, el núcleo examina primero el destino del paquete y decide
que ruta tomar (INPUT o FORWARD). Luego el paquete es examinado en la
cadena, en donde la decisión de desechar (DROP) o aceptar (ACCEPT) el
paquete es tomada. Si la decisión es aceptar, el paquete continua hacia el
destino, siendo recibido por algún proceso local (un daemon). En cambio, si la
decisión es desechar, el paquete es descartado completamente, muriendo en el
lugar, antes de alcanzar un proceso local.
_____
Entrante / \ Saliente
-->[Decisión]--->|FORWARD|------->
[de ruta ] \_____/ ^
| |
v ____
___ / \
/ \ |OUTPUT|
|INPUT| \____/
\___/ ^
| |
----> Proceso local ----
Una cadena es entonces una lista de reglas de control. Cada regla dice, "si el
encabezado del paquete es de esta manera, aplico tal acción sobre él". La regla
puede estar compuesta de una o múltiples condiciones. Si cualquiera de las
condiciones de la regla no se cumple, la próxima regla es consultada. Si el
paquete llega al final de la cadena sin que alguna regla le aplique, el núcleo
consulta la "norma" (policy) definida para la cadena. La norma puede ser DROP
o ACCEPT. En un sistema en donde la seguridad es prioridad, la norma de las
cadenas INPUT y FORWARD debería ser siempre DROP.
Un programa o proceso también puede generar un paquete para ser enviado,
pasando por la cadena OUTPUT. Si la decisión es ACCEPT, el paquete continua,
saliendo por la interfase de red. Un sistema en donde el control sobre sus
usuarios es mínimo, la norma de la cadena OUTPUT debería ser siempre
ACCEPT.
Aparte de las tres cadenas básicas, que son imborrables, iptables permite crear
nuevas cadenas e insertar reglas en ellas. Estas no tienen norma y al llegar al
final retornan al punto donde fueron llamadas. Las operaciones que se pueden
realizar sobre una cadena son:
1. Crear una nueva cadena (-N).
2. Borrar una cadena vacía (-X).
3. Cambiar la norma de una cadena básica (-P).
4. Lista de reglas en una cadena (-L).
5. Vaciar las reglas de una cadena (-F).
6. Volver a cero el contador de paquetes y bytes de todas las reglas de una
cadena (-Z).
Las operaciones para manipular una regla dentro de una cadena son:
1. Añadir una regla a una cadena (-A).
2. Insertar una regla en algún punto de la cadena (-I).
3. Reemplazar una regla en algún punto de la cadena (-R).
4. Borrar una regla en algún punto de la cadena, o la primera que coincida
(-D).
En mi caso utilizaremos iptables ™ La comanda IPTABLES se utiliza en linux para la
configuración de un firewall.
™ IPTABLES permite realizar la programación de servicios NAT y Listas de Acceso
Accedemos a nuestra telmina y nos logiamos como root.
Luego Procederemos así: ponemos el comando apt-get install iptables este comando me
permite instalar firewall en mi ordenador.
Es importante saber y conocer las diferentes tables que existen. En total existen 3: filter, mangle o nat. Cada vez que utilicemos uno de los parámetros iptables en este documento, llamaremos la tabla correspondiente de la siguiente manera: Iptables –t [nombre de tabla] que puede ser filter, mangle o nat. La letra t con el signo de - (-t) indica cual será la tabla utilizada por defecto si no indicamos nada cuando llamamos a iptables. Vamos entonces a definir políticas generales para las tres cadenas, que se encuentran claro está en la misma tabla (en este caso filter). Iptables –t filter –P INPUT DROP Iptables –t filter –P FORWARD ACCEPT Iptables –t filter –P OUTPUT ACCEPT
Si queremos comprobar la configuración de nuestra IPtables solo
tenemos que introducir el siguiente comando iptables-save.
Si queremos entrar a cualquier página web, vamos a notar que
estas van a estar bloqueadas por las iptables. Probamos con google.com.
Ahora bien si queremos permitir la entrada y salida de paquetes originadas
desde nuestro servidor, indicaremos los siguientes parámetros iptables -t filter -
A INPUT –m state - - state ESTABLISH RELATED –j ACCEPT.
Probamos entonces con la página de google.
Si queremos tener la certeza de que en este momento las iptables solo aceptan peticiones
originadas desde nuestro servidor, revisamos cual es nuestra dirección IP con el comando
ifconfig.
Damos ping desde un cliente al servidor, para de esta manera confirmar que el Firewall
está rechazando o más bloqueando la conexión.
Como pueden observar aunque estén bloqueadas las solicitudes de tráfico externo, solo las peticiones de nuestro servidor son permitidas. Si queremos listar las configuraciones que hasta ahora se han hecho en nuestro servidor,
se verifican con la siguiente sintaxis iptables –t filter –L.
Permitir puertos. Para tratar de configurar un puerto para conexiones entrantes con INPUT DROP configurado utilizamos la sintaxis descrita en la parte superior de la siguiente forma iptables –A INPUT –ptcp –dport 80 –j ACCEPT. Esto es para conexiones de tcp si queremos utilizar entonces conexiones udputilizamos la misma sintaxis pero en vez de ponerle tcp le ponemos udp. Es necesario saber la diferencia entre udp y tcp. Basándonos en algunos ejemplos específicos, aprendamos a como configurar
conexiones entrantes y salientes para puertos específicos de nuestro sistema.
Por ejemplo supongamos que tenemos todas las conexiones entrantes en modo
DROP o mejor dicho bloqueo. Y queremos que se permitan ciertas conexiones
entrantes, por parte del puerto 80 que es el http. El puerto 80 permite que
nuestro navegador web pueda enviar y recibir datos de servidores http que se
encuentran en todo el internet.
La sintaxis para configurar un puerto es iptables –A(acción, pusiendo ser tanto –I como –D y demás) [INPUT, OUTPUT o FORWARD] –p [tcp o udp] --dport [número de puerto] –j [ACCEPT o DROP]. Si desea modificar un puerto tanto de entrada, salida y a travez del servidor
# iptables –A INPUT –p tcp –dport 80 –j ACCEPT
Con el siguiente comando podrás ver las configuraciones iptables-save. Si
Si intentamos dar ping a la loopback veremos que no será posible ya que el Firewall, esta bloqueando todas las conexiones entrantes.
Para esto debemos cambiar el modo INPUT a ACCEPT.
Ahora probamos
Bloqueando puertos específicos.
Si queremos bloquear un puerto en específico lo podemos hacer de la
siguiente manera, insertar el comando iptalbes -A INPUT –s (la direccion IP
del hosts que queremos bloquear) –p icmp –j DROP y especificamos tanto para
las conexión entrantes, salientes y de reenvió a través del servidor.
Si queremos ver la configuración solo tenemos que insertar el siguiente
comando iptables-save.
Y si vamos al hots que bloqueamos, e intentamos dar ping hacia el servidor se dará cuenta que el ping fallara, porque el Firewall ha bloqueado ese puerto.
De igual manera podemos ir al servidor y probar la conectividad con el
cliente.
De la misma forma que podemos bloquear un host en específico, también
podemos bloquear toda una red solo tenemos que insertar el comando iptalbes
-A INPUT –s (la dirección IP de la red que queremos bloquear/seguido de la
máscara) –p icmp –j DROP y especificamos tanto para las conexión entrantes,
salientes y de reenvió a través del servidor
Si queremos ver la configuración solo tenemos que ingresar el siguiente
comando iptables-save.