Artigos

Artigos

Artigos do prefirolinux

SQUID PROXY COM INTERCEPTAÇÃO HTTPS

0
Squid_logo

Boa pessoal, estamos sumidos, na verdade eu ando muito desanimado com qualquer coisa e há tempos desejava criar novos tutoriais e videos, porém, os problemas de saúde e outros acabam por deixar o nosso tempo pouco. Não bastasse, o desgaste é bem desanimador.
Mas sem continuar falando de coisa triste, vamos ao que interessa: Squid proxy interceptando trafego https.

É  uma solução para o controle em ambientes onde existe a real necessidade de controlar acesso, filtrar buscas por palavras e até mesmo impor restrições de segurança. Claro, o proxy por si só não irá proteger sua rede, até porque em grande parte, os problemas são causados quando existe fragilidade no elo mais fraco, o usuario! Contudo, filtrar sites com conteúdo adulto, pirataria, redes sociais já pode desafogar um pouco do consumo de banda, além claro de possibilitar a analise de sites mais visitados, possibilitar algum cache e bloquear o tik tok(brincadeira – o nft seria mais indicado).
Bom, sem mais, vamos ao que interessa…

Para este tutorial eu usei o slackware 15 por rodar bem no hardware qual tenho hoje como gateway, uma c847 com duas portas ethernet de 1Gbps. Portanto, para outras distribuições esse processo poder ter variação de local de arquivos ou binarios(Exceto o diretorio do squid). O diretorio do squid se localiza nas distribuições linux mais conhecidas em “/etc” .

No nosso caso, o primeiro passo é instalar o pacote do squid, e caso você não o tenha instalado, então sugiro que o faça via sbopkg.
Para instalar o sbopkg você pode consultar mais informações em https://sbopkg.org .
Mas para facilitar sua vida, abra um terminal e como root ou usando sudo faça:

cd /tmp && wget https://github.com/sbopkg/sbopkg/releases/download/0.38.2/sbopkg-0.38.2.tar.gz

Após o download, faça um dos dois procedimentos, o primeiro instala e o segundo é update:

installpkg sbopkg-version-noarch-1_wsr.tgz

ou

upgradepkg sbopkg-version-noarch-1_wsr.tgz

Depois, rode o sbopk, entre na opção sync e aguarde…
Logo após, vá em search, digite squid e escolha a opção string.
Selecione o squid, selecione OK e pressione a tecla “P” ou vá até ‘process’ e de enter.
Ele vai processar a fila, baixar, compilar e instalar o pacote.

Essa é a etapa mais demorada, na minha humilde plaquinha foram quase uma hora(dual core de 1.1ghz).

Após todo processo, vá para o diretorio do squi que fica localizado em /etc;

cd /etc/squid

Faça um backup do squid.conf

cp squid.conf squid.conf.o

Crie o diretorio de politicas ou como desejar dentro do diretorio do squid, esse diretorio armazenará os arquivos com as politicas de ‘acl’, portanto, é interessante que ele fique neste diretorio até por questões de organização.

mkdir -p /etc/squid/politicas

Crie o diretorio para gerarmos nossos arquivos de certificados:
mkdir -p /etc/squid/certs

Use o seu editor de texto preferido e faça as alterações que considerar necessarias(o objetivo aqui é abordar a geração de certificados e do banco de dados ssl).
Um squid.conf que talvez possa ajudar:

acl localnet src 10.0.0.0/8 # RFC1918
acl localnet src 172.16.0.0/12 # RFC1918
acl localnet src 192.168.0.0/16 # RFC1918
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl allowed dstdomain .whatsapp.com:5222 .whatsapp.com:443
http_access allow allowed
acl blockkeyword url_regex -i "/etc/squid/politicas/palavras-bloqueadas.acl"
acl localnetsites dstdomain "/etc/squid/politicas/dominios-liberados.acl"
acl blockeddomain dstdomain "/etc/squid/politicas/dominios-bloqueados.acl"
acl bypass_caching dstdomain "/etc/squid/politicas/sites_fora_proxy.acl"
cache deny bypass_caching
http_access deny blockeddomain
acl myports port "/etc/squid/politicas/portas.liberadas.acl"
acl myaddrs dst "/etc/squid/politicas/ips.liberados.acl"
http_access allow myports myaddrs
acl CONNECT method CONNECT
http_access allow manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny blockkeyword
http_access allow localhost
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128 ssl-bump \
cert=/etc/squid/certs/squid-ca-cert-key.pem \
generate-host-certificates=on dynamic_cert_mem_cache_size=16MB
https_port 3129 intercept ssl-bump \
cert=/etc/squid/certs/squid-ca-cert-key.pem \
generate-host-certificates=on dynamic_cert_mem_cache_size=16MB
sslcrtd_program /usr/libexec/security_file_certgen -s /var/lib/ssl_db -M 16MB
acl splice_it ssl::server_name "/etc/squid/politicas/fora-proxy-cache.acl"
acl splice_local ssl::server_name "/etc/squid/politicas/dominios-locais-fora-proxy.acl"
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump splice splice_it
ssl_bump splice splice_local
ssl_bump bump all
visible_hostname NOME_DA_MAQUINA
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
pid_filename /var/run/squid/squid.pid
cache_effective_user nobody
cache_effective_group nobody
cache deny localnetsites

Crie seus arquivos de politicas e regras acl, lembrando de substituir a localização das acl acima pelas suas ou de criar as acls informadas no squid.conf.
Agora vamos da uma olhada nas seguintes linhas, as mesmas estão destacadas no squid.conf acima:

http_port 3128 ssl-bump \
cert=/etc/squid/certs/squid-ca-cert-key.pem \
generate-host-certificates=on dynamic_cert_mem_cache_size=16MB
https_port 3129 intercept ssl-bump \
cert=/etc/squid/certs/squid-ca-cert-key.pem \
generate-host-certificates=on dynamic_cert_mem_cache_size=16MB
sslcrtd_program /usr/libexec/security_file_certgen -s /var/lib/ssl_db -M 16MB

Elas definem o local onde iremos  armazenar o certificado que criaremos em seguida. Este certificado será usado para importarmos nas maquinas que terão o squid como proxy.

No caso acima, definimos esse diretorio como “/etc/squid/certs” e a ultima linha:
sslcrtd_program /usr/libexec/security_file_certgen -s /var/lib/ssl_db -M 16MB
Se refere ao local do banco de dados de certificados setados no squid.conf.
Com essa breve configuração e squid parado, vamos gerar os nossos certificados:
cd /etc/squid/certs

E, agora usando o openssl, geramos nossos dois arquivos; Um certificado e uma chave privada.

~#openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -extensions v3_ca -keyout squid-ca-key.pem -out squid-ca-cert.pem

Vamos usar o cat para pegar o conteúdo dos dois arquivos e redirecionar para um outro, no caso o arquivo que conterá tanto o nosso certificado quanto nossa private key:
~# cat squid-ca-cert.pem squid-ca-key.pem >> squid-ca-cert-key.pem

O arquivo acima, em destaque é o que iremos transferir para as maquinas clientes do squid.
Vamos aproveitar e gerar/inicializar  a base de dados de certificados:
~# /usr/libexec/security_file_certgen -c -s /var/lib/ssl_db -M 16MB

Na antepenúltima e penúltima linha nós temos o seguinte:

cache_effective_user nobody
cache_effective_group nobody

Essas duas linhas acimas representam para o cache o usuario e grupo, ou seja, as permissões de usuario e grupo que serão utilizadas. Aproveitamos e atribuimos essas permissões para o diretorio do squid e tudo que nele tiver presente.
~# chow -R nobody:nobody /etc/squid
Desta forma estamos aplicando as permissões para que o squid funcione sem problemas

Outras permissões para outros diretorios podem ser necessarias, experimente rodar ~#squid -k parse, leia as informações de log e veja se suas permissões estão corretas, caso necessario, aplique as permissões para nobody e restarte o serviço.
Após estes passos, bem provavel que tudo funcione, mesmo que com alertas sobre as acls(crie as acls).

Bom pessoal, como o intuito era vermos a parte do ssl, acredito que o tutorial se alongou até demais. De qualquer forma, se ainda tiver duvidas, comente ai.

Referencias
-> https://elatov.github.io/2019/01/using-squid-to-proxy-ssl-sites/
-> https://wiki.squid-cache.org/Features/DynamicSslCert

RFC 1918
-> https://www.rfc-editor.org/rfc/rfc1918.html

Configurando Servidor FreeRadius + Mysql para PPPOE no Mikrotik(Parte 1)

0

Fala meus bons e amados irmãos de guerra, hoje vamos ver em simples passos como criar um um servidor de Radius para autenticação de usuários do mikrotik em pppoe no servidor Mysql.

 

Basicamente a estrutura se resume no seguinte.
* Essa RB ai é só pra descrever o que usei.
Rb com 5 portas, rodando RouterOs 5.25

Turnkey linux 14 baseado no Debian Jessie 8

Freeradius + Mysql
Na nossa routerboard temos 5 portas, usaremos apenas 3, uma para comunicação com o servidor radius, uma para rede de clientes e uma para conexão com a internet.

O Cenário é basicamente esse abaixo:

Radius

RB – Porta Ether1 > 10.2.2.13/28 (Internet)

RB – Porta Ether3 > 10.1.1.1/24 (Conexão com o Freeradius)

RB – Porta Ether5 > 10.2.3.1 (Com pool para Clientes PPPoE)

Linux Server – eth0 : 10.1.1.10/24

Cliente 10.2.3.150 (Endereço Já entregue pelo PPPoE após discar)

Bom, o procedimento é bem simples como descrito no vídeo, que embora um pouco longo é bem satisfatório.

 

 

Bom, basicamente é isso. O restante do conteúdo pode ser visto no vídeo.

Abraços, e vamos a parte 2

Estará disponível AQUI

 

[ x ]
 

 

 

ARDUINO PRO MICRO – ‘USB RUBBER DUCKY’ – V 1.0

0
Pro Micro

Pessoal, vamos aqui dar uma olhadinha em alguns pontos do nosso vídeo sobre o Arduino Pro Micro…
Como eu já havia dito no Artigo sobre o Digispark eu faria algo sobre o Arduino, bem similar porém por se tratar de um dispositivo de maior performance, não quando falamos de processamento, mas em diversos outros fatores, inclusive pela aplicação.
Certo, que o vídeo tenha sido de alguma valia e eu acredito que tenha sido, eu vou aqui abordar alguns assuntos que não foram abordados no vídeo pois o deixaria com um tamanho muito grande e até cansativo para todos nós. Ok?

 

Um dos Tópicos que gostaria de abordar, porém não tive oportunidade era sobre as especificações do Pro-Micro. Então, deixo para vocês o link do datasheet do carinha.

Clique para acessar o ProMicro16MHzv1.pdf

 

Outros que eram para ter sido debatido era as instruções dos códigos usados, e rapaz, se você já tem algum conhecimento não terá alguma dificuldade, mas caso não tenha eu realmente reforço o que disse no vídeo, leia um pouco sobre.

O primeiro código:

No primeiro código que escrevi, e enviei ao Arduino no vídeo nós realizamos uma simples execução, abrir um navegador e depois abrir um site, especificamente o prefirolinux.com.
Este foi o código(primeiro) usado por mim no vídeo.

Depois disso, mostrei um código um pouco maior, também realizei a conexão ao kali e de forma clara acredito ter falado um pouco sobre o Arduino Reverse Shell Generator( ).
Este por sua vez, facilitou muito o processo realizado naquele instante, claro, não temos obrigatoriamente que criar todos os arquivos usando o shell generator.

Bom, depois de baixar o Programa e fazer todo aquele processo, faltará o código, e isso pode ser encontrado abaixo.

 

Este código, está configurado de forma a acessar um server especifico e abrir a shell.txt.

Caso for usar este código, faça as devidas alterações no link onde está hospedada sua shell… 😀

Com isso, basta seguir o passo a passo do vídeo e não terá como dar errado.

Para a mudanças de caracteres, farei um mapa das modificações em um post a parte e agradeço a todos pela visita.
Amanhã ou depois irei upar um novo vídeo, com mais recursos e novidades.

 

Abraços e até mais!! 😉

 

Bloqueio Seletivo Whatsapp usando Iptables

0

Olá, meu nome é Thiago Ferreira e sou um dos colaboradores do PrefiroLinux, hoje mostrarei como podemos executar um bloqueio seletivo  de whatsapp e facebook usando apenas o iptables. Muito útil em ambientes onde se usa proxy transparente e não há  a possibilidade exectuar os devidos bloqueios e liberação pelas ACL’s do squid.
Aqui faremos de uma forma simples que requer apenas o conhecimento dos ips a serem bloqueados , estes se tratando da rede interna. E os ips que serão liberados, no caso apresentado os ips de nível publico.
Aqui deixo o script de forma bem simples, comentada e bem apresentado, inclusive com a notação de que cada comando fará, como o iptables tratará as regras básicas descritas.
Esse conteúdo originalmente foi incluído em minhas rotinas de bloqueio por volta de junho de 2015, após pesquisas feitas principalmente no linuxquestions.org e adaptado as minhas necessidades. Então, para futuras duvidas e buscas a base de busca deve ser o linuxquestions.
Sendo que aqui no nosso fórum temos o devido espaço para quaisquer esclarecimentos, vide;
http://forum.prefirolinux.com

As linhas são auto explicativas,  os comentários devem permanecer com o “#” antes das linhas que não são parte do script afim de evitar quaisquer erro de leitura do bash.

Criem os arquivos, bloqueio_seletivo, ipsliberados e ipsinterno

$nano /usr/share/bloqueio_seletivo
e dentro dele insira o seguinte script


Na lista de ipsliberados entre com os ips disponiveis no proprio site do whatsapp: https://www.whatsapp.com/cidr.txt .
Basta adicionar a lista a um arquivos em “/usr/share” :
$nano /usr/share/ipsliberados
Como exemplo, poderiamos ter uma serie de ips nessa ordem:

31.13.58.55
31.55.44.77
178.88.14.100

Adicione os ips, e crie um novo arquivo para inserirmos os ips da rede interna:

$nano /usr/share/ipsinterno

Em ipsinterno insiram os ips da sua rede, lembrando de seguir a seguinte regra.
Ips que serão bloqueados devem conter o “#” antes, pois o cut fará a leitura levando em consideração que esses são os unicos que devem ser tratados.
#10.10.10.44
#10.10.10.24
10.10.10.8
No caso acima, somente os dois primeiros serão bloqueados de acessar os serviços dos “ipsliberados”,  o “10.10.10.8” terá total acesso ao trafego.

Caso deseje, liste apenas os ips permitidos, sem a necessidade de usar o “#” antes do ip, ficando assim:
10.10.10.55
10.10.10.22

Aqui um exemplo do script limpo e sem comentarios…

Lembrem-se, leia todo o conteúdo do post inclusive do script para melhor entendimento.
Suporte no forum do prefirolinux.
Boa diversão

 

 

ARDUINO PRO MICRO + CARTÃO DE MEMORIA = USB RUBBER DUCKY COM EXCELENTES FUNCIONALIDADES

0

Imagine você com R$34,00 criar uma ferramenta bem semelhante ao Usb Rubber Ducky que hoje é vendido no Brasil por no minimo R$500. Agora imagine que nós iremos ver como fazer isso de uma forma simples, pratica e bem funcional.

Assunto de Hoje: Transforme seu Pro micro em uma poderosíssima ferramenta de testes de intrusão.
Com o dólar lá nas alturas e até mesmo com o interesse em criar você mesmo novas ferramentas as vezes somos colocados frente a situações que acabamos por economizar muitos ‘Termes'(R$). Além claro de passar divertidos momentos brincando com aquilo que mais gostamos.

Veja o Vídeo:

Nesse tutorial/Artigo/Receita de bolo nós iremos ver como fazer isso. Aconselho ver o vídeo para melhor entendimento do assunto abordado, pois lá eu tento dar detalhes do uso e simplifico as ações realizadas para construir esse brinquedinho.

 


Para isso precisaremos de:

  1. Arduino Pro Micro
  2. Leitor/Adaptador de cartão SD
  3. Um cartão Micro SD.

Com o material em mãos, a parte mais chata é realizar a soldagem, eu pelo menos por ter um problema nos nervos dos braços estou tremendo muito, o que me impede de realizar uma soldagem cirúrgica. Porém, por menos bonito que seja ainda assim consigo fazer alguns itens se tornarem funcionais.

Nesse caso, iremos ligar o Arduino diretamente ao leitor/adaptador de cartão, a sequencia de solda para os pinos são:

Sequencia

Depois de realizar a solda dos devidos pinos a seus respectivos pares devemos realizar um teste para verificar se tudo correu bem. Caso sim, ai iremos para o próximo passo.

Para fazer o teste eu indico que você use o seguinte código, esse disponível diretamente do Arduino.CC .

Segue o código:

Se após enviar o código para o Arduino e ele gravar no seu cartão SD um arquivo(como o default do cod.) chamado ‘TESTE.TXT e nele escrever a seguinte linha: “testing 1, 2, 3.” então, todos os seus passos anteriores foram feitos com sucesso e já pode ir para a próxima etapa.
Importante observar a linha 16, onde está :   if (!SD.begin(4)) {

Se feito de acordo com a sequencia de conexão acima então, obrigatoriamente deve-se usar o pino 10 onde está a atribuição do valor 4. Caso tenha usado o 4, nada precisa ser mudado.

 

Nesta Etapa daremos inicio a compilação do codigo que será o interpretador dos nossos scripts.
Para isso, basta entrarmos em : https://github.com/Seytonic/Duckduino-microSD e posteriormente clonar ou fazer download do projeto que está disponível. Algo bem semelhante a :
$git clone https://github.com/Seytonic/Duckduino-microSD.git

Após isso, entre no diretório recém criado, dentro dele vá em Duckduino-microSD e veja que só existe um arquivo, este com o nome de Duckduino-microSD.ino

 

Feito os passos acima, abra o IDE do Arduino, procure pelo arquivo .ino baixado e abra para que possa compilar e enviar ao Arduino. Feito isso, só precisaremos de entender agora como irá funcionar o nosso Sistema.

O Arduino então está programado para realizar a interpretação de comandos pre-estabelecidos e que estejam em um arquivo que é referenciado no código carreado.

 

Assim que conectamos o cabo ao pc, o arduino faz a leitura do arquivo no cartão, interpreta e executa isso.
Ou seja, o nosso Arduino é praticamente um USB R. Ducky, só temos menos processamento, mas na pratica o funcionamento é 90% ou mais similar.
Para que possamos fazer os scripts nós deveremos seguir uma sintaxe bem diferente da apresentada no vídeo anterior, desta vez usaremos praticamente o que é usado no próprio Rubber, ou seja, poderemos com pequenas alterações fazer com que nosso arduino execute as centenas de códigos já disponíveis, ou, criar os nossos próprios. Isso irá variar com certeza.
Um código usado por mim que tem basicamente a mesma função do outro vídeo é:

 

Para testar numa live, acesse, http://seytonic.com.
Caso deseje pode também clonar direto na sua maquina, o link para download é o seguinte:
https://github.com/Nurrl/Duckuino

Vejam só o quanto ele diminui de tamanho. Fica muito show 😉

Bom, agora o que nos resta é copiar esse código para o cartão de memoria. Após copiar para o cartão você espeta no leitor/adaptador e com um cabo USB apropriado, conectar ao PC.

Esse modelo de executar os scripts simplifica e ao mesmo tempo facilita e muito a criação e edição dos nossos ‘programas’. Isso é muito simples, funcional e pratico.
Link para os scripts já existentes do USB Rubber Ducky : https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Payloads

 

Então pessoal, é isso.
Até a próxima.

 

Instalação Debian e derivados via PXE [ live e install network pxe debian]

0
Pxe install

 

Instalando uma distribuição Linux via PXE, totalmente OFFLINE, sem uso de internet para baixar qualquer arquivo que não seja a imagem completa(full) do sistema, nada de ficar baixando pacotes durante a instalação!!!…
Administrar grandes quantidades de computadores nem sempre é uma tarefa fácil, por exemplo, quando se tem que formatar ou atualizar um grande numero de maquinas, mas que de certa forma implique na dificuldade de ter que fazer em maquina por maquina.
Esta solução foi testada amplamente em varias versões de S.O derivados do Ubuntu, como Xubuntu, Kubuntu, Ubuntu Server e o próprio Ubuntu .

Usando rede wifi com Beagle Bone Green.

0

Olá pessoal, meu nome é Filipe e hoje venho mostrar como utilizar rede wifi na BBG classica que no caso vem sem adaptador wireless.

Usando o AVRDUDE.

0

Olá amigos meu nome é Filipe e hoje irei apresentar um amigo antigo o AVRDUDE.

O AVRDUDE é um utilitário para realizar download/upload/manipular a memória FLASH e EEPROM de microcontroladores AVR ou seja será ele que usaremos para gravar nossos programas nos chips.

Configurando um Servidor Slackware – DHCP server, Nat com iptables simplificado.

1

Amigos, mais uma vez é um prazer imensuravel estar por aqui e poder compartilhar um pouco do meu conhecimento com essa grande comunidade.

Vamos configurar um Slackware para servir internet e DHCP ?
O video aborda as configurações basicas necessarias para que possamos ter nosso firewall funcinando. Este video será o primeiro de uma serie que farei a respeito do sistema, então vamos lá.

 

[ x ]
 

 

Configurações usadas por mim neste video.

dnsmasq.conf:

Primeiro, faça um backup das configurações atuais.

cd /etc/

mv dnsmasq.conf dnsmasq.conf.bkp

nano dnsmasq.conf

Adicione as linhas em cinza abaixo ou crie as regras de acordo com suas necessidades.
#ARQUIVO DE CONFIGURAÇÃO DHCP SERVER
#DECLARAR ABAIXO A INTERFACE A SER USADA
interface=eth1
#<IP INICIAL>,<IP FNAL>,<MASK>.<LEASE>
dhcp-range=10.22.33.100,10.22.33.120,255.255.255.0,12h
#GATEWAY PADRÃO
dhcp-option=3,10.22.33.1
#SERVIDORES DNS
dhcp-option=6,10.22.33.1
#SERVIDOR DE NOME – SUFIXO DNS
dhcp-option=15,slack-video.prefirolinux.com
#
dhcp-authoritative

rc.firewall
Siga os comandos para a criação do script

cd /etc/rc.d

nano rc.firewall e adicione as seguintes linhas destacadas em vermelho:

#!/bin/bash
iptables -P FORWARD ACCEPT
iptables -A POSTROUTING -t nat -s 10.22.33.0/24 -o eth0 MASQUERADE

 

[ x ]
 

Ao final dos procedimentos, dar permissão de execução aos seguintes arquivos.

rc.firewall – rc.dnsmasq – rc.ip_forward

Para tal use, chmod +x <nome do script>.

Bom, isso é tudo por enquanto .

Abraços e até a proxima !!