sábado, 23 de dezembro de 2017

Controle de temperatura com termistor NTC


Controle de Temperatura, com termistor NTC, para acionamento automático do Fan Cooler, para refrigeração em amplificadores de potência, computadores, aquários, etc. Qualquer projeto que necessite o acionamento automático do Fan, conforme a temperatura aumenta.

Esquemático:

















Circuito básico, baseado em dois divisores de tensão e usando o amplificador operacional LM358, como comparador, das tensões derivadas dos divisores, no primeiro, o NTC é um resistor variável, conforme aumenta a temperatura, ele aumenta a sua impedância, consequentemente, aumenta a tensão do primeiro divisor, assim a tensão se iguala a do segundo divisor e dispara uma tensão na base do transistor TIP122, que amplifica o sinal vindo do pino um do operacional, ligando o cooler.

LM358 pinagem:

















O circuito original, utilizava como sensor de temperatura o LM35, mas preferi substitui-lo pelo termistor NTC de 10k, um componente bem mais em conta e de simples montagem. Adicionei um potenciômetro de 2k ohm (em série com o resistor de 3.3k), para poder ter um ajuste fino da temperatura de acionamento do fan.  Na saída do operacional, pode-se utilizar outro tipo de transistor, por exemplo um TIP31, vai ter menos perda (apenas 0,6 volts), utilizei um TIP122, possui um ganho maior, aguenta maior potência, mas por ser Darlington, tem perda maior (1.2 volts).








sexta-feira, 11 de agosto de 2017

/etc/rc.local no Debian Stretch

No Debian recente "Stretch", vem sem o arquivo "/etc/rc.local", muito útil para inicialização de scripts, quando o computador é ligado.

Para criar o arquivo:

# cd /etc/
# ls
# touch rc.local
# chmod +x rc.local

# vim rc.local

Inserir:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.


/root/firewall_testpc.sh
#seuscrips.sh

exit 0
EOF

Depois:

# systemctl start rc.local

# systemctl status rc.local

 





















segunda-feira, 24 de julho de 2017

Configurar o horário no OpenWrt

No OpenWrt o 'Localtime' vem configurado como 'UTC', o qual possui três horas a mais, que o horário Brasileiro (Brasília).

Para corrigirmos isso, é só alterar o arquivo '/etc/config/system':

# vi /etc/config/system

 

















Para colocar o horário Brasileiro (São Paulo) é só trocar o 'UTC' por
'BRT3BRST,M10.3.0/0,M2.3.0/0'



















Coloque  option timezone 'BRT3BRST,M10.3.0/0,M2.3.0/0'

Depois, dê o comando:

# /etc/init.d/system reload

Pronto o horário está configurado.






sexta-feira, 21 de julho de 2017

CTRL+ALT+DEL (Desligar o Computador)

Debian Stretch, ou qualquer distro com systemctl (initd)

Para desligar o computador, geralmente usamos o comando

#shutdown -h now

ou

#init 0

Mas para desligar usando as teclas de atalho "ctrl+alt+del", não funciona, pois o arquivo de configuração "/etc/inittab" não existe mais.

Para isso, criamos um link simbólico:

#ln -s /lib/systemd/system/poweroff.target /etc/systemd/system/ctrl-alt-del.target

Depois reinicie o serviço:

#systemctl daemon-reload

Pronto, o computador desligará, ao pressionarmos as teclas "ctrl+alt+del" .





sexta-feira, 23 de junho de 2017

OpenWRT no TPlink TL-WR740N.V6 (parte 2)

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.











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).








































terça-feira, 28 de fevereiro de 2017

Regras para reforçar a segurança no Firewall Stateful


Segurança no Firewall.

Regras para reforçar a segurança no Firewall Stateful, or a bit Less

#Regras Anti-spoofing (clonagem do ip de origem), exemplos:

 iptables -A FORWARD -s 192.168.1.14 -m mac ! --mac-source 00:11:22:33:67:fa -j DROP

#Regra na table raw anti-spoofing

iptables -t raw -I PREROUTING -m rpfilter --invert -j DROP

ou

echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter


Alias
WAN="eth1"

#Regras para bloquear ICMP (ping)

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

ou

iptables -A INPUT -i $WAN -p icmp --icmp-type 8 -j DROP        #echo request

iptables -A INPUT -i $WAN -p icmp --icmp-type 0 -j DROP        #echo reply


#Regras para Limitar a comunicação ICMP

iptables -A INPUT -i $WAN -p icmp --icmp-type 8 -m limit --limit 1/s --limit-burst 1 -j ACCEPT

iptables -A INPUT -i $WAN -p icmp --icmp-type 0 -m limit --limit 2/s --limit-burst 1 -j ACCEPT


#Regras para prevenir o Traceroute

iptables -A INPUT -i $WAN -p udp -m conntrack --ctstate NEW --dport 33435:33525 -j DROP 


#Regras para descarte de pacotes inválidos (mal formado)

iptables -I INPUT -i $WAN -m conntrack --ctstate INVALID -j DROP

ou

iptables -I INPUT -i $WAN -m state --state INVALID -j DROP


#Ataques DDoS (SYN Flood)

echo 1 > /proc/sys/net/ipv4/tcp_syncookies

ou

iptables -A INPUT -i $WAN -p tcp -m conntrack --ctstate NEW -m limit --limit 1/s -j ACCEPT

iptables -A INPUT -i $WAN -p tcp -m state --state NEW -m limit --limit 1/s -j ACCEPT


#Regras para UDP Flood (para udp flood é mais complicado)

iptables -t mangle -I PREROUTING -i $WAN -p udp -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT


#Ataques externos de Ips, tentando simular o Servidor de DHCP (conexões com IP dinâmico)

#Primeiro é preciso saber o IP address, que vai te fornecer o ip por DHCP na interface WAN:

ip neigh sh | grep eth1 | cut -d " " -f1

WAN=eth1

#Colocar esse Alias no começo de seu script Firewall

IPGTW="`ip neigh sh | grep eth1 | cut -d " " -f1`"

#Regra de proteção

iptables -I INPUT -i eth1 -p udp -m udp ! -s $IPGTW -d 255.255.255.255 --sport 67:68 --dport 67:68 -j DROP