Pages

Ads 468x60px

viernes, 7 de agosto de 2015

Firewalls, teoría. Iptables.

Imagen de Cloneguard

Firewall

Comenzaremos diciendo que un firewall es un software especializado que es capaz de realizar un filtrado de paquetes entre las aplicaciones y el software de red. Pueden ser de hardware (dispositivo físico) o de software (o una mezcla de ambos). Debemos tener claro que no es suficiente contar solo con un firewall en la red, nuevamente, solo es una capa más de seguridad. 

- Cuando es trafico de entrada, la tarjeta de red recibe un paquete y lo identifica, pero antes de entregarlo a la aplicación que corresponda, pasa por el firewall para que este decida si lo deja pasar o no.
- Cuando es trafico de salida, la aplicación crea los paquetes de datos, pero antes de entregarlo al software de red para que lo envíe, este pasa por el firewall y decide si se envía a no como en el caso anterior.



El firewall funciona mediante reglas de configuración, así dichas reglas pueden ser activadas, desactivadas, modificadas o se pueden añadir nuevas. Estas normalmente se aplican solo a las cabeceras TCP/IP de las capas 3 (red) y 4 (transporte) ya que el firewall mira básicamente direcciones IP y puertos, aunque es capaz de reconocer conversaciones entre dos equipos y controlarlas.

En caso de que necesitemos más seguridad, existen los llamados firewall de aplicación, donde si se mira más allá de las cabeceras. Estos se suelen utilizar en protocolos web.

Hay veces que es necesario utilizar, además del firewall, un IPS para protegernos de otros ataques.
En las empresas debe haber máquinas distintas para cada servicio y estas deberían estar en una subred especial que se denomina DMZ (zona desmilitarizada), es en ellas en las que, por ejemplo, se puede usar un IPS/IDS ya que está expuesta a más ataques.

Iptables 

Iptables es un firewall que está vinculado al kernel de Linux, muy usado desde la versión 2.4 del kernel.

Cuando el software de red se encuentra con un paquete que le llega de la tarjeta de red debe decidir que hacer con el, pudiendo dar como resultado:

-Descartado. Si el destinatario del paquete no es nuestra máquina el paquete termina aquí. Si tuviésemos una petición HTTP a una máquina que no tiene un servidor web, la máquina lo ignora.
-Aceptado. Si el paquete que llega es para nosotros y hay un proceso que sabe qué hacer con el. En este caso si tenemos un servidor web funcionando.


-Aceptado. Aunque el destinatario no seamos nosotros. Si fuésemos un router y tenemos que enviar el paquete a otra interfaz.

-AceptadoAunque el destinatario no seamos nosotros y no seamos un router, pero quizá si seamos un sniffer en la red.

Iptables permite introducir reglas en cada una de estas etapas:

-Input. Cuando nos llega un paquete para un proceso nuestro pero todavía no se lo hemos entregado.

-Forward. Cuando somos un router y estamos a punto de traspasa el paquete de una interfaz a otra.

-Output. Cuando un paquete está listo para salir por una interfaz.

-Prerouting. Se ejecuta antes del input. Se usa para obviar el enrutamiento ya que sabemos qeu tratamiento dar a esos paquetes.

-Postrouting. Se ejecuta después del output y del forward. Se usa para aplicar alguna modificación a los paquetes que están a punto de salir de la máquina.
En las reglas de Iptables hay una lista de condiciones y una acción. Cuando un paquete cumple todas las condiciones de una regla, se ejecuta la acción. En las condiciones se puede usar la interfaz por la que entró, la interfaz por la que va a salir, la dirección IP o la subred del paquete, el puerto de origen o destino, el tipo de protocolo etc. Por ello pueden ser las acciones aceptar, rechazar o modificar el paquete.

Como no todas las acciones están disponibles en todas las situaciones, las reglas se pueden agrupar principalmente en tres tablas:

-Filter. Tabla principal. Su misión se basa en aceptar o rechazar los paquetes.

-NAT. Permite cambiar la dirección de origen o destino del paquete.

-Mangle. Con ella podemos modificar algunos campos de la cabecera IP como el ToS (Type of Service, Tipo de Servicio). Se suele usar para aplicar QoS (Quality of Service, Calidad de Servicio) marcando los paquetes de algunos servicios para luego priorizarlos.

Dentro de cada tabla, las reglas se agrupan a su vez por la etapa del procesamiento de paquetes donde se aplican los vistos anteriormente (output, postrouting, etc.) aunque no todas las tablas tienen todas las etapas. Para cada etapa o chain (encadena una regla con otra) hay una lista de reglas que se recorre secuencialmente hasta que el paquete la cumple, en cuyo momento se ejecuta la acción asociada a la regla y se dejan de aplicar el resto (menos en la opción LOG). Si el paquete no cumple ninguna de las reglas de esa etapa, se aplica la acción por defecto de la etapa.

Hasta aquí la parte de teoría.

Roberto García (@1GbDeInfo)
Creative Commons Licence
1Gb De informacion by Roberto García Amoriz is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported License.
Based on a work at http://www.1gbdeinformacion.com/.
Permissions beyond the scope of this license may be available at http://www.1gbdeinformacion.com/.

Perfil profesional en Linkedin

 
Blogger Templates