WordPress proteger BruteForce

De vez em quando gosto de dar uma vista de olhos nos logs do servidor para ver se deteto algo “anormal”, uma das coisas que me saltou à vista já há algum tempo foi o número exagerado de tentativas de autenticação inválidas! Estas tentativas tinham várias origens mas o método é sempre o mesmo tentar combinações comuns de utilizador e passwords de forma a entrar no Painel de administração do WordPress (isto é conhecido por BruteForce).

Para proteger a minha instalação de WordPress ainda pensei usar um plugin para proteger deste género de ataque mas decidi tentar uma abordagem de mais baixo nível, uma vez que já uso o Fail2Ban no servidor decidi aproveitar o mesmo e criar uma regra para à terceira tentativa de autenticação bloquear o ip de origem, fui acompanhando o número de ip’s bloqueados e são mais do que eu imaginava.

Como não sou nenhum master em regex usei uma expressão extremamente simples, quando uma tentativa de autenticação falha o WordPress retorna um erro http 403  (o comportamento standard retorna um 200 OK, com o JetPack ativo e com a opção de bloquear tentativas de login inválidas é que gera o 403), então é só mandar o Fail2Ban pesquisar acessos ao wp-login.php que retornaram 403, a regra que cheguei que se mostrou mais eficaz após alguns testes foi a seguinte:

failregex = :80 <HOST> .* /wp-login.php HTTP/1.1″ 403

Para já tem funcionado como esperado:

Optei por não usar plugins porque mesmo que um plugin detecte uma tentativa de intrusão, vai permitir que o atacante continue a gastar recursos ao servidor, ao enviar centenas ou milhares de pedidos seguidos. Como o Fail2Ban impede o ip do servidor de chegar sequer ao servidor o gasto de recursos é mínimo praticamente nulo.

Uma alteração que faço sempre no Fail2Ban é configurar para que quando bane um ip não faça REJECT e em vez disso faça um DROP(criei um Gist com isso) assim quem está do outro lado (o atacante) tem que aguardar pelo timeout do pedido para proceder para outro, isto fará com que no mínimo a aplicação que estão a usar para nos atacar consuma mais tempo e mais recursos ao atacante.

Apache Instalar LetsEncrypt no Debian 10 (Certificado SSL grátis!)

UPDATE Debian 10

O Debian 10 deixou de suportar Python 2.7 que é uma das dependências do LetsEncrypt, devido a isso o procedimento abaixo deixou de ser válido! no entanto passou a ser ainda mais simples…

Agora basta instalar o pacote do repositório oficial do Debian para ter ssl, o procedimento que funciona no Debian 10 é o seguinte:

1º – apt install python3-certbot-apache

2º – certbot

Correndo os 2 comandos anteriores iniciará o wizard que guiará pela obtenção e instalação dos novos certificados ssl para Apache no Debian 10

LetsEncrypt Debian 9

O Lets Encrypt  é um serviço que permite obter certificados digitais gratuitos, para permitir de uma forma fácil e gratuita disponibilizar https em qualquer site.

Os passos que enumero a seguir são para utilização no Debian (em distribuições derivadas como Ubuntu, Mint, etc.. deve funcionar! com sudo!)

Antes de começar é necessário já ter o Apache ou Ngix instalado e configurado para responder na porta 80 e 443!

Caso ainda não tenha git instalado temos que o instalar com o comando:
apt-get install git
A seguir fazemos um clone do repositório do GitHub:

git clone https://github.com/letsencrypt/letsencrypt

Antes de prosseguir é conveniente já ter a porta 443 reencaminhado para o servidor, pois durante o processo haverá uma validação do Lets Encrypt, em que há uma ligação à porta 443 para verificação!

Para o script configurar automaticamente os virtual hosts com SSL é necessário que o modulo ssl já esteja ativo no apache :
a2enmod ssl

Se não houver ficheiros de configuração para os hosts virtuais estes serão criados com as configurações corretas.

E por ultimo é só ir ao directório onde foi clonado o repositório e correr o script automático:

cd letsencrypt
./letsencrypt-auto

Este comando vai verificar se os pacotes necessários existem no sistema e caso não existam instala!

Quando as dependências estiverem satisfeitas um wizard questionará quais os sites configurados no Apache é que queremos configurar para usar ssl.

Caso o site tenha todo o conteúdo servido por https o icon da barra de endereço ficará verde… caso não fique ou haja algum aviso de “mixed content” pode ser necessário modificar o código do site para carregar scripts, css , imagens e outros conteúdos por https, ou deixar que o browser decida omitindo o prefixo do url (http ou https), por exemplo uma imagem carregada como img rsc=”http://antoniocampos.net/imagem.png” deverá ficar apenas img src=”//antoniocampos.net/imagen.png”, a omissão de protocolo é suportado por todos os browser recentes.

ssl

Segurança com VPN e Proxy

Quem quer aceder a conteúdos bloqueados ou restritos na Internet procura formas de contornar essas restrições. Com o número de restrições e bloqueios a aumentar em vários países onde se incluí Portugal, o número de utilizadores da Internet que procuram essas soluções tem chamado a atenção a pessoas cujas intenções não são as melhores.

Os métodos mais populares de contornar os bloqueios e de navegar com a sensação de segurança são a utilização de Proxy ou VPN, ambas as “soluções” podem por em perigo quem as utiliza. Para isso basta que o fornecedor da VPN ou do Proxy esteja interessado em algo mais do que ajudar a contornar os bloqueios.

No caso das VPN ao reencaminhar todo o tráfego de Internet do utilizador para um túnel “seguro” o fornecedor da VPN pode por exemplo colocar todo o tráfego a passar por um “filtro” que guarde certas informações como por exemplo nomes de utilizador e password’s do serviços acedidos pelos utilizadores. Engane-se quem pensa que isto é muito complicado e quem ninguém fará isso, criar um servidor de VPN reencaminhar o tráfego para um servidor “SQUID” e analisar os logs é uma tarefa extremamente simples e ao alcance de qualquer pessoa com conhecimentos básicos (ou que saiba pura e simplesmente usar o Google!!).

Ao utilizar um proxy estamos apenas a facilitar o trabalho das ditas pessoas mal intencionadas!! pois estamos de livre vontade a enviar o nosso tráfego para os seus registos, para posterior análise!!

Engana-se também quem pensa que ao utilizar sites que usam https está a salvo, porque para usar VPN muitas vezes é necessário instalar algo no nosso pc e não sabemos se com essa instalação que pede elevação de privilégios (Windows) ou sudo (Linux), estamos a dizer ao nosso sistema que têm uma nova entidade de certificação e que pode confiar em todos os certificados emitidos pela mesma, depois com as configurações certas do lado do Proxy é só analisar logs! Neste caso já é exigido algo mais ao atacante mas como terá mais resultados e resultados em que a recompensa é maior, talvez compense o esforço.

Além dos 2 métodos referidos também é possível contornar as restrições usando servidores DNS que estejam fora do controlo das entidades da censura, este a meu ver, é o sistema mais seguro… pois embora do lado do servidor possam saber que fomos ao site X não têm acesso à navegação que fizemos no mesmo!

Existem também extensões para o Browser que permitem contornar os bloqueios, essas nem vou considerar um método porque o que fazem é para a lista de sites que estão configuradas reencaminham o tráfego para um proxy, que como expliquei em cima não será de todo o método mais seguro. Além de que ao instalar extensões no browser estamos a dar autorização que a extensão “registe” todos os sites que visitamos (com o url completo!!), que aceda a outros dados que estão na janela do browser enquanto navegamos… não são raras as extensões que injectam publicidade em todos os sites… ou fazem outro género de alterações!

Será que o utilizador sabe quanto lhe vai custar “sacar” aquele torrent que supostamente está bloqueado por uma qualquer entidade de censura??

Burlas no OLX

Embora não seja um utilizador assíduo do site de classificados OLX, tenho tido conhecimento de diversas burlas feitas através de anúncios colocados no OLX. Não podemos culpabilizar o OLX no entanto se houvesse um sistema de feedback semelhante ao que existe no Ebay muito provavelmente algumas das burlas seriam evitadas!!

A burla que oiço com mais frequência é a de “vendedores” que colocam anúncios de produtos e que quando “vendem” limitam-se a receber o dinheiro e cortar o contacto com o comprador sem nunca entregar o objecto da venda, creio que,estes vendedores, não sejam apanhados por medo dos compradores enganados ou pelos baixos valores das transacções , porque em alguns casos o pagamento é feito por transferência bancária em que o “Vendedor” faculta o seu NIB e sendo o NIB um identificador da conta facilemente uma autoridade “chega” ao seu titular, desconheço a lei e não sei se podemos apresentar queixa de burla nestes casos. O facto de termos facultado ao “Vendedor” os nosso dados pessoais também pode ser um factor de medo!!! Os valores envolvidos são muitas vezes baixos, talvez já com intuito de dissuadir o burlado de apresentar queixa e ter as “dores de cabeça” resultantes de todo o processo.

Outra burla que já me relataram várias vezes é de um “comprador” interessado nos produtos que estão à venda, mas que infelizmente está em Inglaterra ou a mudar-se para lá e quer fazer o pagamento por Paypal!! No entanto o “comprador” como não quer prejudicar o vendedor oferece-se para suportar os custos de transporte e inclusive para pagar mais do que o valor pedido no anuncio para compensar a maçada e as taxas do Paypal!! O contacto é feito tanto por telefone como por email e tudo é muito verosímil, não tive acesso a nenhuma destas “conversas” mas nos relatos que ouvi é tudo muito convincente e o “comprador” parece ser muito honesto. Tudo corre muito bem até ao dia acordado para o levantamento pela transportadora dos bens em causa, nesse dia o vendedor recebe uma chamada de um alegado “transportador” que diz que o pagamento do transporte terá que ser feito antecipadamente, quando o vendedor contacta o “comprador” o mesmo diz-lhe para efectuar o pagamento do transporte que ele já está a tratar do pagamento dos bens!! E aqui é que está a burla o pagamento do transporte terá que ser feito através da Western Union, que os mais incautos poderão achar normal visto ser um nome Inglês o burlão ter dito que está em Inglaterra. A Western Union é um sistema de envio de remessas de dinheiro que permite ao burlão levantar o dinheiro sem ser identificado e sem deixar rasto.

Estas são as burlas que tive conhecimento no entanto não duvido que existam muitas mais…  o OLX não se responsabiliza por estas situações (nem pode!!!) e dá concelhos de como evitar algumas das burlas conhecidas, referi o site OLX a titulo de exemplo e porque as situações que me reportaram foram iniciadas em contactos através do OLX no entanto não duvido que os burlões também sejam  trabalhadores que infestem também outros sites semelhantes e concorrentes com esquemas iguais ou parecidos!!

MEO – Configuração por defeito perigosa

Os routers MEO (Thompson os outros não sei!!) disponibilizam portas USB que permitem ligar um dispositivo como por exemplo um disco ou uma pen e partilhar o seu conteúdo na rede local (pensava eu!!!).
Hoje estava a testar essa funcionalidade e para isso bastou ligar o dispositivo (PEN) e nas configurações do router activar a dita funcionalidade (Partilha Windows ou SMB, servidor FTP e UPnP AV Media Server) , todos os serviços funcionam correctamente e sem problemas na rede local… como foi tão rápido resolvi dar mais uma vista de olhos pela configuração do router e qual o meu espanto que existe um encaminhamento de portas (NAT) que está nos routers por defeito que encaminha a porta 21 (FTP) para o ip 192.168.1.253 (este é o ip em que são disponibilizados os serviços enumerados acima). Como a autenticação FTP é partilhada com o router (os users e passwords são os mesmos, testei Administrator e meo) e o serviço fica disponível para o mundo creio que isto constitui uma ameaça de segurança.

MEO_Regra_NAT_Port_21

Como as gamas de ip’s onde o MEO opera são conhecidas nada impede que alguém mal intencionado crie um bot que se tente ligar a todos os ip’s do MEO à porta 21 e teste a autenticação por defeito e caso consiga “entrar” descarregue o conteúdo do armazenamento que ligamos no router!!! ou faz upload para o nosso router de conteúdos indesejados ou maliciosos.

MEO_FTP

O conselho que dou a quem quiser usar o seu router MEO como servidor de ficheiros é desactivar a regra NAT que encaminha a porta FTP,outra solução passa por mudar as passwords dos utilizadores do router, no entanto , creio não ser suficiente pois nada impede a PT que no próximo update ao firmware coloque outro utilizador ou altere a password dos que existem para a password default.
A solução mais segura será activar apenas a partilha windows e Media Server pois estas funcionalidades estão disponíveis apenas na rede local, mas ter em atenção que não existe autenticação ou seja qualquer pessoa ligada à rede local pode aceder aos ficheiros contidos no armazenamento ligado ao router.

Como atacar um servidor atirando pedras!!!!

Anonymous, LulzSec , DDOS, BotNets, ataques, etc… são palavras que com certeza chegaram aos ouvidos de quase todos nós nos últimos tempos, estas palavras são também justificação para o mau humor de alguns administradores de sistemas que foram atacados ou que temem ser atacados.

Perguntaram-me o que era isso de que tanto se fala, como quem perguntou não mora em nenhuma das camadas do modelo OSI tive que arranjar uma analogia para explicar, a melhor analogia que encontrei para definir o que é um ataque DDOS foi fazer a pessoa imaginar um tubo onde inserimos pedras todas do mesmo tamanho, conforme a largura do tubo temos um fluxo máximo, se tentarmos fazer passar mais pedras do que o fluxo to tubo aguenta as pedras vão começar a encravar até ao ponto que param de fluir, entretanto quem controla o tubo tem que bloquear a origem das pedras mas se forem muitas origens não tem capacidade de as tapar todas ou pode tapar erradamente origens que não devia, e mesmo assim que está a enviar as pedras pode ao ser bloqueado muda de sitio para outro que não está bloqueado, se o envio for continuo é praticamente impossível a quem está a defender o tubo desbloquear o mesmo. Paralelamente a isto e como a segurança do tubo está debilitada pode-se tentar fazer passar pelo meio das pedras outros objectos que danificam o interior do tubo ou que invertem o fluxo obtendo as pedras que já estão armazenadas.

O Servidor tem capacidade para aceitar um determinado número de pedidos simultâneos, este número é determinado pela largura de banda e pela capacidade de processamento do mesmo (isto será o tubo), cada vez que alguém acede ao servidor é efectuado um pedido (pedra), mas grupos organizados como o Anonymous e LulSec conseguem efectuar ao mesmo tempo mais pedidos do que o servidor consegue servir, congestionando assim o servidor impedindo que pedidos legítimos cheguem ao servidor, um dos exemplos mais recentes foi o ataque à Moodys, neste caso não foi nenhum dos grupos referidos mas o principio usado foi o mesmo, mais pedidos do que os que os servidores suportam por consequência os pedidos legítimos eram também bloqueados ou atrasados.

BotNets são computadores infectados com software malicioso, que fazem com que o computador fique à espera de ordens de alguém algures na internet, que pode usar os pc’s que tem às suas ordens para efectuar este ou outro tipo de ataques, qualquer pc no mundo pode ser infectado, mas são principalmente sustivéreis os computadores que usam Windows que devido ao elevado número são um alvo mais apetecido, o software malicioso pode chegar a qualquer computador “agarrado” a outro qualquer programa, ou pode aproveitar falhas de segurança para se instalar quando se visita um site, ou como faz o muito comum Confliker propagar-se através de qualquer dispositivo de armazenamento como pen’s, SD, Máquinas Fotográficas etc…

Esta é uma explicação muito simplista e muito superficial do que se tem passado ou pelo menos do que se tem falado mais, faltou mencionar que o tubo pode ter um furo que não foi detectado por quem o controla mas que o atacante o encontrou e entrou por aí, estas são as falhas de segurança que podem estar num software instalado no servidor ou na própria estrutura que suporta o servidor.

Como a pessoa a quem dei esta explicação oralmente me agradeceu e disse que foi útil, espero que mais pessoas achem a minha explicação útil!!!