Mi servidor de aplicaciones está en una red protegida por un firewall para toda la organización y mi servidor también utiliza fail2ban
. Dicho esto, me gustaría configurar una capa adicional de protección con iptables
. Estoy teniendo un pequeño problema con mi configuración.
Requisitos:
- Denegar el acceso a todos y luego permitir un rango de IP específico (4.3.4.0/16)
- Funcionalidad LDAP continua en la aplicación (usando
ldap_connect
en PHP) - Capacidad de recuperar contenido externo a través de URL
Conocidos:
- La IP del servidor de aplicaciones es 1.2.3.4
- El servidor LDAP resuelve en 1.2.100.200 y utiliza el puerto 636
- La IP estática de mi portátil es 4.3.2.1
Lo que he probado:
Comenzando con una iptables
configuración básica que permite el tráfico a través de los puertos 22, 80 y 443, agregué lo siguiente.
# explicitly allow ssh access from my laptop
iptables -A INPUT -s 4.3.2.1 -d 1.2.3.4 -p tcp --dport 22 -j ACCEPT
# deny all traffic
iptables --policy INPUT DROP
# allow traffic from a specific IP range
iptables -A INPUT -s 4.3.4.0/24 -j ACCEPT
# allow traffic from LDAP server IP
iptables -A INPUT -s 1.2.100.200 -j ACCEPT
iptables -A INPUT -p tcp --dport 636 -j ACCEPT
Guardo esa configuración usando service iptables save
y luego reinicio el servicio.
Problemas:
Si ya inicié sesión, puedo navegar y usar la aplicación (excepto por una cosa, a continuación). Si no inicio sesión, la autenticación LDAP se bloquea.
El segundo problema es que no puedo acceder a contenido externo con la nueva configuración. Recupero datos de otra máquina usando HTTPS. ¿Se trata simplemente de agregar una regla para permitir el tráfico saliente a la IP de la máquina externa?
Respuesta1
¿Podría el servidor LDAP estar utilizando puertos no estándar?
Puede ver en qué puerto está escuchando el servidor ldap a través denetstat -tlpn
El segundo problema es que no puedo acceder al contenido externo con la nueva configuración.
Supongo que quiere decir que no puede conectarse a los recursos de red desde esta máquina después de aplicar estas reglas. Es probable que las solicitudes se estén enviando (ya que aparentemente no configuró OUTPUT
la política predeterminada de DROP) pero el firewall está eliminando las respuestas del servidor remoto.
Puede verificar que esto suceda monitoreando el recuento de paquetes de la política predeterminada a medida que genera el tráfico que le interesa:
root@xxxxxxvld02 ~ $ iptables -nvL
Chain INPUT (policy ACCEPT 157 packets, 18048 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 63 packets, 6998 bytes)
pkts bytes target prot opt in out source destination
En lo anterior, 157 packets
en la INPUT
cadena está el recuento de paquetes a los que se les aplicó la política predeterminada (las reglas tienen sus propios recuentos a la izquierda y no cambian ese número en la parte superior).
Probablemente quieras crear una regla que permita explícitamente el tráfico relacionado con conexiones ya existentes:
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT