Configuração manual do Firewall de Rede via Netfilter iptables.
Para acessar as configurações em linha de comando, o arquivo está em "/etc/firewall.user"
# vi /etc/firewall.user
Vamos por partes.
Com esse firmware alternativo, a única forma de acesso remoto, é via ssh, ou seja, a comunicação com o roteador é via porta tcp 22, se perder esta configuração, somente via cabo serial, mas é bem complicado, terá que obter um cabo específico, abrir o roteador e soldar o cabo na placa e depois acessá-lo via hiper terminal.
Então o scrip firewall começaria assim:
#!/bin/sh
#alias
IPT="/usr/sbin/iptables"
REDE="192.168.1.0/24"
AP="ACCEPT"
DP="DROP"
#Regras SSH
$IPT -I INPUT -i eth1 ! -s 191.0.0.0/8 -p tcp --sport 1024:65535 --dport 22 -j $DP
$IPT -I INPUT 2 -i br-lan ! -s 192.168.1.2 -p tcp --sport 1024:65535 --dport 22 -j $DP
$IPT -I INPUT 3 -i eth0 ! -s 192.168.1.2 -p tcp --sport 1024:65535 --dport 22 -j $DP
#Com essas regras, você restringe o acesso a ssh apenas para ips específicos, acesso externo ao range de ips 191.0.0.0/8 e apenas o ip 192.168.1.2 na interface lan, caso a bridge de algum problema, terá acesso pela eth0, a opção -I colocam estas regras em primeiro plano
$IPT -I INPUT 4 -i br-lan -p udp --dport 67:68 --sport 67:68 -j $AP
#Regra para liberar o DHCP na rede Lan.
$IPT -I INPUT 5 -i eth1 -p icmp --icmp-type 8 -j $DP
#Regra para bloquear o ping vindo de fora para dentro
#Regras para loopback
$IPT -A INPUT -i lo -s 127.0.0.1 -j $AP
$IPT -A OUTPUT -o lo -d 127.0.0.1 -j $AP
$IPT -t nat -A OUTPUT -o lo -d 127.0.0.1 -j $AP
#ip6tables tablela FILTER
ip6tables -A INPUT -i eth1 -p tcp --dport 22 -j DROP
ip6tables -A INPUT -i eth1 -p tcp --dport 80 -j DROP
#Essas regras bloqueiam acesso as portas 22 e 80 ao roteador pelo protocolo IPv6.
#Chain OUTPUT
iptables -A OUTPUT -p icmp -m icmp ! --icmp-type 0 -m limit --limit 2/s -j $AP
iptables -A OUTPUT -p udp -m udp --sport 1024:65535 --dport 53 -j $AP
iptables -A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 80 -j $AP
iptables -A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 443 -j $AP
iptables -A OUTPUT -p udp -m udp --dport 123 -j $AP
iptables -A OUTPUT -m state --state ESTABLISHED -j $AP
iptables -A OUTPUT -p udp -m udp --sport 1024:65535 -j $AP
iptables -A OUTPUT -p tcp -m tcp --sport 1024:65535 -j $AP
#Regras para cadeia output
#Regras INPUT
$IPT -A INPUT -p udp -m udp -s 0/0 -i eth1 --dport 33435:33525 -j $DP #Bloqueio de traceroute
$IPT -A INPUT -i eth1 -m state --state INVALID -j $DP
$IPT -A INPUT -p icmp -m icmp ! --icmp-type 8 -m limit --limit 2/s -j $AP
$IPT -A INPUT -i eth1 -p tcp -s 0/0 --sport 80 --dport 1024:65535 -j $AP
$IPT -A INPUT -i eth1 -p tcp -s 0/0 --sport 443 --dport 1024:65535 -j $AP
$IPT -A INPUT -i eth1 -p udp -s 0/0 --sport 53 --dport 1024:65535 -j $AP
$IPT -A INPUT -i br-lan -p udp --sport 1024:65535 --dport 53 -j $AP
$IPT -A INPUT -i br-lan -d 192.168.1.15 -m limit --limit 3/s -j $AP
$IPT -A INPUT -i br-lan -p udp -s $REDE -d 224.0.0.0/24 -m limit --limit 5/s --limit-burst 11 -j $AP
$IPT -A INPUT -p udp -m udp -s 0/0 --sport 123 -m limit --limit 3/s -j $AP
#Mais algumas regras básicas para cadeia input.
#Regras de bloqueio na cadeia INPUT
$IPT -A INPUT -i eth1 -p udp -m udp --dport 1:1024 -j $DP
$IPT -A INPUT -i eth1 -p tcp --syn -j $DP
$IPT -A INPUT -i br-lan -p tcp --dport 1024:65535 -m limit --limit 1/s -j $AP
$IPT -A INPUT -i br-lan -p tcp --dport 1:1024 -j $DP
$IPT -A INPUT -i br-lan -p udp --dport 1024:65535 -m limit --limit 1/s -j $AP
$IPT -A INPUT -i br-lan -p udp --dport 1:1024 -j $AP
#Tabela NAT
$IPT -t nat -I POSTROUTING -o eth1 -j MASQUERADE
#Essa regra é importante para saída de pacotes do roteador.
#Chain FORWARD
$IPT -I FORWARD -i br-lan -o eth1 -p udp -s $REDE -d 0/0 --sport 1024:65535 --dport 53 -j $AP
$IPT -I FORWARD 2 -i eth1 -o br-lan -p udp -s 0/0 -d $REDE --sport 53 --dport 1025:65535 -j $AP
$IPT -I FORWARD 3 -i br-lan -o eth1 -p tcp -s $REDE -d 0/0 --sport 1025:65535 --dport 80 -j $AP
$IPT -I FORWARD 4 -i eth1 -o br-lan -p tcp -s 0/0 -d $REDE --sport 80 --dport 1025:65535 -j $AP
$IPT -I FORWARD 5 -i br-lan -o eth1 -p tcp -s $REDE -d 0/0 --sport 1025:65535 --dport 443 -j $AP
$IPT -I FORWARD 6 -i eth1 -o br-lan -p tcp -s 0/0 -d $REDE --sport 443 --dport 1025:65535 -j $AP
$IPT -I FORWARD 7 -o eth1 -s $REDE -m conntrack --ctstate ESTABLISHED,RELATED -j $AP
$IPT -I FORWARD 8 -i eth1 -d $REDE -m conntrack --ctstate NEW -j REJECT
$IPT -I FORWARD 9 -p tcp -s 0/0 -d $REDE -m multiport --sports 110,587,809,993,994,995,465,8080 -m state --state ESTABLISHED -j ACCEPT
$IPT -I FORWARD 10 -p tcp -d 0/0 -s $REDE -m multiport --dports 110,587,809,993,994,995,465,8080 -m state --state NEW,ESTABLISHED -j ACCEPT
# Dez Regras com prioridade de execução na cadeia FORWARD (acesso a DNS, HTTP, HTTPS e outos).
#Regra para Torrent porta 56733
$IPT -A FORWARD -i br-lan -p udp -s $REDE -d 0/0 --sport 56733 --dport 1024:65535 -j $AP
$IPT -A FORWARD -i eth1 -p udp -d $REDE -s 0/0 --sport 1024:65535 --dport 56733 -j $AP
#Regra de bloqueio na chain forward
$IPT -A FORWARD -p tcp --syn -j DROP
#Tabela NAT cadeia Mangle
$IPT -t mangle -I POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o eth1 -j TCPMSS --set-mss 1492
#Regra para setar as saída de pacotes, com mtu 1492 bytes
$IPT -t mangle -I PREROUTING -i eth1 -p tcp --dport 22 -j DROP
#Regra paranoica de segurança para bloqueio de ssh
$IPT -t mangle -I PREROUTING 2 -p tcp --tcp-flags ACK,FIN,SYN SYN -i eth1 -j TCPMSS --set-mss 1492
#Regra para setar os pacotes de entrada, com mtu em 1492 bytes.
$IPT -t mangle -A PREROUTING -i eth1 -p tcp --dport 80 -j DROP
#Regra paranoica de segurança contra acesso ao http do roteador.
echo "((( Regras de Firewall Ativadas... )))"
# EOF
#Regras básicas, desenvolvidas para uso particular, cada caso é um caso.
sexta-feira, 23 de junho de 2017
quinta-feira, 22 de junho de 2017
OpenWRT no TPlink TL-WR740N.V6 (parte 1)
Openwrt é um firmware alternativo para routers wireless, open source, baseado em linux.
Para ver se o Openwrt é compatível com o dispositivo a ser atualizado:
Table of Hardware
Instalei o Openwrt no router Tplink TL-WR740N.V6.0, cujo modelo é a versão 6 do equipamento. Este equipamento, é bem simples, possui os requisitos mínimos para a instalação do Openwrt, 4Mb de memória flash e 32 Mb de memória ram, mas o seu preço, é o mais em conta do mercado, se der algum problema na atualização, o prejuízo não será tão grande. A versão 6.0, se difere das demais, possui um chip Qualcomm Atheros QCA9533, que opera em 560Mhz e trabalha com alimentação de 5v, diferente das versões anteriores que trabalham com 9v, chipde 400Mhz de frequência e não tem botão de liga/desliga.
Especificações do Tplink TL-WR740N.V6.0:
Tplink TL-WR740.V6
Download do Firmware alternativo:
Firmware alternativo
Para instalação, não tem segredo, é só acessar as configurações do roteador, ir em ferramentas de sistema e atualizar firmware. Essa é uma viagem sem volta, pois a versão do Firmware openwrt-ar71xx-generic-tl-wr740n-v6-squashfs-factory, é uma versão que roda apenas em modo texto, terá que se virar, apenas com o terminal, é sem interface gráfica, todas as configurações são feitas em modo texto, instale-a por conta e risco.
Há dois arquivos para download o openwrt-ar71xx-generic-tl-wr740n-v6-squashfs-factory, que é a versão para instalação com o firmware original (de fábrica) e o openwrt-ar71xx-generic-tl-wr740n-v6-squashfs-sysupgrade, que é uma versão de atualização (upgrade).
Para mim o principal intuito de utilizar para o openwrt é "brincar" com o Netfilter, sem ter que deixar um micro ligado 24/7, desperdiçando energia elétrica.
O Roteador:

Para identificar a versão do Hardware do Roteador:
Para acessar pela primeira vez o openwrt, é através do Putty, ou um micro com linux, é só setar o IP 192.168.1.1, porta 22, no linux "ssh root@192.168.1.1":
A tela Inicial do Openwrt:
O primeiro comando a se realizar é "passwd", sete uma senha segura, existe apenas o usuário root.
Após configurar uma senha segura, vamos configurar o roteador, os principais arquivos de configuração estão em "/etc/config"
Para entender os principais parâmetros de configuração, a documentação está:
Aqui
O ideal, é rodar primeiro o comando "opkg update" e atualizar a lista de pacotes do sistema, e depois o comando "opkg install luci", para instalar a interface gráfica. Mas o problema é a limitação de Hardware, o ideal são 8 Mb de Flash e 64 Mb de memória ram, infelizmente esse roteador possui apenas a metade do ideal, não completou a instalação do luci, travou o sistema, tive que resetar ele e voltar as configurações originais (modo texto):
Nem tudo é perfeito, bugs apresentados:
- O primeiro Led (power on) não acende
- O DHCP só estava fornecendo IPv6
Para mim um led apagado não faz diferença, o DHCP, quem está fornecendo é o access point.
O mais legal é, ele roda bem o Netfilter, quase todas as regras de firewall que rodavam no Desktop, rodam no roteador.
Configuração de Redes, esta no arquivo "/etc/config/network":
A interface eth0 está em modo bridge, formando a interface br-lan, a interface wan é a eth1, que está em modo dhcp, pegando o ip público fornecido pelo provedor, pode-se configurar como pppoe também, mas não é o meu caso:
As configurações de rede Wireless estão no arquivo "/etc/config/wireless"
vi /etc/config/wireless:
Se quiser desativar o WiFi é só descomentar a linha " option disabled 1"
Para setar o SSID da rede: "option ssid"
Para colocar a senha de acesso a rede "option key"
Depois, rodar o comando "/etc/init.d/network reload", o WiFi estará funcionando.
Para configurar o firewall de rede do openwrt, as configurações estão no arquivo "/etc/config/firewall", para acessá-lo:
# vi /etc/config/firewall
Deixei somente habilitadas as seguintes linhas:
config defaults
option syn_flood 1
option input ACCEPT
option output ACCEPT
option forward REJECT
e
config rule
option name Allow-DHCP-Renew
option src wan
option proto udp
option dest_port 68
option target ACCEPT
option family ipv4
Essas linhas são referentes a proteção contra ataques syn_flood e acesso a dhcp na interface wan (para obter um ip público do provedor).
A configuração manual do Firewall se dá nestas linhas:
# include a file with users custom iptables rules
config include
option path /etc/firewall.user
Arquivo de configuração (Netfilter) do Firewall está em "/etc/firewall.user"
# vi /etc/firewall.user (parte 2).
Assinar:
Postagens (Atom)