Como bloquear 443 sites ou permitidos

2

Eu sei que esta foi uma pergunta muito feita aqui no serverfault, no entanto eu não tenho uma resposta consise (ou não tenho lido o suficiente: D) eu também sei que alguns de vocês podem pensar que é uma prática antimanager ( provavelmente é), mas o ponto que tem que ser feito ...

atualmente eu estava aplicando uma política de bloqueio do iptables combinada com o squid mas que não funcionava porque precisamos acessar certos sites do google ou serviço skype e estes são acessados por https e também trocar seu ipaddress é realmente difícil de manter a trilha .. .

Um amigo meu me recomenda Astaro eu ainda não o vi, você pode aconselhar uma ferramenta que faz um site de filtragem / domínio por porta?

Edite a pergunta

Existe uma maneira de bloquear sites HTTPS por domínio ou a melhor abordagem para isso? O Astaro parecia uma alternativa, mas parece um simples proxy da Web antigo

    
por Necronet 09.02.2011 / 04:33

2 respostas

1

O truque é usar o Squid com usuários autenticados. O tráfego SSL não pode ser intermediado por proxy se você estiver executando um proxy transparente. O Squid pode ser executado nos dois sentidos ao mesmo tempo (em portas diferentes):

http_port <ip>:3128 transparent
http_port <ip>:8080

Você obviamente teria que adicionar algumas regras para permitir e impedir que usuários autenticados naveguem onde é permitido ou proibido. Ainda assim, os usuários que estão acessando a Web de forma transparente, serão proibidos de acessar o HTTPS se ele estiver bloqueado em seu firewall.

A outra maneira (mais suja) seria obter os sites permitidos em um arquivo, obter seus registros de DNS e atualizar / remover regras, algo como:

Defina uma regra como esta:

iptables -N SSL_FORWARD
iptables -A FORWARD -s <NET> -p tcp --dport 443 -j SSL_FORWARD
iptables -A FORWARD -s <NET> -p tcp --dport -j DROP

Isto criaria uma nova cadeia SSL_FORWARD, e envia pacotes vindos da sua rede destinados à porta 443 para serem avaliados nesta nova cadeia. Se o pacote não corresponder a nenhuma regra dentro dessa cadeia, ele será descartado.

Em seguida, execute este pequeno script regularmente:

# Flush SSL_FORWARD chain
iptables -F SSL_FORWARD

# Iterate through each line of this file, and then get
# it DNS records
for domain in 'cat /path/to/allowed.domains'; do

  for line in 'dig ${domain} +short' ; do
    [ -z "'echo ${line} | grep '^[0-9.]*$''" ] && continue
    iptables -A SSL_FORWARD -s <NET> -d ${line} -p tcp --dport 443 -j ACCEPT
  done

done
    
por 09.02.2011 / 05:16
0

Situação semelhante comigo. Eu uso um script bash para converter uma lista de nomes de domínio, por exemplo:

www.youtube.com
www.vimeo.com
www.facebook.com

Em uma lista de endereços IP. Em seguida, alimentei a lista de endereços IP em ipset :

ipset -N Blacklist iphash
for ip in ${iplist[@]}; do
    ipset -A Blacklist $ip
done

Finalmente, eu aplico o IPset ao iptables:

iptables -A FORWARD -p tcp --dport 443 -m set --match-set Blacklist dst -j DROP

O benefício: Todas as manhãs um cron job re-resolve a lista de domínios em uma lista de IPs e atualiza o Blacklist set, e eu não preciso tocar na regra do iptables. O script de atualização usa -F em vez de -N para sua primeira linha.

    
por 07.03.2011 / 15:44