Recentemente implementei uma solução para monitoramento e controle de dispositivos remotos usando
Raspberry PI,
Slackware ARM e
Tor.
Antes que alguém pergunte por que fazer isso com o Tor?
- Em primeiro lugar por que com o emprego do Tor não necessitamos de serviços de DNS dinâmico tipo no-ip.
- Em segundo lugar não precisamos fazer qualquer alteração no gateway da empresa, até por que o fornecedor do serviço não nos daria acesso ao roteador.
- Em terceiro por que é bom, confiável, elegante e fácil de se implementar.
Não vou adentrar minúcias do projeto, configurações de hardware do Raspberry Pi nem me ater as implementações de segurança, como autenticação etc. para não alongar essa dica.
No máquina servidora ou escrava
1° Na máquina servidora ou se preferirem escrava que no nosso caso é um Raspberry PI rodando Slackware ARM que controla determinados equipamentos.
No arquivo
/etc/tor/torrc faça o seguinte:
SOCKSPort 127.0.0.1:9050
Log notice file /var/log/tor/tor.log
RunAsDaemon 1
DataDirectory /var/lib/tor
User tor
PidFile /var/run/tor/tor.pid
ExcludeNodes {ca},{ua},{us},{rw},{lr},{hk},{mo},{jp}
ExitNodes {de},{dk},{fi},{is},{mt},{no},{nl},{an},{sk},{ru},{by},{be},{gf},{fr},{in},{mc},{me},{sm},{it},{th}
VirtualAddrNetwork 127.200.200.200/10
AllowSingleHopCircuits 0
HardwareAccel 1
FascistFirewall 1
FirewallPorts 22.80,443,3128.8080
KeepalivePeriod 30
DNSPort 5353
DNSListenAddress 127.0.0.1
NumEntryGuards 2
NumCPUs 4
TransPort 9040
HiddenServiceDir /var/lib/tor/hidden_service_64300/
HiddenServicePort 64300 127.0.0.1:64300
Destaco o parâmetro "KeepalivePeriod", que no caso configurei-o para 30 segundos, é crucial pois manterá o Tor, que roda como cliente, sempre ativo. Para saber qual o endereço do host, após levantar o tor dê um:
# cat /var/lib/tor/hidden_service_64300/hostname
nesse caso é a1jt2ebtssn63rrb.onion.
Agora vamos ao netcat.
Temos que substituir o Netcat GNU pelo Netcat OpenBSD pelo fato do GNU não permitir escutas persistentes.
Comece desinstalando o netcat GNU, como estou usando Slackware...
# removepkg nc
Em seguida baixe o Netcat-openbsd de
http://slackbuilds.org, compile-o conforme as instruções e instale-o com o installpkg.
Esse passo é necessário no Slackware, há distros que adotam o Netcat-OpenBSD por padrão, o CentOS por exemplo é uma delas.
Feito isso, já com o Tor levantado, suba o serviço com o Netcat OpenBSD:
# nc -lk 127.0.0.1 -p 64300 > /sys/class/gpio/gpioXX/value
Pronto!
Na máquina cliente ou mestre
2° Na máquina cliente ou se preferirem mestre, com o Tor já levantado.
# torsocks --shell on
e no MESMO SHELL execute o comando para ligar um dispositivo:
# echo "1" | nc a1jt2ebtssn63rrb.onion 64300
E para desligar:
# echo "0" | nc a1jt2ebtssn63rrb.onion 64300
Onde a1jt2ebtssn63rrb.onion é o endereço da máquina servidora ou escrava como mencionai acima.
Dessa ideia simples e elegante dá para imaginar um monte de aplicações!
Bom trabalho a todos.
Nenhum comentário foi encontrado.