Cargando



Cómo configurar un servidor de seguridad para proteger su servidor Linux

Este es el tutorial que muestra cómo configurar y proteger redes y sistemas con los diferentes tipos de Firewall de comandos y gráficos para los sistemas Linux.


may 23 2015 18:06
Profesional
may 23 2015 18:12
Uno de los framework mas utilizados en seguridad en Linux es Netfilter, esta funcionalidad está dentro del kernel de Linux y ofrece flexibilidad para diversas operaciones relacionadas con la red que se ejecutarán en forma de controladores personalizados.

Netfilter ofrece varias opciones para el filtrado de paquetes, resolución de direcciones de red y resolución de puertos. Estas funciones proporcionan la funcionalidad necesaria para dirigir paquetes a través de una red, así como para proporcionar capacidad de prohibir que los paquetes lleguen a lugares sensibles dentro de una red informática.

Netfilter representa un conjunto de herramientas dentro del kernel de Linux, por lo que permite a los módulos específicos del kernel para registrar las funciones de devolución de transacciones de red dentro del kernel.

Esas funciones, generalmente se aplican al tráfico en forma de reglas de filtrado, se invocan a medida que cada nueva transacción o cada paquete de datos que atraviesa el sistema de filtros respectivo dentro de la red, este sistema de filtros es un firewall.

El firewall se encarga de interceptar y manipular paquetes de red. También permite realizar el manejo de paquetes en diferentes estados del procesamiento. Netfilter es también el nombre que recibe el proyecto que se encarga de ofrecer herramientas libres para firewall o cortafuegos basados en Linux.

El componente más popular construido sobre Netfilter es iptables, una herramienta de firewall o cortafuegos que permite filtrar paquete y además realizar resolución de direcciones de red o mantener registros de log de lo que esta ocurriendo. El proyecto Netfilter no sólo ofrece componentes disponibles como módulos del núcleo sino que también ofrece herramientas de para ser utilizados por usuario y librerías para desarrolladores.

Aquí veremos cómo configurar un servidor de seguridad usando iptables. En primer lugar deberemos verificar si iptables se encuentra activo, para ello desde una ventana de terminal escribimos los siguiente:
sudo iptables -L
Si no hay ninguna regla o filtros asignados, deberíamos ver algo como la siguiente salida:

iptables-firewall.jpg


Si no lo tuviésemos instalado podemos instalarlo con la siguiente sentencia:
sudo apt-get install iptables
También podemos utilizar el comando:
whereis iptables
Que nos devolverá la ubicación de Iptables, algo como lo siguiente:
iptables: /sbin/iptables /usr/share/iptables /usr/share/man/man8/iptables.8.gz
Para iniciarlo en el caso de Debian/Ubuntu y derivados ejecutamos el comando:
sudo ufw enable // iniciar
sudo ufw disable //detener
Si utilizamos CentOS / RHEL / Fedora ejecutamos el siguiente comando:
service iptables stop
service iptables start
service iptables restart

Como aplicar reglas a Iptables


Las reglas para el filtrado de paquetes se ponen en funcionamiento ejecutando el comando iptables. El tipo de sintaxis responde a la siguiente sentencia.

Ejemplo Insertar reglas para permitir el acceso al puerto 80 que es el que utilizan los servicios web:
iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
Explicamos los parámetros definidos de la regla:

-A = indica anexar esta regla a una cadena del filtro. La cadena donde indicamos que estamos haciendo, en la mayoría de la veces nos ocupamos del trafico entrante o saliente INPUT y OUTPUT, permitiendo o no determinado puerto o determinadas ip para el trafico de datos.


-m = permite indicar que la regla de filtrado debe coincidir con el medio o protocolo de conexión y transmisión, por ejemplo en este caso permitimos el trafico de datos pero solo por protocolo tcp y no udp u otro protocolo.


-s = indica la dirección ip de origen de trafico permitido, el rango utilizando dirección [/ máscara de red] o especificando el puerto origen.


-d = indica la dirección ip de destino de trafico permitido, el rango utilizando dirección [/ máscara de red] o especificando el puerto destino.


j – = indica que acción se llevara acabo si coincide el paquete con la regla de filtro. Por defecto, iptables permite a cuatro posibles acciones:



ACCEPT indica que se acepta el paquete y puede continuar.


REJECT indica que se rechaza el paquete y notifique al origen que no se acepta, deja de procesar el paquete.


DROP indica que se rechaza e ignora el paquete, no produce ningún aviso y deja de procesar el paquete.


LOG indica que se acepte el paquete y continua procesando más reglas en esta cadena, permite ver un log de lo ocurrido.



Ejemplo: cerrar el puerto 22 de acceso remoto SSH:
iptables -A INPUT -p tcp --dport 22 -j DROP
Lo que indicamos es rechazar cualquier entrada o ingreso de tráfico de datos o intento de conexión al puerto 22.

Ejemplo: si queremos que un desarrollador o diseñador tenga acceso ftp desde un determinado ordenador pero nadie más, entonces podemos utilizar la siguiente regla, donde acepto el ftp, puerto 21, para una determinada ip.
iptables -A INPUT -s 190.115.80.142 -p tcp -dport 21 -j ACCEPT
Ejemplo: los administradores de bases de datos pueden tener su propio acceso desde un determinado ordenador. Entonces le habilitamos la conexión al puerto de Mysql o la base de datos que tengamos.
iptables -A INPUT -s 190.115.80.23 -p tcp --dport 3306 -j ACCEPT
Ejemplo: la mayoría de los administradores de servidor mantienen cerrado el puerto 25 (SMTP) por la generación de spam y la facilidad de los spammers para utilizarlo para envíos masivos, por ello lo podemos bloquear para que nadie lo utilice de una forma fácil y sencilla.
iptables -A INPUT -p tcp --dport 22 -j DROP
Ejemplo: Si necesitamos permitir el acceso a sitios web seguros que utilizan el formato https://www.miweb.com, debemos permitir el acceso al puerto 443 que es el de Https/Ssl usado para la transferencia segura de páginas web.
iptables -A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT
Atención Administradores de Sistemas
Todo administrador y usuario de Linux debe tener en cuenta que es importante considerar esta herramienta como primer linea de defensa de seguridad, saber utilizarlas nos servirá en muchos casos, ya que impide el acceso a nuestro sistema, sino que además sirve para detener un posible ataque en curso.

Una forma de personalizar iptables con facilidad de acuerdo a nuestra necesidad para minimizar posibles problemas de seguridad y vulnerabilidades.


Si necesitamos conocer todos los puertos que podemos tener en nuestro sistema podemos utilizar la siguiente guía de los puertos más utilizados y que se deben considerar proteger.

Puertos de internet a tener en cuenta



20 FTP Transferencia de archivos y datos
21 FTP
22 SSH, SFTP acceso remoto
23 Telnet manejo remoto de equipo, es un protocolo inseguro
25 SMTP Envio de email es inseguro
53 DNS Sistema de resolución de nombres de dominio
67 BOOTP (Servidor) utilizado por direcciones ip dinámicas DHCP
68 BOOTP (Cliente), también usado por DHCP
80 HTTP Protocolo de transferencia de hiperTexto. Servicio WWW

110 POP3 Protocolo de Oficina de Correo. Servicio de recepción de emails
143 IMAP Protocolo de aplicación que permite el acceso a mensajes almacenados en un servidor de emails
389 LDAP Protocolo de acceso ligero a Bases de Datos
443 HTTPS/SSL Protocolo para la transferencia segura de páginas web
465 SMTP en forma segura y cifrada con SSL. Se utiliza para el envío de emails
631 CUPS sistema de impresión de Linux y derivados
993 IMAP con seguridad y cifrado con SSL Se utiliza para el recepción de emails
995 POP3 con seguridad y cifrado con SSL Se utiliza para el recepción de emails

1433 Puerto para servidor de base de datos SQLServer
1434 Puerto para monitoreo servidor de SQLServer con SQLMonitor
1521 Puerto para servidor de base de datos Oracle
2082 CPanel puerto de acceso al panel de control para administración de web
2083 CPanel puerto de acceso seguro con SSL.
3306 MySQL Puerto de acceso al servidor de bases de datos MYSQL
3389 RDP Terminal o escritorio remoto de servidor
3396 Novell puerto de servicio de impresión de Novell
3690 Apache Subversion es una herramienta de control de versiones, conocida también como SVN
5000 Puerto de plug-and-play universal es un conjunto de protocolos de comunicación que permite a ordenadores, impresoras, puntos de acceso Wi-Fi y dispositivos móviles, encontrarse en un a red
5222 Jabber/XMPP es el protocolo que usan hoy Facebook, Tuenti, WhatsApp entre otros
5223 Jabber/XMPP puerto por defecto para conexiones de cliente SSL
5269 Jabber/XMPP conexión de servidor
5432 PostgreSQL sistema de gestión de bases de datos
5400 VNC protocolo de escritorio remoto utilizando el protocolo HTTP.
8080 Es el puerto que utilizan las web del servidor Tomcat con JSP.

10000 Webmin es una herramienta de configuración de servidor vía web para sistemas permite la administración remota web como Cpanel por ejemplo


Administrar iptables de forma Visual


Para el usuario que no quiere introducir código y reglas desde la terminal también se puede hacer desde algunos entornos gráficos, que nos permiten introducir reglas de forma transparente pero terminan generando el código que vimos anteriormente configurando algunos parámetros.

Firestarter


Es un software de código abierto, disponible de forma gratuita Fácil de usar interfaz gráfica, aquí por ejemplo habilitamos el uso de Firefox para navegar a una ip para diversos destinos por lo que podría ser un administrador de terminales o soporte técnico. Nos indica también el tráfico que se va generando a través de la red.

iptables-firewall2.jpg


Firewall Builder


Es un software muy popular para gestionar firewall, puede ser utilizado en forma visual o también mediante terminal y soporta diversos sistemas operativos y otras herramientas ademas de iptables. Firewall Builder es una aplicación de gestión de firewall visual para iptables y otros como los que implementa Cisco. Los datos de configuración del firewall se almacenan en un archivo central que puede utilizarse en otros firewalls administrados desde una única interfaz de usuario.

Lo podemos descargar desde la web del proyecto:


La instalación es sencilla una vez descargado ejecutamos el siguiente comando con la version de fwbuilder descargada:
dpkg -i fwbuilder_5.1.0.3599-ubuntu-precise-1_i386.deb

iptables-firewall3.jpg



UFW


Este software sirve para gestionar visualmente iptables, permite configuraciones muy sencillas y potentes. Esta incluido en los repositorios de la mayoría de las distribuciones.

Su nombre es Uncomplicated Firewall o Firewall sin complicaciones (UFW) es un frontend para iptables y está adaptado para los firewalls basados en Ubuntu y derivados. UFW proporciona una forma visual para la gestión de netfilter/iptables, también una interfaz de línea de comandos para manipular el servidor de seguridad.

UFW tiene como objetivo proporcionar una interfaz fácil de usar para las personas que no tienen conocimientos de comandos de iptables o no conocen un firewall, este software simplifica la gestión de iptables y la introducción de comandos para ayudar a administrar los permisos de puertos y servicios.

También se puede iniciar y detener desde la terminal con los comandos:
sudo ufw enable // iniciar
sudo ufw disable // Detener
sudo ufw status //Estado activo o inactivo
La interface GUI para UFW Firewall se denomina Gufw y es como su nombre indica, una interfaz gráfica de usuario para la UFW.

¿Te ayudó este Tutorial?


1 Comentarios


Fran Pazos
may 23 2015 22:58

Genial tutorial Sergio, gracias.

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X