Firewall simples

Situação

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.

A proposta

Um script que gere as instruções necessárias para construir seu firewall linux.

Como fazer
  1. Prepare uma pasta temporaria
    $ mkdir /tmp/route-sentry
    $ cd /tmp
  2. Faça download do script (http://www.inovacaosistemas.com.br/downloads/testes/route-sentry.zip)
    $ wget http://www.inovacaosistemas.com.br/downloads/testes/route-sentry.zip
  3. Descompacte na temp, altere os direitos e coloque na raiz
    $ cd route-sentry
    $ unzip ../route-sentry.zip
    $ sudo chown root.root *
    $ sudo rsync -rv * /
  4. Modifique o /etc/firewall.ini
    sudo nano /etc/firewall.ini
  5. Crie seu script de inicialização no /etc/meuFirewall
    $ sudo nano /etc/meuFirewall

    com as seguintes linhas

    #!/bin/bash
    rsfirewall > /tmp/meuFirewall.ipt
    iptables-load /tmp/meuFirewall.ipt
  6.  Altere os direitos do seu script
    $ chmod +x /etc/meuFirewall
  7. Acrescente ele no /etc/rc.local (ou onde sua distribuição gostar)
    sudo vi /etc/rc.local

    ficando assim:

    ...
    /etc/meuFirewall&
    ...
  8. Reinicie sua máquina
Como funciona

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

 

Um exemplo completo

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


Deprecated: Creation of dynamic property WP_Term::$cat_ID is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/category.php on line 378

Deprecated: Creation of dynamic property WP_Term::$category_count is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/category.php on line 379

Deprecated: Creation of dynamic property WP_Term::$category_description is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/category.php on line 380

Deprecated: Creation of dynamic property WP_Term::$cat_name is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/category.php on line 381

Deprecated: Creation of dynamic property WP_Term::$category_nicename is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/category.php on line 382

Deprecated: Creation of dynamic property WP_Term::$category_parent is deprecated in /home/inovacao/public_html/yeapf.com/wp/wp-includes/category.php on line 383
Posted in Route Sentry