Problema ao configurar o iptables (tráfego LDAP bloqueado)

Problema ao configurar o iptables (tráfego LDAP bloqueado)

Meu servidor de aplicativos está em uma rede protegida por um firewall para toda a organização e meu servidor também está usando o fail2ban. Dito isto, gostaria de configurar uma camada adicional de proteção com o iptables. Estou tendo um pequeno problema com minha configuração.

Requisitos:

  1. Negar acesso a todos e permitir um intervalo de IP específico (4.3.4.0/16)
  2. Funcionalidade LDAP continuada no aplicativo (usando ldap_connectem PHP)
  3. Capacidade de recuperar conteúdo externo via URL

Conhecidos:

  • O IP do servidor de aplicativos é 1.2.3.4
  • O servidor LDAP resolve para 1.2.100.200 e usa a porta 636
  • O IP estático do meu laptop é 4.3.2.1

O que eu tentei:

Começando com uma configuração vanilla iptablesque permite tráfego nas portas 22, 80 e 443, adicionei o seguinte.

# 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

Eu salvo essa configuração usando service iptables savee reinicio o serviço.

Problemas:

Se já estiver logado, posso navegar e usar o aplicativo (exceto por uma coisa, abaixo). Se eu não estiver conectado, a autenticação LDAP será interrompida.

O segundo problema é que não consigo acessar conteúdo externo com a nova configuração. Recupero dados de outra máquina usando HTTPS. É apenas uma questão de adicionar uma regra para permitir o tráfego de saída para o IP da máquina externa?

Responder1

O servidor LDAP poderia estar usando portas não padrão?

Você pode ver em qual porta o servidor ldap está escutandonetstat -tlpn

O segundo problema é que não consigo acessar conteúdo externo com a nova configuração

Presumo que você queira dizer que não consegue se conectar aos recursos de rede desta máquina depois de aplicar essas regras. As solicitações provavelmente estão sendo enviadas (já que aparentemente você não definiu OUTPUTa política padrão do para DROP), mas as respostas do servidor remoto estão sendo descartadas pelo firewall.

Você pode verificar se isso está acontecendo monitorando a contagem de pacotes da política padrão à medida que gera o tráfego com o qual está preocupado:

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

Acima, na 157 packetscadeia INPUTé a contagem de pacotes que acabaram tendo a política padrão aplicada a eles (as regras têm suas próprias contagens à esquerda e não alteram esse número no topo).

Você provavelmente deseja criar uma regra que permita explicitamente o tráfego relacionado a conexões já existentes:

iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

informação relacionada