By Marcos Oliveira,

Blog Linux

E aê galera!?Eu estava configurando meu Firewall hoje e decidi escrever um Post sobre Iptables pra documentar algumas informações. Iptables é o nome da ferramenta do espaço do usuário que permite a criação de regras de firewall e NATs. Apesar de, tecnicamente, o iptables ser apenas uma ferramenta que controla o módulo netfilter(O netfilter é um módulo que fornece ao sistema operacional Linux as funções de firewall, NAT e log dos dados que trafegam por rede de computadores.), o nome “iptables” é frequentemente utilizado como referência ao conjunto completo de funcionalidades do netfilter. O iptables é parte de todas as distribuições modernas do Linux.

Ao reiniciar o computador as Regras de Firewall são perdidas, para isso é preciso criar um script para executar sempre que o computador for iniciado.

Para verificar quais regras estão criadas, se existir, o comando é:

iptables -L

se não retornar nada é porque o pacote não está instalado, então você pode instalá-lo pelo comando:

apt-get install iptables

Rejeitar pacotes de uma porta:

iptables -A INPUT -p tcp --dport 445 -j DROP

Aceitar pacotes de uma porta:

iptables -A INPUT -p tcp --dport 445 -j ACCEPT

Desativar o iptables, isso libera todas as portas:

iptables -F

Essa regra abaixo fecha todas as portas, porém voçê conecta a internet normalmente, mas aplicativos como Apache por exemplo não funcionará no localhost.

iptables -A INPUT -p tcp --syn -j DROP

aqui abaixo a mesma regra, porém para o protocolo UDP.

iptables -A INPUT -i ppp0 -p udp --dport 0:30000 -j DROP

Lembrando que as tabelas do IPTABLES são lidas de cima pra baixo, ou seja, se você quiser fechar todas as portas e liberar somente o apache a porta 80, você precisa primeiro criar a regra que libera a porta 80 (ou as portas que você deseja), pra só depois fechar todas as outras

iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT

, depois:

iptables -A INPUT -p tcp --syn -j DROP

Para acessar pacotes de determinados IPs de uma rede interna, ou de uma determinada rede, você usar os comandos abaixo

iptables -A INPUT -p tcp --syn -s 192.168.1.107/255.255.255.0 -j ACCEPT
iptables -A INPUT -p tcp --syn -s 192.168.0.0/255.255.255.0 -j ACCEPT

, aceitar as requisições do IP 192.168..107 e no comando seguinte, aceitará todas as requisições da rede interna, se logo depois vc fechar tudo pra internet, a regra de aceitar será válida, o inverso não.

Para configurações de compartilhamento, seria regras de NAT,assim:

Para compartilhar a conexão do modem com a rede local:

modprobe iptable_nat
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

Para compartilhar uma conexão via ADSL ou cabo instalada na eth0:

modprobe iptable_nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

Para desativar o compartilhamento, você deve usar o comando :

iptables -t nat -F.

Uma observação é que estas regras não incluem um servidor DHCP, você deve configurar os clientes com endereço IP fixo ou então ativar o serviço DHCPD na sua distribuição. Será necessário também configurar os DNS, se não souber os endereços do seu provedor, você pode usar os DNS públicos do Google 8.8.8.8 e 8.8.4.4, mais informações sobre esses DNS Clique Aqui.

Mais uma linha interessante de se adicionar, que protege contra pacotes danificados (usados em ataques DoS por exemplo) é

iptables -A FORWARD -m unclean -j DROP

(esta linha deve ser adicionada antes das demais).

Depois de todas as regras criadas, voçê criar um script em Shell e gravar na pasta /usr/bin/ com o nome que você deseja e poderá executar esse nome no terminal que automaticamente, será criadas as regras, lembrando que para isso tem de estar com permissão de execução e deve ser o usuário root.Você também pode torná-lo inicializável, em Debian e Debian-Likes(Ubuntu, Linux Mint,…) com o comando

update-rc.d nome_do_script defaults

para excluir basta trocar o defaults por remove.

Para fazer um forward(Redirecionamento, exemplo: uma solicitação de jogo na porta 27020, você quer que seja direcionada ao PC 192.168.1.107 da sua rede)com Iptables.

modprobe iptable_nat
iptables -t nat -A PREROUTING -i etho -p tcp --dport 22 -j DNAT --to-dest 192.168.1.107
iptables -A FORWARD -p tcp -i eth0 --dport 22 -d 192.168.1.107 -j ACCEPT

Você pode repetir o comando várias vezes para direcionar varias portas diferentes para várias máquinas. Naturalmente uma mesma porta não pode ser fowardada duas vezes.Para um range de portas, o Counter Strike pode usar mesmo da 27015 até 27030, se você não qual porta dessa range do seu colega está aberta, então você pode abrir esta faixa de portas assim:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 27015:27030 -j DNAT --to-dest 192.168.1.107
iptables -A FORWARD -p tcp -i eth0 --dport 27015:27030 -d 192.168.1.107 -j ACCEPT

Eu crie um script em PHP para verificar quais portas estão abertas da porta 1 até a 1024 abaixo:

$servidor="127.0.0.1";
for($i=1;$i<1024;$i++){
	$con = fsockopen($servidor, $i, $errono, $errostr, 3);
	if($con){
		echo 'A porta '.$i.' está aberta!';
	}
}
fputs($con, "Portas");
fclose($con);

Mas você pode utilizar o Nmap para verificar quais portas estão abertas no seu micro, para instalá-lo no Debian e Debian-Likes, basta:

apt-get install nmap

para analisar em rede interna use o IP interno, para análise à internet use seu IP externo, para loopback use:

nmap 127.0.0.1

Há também um serviço online que tem como você efetuar testes de portas e de invasões, eu uso muito ele, é o http://www.grc.com/

  • clique em Services
  • depois clique em ShieldsUP
  • depois clique em proceed
  • clique em “Proceed”
  • e inicie o teste clicando em “All Service Ports”.

É isso aê, espero que gostem e comentem.

Fonte: www.hardware.com.br



Sobre o Autor

Marcos Oliveira

A alegria está na luta, na tentativa, no sofrimento envolvido e não na vitória propriamente dita. A força não provém da capacidade física. Provém de uma vontade indomável.
Mahatma Gandhi


Dê você também uma Contribuição
Compartilhe nas suas Redes Sociais!




Inscreva-se no Nosso Canal do Youtube



Curso Extremamente Avançado em Shell Script Bash

Você irá descobrir técnicas avançadas de escrever em Shell Script. Como criar instaladores para distribuições Linux, Animações, Documentações, além de tudo sobre Processos em sistemas tipo UNIX, detalhes sobre Comandos Avançados e Muito Mais !




Crie Sua Própria Promoção

Customize seus Pacotes de Treinamentos obtendo descontos muito em conta!