Knock SSH – Adicionando uma camada extra de segurança no servidor

Hoje vamos falar do Knock, uma ferramenta muito interessante para quem precisar acessar seus servidores remotamente. Bom o que o Knock faz, ele adiciona essa camada a mais da seguinte forma, por exemplo se acessamos nosso servidor pela porta 22 do ssh ela deveria estar liberada. Porém com Knock ela pode estar bloqueada, você acertando uma sequência específica de portas ele irá liberar a porta 22, e somente se acertar a sequencia definida.

No servidor

Precisamos instalar somente um pacote em nosso servidor:

O arquivo de configuração fica no /etc/knockd.conf. Eis a configuração padrão que veio no Debian.

Eu alterei para a configuração ficar como no exemplo abaixo, sempre colocando a regra de ACCEPT na primeira linha, pois caso tenha sido bloqueada e seja adiciona no final do arquivo a regra não funcionará.

 

Após editaremos o arquivo /etc/default/knockd para especificar nossa placa de rede:

Feito a configuração reiniciaremos o serviço:

Caso não tenha a porta 22 fechada, vamos fecha-lá. Lembrando que isso deve estar no script firewall do seu servidor.

No cliente

No cliente instalaremos o mesmo utilitário, porém sem precisar fazer as configurações feitas anteriormente.

Agora vamos bater nas portas em sequência conforme configurado no nosso servidor (7000, 8000, 9000)

Com as batidas corretamente executadas, podemos verificar o log do nosso servidor e veremos que o foi passado por 3 estágios e após os mesmos estarem corretos, nosso porta 22 foi liberada pelo firewall

E assim podemos conectar normalmente sem bloqueio nenhum.

Fechando a porta

Depois de fazer tudo que era necessário podemos fechar a porta novamente, acertando a sequência de fechamento que também é incluida no nosso arquivo de configuração do servidor.

E a porta será fechada novamente conforme o log nos informa:

E era isso, acredito que seja uma camada bem interessante para nossos servidores e o mais importante, não colocando portas padrões na configuração, será muito mais dificil acertar a sequência para poder liberar o ssh.

Fonte

Um forte abraço

Instalando servidor DHCP

Definição:

Resumidamente, o DHCP opera da seguinte forma:

  • Um cliente envia um pacote UDP em broadcast (destinado a todas as máquinas) com uma requisição DHCP (para a porta 67);
  • Os servidores DHCP que capturarem este pacote irão responder (se o cliente se enquadrar numa série de critérios — ver abaixo) para a porta 68 do Host solicitante com um pacote com configurações onde constará, pelo menos, um endereço IP, uma máscara de rede e outros dados opcionais, como o gateway, servidores de DNS, etc…

Fonte: Wikipedia

Esse seria o desenho dos envios de pacotes de um cliente para um servidor DHCP.

http://www.comutadores.com.br

Instalação:

Iremos fazer a instalação do nosso servidor no Debian. Para tal operação iremos instalar o pacote isc-dhcp-server, que substituiu o pacote dhcp-server3.

Configurando:

Primeiramente editaremos o arquivo: /etc/default/isc-dhcp-server e colocaremos a placa de rede interna na configuração:

A configuração básica para o funcionamento é tão simples quanto a instalação. Editaremos o arquivo /etc/dhcp/dhcpd.conf. Acrescentaremos as opções básicas para o funcionamento.

Explicando:

Subnet: Iniciaremos uma sub-rede para ceder IP’s.
Range: A faixa de IP’s que será distribuida.
Option Routers: Configura a rota padrão.
Option domain-name-servers: Configura os servidores DNS.Option broadcast-address: Indica o fim da sub-rede.

Alguns outros parâmetros básicos que já vem no arquivo por padrão:

Option domain-name: domínio.

Default-lease-time: Tempo que o servidor verifica se o IP ainda está em uso.

Max-lease-time: Tempo máximo de um IP.

Agora é só salvar o arquivo que editamos e reiniciar o serviço:

Pronto teremos um servidor DHCP dando IP para a nossa rede. Ainda temos algumas opções criar duas redes distintas dentro do mesmo servidor, atrelar IP’s ao Mac Address, negar máquinas que não estejam cadastradas no servidor DHCP, enfim, inúmeros recursos que estudaremos mais adiante.

Obrigado e até a próxima.

Reforçando segurança servidor ssh

Restrições de acesso

Caso queria restringir acesso somente a grupos ou usuários específicos, acrescentaremos ou editaremos as opções abaixo no arquivo de configuração do servidor ssh, o /etc/ssh/sshd_config. O mais correto ainda seria criar um grupo somente para acessos ssh.

Podendo usar ou somente restrição por grupo ou somente restrição por usuário.

Não permitir acesso direto como root

Modificar porta padrão

De preferência uma porta  com valor alto.

Bloquear ataques de força bruta com iptables

Logando com chaves de criptografia

Gerar a chave

selecao_009

Copiar para a outra máquina a chave pública

selecao_010

Verificar se o arquivo foi copiado para o destino em .ssh/authorized_keys e modificar a permissão para 600, por questões de segurança

Desabilitar autenticação por senha

 

Comandos básicos Docker

Docker é um ferramenta que venha aprendendo a pouco tempo, não explicarei o que é o docker, apenas alguns detalhes no uso. Caso queira uma explicação melhor sobre o que é docker, recomendo esse artigo do Mundo Docker.

Segue abaixo alista dos comandos mais básicos e explicações básicas sobre o docker:

Iniciar container com alguns detalhes a mais:

Sendo que o -i significa interatividade e o -t que queremos um link com o terminal do container.

Iniciar uma sessão bash em um container que já esteja rodando:

Verificar os logs de um container:

Remover todos os containers parados:

Remover uma imagem baixada:

Copiar um arquivo do container para o host:

Salvando alterações de um container modificado

Após instalar alguns programas ou fazer modificações no seu container, é possível que queira salvá-lo para não perder essas alterações. Para isso existe a opção commit do docker que irá gerar uma nova imagem do seu container com as alterações. Pegaremos como base o ID do nosso container:

Com nosso ID em mãos faremos o commit:

Dockerfile

Um Dockerfile é um script que automatiza a criação de imagens docker. Veja alguns exemplos de comandos que podem ser utilizados no Dockerfile. Em outros posts trarei com mais detalhes como cada um funciona.

FROM

Primeira instrução, define a imagem base.

MAINTAINER

Especifica o autor da imagem.

RUN

Equivalente ao comando docker run.

ENV

Define uma variável de ambiente.

EXPOSE

Expõe portas.

ADD

Copia arquivos do host hospedeiro para dentro da imagem.

ENTRYPOINT

Permite que a imagem seja executada como uma aplicativo (a partir da linha de comando especificada).

CMD

Comando que será executado quando a execução do container for acionada.

Exemplo de dockerfile

Para gerar a imagem a partir do nosso dockerfile usaremos o docker build. Lembrando que se criamos o docker file em alguma pasta especifica, deveremos estar dentro desta pasta para executar o comando a seguir:
Por hoje era isso pessoal, em breve estaremos estudando mais sobre o assunto.

Fonte: Diego Garcia

Evitando encerramento acidental de sessões bash

A sequência de teclas “CTRL+D” encerra uma sessão bash. Às vezes digitamos estas teclas por acidente e encerramos uma sessão acidentalmente.

Para evitar que isto ocorra, definimos a variável de ambiente IGNOREEOF:

Desta forma, para encerrar uma sessão bash, precisamos digitar a sequência “CTRL+D” duas vezes ou então digitar “exit“.

Esta variável de ambiente deve ser definida no arquivo .bashrc.

Fonte: Dicas-L

Diminuindo tentativas de invasão via SSH

Dentro do arquivo /etc/ssh/sshd_config altere as seguintes linhas:

Explicando:

O primeiro parâmetro informa que a conexão será cortada caso fique inativa por 2 minutos.

O segundo quer dizer que depois de 3 tentativas não autenticadas, 50% das conexões do IP são recusadas e quando o número de de tentavivas chegar a 6 todas as tentativas de conexões do IP serão recusadas.

Fonte: Dicas-l

Servidor Proxy com squid

Instalação:

Arquivo base de configuração (/etc/squid/squid.conf):

Reiniciar squid:

Entendendo configuração:
http_port 3128: Define em qual porta o Squid vai atuar, a porta default é a 3128, mas podemos definir qualquer outra porta.
visible_hostname SERVIDOR: Define o nome do servidor, lembre-se de substituir o “KORZOS” pelo nome do seu servidor.
acl all src 0.0.0.0/0.0.0.0: Esta linha cria uma ACL, uma política de acesso com nome “all” contendo qualquer IP.
acl localhost src 127.0.0.1/255.255.255.255: Aqui criamos uma ACL de nome “localhost” contendo localhost.
acl SSL_ports port 443 563: Cria a ACL contendo as portas que são utilizadas no protocolo HTTPS.
acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535: Cria a ACL contendo as portas de diversos protocolos conhecidos na Internet.
acl manager proto cache_object: Cria a ACL manager do tipo proto.
acl purge method PURGE : Cria a ACL manager do tipo method.
acl CONNECT method CONNECT: Cria a ACL CONNECT também do tipo method.
http_access allow manager localhost: Libera a ACL manager e localhost.
http_access deny manager : Bloqueia a ACL manager.
http_access allow purge localhost: Libera a ACL purge e localhost
http_access deny purge: Bloqueia a ACL purge.
http_access deny !Safe_ports: Esta linha se torna bastante interessante pelo uso da “!”, pois ela bloqueia qualquer conexão que não contenha o conteúdo da ACL Safe_Ports.
http_access deny CONNECT !SSL_ports: Bloqueia qualquer conexão que não esteja no conteúdo da ACL SSL_ports.
acl redelocal src 192.168.0.0/24: Cria a ACL redelocal contendo a faixa de endereço da rede.
http_access allow localhost: Libera a ACL localhost.
http_access allow redelocal: Libera a ACL redelocal.
http_access deny all: Bloqueia a ACL all

Criando ACLs
Arquivos:
Neste arquivo, iremos adicionar palavras que serão bloqueadas, como: sexo, porno…

# pico /etc/squid/palavras_bloqueadas.txt

Neste arquivo, serão adicionados os sites que não terão acesso, como: 4shared.com, rapidshare.com, megavideo.com, filesonic.com, etc:

# pico /etc/squid/sites_bloqueados.txt

Aqui, iremos colocar as redes sociais, como: facebook.com, orkut.com, twiter.com, etc:

# pico /etc/squid/redes_sociais.txt

Neste arquivo, iremos colocar os IPs das máquinas dos gerentes (e “daquela” estagiária que entrou semana passada…:)):

# pico /etc/squid/ips_liberados.txt

Lista de sites adultos: redtub, xvideos

# pico /etc/squid/sites_porno.txt

Este arquivo limita os tipos de arquivos que serão baixados, tudo que contiver neste arquivo será bloqueado. Exemplos: .avi$, .mp3$, .wmv$:

# pico /etc/squid/formato_arquivo.txt

Adicionar ACLs:

Criar arquivos de swap

E iniciar os serviços
Fonte

Instalar servidor Samba [Dica rápida]

Primeiramente instalaremos o pacote:

Depois alteramos a configuração do arquivo:

E alteramos alguns parametros:

Vamos criar o diretório compartilhado no servidor:

Adicionando um usuário para acessar o Samba:

Reinicie o serviço:

Pronto, servidor disponível. Fonte

Monitorar a performance do MySQL com Mytop

Desenvolvido por Jeremy D. Zawodny, o Mytop é uma ferramenta para monitorar o MySQL baseada em console (sem interface gráfica). É utilizada para verificar o desempenho geral e threads do MySQL.

Roda na maioria dos sistemas Linux/Unix (incluindo Mac OS X), que tenham o Perl, DBI e Term:: ReadKey instalados. E com o Term:: ANSIColor instalado, você ainda terá cores. Se você instalar o Time::HiRes, você terá consultas de status em tempo real/segundos.

Plataformas suportadas:

  • Linux
  • FreeBSD
  • Mac OS X
  • BSDI
  • Solaris
  • Windows

Vamos instalar o Mytop, abra o terminal (console) e siga as instruções.

Para sistemas que utilizam o apt-get, você pode instalar como este comando:

Em sistemas baseados no Red Hat, como Fedora, você pode executar o comando:

Se preferir, você pode fazer o download do arquivo em:

Execute estes comandos para descompactar e instalar o Mytop:

Pronto, a ferramenta está instalada!

Executando o Mytop

A maneira mais simples de executar Mytop é executar o comando diretamente na linha de comando. No terminal digite:

mytop -u <usuário> -p <senha> -h <host>

Por exemplo:

# mytop -u tsarmento -p vol2011 -h 172.16.99.253

Alguns outros argumentos:

  • ” ? ” – Exibe ajuda;
  • ” d ” – Mostra as conexões a uma determinada base de dados – Nome da base de dado;
  • ” f ” – Mostra a consulta completa de uma dado ID de processo (deve ser um processo ativo);
  • ” F “- Desabilita todos os filtros (host, user, and db);
  • ” h ” – Mostra apenas as consultas de um determinado host, conectar a um computador remoto;
  • ” I ” – Mostra o status do InnoDB;
  • ” k ” – Mata um processo;
  • ” m ” – Muda o modo de exibição de top para qps (Queries Per Second Mode). Ele exibirá na tela a quantidade de querys por segundo;
  • ” o ” – Inverte a ordem padrão de ordenação;
  • ” p ” – Pausa a exibição;
  • ” q ” – Sair do mytop;
  • ” r ” – Reset os contadores de status do servidor via comando FLUSH STATUS;
  • ” s ” – Muda o tempo de atualização do refresh (em segundos);
  • ” u ” – Mostra os processos de um determinado usuário;
  • ” P ” – Especifica uma porta não-padrão do MySQL para conectar;

Se você não quer ter que lembrar suas opções, pode criar um arquivo ~/.mytop para armazenar os argumentos neste formato:

user=root
pass=
host=localhost
db=minhabasededados
delay=5
port=3306
socket=
batchmode=0
header=1
color=1
idle=1

Usando um arquivo de configuração irá ajudar a assegurar que a sua senha do banco de dados não fique visível aos usuários na linha de comando. Apenas certifique-se de que as permissões do arquivo ~/.mytop estão de tal forma que os outros usuários não tenham permissão de leitura (a menos que você queira, claro).

Você pode ter algum espaço em branco nas linhas do arquivo de configuração, depois do =. Para mais informações acesse:

Agradeço a todos pela atenção.

Viva o Linux, porque nós amamos a Liberdade!

Fonte