Com os serviços na nuvem, uma empresa pode fazer uso de vários servidores (com seus respectivos IPs) para fornecer o seu serviço.
Tome por exemplo o WhatsApp ou o Facebook.
Neste post, pretendo lhe ajudar a puxar a lista de IPs que constituem um serviço. O que vai ser feito com essa lista depende de você. Eu a utilizo, por exemplo, para bloquear o acesso ou restringir a largura de banda utilizada.
A seguinte sequencia de comandos mostra como puxar esta lista para um arquivo texto. Digamos que o que quero puxar, é a lista dos IPs do Facebook.
dig +short www.facebook.com
curl ipinfo.io/31.13.73.36/org
whois -h whois.radb.net '!gAS32934' | sed -n 2p > ips-facebook.txt
Pronto, agora é apenas usar o iptables para bloquear ou redirecionar o tráfego para um proxy ou o tc para controlar a largura de banda.
]]>O iptables nos fornece uma ferramenta poderosa para a construção de firewalls com máquinas linux.
Algumas vezes a geração e manutenção desses firewalls se torna complexa demais e – via de regra – os departamentos de TI tem pessoal de menos para a cada vez mais imensa tarefa.
Um script que gere as instruções necessárias para construir seu firewall linux.
$ mkdir /tmp/route-sentry $ cd /tmp
$ wget http://www.inovacaosistemas.com.br/downloads/testes/route-sentry.zip
$ cd route-sentry $ unzip ../route-sentry.zip $ sudo chown root.root * $ sudo rsync -rv * /
sudo nano /etc/firewall.ini
$ sudo nano /etc/meuFirewall
com as seguintes linhas
#!/bin/bash rsfirewall > /tmp/meuFirewall.ipt iptables-load /tmp/meuFirewall.ipt
sudo vi /etc/rc.local
ficando assim:
... /etc/meuFirewall& ...
rsfirewall conta com a ajuda do /etc/firewall.ini para poder trabalhar.
Este arquivo .ini tem quatro sessões: allowed, redirections, nat, input
A) Em allowed você pode colocar aquelas máquinas que podem ser atingidas desde dentro da rede.Se é uma máquina interna que pode ser atingida desde outra máquina interna, então essas máquinas devem estar na lista internal.
internal=192.168.1.26, 192.168.1.57, 192.168.8.131, 192.168.8.132
Já se um local externo precisa ser alcançado desde a rede interna, o ip ou o domínio devem estar na lista external.
external=208.67.220.123,200.185.136.182,200.185.136.181,mail-attachment.googleusercontent.com
Lembre que não pode colocar a URL, só domínios ou IP. Se quer controlar URL, utilize um proxy.
B) Em redirections serão colocadas as regras de redirecionamento de entrada. Ou seja, o que fazer quando um porto é aberto para conexão desde o lado externo do firewall. Cada linha deve ter o número do porto externo, o ip interno e o porto interno que atenderá a requisição. Assim, se por exemplo, seu servidor externo vai abrir a porta 3838 para atender requisições RDP no porto 3389 do micro interno 192.168.3.4, então a linha deve ser ipn=3838:192.168.3.4:3389 onde n é um numero qualquer que não se repita na lista.
ip1=3838:192.168.3.4:3389
C) As regras de redirecionamento nat vão na sessão nat que permite fazer três coisas diferentes:
1) permitir que um micro ou rede navegue utilizando o protocolo nat livremente.
ip1=192.168.16.32 ip2=192.168.0.0/16
2) Permitir que um micro ou rede navegue para um outro ponto quando o porto desejado é um porto especifico
ip3=192.168.0/24:0/0:6071 ip4=192.168.11.23:200.152.40.98:5090
3) Permitir que um micro ou rede navegue diretamente para um outro micro ou rede especifico.
ip5=192.168.1.1:192.168.0.160 ip6=192.168.11.0/24:192.168.5.0/24
D) Finalmente, há sempre a necessidade de abrir algumas portas no próprio servidor para que os outros (da rede interna ou externa) tenham acesso. A liberação de entrada pode ser distinguido pela placa que está sendo usada na hora da petição assim como o porto.
Tudo o que chegar pela porta 8080 na placa eth1 está liberado
port1=eth1:8080
Tudo o que chegar por qualquer placa na porta 22 está liberado
port2=#:22
Os exemplos citados acima, colocados no firewall.ini ficariam assim:
[allowed] internal=192.168.1.26, 192.168.1.57, 192.168.8.131, 192.168.8.132 external=208.67.220.123,200.185.136.182,200.185.136.181,mail-attachment.googleusercontent.com [redirections] ip1=3838:192.168.3.4:3389 [nat] ip1=192.168.16.32 ip2=192.168.0.0/16 ip3=192.168.0/24:0/0:6071 ip4=192.168.11.23:200.152.40.98:5090 ip5=192.168.1.1:192.168.0.160 ip6=192.168.11.0/24:192.168.5.0/24 [input] port1=eth1:8080 port2=#:22
]]>