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/
É isso aê, espero que gostem e comentem.
Fonte: www.hardware.com.br