Dicas para proteger seu servidor Linux de ataques externos

Eu acho que as pessoas que dirigem Servidores Linux conhecer e saber sobre Negar HOSTS y Fail2ban. Para aqueles que não o conhecem eu vou explicar um pouco sobre esses dois aplicações.

John Fredy Perez é um dos Vencedores de nossa competição semanal: «Compartilhe o que você sabe sobre o Linux«. Parabéns! Ansioso por participar e dar sua contribuição para a comunidade, como fez John?

Vamos instalar e configurar esses dois aplicativos para evitar dores de cabeça subsequentes. Em primeiro lugar, explicaremos o que são esses dois aplicativos e quais são suas funções:

Falha2Ban

É um analisador de log que procura tentativas de registro malsucedidas e bloqueia os IPs de onde vêm essas tentativas. Ele é distribuído sob a licença GNU e normalmente funciona em todos os sistemas que fazem interface com um sistema de controle de ataque ou um firewall local.

Fail2Ban tem uma ótima configuração e também pode criar regras para programas
próprios ou de terceiros.

Negar HOSTS

É uma ferramenta de segurança escrita em python que monitora os logs do servidor de acesso para evitar ataques de força bruta em um servidor virtual. O programa funciona proibindo endereços IP que excedam um certo número de tentativas de conexão com falha.

Esses aplicativos Linux - DenyHosts e Fail2ban - podem ser usados ​​separadamente ou juntos. No meu caso, tenho os dois trabalhando juntos.

A instalação e configuração de cada um depende da distribuição que você usa. Este post é voltado para CentOS 6.3, embora as diferenças entre as outras distros não sejam muito marcantes.

Bem, então vamos trabalhar.

Instalação e configuração Fail2Ban

Este aplicativo gera regras dinâmicas no próprio firewall do Linux e é responsável por criar regras ativas no IpTables.

instalação

Para a instalação:

yum instalar fail2ban 

Se o pacote não aparecer, devemos adicionar o repositório necessário:

rpm -Uvh http://mirror.metrocast.net/fedora/epel/6/i386/epel-release-6-7.noarch.rpm

Com isso, você deve começar a instalar o aplicativo junto com suas dependências.

Agora temos que configurar o Fail2Ban para analisar os logs que queremos e bloquear
IP's, enviando notificações por e-mail. Para isso, devemos modificar o arquivo jail.conf que encontramos em / etc / fail2ban

cd / etc / fail2ban
nanojail.conf

O seguinte deve ser feito neste arquivo:

  • Modificar é o valor bantime, este valor determina o tempo em segundos que o IP do invasor ficará bloqueado, por padrão o valor vem em 600 segundos.
  • Encontre o valor de maxretry que será o número de vezes que um IP pode ter uma autenticação com falha antes de ser bloqueado.
  • Adicione nosso ip no parâmetro ignoreip. Aqui, o aplicativo irá ignorar nossos IPs autenticados nesse parâmetro.
[PADRÃO]
# "ignoreip" pode ser um endereço IP, uma máscara CIDR ou um host DNS. Fail2ban não
# banir um host que corresponda a um endereço desta lista. Vários endereços podem ser
# definido usando separador de espaço.
ignorarip = 127.0.0.1

# "bantime" é o número de segundos que um host é banido.
tempo de banimento = 600

# Um host é banido se gerou "maxretry" durante o último "findtime"
# segundos.
encontrar tempo = 600

# "maxretry" é o número de falhas antes de um host ser banido.
maxretria = 3

Um exemplo de como pode parecer é o seguinte:

ignorarip = 127.0.0.1 190.25.242.75 192.168.1.0/24
tempo de banimento = 800
maxretria = 2

Configure Fail2Ban e SSH

Para procurar tentativas de login SSH com falha, modificamos o arquivo até que tenha a seguinte aparência:

[ssh-iptables] 
ativado = verdadeiro
filtro = sshd
action = iptables [name = SSH, port = 22, protocol = tcp] sendmail-whois [name = SSH, dest=FredySnake@outlook.com, sender = fail2ban @ localhost] logpath = / var / log / secure # Este é o log que irá analisar fail2ban
maxretry = 3 # qualquer IP que tenha três ou mais tentativas falhadas será bloqueado.
bantime = 86400 # 24 horas de tempo de ban expresso em segundos

Não se esqueça de que se você modificar a porta em que o SSH escuta, também deve modificar o parâmetro da porta.

Este aplicativo não funciona apenas para acesso não autorizado a SSH, mas também para apache, para ler logs do Asterisk, etc.

Instalação e configuração do DenyHOSTS

Seu funcionamento é baseado na utilização do arquivo /etc/hosts.deny, ou seja, no bloqueio de endereços dos hosts “atacantes”, criando uma lista de hosts negados.

A instalação dos repositórios pode ser obtida com o seguinte comando:

yum instalar denyhosts 

O arquivo de configuração está localizado em /etc/denyhosts.conf

Antes de continuar, já que como humanos podemos cometer erros e fazer o típico "Layer 8" ao acessar qualquer um dos serviços e nos bloquear. Para evitar isso, editamos o arquivo /etc/hosts.allow e adicionamos os IPs das máquinas das quais não queremos ser restringidos por falha de acesso.

Modificar o arquivo denyhosts.conf

Para não ir tão longe nas configurações, neste arquivo iremos apenas editar e descomentar alguns parâmetros. Estes são:

SYNC_SERVER = http://xmlrpc.denyhosts.net:9911
SYNC_INTERVAL = 1h
SYNC_UPLOAD = sim
SYNC_DOWNLOAD = sim
SYNC_DOWNLOAD_THRESHOLD = 3
SYNC_DOWNLOAD_RESILIENCY = 5h

Assim, deixaremos uma configuração praticamente por padrão, mas com grande segurança contra ataques SSH.

nano /etc/hosts.allow

Exemplo:

sshd:127.0.0.1 
sshd:192.168.1.10
sshd: 192.168.0. *

Depois disso, reiniciamos o serviço:

/etc/init.d/denyhosts reinicie

Com isso, estamos dando permissão a um IP, uma faixa de IP e, claro, à nossa interface de loopback. Algo que ainda não tentei - portanto não sei se funciona - é adicionar DNSs a este arquivo; ou seja, com serviços como DynDNS. Se eu fizer isso, contarei como foi.

Com certas opções e configurações, também nos certificaremos de que após o período de tempo que indicamos na configuração do DenyHOSTS, os endereços armazenados são limpos e atualizados com outras listas feitas por terceiros - se o indicarmos - dando permissão de acesso o servidor de DenyHOSTS.

Para limpar os endereços armazenados de tempos em tempos, conforme configurado, o daemon deve ser executado com o parâmetro –purge:

/etc/init.d/denyhosts start --purge

Além disso, devemos incluí-lo no início do sistema:

chkconfig denyhosts ativado

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.