ConfigurandoFirewall

Configurando um Firewall no Linux Ubuntu

Introdução

Navegar na internet pode ser muito perigoso. Vírus, programas maliciosos, ou scripts feitos por crackers. Vários são os meios que o seu computador pode ser danificado.

Então para impedir (ou pelo menos dificultar) que esses ataques ocorram na sua máquina, vamos usar o iptables para configurar um firewall no Linux Ubuntu.

por Cristiano Meira Magalhães

Estudo de caso real

O objetivo desse tutorial é construir um script para configurar o software iptables, que irá montar um firewall.

A nossa necessidade parte de um estudo real em uma pequena empresa.

Essa empresa contém 4 computadores:

- Escritório (localhost) - Secretária (192.168.0.5) - Caixa - Balcão (192.168.0.7)

Necessidades:

- O computador do escritório deve usar serviços de e-mail do Gmail, e comunicadores YahooMesseger, MSN, Jabber e ICQ.

- O computador da secretária deve apenas usar a web, comunicadores Jabber e Skype e ter acesso ao e-mail.

- O computador do caixa deve apenas ter acesso aos serviços da web.

O computador do Escritório é o que serve acesso à internet e ele está ligado aos demais através de uma rede interna.

O Script

1) Configure o seu Linux para fazer NAT.

1.1) Log como root

$ sudo su -

1.2) Edite o arquivo /proc/sys/net/ipv4/ip_forward

$ echo 1  > /proc/sys/net/ipv4/ip_forward

1.3) Edite a variável no arquivo /etc/network/options

$ sudo gedit /etc/network/options
  faça: ip_forward=yes

2) Copie e cole o conteúdo do quadro abaixo em um novo documento de texto e salve como "iptstart.sh"

IP_LOCAL=172.16.23.22
IP_DNS=172.16.23.21

apagueTabelas () {
        echo
## ----------------------------------
## Tabelas FILTER e NAT
## ----------------------------------
        echo \ \ -\>IPTables: Apagando regras em tabelas FILTER e NAT
        sudo iptables -F
        sudo iptables -X
        sudo iptables -t nat -F
        sudo iptables -t nat -X
}


abraTudo () {
        apagueTabelas
        echo
## ----------------------------------
## Configurando políticas
## ----------------------------------
        echo \ \ -\>IPTables: Abrindo todas as saídas e entradas do sistema
        sudo iptables -P INPUT ACCEPT
        sudo iptables -P FORWARD ACCEPT
        sudo iptables -P OUTPUT ACCEPT

        echo
## ----------------------------------
##  Configurando NAT
## ----------------------------------
        echo \ \ -\>IPTables: Configurando acesso da rede interna para a Internet
        sudo iptables -t nat -A POSTROUTING -s 192.168.0.5 -o wlan0 -j MASQUERADE
}

fecheTudo() {
        apagueTabelas
        echo
## ----------------------------------
## Configurando políticas
## ----------------------------------
        echo \ \ -\>IPTables: Trancando todas as saídas e entradas do sistema
        sudo iptables -P INPUT DROP
        sudo iptables -P FORWARD DROP
        sudo iptables -P OUTPUT DROP
}

construaModoSeguro () {
        apagueTabelas
        echo
## ----------------------------------
## Configurando políticas
## ----------------------------------
        echo \ \ -\>IPTables: Configurando políticas para valores seguros
        sudo iptables -P INPUT ACCEPT
        sudo iptables -P FORWARD DROP
        sudo iptables -P OUTPUT DROP

        echo
## ----------------------------------
## Configurando INPUT
## ----------------------------------
        echo \ \ -\>IPTables: Liberando que serviços e máquinas comuniquem com vc
        ## Permite entradas para uma faixa de endereços da rede local
        sudo iptables -A INPUT -p tcp -s 192.168.0.0/255.255.255.0 -j ACCEPT
        ## Permite entradas na porta 80 (Apache)
        sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
        # Permite que localhost receba dados para localhost
        sudo iptables -A INPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT
        # Permite que entre somente pacotes de uma conexão já estabelecida
        sudo iptables -A INPUT -p tcp --syn -j DROP

        echo
## ----------------------------------
## Configurando OUTPUT
## ----------------------------------
        echo \ \ -\>IPTables: Liberando acesso de programas e serviços para o uso da Internet
        ## Permite saídas para uma faixa de endereços da rede local
        sudo iptables -A OUTPUT -p tcp -d 192.168.0.0/255.255.255.0 -j ACCEPT
        # Libera uso de serviços que estejam escutando localhost, como o CURPS e o POSTFIX
        sudo iptables -A OUTPUT -s 127.0.0.1 -j ACCEPT
        # Libera a consulta ao servidor DNS
        sudo iptables -A OUTPUT -s $IP_LOCAL -d $IP_DNS -j ACCEPT
        ## Libera resposta para requisições web vindos de fora (Apache)
        sudo iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
        # Libera consulta aos serviços da web (HTTP)
        sudo iptables -A OUTPUT -s $IP_LOCAL -p tcp --dport 80 -j ACCEPT 
        # Libera consulta aos serviços da web (HTTPS, MSN)
        sudo iptables -A OUTPUT -s $IP_LOCAL -p tcp --dport 443 -j ACCEPT
        # Libera consulta a caixa postal do e-mail (SMTP)
        #sudo iptables -A OUTPUT -s $IP_LOCAL -p tcp --dport 25 -j ACCEPT
        # Libera envio de e-mails (POP3)
        #sudo iptables -A OUTPUT -s $IP_LOCAL -p tcp --dport 110 -j ACCEPT
        # Libera consulta a caixa postal do GMail
        sudo iptables -A OUTPUT -s $IP_LOCAL -p tcp --dport 995 -j ACCEPT
        # Libera envio de e-mail do GMail
        sudo iptables -A OUTPUT -s $IP_LOCAL -p tcp --dport 465 -j ACCEPT
        sudo iptables -A OUTPUT -s $IP_LOCAL -p tcp --dport 587 -j ACCEPT
        # Libera o uso da rede Jabber
        sudo iptables -A OUTPUT -s $IP_LOCAL -p tcp --dport 5222 -j ACCEPT
        # Libera o uso da rede MSN
        sudo iptables -A OUTPUT -s $IP_LOCAL -p tcp --dport 1863 -j ACCEPT
        # Libera o uso do IRC
        sudo iptables -A OUTPUT -s $IP_LOCAL -p tcp --dport 6667 -j ACCEPT
        # Libera o uso do ICQ
        sudo iptables -A OUTPUT -s $IP_LOCAL -p tcp --dport 5190 -j ACCEPT
        # Libera o uso do YahooMesseger
        sudo iptables -A OUTPUT -s $IP_LOCAL -p tcp --dport 5050 -j ACCEPT
        


        echo
## ----------------------------------
## Configurando FORWARD
## ----------------------------------
        echo \ \ -\>IPTables: Configurando acesso de programas e servicos da rede interna a Internet
        ## Proteções diversas contra portscanners, ping of death, ataques DoS, etc.
        ## Contra Ping of Death
        sudo iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
        ## Contra Ping
        sudo iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
        ## Contra port scanners avançados (nmap)
        sudo iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
        ## Contra pacotes danificados (NÃO FUNCIONA?)
        #sudo iptables -A FORWARD -m unclean -j DROP
        ## Outros ataques
        #sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
        #sudo iptables -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
        ## Ignora pings
        #sudo echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

        # Libera consulta aos serviços da web (Saída e Entrada)
        sudo iptables -A FORWARD -s 192.168.0.5 -p tcp --dport 80 -j ACCEPT
        sudo iptables -A FORWARD -d 192.168.0.5 -p tcp --sport 80 -j ACCEPT
        #Libera o uso de serviços da web (HTTPS, MSN)
        sudo iptables -A FORWARD -s 192.168.0.5 -p tcp --dport 443 -j ACCEPT
        sudo iptables -A FORWARD -d 192.168.0.5 -p tcp --dport 443 -j ACCEPT
        #libera o uso de serviços do MSN
        sudo iptables -A FORWARD -s 192.168.0.5 -p tcp --dport 1863 -j ACCEPT
        sudo iptables -A FORWARD -d 192.168.0.5 -p tcp --dport 1863 -j ACCEPT
        # Libera consulta a serviços de e-mail (Saída e Entrada)
        sudo iptables -A FORWARD -s 192.168.0.5 -p tcp --dport 25 -j ACCEPT
        sudo iptables -A FORWARD -d 192.168.0.5 -p tcp --sport 25 -j ACCEPT
        sudo iptables -A FORWARD -s 192.168.0.5 -p tcp --dport 110 -j ACCEPT
        sudo iptables -A FORWARD -d 192.168.0.5 -p tcp --sport 110 -j ACCEPT
        # Libera a consulta ao servidor DNS (Saída e Entrada)
        sudo iptables -A FORWARD -s 192.168.0.5 -d $IP_DNS -j ACCEPT
        sudo iptables -A FORWARD -s $IP_DNS -d 192.168.0.5 -j ACCEPT
        # Libera consulta a serviços do Skype
        #sudo iptables -A FORWARD -s 192.168.0.5 -p tcp --dport 55017 -j ACCEPT
        #sudo iptables -A FORWARD -d 192.168.0.5 -p tcp --sport 55017 -j ACCEPT
        # Libera consulta a serviços do Jabber
        sudo iptables -A FORWARD -s 192.168.0.5 -p tcp --dport 5222 -j ACCEPT
        sudo iptables -A FORWARD -d 192.168.0.5 -p tcp --sport 5222 -j ACCEPT


        # Libera consulta aos serviços da web (Saída e Entrada)
        sudo iptables -A FORWARD -s 192.168.0.2 -p tcp --dport 80 -j ACCEPT
        sudo iptables -A FORWARD -d 192.168.0.2 -p tcp --sport 80 -j ACCEPT
        #Libera o uso de serviços da web (HTTPS, MSN)
        sudo iptables -A FORWARD -s 192.168.0.2 -p tcp --dport 443 -j ACCEPT
        sudo iptables -A FORWARD -d 192.168.0.2 -p tcp --dport 443 -j ACCEPT
        # Libera consulta a serviços do Jabber
        sudo iptables -A FORWARD -s 192.168.0.2 -p tcp --dport 5222 -j ACCEPT
        sudo iptables -A FORWARD -d 192.168.0.2 -p tcp --sport 5222 -j ACCEPT


        # Libera consulta aos serviços da web (Saída e Entrada)
        sudo iptables -A FORWARD -s 192.168.0.7 -p tcp --dport 80 -j ACCEPT
        sudo iptables -A FORWARD -d 192.168.0.7 -p tcp --sport 80 -j ACCEPT
        #Libera o uso de serviços da web (HTTPS, MSN)
        sudo iptables -A FORWARD -s 192.168.0.7 -p tcp --dport 443 -j ACCEPT
        sudo iptables -A FORWARD -d 192.168.0.7 -p tcp --dport 443 -j ACCEPT
        # Libera consulta a serviços do Jabber
        sudo iptables -A FORWARD -s 192.168.0.7 -p tcp --dport 5222 -j ACCEPT
        sudo iptables -A FORWARD -d 192.168.0.7 -p tcp --sport 5222 -j ACCEPT


        echo
## ----------------------------------
## Configurando NAT
## ----------------------------------

        echo \ \ -\>IPTables: Configurando acesso da rede interna para a Internet
        sudo iptables -t nat -A POSTROUTING -s 192.168.0.5 -o wlan0 -j MASQUERADE

## ************************************
## *           ATENÇÃO                *
## ************************************
## 1 ) Log como root
##      $ sudo su -
## 2 ) Edite o arquivo /proc/sys/net/ipv4/ip_forward
##       echo 1  > /proc/sys/net/ipv4/ip_forward
## 3 ) Edite a variavel no arquivo /etc/network/options
##      ip_forward=yes
## ************************************

}


echo Configurando iptables...

case "$1" in
    abra)
        echo -n "Iniciando montagem da pasta servidor:"
        abraTudo
        ;;
    feche)
        echo -n "Desmontando a pasta servidor:"
                fecheTudo
        ;;
    seguro)
        construaModoSeguro
        ;;
   *)
        exit 1
        ;;
esac

echo 
echo Configuração de tabelas completa.
echo 

exit 0

3) Modifique os endereços IPs do script já salvo conforme a configuração da sua rede.

4) Execute o script

Para abrir todas as portas:

$ iptstart.sh abra

Para fechar todas as portas:

$ iptstart.sh feche

Para configurar o seu firewall para permitir que somente saia e somente entre no seu computador aquilo que você realmente está usando e conhece.

$ iptstart.sh seguro



CategoryRevisada

ConfigurandoFirewall (last edited 2011-09-19 23:18:22 by localhost)