FORUM DARKERS

Tecnologia & Informática => Sistemas Operacionais => Linux => Topic started by: mrx on 19 de January , 2007, 12:00:31 AM

Title: Firewall Iptables
Post by: mrx on 19 de January , 2007, 12:00:31 AM
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 possui as seguintes políticas:
DROP - Nega pacote e não manda um pacote de volta para o remetente.
ACCEPT - Aceita o pacote
REJECT - Nega pacote e manda um pacote de volta do tipo host-unreachable (Host Inalcançável)

Principais Comandos do IPtables

-A - Este comando acrescenta uma regra às existentes no sistema, ou seja, permite atualizar regras já existentes na estrutura do firewall.
-I - Este comando insere uma nova regra dentro das existentes no firewall.
-D - Este comando exclui uma regra específica no firewall.
-P - Este comando define a regra padrão do firewall.
-L - Este comando lista as regras existentes no firewall.
-F - Este comando ZERA todas as regras criadas no Firewall (o chamado flush).
-h - Este comando mostrará o help, ajuda de comando.
-R - Este comando substitui um regra no firewall.
-C - Este comando basicamente checa as regras.
-Z - Este comando zera uma regra específica.
-N - Este comando cria uma nova regra com um nome.
-X - Este comando exclui uma regra específica por seu nome.
Os parâmetros padrão do iptables são os seguintes:
-p! (protocolo) - define qual o protocolo TCP/IP deverá ser tratado. São eles: TCP, UDP e ICMP
-s! (origem)/ -d! (destino) - Define qual o endereço de origem (-S) e de destino que a regra atuará. Este comando possui dois argumentos: endereço/máscara e porta. Ex.: -S 10.0.0.1/24 80.
-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.
-j! (ir para) - Serve para redirecionar uma ação desde que as regras sejam similares.
-f!(fragmento) - Trata datagrama fragmentados.
Os comandos e os parâmetros são exatamente iguais aos do ipchains, sem o que 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).

Do Site : http://www.vivaolinux.com.br (http://www.vivaolinux.com.br)

QuoteSegura essas linha que uso contra flood's, pedidos mal formados, ping of death, DoS e coisas do tipo !!
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
iptables -A FORWARD -m unclean -j DROP
 

Tradução:
Linha 01 - Protege contra os "Ping of Death"
Linha 02 - Protege contra os ataques do tipo "Syn-flood, DoS, etc"
Linha 03 - Permitir repassamento (NAT,DNAT,SNAT) de pacotes etabilizados e os relatados ...
Linha 04 - Logar os pacotes mortos por inatividade ...
Linha 05 - Protege contra port scanners avançados (Ex.: nmap)
Linha 06 - Protege contra pacotes que podem procurar e obter informações da rede interna ...
Linha 07 - Protege contra todos os pacotes danificados e ou suspeitos ...

QuoteBom, vc fez algumas regras iptables para servidor, mas queria contribuir com algumas regras q criei, para usuarios domesticos q não querem dar acesso algum a rede
#!/bin/sh

#Para Excluir TODAS as regras anteriores do INPUT
iptables -F INPUT

# Protecao contra port scanners ocultos
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

# Bloqueando tracertroute
iptables -A INPUT -p udp -s 0/0 -i ppp+ --dport 33435:33525 -j DROP

#Protecoes contra ataques
iptables -A INPUT -m state --state INVALID -j DROP

#Performance - Setando acesso a web com delay minimo
iptables -t mangle -A OUTPUT -o ppp+ -p tcp --dport 53 -j TOS --set-tos Minimize-Delay
iptables -t mangle -A OUTPUT -o ppp+ -p tcp --dport 80 -j TOS --set-tos Minimize-Delay

#Deixa passar as portas UDP do servidores DNS, e Rejeitar o restante
iptables -A INPUT -i ppp+ -p udp -s ipdnsdoprovedor -j ACCEPT
iptables -A INPUT -i ppp+ -p udp -s ipdnsdoprovedor -j ACCEPT
iptables -A INPUT -i ppp+ -p udp -j REJECT

#Bloqueia qualquer tentativa de conexao de fora para dentro por TCP
iptables -A INPUT -i ppp+ -p tcp --syn -j DROP

#Mesmo assim fechar todas as portas abaixo de 32000
iptables -A INPUT -i ppp+ -p tcp --dport :32000 -j DROP

#Responde pacotes icmp especificados e rejeita o restante
iptables -A INPUT -i ppp+ -p icmp --icmp-type host-unreachable -j ACCEPT
iptables -A INPUT -i ppp+ -p icmp --icmp-type source-quench -j ACCEPT
iptables -A INPUT -i ppp+ -p icmp -j REJECT --reject-with icmp-host-unreachable
#A regra acima é interessante, pois da a impressão q o host não esta on-line
echo "Firewall Configurado"

By: Bolão
Fonte: forumdgh.net
Title: Re: Firewall Iptables
Post by: Anonymous on 19 de January , 2007, 07:09:33 PM
Daew Brother blz ???
Title: Re: Firewall Iptables
Post by: Reeves on 19 de January , 2007, 11:48:18 PM
Uma Colaboração...  :P

#Libera o apache pra web
iptables -A INPUT -p tcp --destination-port 6080 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 443 -j ACCEPT

#Libera o loopback
iptables -A OUTPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT

#Bloqueando todos os endereços vindo de uma determinada rede para a minha máquina
iptables -A INPUT -s 10.0.0.0/8 -j DROP

#Liberando o endereço vindo de uma rede para a minha máquina
iptables -A INPUT -s 10.0.0.1 -j ACCEPT

#Gerando Logs de Portas proibidas
iptables -A INPUT -p tcp --dport 21 -j --log-prefix "Serviço de FTP"

#Gerando log de Backdoors
iptables -A INPUT -p tcp --dport 5042 -j LOG -log-prefix "Wincrash"
iptables -A INPUT -p tcp --dport 12345 -j LOG -log-prefix "backOrifice"
iptables -A INPUT -p tcp --dport 12346 -j LOG -log-prefix "backOrifice"

#Habilitando porta de FTP
iptables -A INPUT -p tcp -s 192.168.0.45 --dport 21 -j ACCEPT

#Habilitando porta de SSH
iptables -A INPUT -p tcp -s 192.168.0.45 --dport 22 -j ACCEPT

#Habilitando porta de SMTP
iptables -A INPUT -p tcp -s 192.168.0.45 --dport 25 -j ACCEPT

#Habilitando porta de DNS
iptables -A INPUT -p tcp -s 192.168.0.45 --dport 53 -j ACCEPT

#Habilitando porta de POP3
iptables -A INPUT -p tcp -s 192.168.0.45 --dport 110 -j ACCEPT

#Habilitando porta de DNS (UDP)
iptables -A INPUT -p udp -s 192.168.0.45 --source-port 53 -j ACCEPT

#Redirecionar Porta
iptables -t nat -A PREROUTING -s IP_NET -i EXT_INT -j DNAT --to IP_DESTINO
iptables -t nat -A POSTROUTING -s IP_NET -o EXT_INT -p tcp --dport PORT -j ACCEPT
iptables -t nat -A POSTROUTING -s IP_DESTINO -o EXT_INT -j SNAT --to IP_NET
iptables -t nat -A POSTROUTING -s IP_DESTINO -o EXT_INT --p tcp --dport PORT -j ACCEPT

IP_NET = IP válido da internet.
EXT_INT = Interface da Internet.
IP_DESTINO = IP inválido da Internet ou melhor ip da rede que vai fazer redirecionamento.
PORT = porta

#Fazendo redirecionamento de portas
iptables -t nat -A PREROUTING -i FACE -p tcp --dport 80 -j REDIRECT --to-port 3128

FACE = interface de rede

#Bloqueando todos os pacotes originários da rede 10.0.0.0 para o host www.tccamargo.com
iptables -A FORWARD -s 10.0.0.0/8 -d www.tccamargo.com -j DROP

#Liberando todos os pacotes originários da rede 10.0.0.0 para o host www.tccamargo.com
iptables -A FORWARD -s 10.0.0.0/8 -d www.tccamargo.com -j ACCEPT

#Liberando todos os pacotes tcp destinados a porta 25
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT

#Liberando acesso interno da rede
iptables -A INPUT -p tcp --syn -s 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -p tcp --syn -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -p tcp --syn -s 192.168.1.0/24 -j ACCEPT

#compartilhando a web na rede interna
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth1 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward &&

#Libera Bittorrent somente para esta maquina
iptables -A INPUT -p tcp --destination-port 6881:6889 -j ACCEPT

#Bloqueando tracertroute
iptables -A INPUT -p udp -s 0/0 -i eth1 --dport 33435:33525 -j DROP

#Protecoes contra ataques
iptables -A INPUT -m state --state INVALID -j DROP

#Bloqueando uma máquina pelo endereço MAC
iptables -A INPUT -m mac --mac-source XX:XX:XX:XX:XX:XX -j DROP

#Proteção contra IP Spoofing
iptables -A INPUT -s 172.16.0.0/16 -i ext_face -j DROP
iptables -A INPUT -s 192.168.0.0/24 -i ext_face -j DROP
iptables -A INPUT -s 192.168.0.0/24 -i ext_face -j DROP

< ext_face = São as interfaces da internet como ppp e ethX >

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

#Proteção contra port scanners ocultos
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

#Proteção contra ping da morte
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

#Bloqueando ping de um ip
iptables -A INPUT -p icmp -s 192.168.1.1/24 -j DROP

#Bloqueando pacotes fragmentados
iptables -A INPUT -i INTEXT -m unclean -j log_unclean
iptables -A INPUT -f -i INTEXT -j log_fragment

< INTEXT = Interface da INTERNET >

#Anulando as respostas a ICMP 8 (echo reply)
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
Title: Re: Firewall Iptables
Post by: vuln on 08 de February , 2007, 11:22:41 PM
Algumas correções do tópico que na lida rápida tive a capacidade de notar:
-I Insere uma regra na lista em primeiro lugar.
-A Insere uma regra na lista seguindo sua ordem, ou seja, por último.

Outra coisa que não entendi muito bem que você colocou foram as opções a partir do protocolo como -p!. Essa exclamação nega criando uma espécie de excessão..

Acho que só tem isso de confuso/errado mesmo.

Abraços! ;)