OPCIONAL: Se prefiere instalar como firewall el CSF para los servidores de producción ya que esta integrado al WHM y permite una mejor interacción y manejo de aspectos de seguridad el cPanel/WHM. A su vez, existe un módulo de dicho firewall para el Webmin, es por ello que la instalación del firewall APF explicada aquí es opcional (Por ejemplo, lo usamos para servidores de centrales telefónicas basadas en VoIP).
Generalidades
Para impedir la intrusión indebida a través de puertos del servidor hacemos uso del Firewall APF.
El Firewall de Directivas Avanzadas (APF) es un sistema de cortafuegos de basado en iptables (netfilter) diseñado en torno a las necesidades esenciales de los servidores Linux. La configuración está diseñada para ser muy informativa y fácil de seguir. La gestión diaria se lleva a cabo desde la línea de comandos con el comando ‘apf’, que incluye información de uso detallada sobre todas las funciones.
El punto de vista técnico de APF es tal que utiliza las últimas características estables del proyecto de iptables (netfilter) para proporcionar un servidor de seguridad muy robusto y potente. El filtrado interpretado por APF se basa en tres niveles:
- Políticas Basadas en Regla Estáticas (no confundir con un “cortafuegos estático”)
- Conexión Basada en Políticas con Estados
- Políticas Basadas en Cordura
El primer nivel de Políticas Basadas en Regla Estáticas es el método más tradicional de cortafuegos. Esto aplica cuando el servidor de seguridad tiene un conjunto de instrucciones (reglas) que no cambian acerca de cómo debe controlarse el tráfico en ciertas condiciones. Un ejemplo de una política basada en reglas estáticas sería al permitir/denegar el acceso de una dirección al servidor con el sistema de confianza o abriendo un nuevo puerto a través del archivo conf.apf. Por lo tanto, son reglas que con poca frecuencia o nunca cambian mientras se está ejecutando el servidor de seguridad.
El segundo método, Conexión Basada en Políticas con Estados, es un medio para distinguir paquetes legítimos de diferentes tipos de conexiones. Se permitirán sólo los paquetes que coincidan con una conexión conocida por el servidor de seguridad; otros paquetes serán rechazados. Un ejemplo de esto serían las transferencias de datos por FTP. Anteriormente, los cortafuegos tenían que definir un conjunto complejo de directivas estáticas para permitir las transferencias de datos para que el FTP fluyera sin problemas. En el caso de las Políticas de Estados, el cortafuegos puede ver que una dirección ha establecido una conexión en el puerto estándar para FTP (21) y a entonces relaciona dicha dirección con la porción de transferencia de datos de la conexión modificando dinámicamente el cortafuegos para permitir el tráfico.
El tercer método, Políticas Basadas en Cordura, es la capacidad del servidor de seguridad para comparar patrones que coinciden con diversos métodos de ataque conocidos o analizar el tráfico para ajustarse a los estándares de Internet. Un ejemplo de esto sería cuando un potencial atacante intenta forjar la dirección IP desde la que se originan los datos que se le envían al servidor, el APF puede simplemente descartar este tráfico u opcionalmente registrarlo y luego descartarlo. En la misma medida, otro ejemplo podría ser cuando un enrutador con fallas en la Internet comienza a retransmitir paquetes malos a su servidor, el APF puede simplemente descartarlos o re-enviárselos al enrutador para que deje de enviarle estos paquetes de nuevo (TCP reset).
Estos tres métodos claves de filtrado empleados por el APF son una generalización de cómo se construye el cortafuegos a nivel técnico. A su vez, hay muchas características en el APF que pueden ser utilizadas. A continuación se indica en forma resumida la mayoría de las características del APF para su referencia y revisión:
- Archivo de configuración detallado y bien comentado
- Filtrado de red de entrantes y salientes granular
- Filtrado de red saliente en función de la Identificación de usuario
- Filtrado de red basada en aplicaciones
- Archivos de reglas de confianza con una sintaxis avanzada opcional
- Sistema de confianza mundial donde las reglas se pueden descargar desde un servidor de administración central.
- Bloqueo por Dirección Reactiva (RAB), próxima generación en línea de prevención de intrusiones
- Modo de depuración para probar nuevas características y configuraciones
- Característica de Carga Rápida que permite más de 1000 reglas cargadas en menos de 1 segundo
- Se pueden configurar de forma independiente interfaces de red entrantes y salientes
- Filtrado de puertos tcp/udp global e icmp con varios métodos de ejecución de filtros (colocar, rechazar, prohibir)
- Políticas configurables para cada dirección ip en el sistema con variables de conveniencia para importar parámetros de configuración
- Límite de tasa de flujo de paquetes que impide el abuso en el protocolo más abusado, icmp
- Reglas de pre-enrutamiento y post-enrutamiento para un rendimiento óptimo de red
- Soporte a la lista de bloqueo de dshield.org para prohibir redes expuestas con actividades sospechosas
- Soporte a la Lista Peer y de No Enrutar de Spamhaus para prohibir los bloques de Ips conocidos como “zombis secuestrados”.
- Puede ser configurado cualquier número de interfaces adicionales como confiables (no bloqueadas) o no confiables (bloqueadas)
- Interfaces adicionales de cortafuegos pueden aplicar políticas propias
- Verificación inteligente de rutas para evitar errores de configuración embarazosos
- Avanzada comprobación de paquetes para asegurar que el tráfico entrando y saliendo cumple las normas más estrictas
- Filtraje de ataques como UDP fragmentado, inundaciones de puerto cero, rellenos de enrutamiento, intoxicación arp, etc.
- Opciones de tipo de servicio configurables para dictar la prioridad de los diferentes tipos de tráfico de red
- Configuración predeterminada inteligente para satisfacer configuraciones de servidores típicas
- Configuración dinámica de los servidores locales de resolución de DNS en el cortafuegos
- Filtrado opcional de aplicaciones p2p comunes
- Filtrado opcional de espacio de direcciones IP privadas & reservadas
- Bloques implícitos del servicio ident opcionales
- Parámetros de seguimiento de conexiones configurable para escalar el servidor de seguridad al tamaño de la red
- Ganchos al núcleo (kernel) configurables para endurecer el sistema contra ataques de inundaciones syn y abusos de enrutamiento
- Controles de red Avanzados tales como la notificación de congestión explícita y control de sobreflujo
- Cadenas especiales que están conscientes del estado de las conexiones de datos por FTP y SSH para evitar problemas del lado cliente
- Control sobre la tasa de sucesos registrados (desea filtrar sólo 30 eventos por minuto? É ¿300 en un minuto?, usted decide)
- Subsistema de registro de eventos que permite los datos de registro para programas de espacio de usuario o archivos syslog estándar
- Registro que detalla cada regla agregada y comprueba un conjunto integral de errores para evitar errores de configuración
- Si está familiarizado con netfilter puede crear sus propias reglas en cualquiera de los archivos de política
- Preparado para la conexión y uso avanzado de algoritmos de Calidad de Servicios (QoS) proporcionados por Linux
- Proyectos de terceros que complementan las características del APF.
Instalación
Para instalar el APF se debe ingresar como root al SSH y ejecutar:
cd /usr/local/src
wget http://www.rfxn.com/downloads/apf-current.tar.gz
tar -xvzf apf-current.tar.gz
cd apf-9.7/ (ó la versión que corresponda)
Ejecutar el archivo de instalación:
./install.sh
Se recibirá un mensaje en pantalla indicando que se instaló correctamente; como el siguiente:
Installation Details:
Install path: /etc/apf/
Config path: /etc/apf/conf.apf
Executable path: /usr/local/sbin/apf
AntiDos install path: /etc/apf/ad/
AntiDos config path: /etc/apf/ad/conf.antidos
DShield Client Parser: /etc/apf/extras/dshield/
Other Details:
Listening TCP ports: 21,25,53,81,111,139,445,679,953,3306,29996
Listening UDP ports: 53,111,123,137,138,219,631,673,676,5353,29996,32770,32773
Note: These ports are not auto-configured; they are simply presented for information purposes.
You must manually configure all port options.
Para configurar el firewall se debe editar el archivo conf.apf con:
nano /etc/apf/conf.apf
Buscar DLIST_DSHIELD y colocarlo en 1
Desbloquear los puertos bloqueados:
BLK_PORTS="111,513,520,1434,1234,1524,3127"
Configurar los puertos permitidos de entrada y salida y parámetros relacionados como sigue:
Nota: No confundirse con lo que esta comentado con # en el archivo, debe ser lo que no está comentado (si se usa CTRL+W para buscar las variables, lo primero que se consigue es lo comentado por lo que si no estamos pendientes nos podemos equivocar).
Puertos de Ingreso (Inbound):
IG_TCP_CPORTS="21,25,53,80,81,111,110,135,137,138,139,143,443,445,2095,2096,3000_3500,10000,29996,29997,8080,3306,1433"
IG_UDP_CPORTS="53,111,123,135,137,138,139,445,29996"
IG_ICMP_TYPES="3,5,11,0,30,8"
Puertos de Egreso (Outbound):
EGF="1"
EG_TCP_CPORTS="21,25,43,53,80,81,110,111,135,137,138,139,445,679,1433,29996,29997"
EG_UDP_CPORTS="53,111,123,135,137,138,139,445,29996"
EG_ICMP_TYPES="all"
Guardar el archivo con los cambios (Ctrl X, Y, Enter)
Arrancar el funcionamiento del firewall con:
/usr/local/sbin/apf -s
Probar que los accesos estén OK.
Luego de que todo esté bien se debe volver a editar el archivo de configuración:
nano /etc/apf/conf.apf
Y colocar las siguientes opciones:
DEVEL_MODE="0"
USE_AD="1"
RAB="1"
A partir de la versión 9.7 de APF, antidos es una opción integrada llamada RAB.
Buscar y cambiar los siguientes parámetros:
Originalmente:
CONAME="Your Company"
USR_ALERT="0"
USR="your@email.com"
Cambiar a:
CONAME="SU EMPRESA - Servidor N"
USR_ALERT="1"
USR="hostmaster@sudominio.com"
Reiniciar el firewall:
/usr/local/sbin/apf -r
Luego hacer que el APF arranque siempre al iniciar con:
chkconfig --level 2345 apf on
Información de Puertos:
Puertos TCP de Entrada:
- 21 FTP (TCP)
- 22 SSH (TCP) (deshabilitarlo para habilitar el que usemos ” ejm 29998)
- 25 SMTP (TCP)
- 53 DNS – Domain Name Server (TCP)
- 80 HTTP (TCP)
- 110 POP3 (TCP)
- 135,137,138,139,445 SAMBA
- 143 IMAP (TCP)
- 443 HTTPS (TCP)
- 465 sSMTP (TCP)
- 953 ??BIND??
- 993 IMAP4 sobre TLS/SSL (TCP)
- 995 POP3 sobre TLS/SSL (era spop3) (TCP)
- 2082 CPANEL (http://sitename.com:2082) (TCP)
- 2083 CPANEL SSL (https://sitename.com:2083) (TCP)
- 2084 entropychat server (deshabilitarlo en CPANEL si no se usa) (TCP)
- 2086 WHM (http://sitename.com:2086) (TCP)
- 2087 WHM SSL (https://sitename.com:2087) (TCP)
- 2095 WebMail (http://sitename.com:2095) (TCP)
- 2096 WebMail SSL (https://sitename.com:2096)
- 3306 mySQL acceso remoto (TCP)
- 6666 Melange chat Server (deshabilitarlo en CPANEL si no se usa) (TCP)
- 7786 Interchange (TCP)
- 3000_3500
- 5100 para ASP,
- 8080 y 8443 para JSP si se utilizan.
Puertos UDP de Entrada:
- 53 DNS – Domain Name Server
- 6277 SpamAssassin / DCC (scan de emails)
Puertos ICMP de Entrada:
- 0 Echo Reply
- 3 Destination Unreachable
- 5 Destination Unreachable
- 8 Echo
- 11 Time Exceeded
- 30 Traceroute
Puertos TCP de Salida:
- 21 FTP
- 25 SMTP
- 37 Requerido para la Licencia de CPANEL
- 53 DNS – Domain Name Server
- 80 HTTP
- 110 POP3 (si se tienen scripts que necesitan obtener email via POP, e.j. HelpDesk)
- 113 Authentication Protocol (AUTH)
- 123 NTP (Network Time)
- 443 HTTPS
- 43 WHOIS
- 873 rsync (CPanel updates)
- 953 BIND ??
- 2089 Requerido para la Licencia de CPANEL
- 2703 Razor (email scanning)
- 3306 mySQL acceso remoto
Puertos UDP de Salida:
- 20 ftp-data
- 21 FTP
- 53 DNS – Domain Name Server
- 873 rsync
- 953 BIND ??
- 6277 SpamAssassin / DCC (email scanning)
Parámetros:
Los parámetros del comando APF son:
Parámetro Opción Descripción
- -s –start Carga todas las reglas del firewall
- -r –restart Para (flush) y recarga todas las reglas del firewall
- -f –stop Para (flush) todas las reglas del firewall
- -l –list Lista todas las reglas del firewall
- -t –status Muestra el log del estado del firewall
- -e –refresh Refresca y resuelve los nombres dns en reglas confiables
- -a HOST CMT –allow HOST COMMENT Agrega el host (IP/Dominio) al archivo allow_hosts.rules
- e inmediatamente carga la nueva regla en el firewall
- -d HOST CMT –deny HOST COMMENT Agrega el host (IP/Dominio) al archivo deny_hosts.rules
- e inmediatamente carga la nueva regla en el firewall
- -u –remove HOST Elimina el host de los archivos [glob]*_hosts.rules
- e inmediatamente elimina la nueva regla en el firewall
- -o –ovars Muestra todas las opciones de configuración
Enlaces a Recursos:
http://www.rfxn.com/appdocs/README.apf
http://www.rfxn.com/appdocs/CHANGELOG.apf