Bloqueando malwares por meio de blackhole de DNS no pfSense

O que é um Blackhole de DNS?

Malware é uma criatura complicada. Todos com certeza desprezam sua difusão, mas nos maravilhamos com sua esperteza e frequentemente temos pesadelos sobre seus efeitos. Infelizmente, o problema do malware só multiplica, tanto em infraestruturas críticas, como em smartphones, dispositivos médicos e até mesmo em carros.

Como a maioria das defesas tem como objetivo impedir a entrada de malwares, as empresas geralmente não estão preparadas para lidar quando entram. Contê-las e erradicá-las em toda a rede exige abordagens diferentes. Este é o lugar onde um Blackhole de DNS pode vir a calhar.

Como funciona um Blackhole de DNS

Uma vez que o malware atinge seus sistemas, sua missão é “telefonar para casa”, onde seja, entrar em contato com seus servidores de comando e controle para fazer o check-in com o invasor. Depois que um invasor confirma o controle positivo, ele inicia o ato de assumir seus sistemas e roubar números de cartões de crédito, propriedade intelectual e o que mais puder. Mas se você tem um Blackhole de DNS, o malware não pode “ligar para casa” e é efetivamente neutralizado.

Também conhecido como “sumidouro”, um Blackhole de DNS funciona usando o DNS para interceptar e isolar malwares. Existem duas abordagens principais que os blackholes podem usar para interceptar e remover malware:

  • Bloquear o malware de “telefonar para casa”, impedindo-o de continuar em seu caminho para invadir, manter refém ou destruir; ou
  • Bloquear, mas depois continuar a conversa com o malware

Ao interceptar as comunicações do malware, o blackhole pode coletar dados da vítima para determinar exatamente onde está, o que está tentando fazer e quais partes do sistema podem ser afetadas.

Um produto excelente e gratuito para isso é o Pi-hole, um Blackhole de DNS que protege seus dispositivos contra conteúdo indesejado, sem instalar nenhum software do lado do cliente.

É fácil de instalar e bem leve, funcionando sem problemas com requisitos mínimos de hardware e software. Consegue bloquear conteúdos em locais sem navegador, como aplicativos móveis carregados de anúncios e smart TVs, acelera continuamente a sensação da navegação diária ao armazenar consultas DNS em cache. Possui um painel de interface Web responsivo e bonito, além de permitir interação por linha de comando, pode opcionalmente funcionar como um servidor DHCP, garantindo que todos os seus dispositivos sejam protegidos automaticamente.


Mas vamos deixar pra falar mais do pi-hole em outra postagem, o objetivo dessa é ver como configurar Black Holes de DNS usando o pfSense. Uma ótima maneira de ajudar a proteger sua rede contra malware, phishing e anúncios antes que eles cheguem aos seus endpoints.

Implantando um Blackhole de DNS no PfSense

Primeiro de tudo, vá para o gerenciador de pacotes e pegue o pacote pfBlockerNG.

Em seguida, vá para o Firewall / pfBlockerNG

Vá para DNSBL

Vamos ligar a EasyList primeiro.

Em seguida, certifique-se de alterar a ação da lista de padrão para Não consolidado

Isso adicionará o Bloqueio de anúncios, já que é a maioria da lista na EasyList, mas vamos dar um passo além e adicionar nossa própria lista personalizada.

Vá para o DNSBL Feeds e clique em adicionar.


Aqui eu vou estar adicionando a lista de ransomware Abuse.ch.

Adicione o nome do grupo: ransomware abuse.ch e dê uma descrição para suas anotações.

Adicione a fonte da lista, neste caso:

https://ransomwaretracker.abuse.ch/downloads/RW_DOMBL.txt

Dê-lhe um título/rótulo, por exemplo: ransomwaretracker

Certifique-se de alterar a ação da lista de Desativado para Não consolidado.

Escolha uma frequência de atualização, eu escolhi 2 horas.

E vamos salvar!

Vamos verificar esta tudo ok. Vá para Firewall / pfBlockerNG / Log Browser

Selecione o tipo de registro / arquivo para arquivos DNSBL e selecione o nome do rótulo que você deu à lista, no meu caso eu usei ransomwaretracker (.txt).

Você deve então ver o seguinte:

Isso significa que, se algum malware tentar se conectar com qualquer um dos nomes DNS da lista, eles carregarão um recurso em branco localizado no roteador / firewall e não no servidor do malware.

Veja algumas outras boas listas para adicionar:

  • Outra lista através do projeto Abuse.ch:
https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist
https://www.openphish.com/feed.txt
  • Phishtank, uma parte do OpenDNS agora de propriedade da Cisco
http://data.phishtank.com/data/online-valid.csv
  • Malwaredomains o oldie mas goodie
https://mirror1.malwaredomains.com/files/justdomains
https://raw.githubusercontent.com/Hestat/minerchk/master/minerlist-all.txt

Ah, e uma última etapa de resolução de problemas, se a sua lista não aparecer imediatamente, talvez seja necessário executar uma atualização manual dos feeds.

Firewall / pfblockerNG / Update

Não se esqueça da seção DNSBL da lista de permissões, para colocar na lista de permissões domínios que possam aparecer  e que sejam analisados ​​incorretamente, como google.com, amazon.com etc.

Um material complementar, excelente de como configurar o pfBlockerNG de modo eficaz foi registrado por Dallas Haselhorst nesse artigo – pfsense-using-pfblockerng-dnsbl e nesse outro ele faz uma explanação de como usar bloqueio de listas IPv4.

Compartilhando e montando automaticamente um diretório do servidor de arquivos do Windows (Active Directory) no Linux

Maneira simples de acessar compartilhamentos Windows em um servidor Linux.

Imagine a seguinte situação:

  1. Você tem uma infraestrutura com Active Directory da Microsoft ou LDAP, com pastas compartilhadas na rede, tudo funcionando de boa;
  2. Você também tem um servidor web (apache ou nginx) rodando tranquilamente, servindo sua intranet ou site na internet…;
    1. Aí alguém chega pra você e fala:
      – Sabe essa pasta compartilhada do setor XXX, então, precisamos colocar esses arquivos disponíveis TAMBÉM na Web (intranet ou internet).
      – Ah, mas esses arquivos devem continuar sendo acessível normalmente pelo compartilhamento do Windows. 

Isso é bem fácil de resolver, basta utilizar o cliente CIFS de sistemas de arquivos do Windows.

1° passo

Criar um ponto de montagem no servidor web. Usualmente utilizamos o /mnt, mas fica a critério de suas necessidades. No nosso exemplo, vamos criar esse ponto de montagem direto na pasta DocumentRoot de nosso servidor, que roda Apache e posteriormente definir o usuário apache como dono do diretório criado.

[root@server ~]# mkdir /var/www/html/arquivos

[root@server ~]# chown apache:apache /var/www/html/arquivos/ -R

2º passo

Criar um arquivo com as credenciais de acesso do Active Directory à pasta compartilhada. Vamos criar dentro do home do usuário Root:

[root@server ~]# vim /root/.shared_credencial

Insira essas informações, tão como informados:

username=nome_usuario_ad
password=senha_usuario_ad
domain=dominio.de.seu.ad

3º passo

Editar o fstab, inserindo o ponto de montagem para a pasta /var/www/html/arquivos, passando as credencias de acesso que foram registradas em /root/.shared_credencial.

[root@server ~]# vim /etc/fstab

Inserir a seguinte linha no final do arquivo, substituindo o IP do servidor de arquivos e o caminho da pasta compartilhada do exemplo dado (192.168.0.10/SETORX/arquivos) pelas informações de seu compartilhamento windows.

//192.168.0.10/SETORX/arquivos /var/www/html/arquivos/ cifs credentials=/root/.shared_credencial,iocharset=utf8,sec=ntlm,nobootwait,uid=apache,gid=apache 0 0

Observação: se você criar pastas com espaços no /var/www/html/ você precisa utilizar o símbolo %40 para informar o espaço em branco entre as palavras, na hora de referenciá-las no FSTAB, veja esse exemplo real:

# Rio Branco
# Pasta no servidor de arquivos: cidades/RBR
# Pasta no servidor web: /var/www/html/Rio Branco
//192.168.0.10/cidades/RBR      /var/www/html/Rio\040Branco    cifs credentials=/root/.shared_credencial,iocharset=utf8,sec=ntlm,nobootwait,uid=apache,gid=apache 0 0

Se a pasta tiver acento, é necessário incluir a o parâmetro lang=utf8:

# Tarauacá
# Pasta no servidor de arquivos: cidades/TRQ
# Pasta no servidor web: /var/www/html/Tarauacá
//192.168.0.10/cidades/TRQ      /var/www/html/Tarauacá    cifs credentials=/root/.shared_credencial,iocharset=utf8,sec=ntlm, lang=utf8, nobootwait,uid=apache,gid=apache 0 0

4º passo

Se você fizer uma nova entrada no fstab, ela não será montada automaticamente. Portanto, você deve recarregar/atualizar as entradas. Uma reinicialização no Linux fará isso, mas essa não é uma maneira amigável. Uma maneira rápida de recarregar novas entradas em /etc/fstab é usar o comando mount:

[root@server ~]# mount -a

Após isso, se você acessar a pasta montada, irá ter acesso aos arquivos compartilhados e como foi montado dentro do DocumentRoot do apache, os mesmos também estarão acessíveis na Web.

[root@server ~]# ls /var/www/html/arquivos/

http://192.168.0.10/arquivos/

 

 

Geradores de sintaxe Crontab

Se você quiser executar periodicamente uma tarefa (por exemplo, enviar e-mails, fazer backup de banco de dados, fazer manutenção regular etc.) em horários e datas especificadas, é bem provável que você irá utilizar o CRON disponível nos sistemas Unix / Linux para isso.

A sintaxe de agendamento é simples, mas permite muitas customizações:

# .---------------- minute (0 - 59) 
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ... 
# | | | | .---- day of week (0 - 7) (Sunday=0 or 7)  OR sun,mon,tue,wed,thu,fri,sat 
# | | | | |
# * * * * *  command to be executed

Para facilitar na hora de definir esse agendamento, existe alguns geradores que poderão ajudá-lo a produzir uma sintaxe de crontab que você possa copiar e colar em seu arquivo crontab (você pode abrir o arquivo usando o comando crontab –e).

Crontab GURU
https://crontab.guru/

Crontab Generator
https://crontab-generator.org/ ou https://crontabgenerator.org/

 

 

Turnkey Linux – Access denied for user ‘root’@’localhost’

Se você estiver utilizando algum Appliance da TurnKey GNU/Linux 15.0 que venha com banco de dados MySQL, saiba que o banco que vem por padrão é o MariaDB e isso é ótimo!

Distributor ID: TurnKey
Description: TurnKey GNU/Linux 9.5 (stretch)
Release: 9.5
Codename: stretch

Algo que tem ocorrido com essa versão do Appliance é que o acesso ao TurnKey Linux Database Administration Console – Powered by Adminer   – (https://IP:12322), é não permitir o login com usuário root e senha definida na instalação, exibindo o erro:

Access denied for user ‘root’@’localhost’

Para resolver isso o procedimento é simples:

# mysql -u root -p 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use mysql;
MariaDB [(none)]> update user set password=PASSWORD('INFORME_A_SENHA') where User='root';
MariaDB [(none)]> update user set plugin='' where User='root';
MariaDB [(none)]> flush privileges; 
MariaDB [(none)]> quit;

# /etc/init.d/mysql restart

Lembrando que esse não é um erro, mas uma modificação na imagem Turnkey Linux na versão 9.5. O acesso ao banco de dados MySQL/MariaDB pode ser feito normalmente pelo usuário adminer e senha definida na instalação, sem necessidade de fazer essa alteração acima no console.

OpenWRT – Comandos úteis

Apenas para não esquecer

  • Transferindo a imagem da máquina local para o roteador com OpenWRT
    user@localmachine:~$ scp /caminho/do/arquivo/em/seu/computador root@192.168.1.1:/caminho/do/arquivo/no/roteador
    exemplo:
    # scp openwrt-15.05.1-ar71xx-generic-dir-615-e4-squashfs-factory.bin root@192.168.1.1:/tmp 
  • Atualizando a imagem transferida
    # cd /tmp/
    # mtd writeopenwrt-15.05.1-ar71xx-generic-dir-615-e4-squashfs-factory.bin linux && reboot
  • Restaurando a firmware original do roteador
    Transfira a firmware para o roteador utilizando SCP e rode o comando abaixo:
    # mtd -r write /tmp/original_firmware.bin firmware

 

Livro: DD-WRT – Guia Prático do Usuário Iniciante (Português)

DD-WRT é um firmware baseado em Linux para uma grande variedade de roteadores WLAN e sistemas incorporados.  A ênfase principal reside em fornecer o tratamento mais fácil possível, enquanto ao mesmo tempo, apoiar um grande número de funcionalidades no âmbito da respectiva plataforma de hardware utilizado. É desenvolvido por uma equipe de programadores independentes liderada pelo BrianSlayer.
Compatível com diversos modelos de roteadores wireless: que usam chipsets da Broadcom, Artheros e Ralink e processadores comuns (x86).

Download do Livro – Clique aqui.

Emulador do DD-WRT

Ler o livro online:
Opção 1 – http://pt.slideshare.net/polones/dd-wrt-guia-pratico
Opção 2 – http://issuu.com/opolones/docs/dd-wrt-guia-pratico
Opção 3 – https://www.scribd.com/doc/228202992/Dd-wrt-Guia-Pratico-Do-Usuario-Iniciante

WikiBook – https://en.wikibooks.org/wiki/DD-WRT
http://www.ibm.com/developerworks/br/library/l-wifisecureddwrt/

 

Como desabilitar um usuário no Linux

Existe n maneiras de desabilitar usuários no Linux, embora muitos utilizem a técnica de alterar a senha para um valor inválido, mas esta não é a forma recomendada, pois o usuário irá perder a senha, mas ele ainda poderá utilizar algum outro token de autenticação (chave SSH por exemplo).

Para desabilitar um usuário completamente utilize:

# usermod –expiredate 1 usuario
(Isto irá setar  a data de expiração do usuário para 02/01/1970)

Se quiser habilitar novamente o usuário sem data de expiração:
# usermod –expiredate -1 usuario