8 de ago de 2019

6 práticas recomendadas para a segurança do OpenSSH

Segurança do OpenSSH


Olá, meu caro! 

Talvez você nunca tenha se deparado com a situação abaixo, mas e se deparasse, qual seria a sua atitude? Você tem controle dos acessos realizados no seu parque de máquinas?  A imagem abaixo demonstra informações de segurança no Kibana do meu ambiente na google cloud cuja as máquinas estão expostas na internet e com algumas portas abertas. Existem regras de firewall, tanto iptables quanto fail2ban,  porém agora iremos ver algumas ações recomendadas que podem ser feitas no OpenSSH para ampliar a segurança. 


Figura 1 - Kibana, dashboard de monitoramento de atividades dos hosts.


Estas são as seis tarefas mais importantes para proteger sua configuração do servidor SSH:

Figura 2 - Configurações sshd_config

1.       Use uma senha forte;
2.       Altere a porta padrão do SSH;
3.       Desabilite o login do root;
4.       Limite o acesso do usuário;
5.       Use acesso baseado em chave para autenticação.
6.       Desativar senhas vazias
 

1.       Use uma senha forte;


Não é demais enfatizar o quanto é importante usar senhas de usuário e senhas fortes para suas chaves. O ataque de força bruta funciona porque o usuário acessa senhas baseadas em dicionário. Você pode forçar os usuários a evitar senhas contra um ataque de dicionário e usar a ferramenta john the ripper para descobrir senhas fracas existentes.

2. Altere a porta padrão do SSH;


A porta padrão do serviço SSH é 22, você deve alterá-la para tornar menos óbvio que seu servidor esteja executando um serviço SSH.

#vim /etc/ssh/sshd_config
Altere a linha abaixo:
Port 22
Escolha outro valor para a porta
Port 2123

 3.       Desabilite o login do root;


É importante desativar o login direto para o usuário root, pois há muitos ataques de força bruta contra o root. IMPORTANTE: teste o login SSH com seu usuário alternativo não raiz que você planeja usar para logins ssh antes de desabilitar a conta raiz.

Figura 3 - Tentativas de acesso com usuário root


4.       Limite o acesso do usuário;


Por padrão, todos os usuários do sistema podem efetuar login via SSH usando sua senha ou chave pública. Às vezes, você cria uma conta de usuário do UNIX / Linux para fins de FTP ou email. No entanto, esses usuários podem efetuar login no sistema usando o ssh. Eles terão acesso total às ferramentas do sistema, incluindo compiladores e linguagens de script, como Perl, Python, que podem abrir portas de rede e fazer muitas outras coisas sofisticadas. O controle baseado em grupo é mais flexível e fácil de administrar, por isso coloquei os dois exemplos abaixo. Se você optar por utilizar a permissionamento por usuário e não grupos caso você adicione um novo usuário no sistema, você terá que editar o sshd_config e adicionar esse novo usuário. 

Para permissão de usuários:
#AllowUsers luizep developers
Para permissão de grupos:
AllowGroups developers devops sysadmin
Para negar usuários:
#DenyUsers root


5.       Use acesso baseado em chave para autenticação;


Todos os logins baseados em senha devem ser desativados. Somente logins baseados em chave pública são permitidos. Adicione o seguinte no seu arquivo sshd_config:

PubkeyAuthentication yes


6.       Desativar senhas vazias.


Você precisa explicitamente proibir o login remoto de contas com senhas vazias, atualize sshd_config com a seguinte linha:

PermitEmptyPasswords no

2 de ago de 2019

Comandos úteis para o elastichsearch

Introdução


Para quem não conhece, o Elasticsearch é um “servidor de buscas distribuído baseado no Apache Lucene”. Em outras palavras, pode-se dizer que o Elasticsearch é um banco de dados NoSQL, porém com esteroides, uma série de plugins e ferramentas auxiliares. E o melhor, opensource.
Abaixo está uma lista de comandos que podem ajudar na execução de solução de problemas do seu cluster elasticsearch.

substitua localhost pelo endereço IP de seus hosts elasticsearch se não estiver escutando em localhost.

Saúde do cluster

curl -XGET 'http://localhost:9200/_cluster/health?pretty'

Deletar um index

curl -XDELETE 'localhost:9200/index_name*?pretty' -d '
{
  "acknowledged" : true
}

Encontrar shards não atribuídos

curl -XGET localhost:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason| grep UNASSIGNED

File Sharing (Samba) - Mental map

Nginx structure - Mental map