iptables - Bloqueando a porta 443 e liberando apenas para sites específicos

Publicado por johnny borges em 17/09/2012

[ Hits: 26.440 ]

 


iptables - Bloqueando a porta 443 e liberando apenas para sites específicos



Tenho visto muitas pessoas procurando como bloquear a porta 443 e liberar apenas para alguns sites.

Muitos colocam junto com o firewall, o que resulta em um grande e pesado arquivo, mas com esta técnica, você diminuirá significativamente o volume do seu firewall, deixando-o muito mas fácil, caso mais pra frente, haja a necessidade de implementar ou retirar regras.

A configuração é:

### Sites https Liberados ###
iptables -A FORWARD -p tcp --dport 443 -j DROP
for URL in `grep -v "^#" /etc/squid/list/lib.txt`; do
iptables -I FORWARD -d $URL -p tcp --dport 443 -j ACCEPT
done
echo "Liberando Sites Para Porta 443........................[ OK ]"


O /etc/squid/list/lib.txt é o caminho que conterá todos os domínios ou IPs dos sites que deseja-se liberar.

Para descobrir o IP de um site, use o comando ping (no terminal do GNU/Linux) ou CMD no Windows.

Exemplo:

ping www.google.com

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Criando um plugin do Firefox para pesquisar artigos e dicas no Viva o Linux

Velox no Debian

Firefox não abre após atualizar sua distribuição GNU/Linux

Ativando modo de reescrita de URL (mod_rewrite) no Apache

Gerenciando abas no Chrome/Chromium com XTABS

  

Comentários
[1] Comentário enviado por saitam em 18/09/2012 - 09:24h

Ótima dica, apenas para complementar, caso desejar liberar sites para porta 443 para IPs de máquinas de usuários especificos, assim não libera para todos.
Segue...
[code]
### Sites https Liberados apenas para IPs de máquinas de usuários especificos ###
iptables -A FORWARD -p tcp --dport 443 -j DROP
for URL in `grep -v "^#" /etc/squid/list/lib.txt`; do
for IP in `grep -v "^#" /etc/squid/list/ipsusersblock.txt`; do
iptables -I FORWARD -d $IP -p tcp --dport 443 -j DROP
iptables -I FORWARD -d $URL -p tcp --dport 443 -j ACCEPT
done
echo "Liberando Sites Para Porta 443 apenas nos IPs de usuários especificos....................[ OK ]"
[/code]

[2] Comentário enviado por johnnyb em 18/09/2012 - 10:23h

hum amigo pelo que intendi vc bloqueia os pacotes que irao para o destino da rede interna.

[3] Comentário enviado por johnnyb em 18/09/2012 - 10:39h

tive uma ideia para controle ainda melhor da porta 443 nessa aqui vc bloqueia e libera toda a porta 443 para alguns. e filtro para o restante

### Controle da Porta 443 ###
iptables -A FORWARD -p tcp --dport 443 -j DROP
for URL in `grep -v "^#" /etc/squid/list/lib.txt`; do
for IP in `grep -v "^#" /etc/squid/list/ipsusersblock.txt`; do
for AP in `grep -v "^#" /etc/squid/list/ipsusersaceitos.txt`; do
iptables -I FORWARD -s $AP -d 0/0 -p tcp --dport 443 -j ACCEPT
iptables -I FORWARD -d $IP -p tcp --dport 443 -j DROP
iptables -I FORWARD -d $URL -p tcp --dport 443 -j ACCEPT
done
echo "Controle da Porta 443 Ativado com Sucesso........................[ OK ]"

Lembrando que isso pode ser feito em qualquer outra porta, se não estiver enganado também pode ser feito por mac irei tentar e depois postarei aqui

[4] Comentário enviado por smaderson em 03/07/2014 - 11:23h

Agradecimentos ao johnnyb e ao saitam, excelente dica, resolveu meus problemas!

[5] Comentário enviado por bruno_69 em 11/06/2016 - 11:46h

Tem como fazer algo parecido usando strings?
Eu tentei usar a mesma lógica mas como ficam aspas nas regras acho que acontece algum erro de sintaxe.

Exemplo da minha regra:
iptables -A FORWARD -i eth1 -m string --algo bm --string "facebook.com" -j DROP
iptables -A FORWARD -i eth0 -d 192.168.1.0/24 -m string --algo bm --string "facebook.com" -j DROP

EU tentei:
for URL in `grep -v "^#" /etc/squid3/url`; do
iptables -A FORWARD -i eth1 -m string --algo bm --string $URL -j DROP
iptables -A FORWARD -i eth0 -d 192.168.1.0/24 -m string --algo bm --string $URL -j DROP
done

E no arquivo da lista eu coloquei os domínios com as aspas: "exemplo.com" mas não bloqueia dai eu to usando o arquivão de configuração por enquanto.




[6] Comentário enviado por mreismococa em 05/06/2017 - 12:23h

bom dia, alguem pode me ajudar, quando executo os scripts acima aparecem o erro
/root/https1.sh
/root/https1.sh: line 11: erro de sintaxe: fim prematuro do arquivo


[7] Comentário enviado por JohnnyB em 05/06/2017 - 22:03h


[6] Comentário enviado por mreismococa em 05/06/2017 - 12:23h

bom dia, alguem pode me ajudar, quando executo os scripts acima aparecem o erro
/root/https1.sh
/root/https1.sh: line 11: erro de sintaxe: fim prematuro do arquivo




posta ai seu script, para poder te ajudar.



Contribuir com comentário