Como impedir o acesso de um usuário a um site usando server.domain.com, mas permitindo o vip.domain.com?

1

Nós configuramos nosso site para ser executado na estrutura de reprodução. Ele está executando o http 9000. Podemos acessar o site indo para link onde servername é o nome do servidor da Web.

Também configuramos nosso loadbalancer F5 para redirecionar todo o tráfego de http para https e o tráfego da porta 443 para a 9000. Nós configuramos um nome de domínio para o F5, vip.domain.com, que se conecta a esse servidor da Web no back-end. Pegamos os outros servidores da web para depurar, então só há 1 servidor no pool.

Quando vou ao site no Chrome, se formos para o link , o F5 redireciona-nos para link e recebemos o cadeado verde e ele diz" Seguro ".

Quando eu insiro o link , ele diz "Não seguro" e não recebemos o cadeado.

Alguém fez uma verificação de segurança e disse que estamos enviando coisas sem criptografia. Fizemos todos os nossos testes e dissemos a todos para irem para link , mas acho que a varredura usou link .

Existe uma maneira de fazer link não funcionar, mas ainda deixar a porta 9000 aberta para link ? Temos acesso para fazer alterações no servidor e no VIP, se necessário.

    
por Classified 19.09.2017 / 23:30

2 respostas

2

A maneira mais simples é configurar um firewall que bloqueie a porta 9000 de qualquer host que não seja o IP do balanceador de carga (desde que não seja dinâmico)

regras simples:

iptables -A INPUT -p tcp --dport 9000 -m comment --comment 'allow LB traffic' -s LB.IP.ADDR.HERE -j ACCEPT e iptables -A INPUT -p tcp --dport 9000 -m comment --comment 'drop all other requests to 9000' -j DROP

Estes irão:

  • permite a porta 9000 da máquina LB (você pode adicionar mais regras para mais LBs
  • bloqueia outro tráfego para a porta 9000

A melhor maneira seria detectar em sua aplicação qual domínio é usado na conexão e fazer um redirecionamento para o endereço seguro, quando o errado é usado. Não tenho certeza sobre o seu framework / aplicativo, mas a maioria dos maiores fornece esses mecanismos.

    
por 19.09.2017 / 23:36
3

Isso é simples de fazer com uma iRule:

when HTTP_REQUEST {
  if { [HTTP::host] equals "servername.domain.com" } {
    # send a TCP reset
    reject

    # alternatively, redirect somewhere else
    # HTTP::redirect "http://www.somedomainyoufindentertaining.com"
  }     
}

(Quase textualmente de link )

Apenas faça referência a isso no servidor virtual que manipula o tráfego da porta 9000. Você também pode ficar mais criativo com a condição de decidir se deve ou não rejeitar a conexão.

    
por 19.09.2017 / 23:47