Firewall: Implemente e Configure o seu Linux com IPTABLES

Nós sabemos que nos dias de hoje é essencial o Firewall em servidores corporativos como servidores de web, e-mail e gateways, devido a demanda de hackers e lammers. Mas sabemos que assim mesmo não basta montar um Firewall e por em mente que nunca vai ser invadido.

Lembre-se de que é primordial verificar os Updates, Advisores, Bug e falhas de sistema. Tenha em mente, além de configurar um sistema de firewall, que é necessário também administratar por Logs e IDS, e que precisa administratar os Logs para verificar possíveis erros e de uma forma fácil e ágil, e IDS para verificar a Dequitação de Intrusos.

Softwares de Firewall para o Linux

O Linux, por ser um software livre, onde uma comunidade de desenvolvedores contribuem quase que diariamente para seu desenvolvimento e melhorias, se fala em desenvolvimento e melhorias do Kernel e existe uma preocupação com firewalls e segurança.

Conheça os Firewalls conforme a versão do kernel

a) Ipfwadm – O IP Firewall Administration, ou simplesmente ipfwadmin foi a ferramenta padrão para construção de regras de firewall, para o Kernel anterior à versão 2.2.0. Dizem que o Ipfwadm era extremamente complexo.

b) Ipchains – O ipchains foi a solução, ou melhor, a atualização, feita para o kernel 2.2 do ipfwadm. A idéia do ipchains foi ter o poder do ipfwadm, mas com uma simplicidade e facilidade no que diz respeito à criação de regras. Além de prover sua facilidades, é criar uma compatibilidade com o ipfwadm através do utilitário ipfwadm-wrapper.

c) Iptables e o Netfilter – A nova geração de ferramentas de firewall para o Kernel 2.4 do Linux. Além de possuir as facilidade do ipchains, e implementar a facilidade do NAT e filtragem de pacotes mais flexíveis que o IPchains. Para saber mais informações do Iptables acessem http://www.netfilter.org/

O que precisamos saber?

Na configuração do Firewall com o iptables, é preciso saber quais são as regras a serem utilizadas para rodar o Firewall:

Regras do Firewall

– INPUT: È utilizada quando o destino final é a própria máquina firewall.

– OUTPUT: Qualquer pacote gerado pela máquina firewall e que deva sair para a rede será tratado pela regra OUTPUT.

– FORWARD: Qualquer pacote que atravessa o firewall, de uma máquina e direcionado à outra, será tratado pela chain FORWARD.

Basicamente o IPTABLES tem as seguintes políticas:

– DROP: Nega pacote e não manda um pacote de volta para o emitente.

– ACCEPT: Aceita o pacote

– REJECT: Nega pacote e manda um pacote de volta do tipo host-unreachable (Host Inalcançável)

Comandos Principais do IPtables

a) -A – Este comando acrescenta uma regra às existentes no sistema, ou seja, permite atualizar regras já existentes na estrutura do firewall.

b) -I – Este comando insere uma nova regra dentro das existentes no firewall.

c) -D – Este comando exclui uma regra específica no firewall.

d) -P – Este comando define a regra padrão do firewall.

e) -L – Este comando lista as regras existentes no firewall.

f) -F – Este comando ZERA todas as regras criadas no Firewall (o chamado flush).

g) -h – Este comando mostrará o help, ajuda de comando.

h) -R – Este comando substitui um regra no firewall.

i) -C – Este comando basicamente checa as regras.

j) -Z – Este comando zera uma regra específica.

k) -N – Este comando cria uma nova regra com um nome.

l) -X – Este comando exclui uma regra específica por seu nome.

Os parâmetros padrão do iptables são os seguintes:

a) -p! (protocolo) – Define qual o protocolo TCP/IP deverá ser tratado. São eles: TCP, UDP e ICMP

b) -s! (origem)/ -d! (destino) – Define qual o endereço de origem (-S) e de destino (-D) que a regra atuará. Este comando possui dois argumentos:
endereço/máscara e porta. Ex.: -S 10.0.0.1/24 80,.

c) -i! (interface) – Define o nome da interface de rede onde trafegará os pacotes de entrada e saída do firewall. Muito utilizado em mascaramento e
técnicas de NAT. Exemplo: -W eth1.

d) -j! (ir para) – Serve para redirecionar uma ação desde que as regras sejam similares.

e) -f!(fragmento) – Trata datagrama fragmentados.

Os comandos e os parâmetros são exatamente iguais aos do ipchains, sem tirar nem pôr.

Extensões

Novidade do iptables que facilita as regras.

-sport[!] [port:port] -dport[!] [port:port] – Normalmente estas extensões são utilizadas com o comando -m do iptables. Trata-se de um direcionamento de porta(s) origem (-sport), para porta(s) destino (-dport). Pode-se inclusive definir um número padrão de portas para o acesso (port:port). Este comando pode ser utilizado tanto para portas TCP ou UDP.

-mac-source[!] endereço – Especifica qual a placa de rede, através de seu endereço MAC, que irá transmitir pacotes através do firewall, limitado pela política do mesmo.

-icmp-type[1] tipo – Especifica quais os tipos de pacotes ICMP pode passar ou não pelo firewall. São eles:

Mensagem

Tipo

Código

Echo-request

8

0

Echo-reply

3

0

Source-quench

4

0

Time-exceed

11

0

Destination-unreachable

3

0

Network-unreachable

3

0

Host-unreachable

3

1

Protocol-unreachable

3

2

Port-unreachable

3

3

Com isto podemos bloquear alguns ataques do tipo ping flood, bloquear ping e etc

[!] — syn – Especifica o uso dos bits ACK e FIN em requisições SYN TCP.

Especificamente, a opção `-m state’ aceita uma opção adicional `–state’, que é uma lista de estados de ativação separados por vírgula. (a flag ‘!’ não indica a ativação desses estados). Esses estados são:

NEW Um pacote que cria uma nova conexão.

ESTABLISHED Um pacote que pertence a uma conexão existente (isto é, um pacote de resposta).

RELATED Um pacote que está relacionado com (mas não faz parte de) uma conexão existente, como um ICMP error, ou (com o módulo FTP inserido),um pacote que estabelecido por uma conexão de dados ftp.

INVALID Um pacote que não poderia ser identificado por alguma razão: isto inclui execução fora da memória e erros de ICMP que não correspondam a
nenhuma conexão existente. Geralmente estes pacotes devem ser barrados (drop).

Exemplos do Firewall

#iptables -A INPUT -p icmp -j DROP – Esta regra nega todos os pacotes ICMP vindos do servidor, em que se encontra o firewall.

#iptables -D INPUT -p icmp -j DROP – Esta regra exclui a regra criar acima.

#iptables -A INPUT -s 192.168.1.0/24 -j DROP – Esta regra acima faz com que todos os pacotes vindo de qualquer endereço da classe de ip 192.168.1.1 á 192.168.1.255 nega os pacotes.

#iptables -A OUTPUT -p icmp -d ! 192.168.1.0/24 -j ACCEPT – Esta regra acima faz com que todos os pacotes vindo de qualquer endereço da classe de ip 192.168.1.1 á 192.168.1.255 aceita os pacotes.

#echo 1 > /proc/sys/net/ipv4/ip_forward – Habilitando o recurso de IP forwarding

Configurando o Firewall contra ataque

Proteção contra Syn-floods
# iptables -A FORWARD -p tcp –syn -m limit –limit 1/s -j ACCEPT

Port scanners ocultos
# iptables -A FORWARD -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j ACCEPT

Ping da morte
# iptables -A FORWARD -p icmp –icmp-type echo-request -m limit –limit 1/s -j ACCEPT

Proteção Contra IP Spoofing
# iptables -A INPUT -s 10.0.0.0/8 -i Interface da NET -j DROP
# iptables -A INPUT -s 172.16.0.0/16 -i Interface da NET -j DROP
# iptables -A INPUT -s 192.168.0.0/24 -i Interface da NET -j DROP

Obs.: Interface da NET pode ser ppp0, ethX e etc.

Log a portas proibidas e alguns backdoors

Porta FTP
# iptables -A INPUT -p tcp –dport 21 -j LOG –log-prefix “Serviço: FTP”

Porta Wincrash
# iptables -A INPUT -p tcp –dport 5042 -j LOG –log-prefix “Serviço: Wincrash”

Portas BackOrifice
# iptables -A INPUT -p tcp –dport 12345 -j LOG –log-prefix “Serviço: BackOrifice”
# iptables -A INPUT -p tcp –dport 123456 -j LOG –log-prefix “Serviço: BackOrifice”

Redirecionamento de Portas (Usado em DMZ)

Redirecionar Porta SMTP
# iptables -t nat -A PREROUTING -i ethx -p tcp –dport 25 -j DNAT –to 192.168.1.1

Redirecionar Porta POP
# iptables -t nat -A PREROUTING -i ethx -p tcp –dport 110 -j DNAT –to 192.168.1.1

OBS.:Sendo que ethx é sua interface de entrada da WAN.

Bloqueando Kazaa Lite

Para ativar o módulo String match support (EXPERIMENTAL) tem que aplicar o patch e logo depois compilar o kernel.

# iptables -m string –string “X-Kazaa-Username:” -j DROP
# iptables -m string –string “X-Kazaa-Network:” -j DROP
# iptables -m string –string “X-Kazaa-IP:” -j DROP
# iptables -m string –string “X-Kazaa-SupernodeIP:” -j DROP

Bloqueando cmd.exe

Neste caso, você precisa ter atrás do seu firewall Linux um servidor de web IIS da Microsoft, e desejar evitar worms com código arbitrários que usam o comando cmd.exe:

Bloqueando em Silêncio

# iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string –string “cmd.exe”

Bloqueando e reportando por uma hora

# iptables -I INPUT -j LOG -p tcp -s 0.0.0.0/0 -m string –string “cmd.exe” -m limit –limit 1/hour

Anúncios

~ por 3c0linux em dezembro 9, 2008.

 
%d blogueiros gostam disto: