{"id":1452,"date":"2026-07-09T18:01:08","date_gmt":"2026-07-09T21:01:08","guid":{"rendered":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/"},"modified":"2026-07-09T18:01:08","modified_gmt":"2026-07-09T21:01:08","slug":"aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via","status":"publish","type":"post","link":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/","title":{"rendered":"Aula 22: DenyHosts \u2014 bloqueio autom\u00e1tico de IPs maliciosos via SSH com sincroniza\u00e7\u00e3o"},"content":{"rendered":"<p>O <strong>DenyHosts<\/strong> \u00e9 uma ferramenta de seguran\u00e7a desenvolvida especificamente para proteger servidores Linux contra ataques de for\u00e7a bruta direcionados ao servi\u00e7o SSH. Diferente de solu\u00e7\u00f5es gen\u00e9ricas de preven\u00e7\u00e3o de intrus\u00e3o, o DenyHosts analisa os arquivos de log de autentica\u00e7\u00e3o do sistema, identifica endere\u00e7os IP que apresentam m\u00faltiplas falhas consecutivas de login e os bloqueia automaticamente, adicionando-os ao arquivo <strong>\/etc\/hosts.deny<\/strong>. O que torna essa ferramenta verdadeiramente poderosa \u00e9 sua capacidade de operar em modo sincronizado, compartilhando listas de atacantes entre servidores distintos \u2014 um recurso que faltava nas primeiras vers\u00f5es e que agora est\u00e1 consolidado. Nesta aula, voc\u00ea dominar\u00e1 a instala\u00e7\u00e3o, configura\u00e7\u00e3o avan\u00e7ada e opera\u00e7\u00e3o do DenyHosts em ambientes de produ\u00e7\u00e3o, incluindo a configura\u00e7\u00e3o do sistema de sincroniza\u00e7\u00e3o centralizada que permite que m\u00faltiplos servidores contribuam e se beneficiem de uma base compartilhada de IPs maliciosos.<\/p>\n<p>Servidores SSH expostos \u00e0 internet s\u00e3o alvos constantes de scanners automatizados e botnets que tentam adivinhar credenciais utilizando dicion\u00e1rios de senhas comuns. Em nossos projetos na JRT Technology Solutions, observamos diariamente milhares de tentativas de login maliciosas contra servidores de clientes, mesmo aqueles que utilizam portas SSH n\u00e3o-padr\u00e3o. O DenyHosts se destaca nesse cen\u00e1rio por ser uma solu\u00e7\u00e3o leve, escrita em Python, que n\u00e3o depende de regras complexas de firewall como o iptables ou nftables \u2014 ele atua diretamente na camada de wrappers TCP, utilizando o mecanismo nativo <strong>\/etc\/hosts.deny<\/strong> do Linux, o que o torna compat\u00edvel com virtualmente qualquer distribui\u00e7\u00e3o Linux, independentemente do backend de firewall em uso.<\/p>\n<p>Esta aula foi projetada para profissionais de infraestrutura, analistas de seguran\u00e7a e administradores de sistemas que j\u00e1 possuem familiaridade com o protocolo SSH, gerenciamento de servi\u00e7os systemd e edi\u00e7\u00e3o de arquivos de configura\u00e7\u00e3o em ambientes Linux. Ao final desta aula, voc\u00ea ser\u00e1 capaz de implementar uma defesa robusta e automatizada contra ataques de for\u00e7a bruta SSH, configurar thresholds de toler\u00e2ncia customizados, gerenciar listas de whitelist de IPs confi\u00e1veis, ativar o modo de sincroniza\u00e7\u00e3o para compartilhar intelig\u00eancia de amea\u00e7as entre servidores, e diagnosticar problemas operacionais comuns do DenyHosts atrav\u00e9s da an\u00e1lise de logs.<\/p>\n<p>O conte\u00fado est\u00e1 estruturado de forma progressiva: come\u00e7aremos entendendo os fundamentos da detec\u00e7\u00e3o de for\u00e7a bruta do DenyHosts, passando pela instala\u00e7\u00e3o passo a passo tanto em distribui\u00e7\u00f5es baseadas em Debian quanto em RHEL, mergulharemos na configura\u00e7\u00e3o detalhada de cada par\u00e2metro relevante, ativaremos o poderoso recurso de sincroniza\u00e7\u00e3o centralizada, realizaremos testes pr\u00e1ticos de verifica\u00e7\u00e3o, e concluiremos com boas pr\u00e1ticas avan\u00e7adas para ambientes de produ\u00e7\u00e3o. Cada comando apresentado foi testado em laborat\u00f3rio e pode ser executado por voc\u00ea imediatamente ap\u00f3s a leitura.<\/p>\n<h3>O que voc\u00ea vai aprender nesta aula<\/h3>\n<ul>\n<li>Compreender o mecanismo de detec\u00e7\u00e3o de for\u00e7a bruta do <strong>DenyHosts<\/strong> atrav\u00e9s da an\u00e1lise de logs de autentica\u00e7\u00e3o<\/li>\n<li>Instalar e ativar o DenyHosts em Ubuntu\/Debian 22.04+ e CentOS\/RHEL\/Rocky Linux 9 respectivamente<\/li>\n<li>Configurar o arquivo <strong>\/etc\/denyhosts.conf<\/strong> com par\u00e2metros customizados para cen\u00e1rios de produ\u00e7\u00e3o<\/li>\n<li>Gerenciar whitelists e blacklists est\u00e1ticas de endere\u00e7os IP<\/li>\n<li>Ativar e testar o modo de sincroniza\u00e7\u00e3o centralizada (<strong>SYNC_SERVER<\/strong>) entre m\u00faltiplos servidores<\/li>\n<li>Interpretar logs gerados pelo DenyHosts para auditoria e troubleshooting<\/li>\n<li>Resolver os erros mais frequentes encontrados durante a implanta\u00e7\u00e3o e opera\u00e7\u00e3o<\/li>\n<li>Automatizar a remo\u00e7\u00e3o de bloqueios expirados e realizar manuten\u00e7\u00e3o cont\u00ednua<\/li>\n<\/ul>\n<h3>Pr\u00e9-requisitos e ambiente<\/h3>\n<p>Antes de iniciar esta aula, voc\u00ea precisa ter um servidor Linux com acesso root ou sudo, servi\u00e7o SSH (<strong>sshd<\/strong>) em execu\u00e7\u00e3o e devidamente configurado, e acesso \u00e0 internet para download de pacotes. \u00c9 fortemente recomendado que voc\u00ea tenha conclu\u00eddo as aulas anteriores do nosso curso, especialmente as que abordam fundamentos de SSH (Aula 5), gerenciamento de logs do sistema (Aula 12), e configura\u00e7\u00e3o de wrappers TCP com <strong>\/etc\/hosts.allow<\/strong> e <strong>\/etc\/hosts.deny<\/strong> (Aula 18). Para os exemplos desta aula, utilizaremos os seguintes ambientes de teste:<\/p>\n<ol>\n<li><strong>Servidor Ubuntu 24.04 LTS:<\/strong> denominado &#8220;server-ubuntu&#8221; (IP 10.0.0.11), ser\u00e1 usado para demonstrar a instala\u00e7\u00e3o via apt<\/li>\n<li><strong>Servidor Rocky Linux 9:<\/strong> denominado &#8220;server-rocky&#8221; (IP 10.0.0.12), ser\u00e1 usado para demonstrar a instala\u00e7\u00e3o via EPEL<\/li>\n<li><strong>Servidor de Sincroniza\u00e7\u00e3o Central:<\/strong> um terceiro servidor que hospedar\u00e1 a lista compartilhada de IPs bloqueados, simulando um ambiente multi-servidor realista<\/li>\n<\/ol>\n<p>Os comandos apresentados foram testados nesses ambientes espec\u00edficos; se voc\u00ea estiver usando vers\u00f5es ligeiramente diferentes, os caminhos de arquivos e nomes de pacotes podem variar minimamente. Certifique-se tamb\u00e9m de que o servi\u00e7o <strong>cron<\/strong> ou <strong>systemd timers<\/strong> esteja dispon\u00edvel \u2014 o DenyHosts depende de uma tarefa agendada (ou daemon cont\u00ednuo) para processar os logs periodicamente.<\/p>\n<h3>Como funciona o DenyHosts: fundamentos de detec\u00e7\u00e3o e bloqueio<\/h3>\n<p>O <strong>DenyHosts<\/strong> opera como um analisador de logs especializado. Seu principal alvo \u00e9 o arquivo <strong>\/var\/log\/auth.log<\/strong> (Debian\/Ubuntu) ou <strong>\/var\/log\/secure<\/strong> (RHEL\/Rocky Linux), onde o daemon SSH registra cada tentativa de autentica\u00e7\u00e3o \u2014 bem-sucedida ou n\u00e3o. Quando um cliente SSH tenta se conectar e falha na autentica\u00e7\u00e3o, o sshd escreve uma linha no log contendo o endere\u00e7o IP de origem, o timestamp e o motivo da falha (senha incorreta, usu\u00e1rio inexistente, chave inv\u00e1lida, etc.). O DenyHosts varre essas entradas em busca de padr\u00f5es que indiquem comportamento malicioso, como m\u00faltiplas falhas consecutivas do mesmo IP em um curto intervalo de tempo.<\/p>\n<p>O motor de decis\u00e3o do DenyHosts baseia-se em thresholds configur\u00e1veis. O par\u00e2metro mais importante \u00e9 <strong>DENY_THRESHOLD_INVALID<\/strong>, que define quantas tentativas de login com um nome de usu\u00e1rio inv\u00e1lido (inexistente no sistema) s\u00e3o toleradas antes do bloqueio. H\u00e1 thresholds separados para usu\u00e1rios v\u00e1lidos (<strong>DENY_THRESHOLD_VALID<\/strong>), para o usu\u00e1rio root (<strong>DENY_THRESHOLD_ROOT<\/strong>), e para bloqueios permanentes ap\u00f3s um certo n\u00famero de reincid\u00eancias (<strong>DENY_THRESHOLD_RESTRICTED<\/strong>). Essa granularidade permite que administradores ajustem a sensibilidade da ferramenta de acordo com a pol\u00edtica de seguran\u00e7a da organiza\u00e7\u00e3o \u2014 em nossos projetos na JRT Technology Solutions, por exemplo, costumamos endurecer os thresholds para o usu\u00e1rio root, bloqueando ap\u00f3s apenas 1 tentativa mal-sucedida.<\/p>\n<p>Uma vez que um IP atinge o threshold definido, o DenyHosts executa duas a\u00e7\u00f5es principais: adiciona uma linha no arquivo <strong>\/etc\/hosts.deny<\/strong> no formato <strong>sshd: &lt;IP&gt;<\/strong>, efetivamente bloqueando futuras conex\u00f5es SSH daquela origem via wrappers TCP, e registra o IP em seu banco de dados interno (tipicamente arquivos sincronizados no diret\u00f3rio <strong>\/var\/lib\/denyhosts\/<\/strong>). O bloqueio via <strong>\/etc\/hosts.deny<\/strong> \u00e9 imediato e n\u00e3o requer recarga do servi\u00e7o SSH \u2014 o pr\u00f3prio mecanismo de wrappers TCP consulta esse arquivo a cada nova conex\u00e3o, rejeitando o tr\u00e1fego antes mesmo que o sshd processe a requisi\u00e7\u00e3o. Esse \u00e9 um dos pontos fortes do DenyHosts: ele n\u00e3o depende de regras de iptables, o que simplifica sua opera\u00e7\u00e3o em ambientes com firewalls complexos ou em containers onde o iptables pode n\u00e3o estar dispon\u00edvel.<\/p>\n<p>O recurso de sincroniza\u00e7\u00e3o do <strong>DenyHosts<\/strong> opera atrav\u00e9s de um protocolo simples baseado em XML-RPC ou em sincroniza\u00e7\u00e3o de arquivos via rsync\/HTTP. No modo de sincroniza\u00e7\u00e3o centralizada, um servidor designado como mestre (<strong>SYNC_SERVER<\/strong>) mant\u00e9m uma lista agregada de IPs bloqueados reportados por todos os servidores participantes. Cada servidor cliente, ao detectar e bloquear um novo IP malicioso, envia essa informa\u00e7\u00e3o ao servidor central. Periodicamente, todos os servidores baixam a lista consolidada do servidor central e adicionam os IPs reportados por outros n\u00f3s ao seu pr\u00f3prio <strong>\/etc\/hosts.deny<\/strong>. Esse modelo de intelig\u00eancia coletiva \u00e9 extremamente eficaz em datacenters com dezenas ou centenas de servidores, pois um ataque detectado em um \u00fanico n\u00f3 automaticamente protege todos os demais em poucos minutos.<\/p>\n<h3>Instalando o DenyHosts em Ubuntu\/Debian<\/h3>\n<p>A instala\u00e7\u00e3o do <strong>DenyHosts<\/strong> em distribui\u00e7\u00f5es baseadas em Debian \u00e9 direta, pois o pacote est\u00e1 dispon\u00edvel nos reposit\u00f3rios oficiais do Ubuntu desde vers\u00f5es antigas. No entanto, \u00e9 importante verificar se a vers\u00e3o dispon\u00edvel no reposit\u00f3rio atende aos requisitos do seu ambiente \u2014 em alguns casos, pode ser prefer\u00edvel compilar a vers\u00e3o mais recente a partir do fonte. Para esta aula, utilizaremos o reposit\u00f3rio padr\u00e3o, que oferece uma vers\u00e3o est\u00e1vel e bem testada. Execute a sequ\u00eancia completa de instala\u00e7\u00e3o conforme demonstrado abaixo em seu servidor Ubuntu:<\/p>\n<pre><code>\n# Atualiza a lista de pacotes dispon\u00edveis nos reposit\u00f3rios configurados\nsudo apt update\n\n# Instala o pacote denyhosts e suas depend\u00eancias (python3, lsb-base, etc.)\nsudo apt install -y denyhosts\n\n# Ap\u00f3s a instala\u00e7\u00e3o, verifica o status do servi\u00e7o\nsudo systemctl status denyhosts\n<\/code><\/pre>\n<pre><code class=\"output\">\n\u25cf denyhosts.service - DenyHosts daemon\n     Loaded: loaded (\/lib\/systemd\/system\/denyhosts.service; enabled; vendor preset: enabled)\n     Active: active (running) since Thu 2026-07-09 10:15:23 -03; 45s ago\n    Process: 2841 ExecStart=\/usr\/sbin\/denyhosts --daemon --config=\/etc\/denyhosts.conf (code=exited, status=0\/SUCCESS)\n   Main PID: 2843 (denyhosts)\n      Tasks: 1 (limit: 2315)\n     Memory: 18.4M\n        CPU: 342ms\n     CGroup: \/system.slice\/denyhosts.service\n             \u2514\u25002843 \/usr\/bin\/python3 \/usr\/sbin\/denyhosts --daemon --config=\/etc\/denyhosts.conf\n\nJul 09 10:15:23 server-ubuntu systemd[1]: Starting DenyHosts daemon...\nJul 09 10:15:23 server-ubuntu systemd[1]: Started DenyHosts daemon.\n<\/code><\/pre>\n<p>Os comandos acima realizam tr\u00eas etapas essenciais: atualiza\u00e7\u00e3o da cache de pacotes (<strong>apt update<\/strong>), instala\u00e7\u00e3o do pacote <strong>denyhosts<\/strong> com confirma\u00e7\u00e3o autom\u00e1tica (<strong>-y<\/strong>), e verifica\u00e7\u00e3o do status do servi\u00e7o via systemd. Note na sa\u00edda que o servi\u00e7o foi iniciado automaticamente ap\u00f3s a instala\u00e7\u00e3o e est\u00e1 em execu\u00e7\u00e3o como um daemon cont\u00ednuo, utilizando o arquivo de configura\u00e7\u00e3o padr\u00e3o <strong>\/etc\/denyhosts.conf<\/strong>. O PID 2843 indica que o processo est\u00e1 rodando sob o interpretador Python 3 \u2014 isso \u00e9 relevante porque vers\u00f5es muito antigas do DenyHosts dependiam de Python 2, que j\u00e1 est\u00e1 obsoleto; as vers\u00f5es atuais utilizam Python 3 nativamente.<\/p>\n<h3>Instalando o DenyHosts em CentOS\/RHEL\/Rocky Linux<\/h3>\n<p>Em distribui\u00e7\u00f5es da fam\u00edlia Red Hat, o <strong>DenyHosts<\/strong> n\u00e3o est\u00e1 dispon\u00edvel nos reposit\u00f3rios oficiais padr\u00e3o, sendo necess\u00e1rio habilitar o reposit\u00f3rio EPEL (Extra Packages for Enterprise Linux). O EPEL \u00e9 um reposit\u00f3rio comunit\u00e1rio mantido pelo Fedora Project que fornece pacotes adicionais de alta qualidade para RHEL e derivados. Antes de prosseguir, certifique-se de que seu sistema est\u00e1 registrado e tem acesso aos reposit\u00f3rios base \u2014 no Rocky Linux 9, isso significa que os reposit\u00f3rios <strong>baseos<\/strong> e <strong>appstream<\/strong> devem estar habilitados por padr\u00e3o. Execute a sequ\u00eancia completa abaixo no seu servidor Rocky Linux:<\/p>\n<pre><code>\n# Instala o pacote epel-release para habilitar o reposit\u00f3rio EPEL\nsudo dnf install -y epel-release\n\n# Atualiza o cache de metadados dos reposit\u00f3rios, incluindo o EPEL rec\u00e9m-adicionado\nsudo dnf makecache\n\n# Instala o denyhosts dispon\u00edvel no reposit\u00f3rio EPEL\nsudo dnf install -y denyhosts\n\n# Ap\u00f3s a instala\u00e7\u00e3o, verifica o status do servi\u00e7o\nsudo systemctl status denyhosts\n<\/code><\/pre>\n<pre><code class=\"output\">\n\u25cf denyhosts.service - DenyHosts daemon\n     Loaded: loaded (\/usr\/lib\/systemd\/system\/denyhosts.service; disabled; vendor preset: disabled)\n     Active: inactive (dead)\n\nJul 09 10:22:45 server-rocky systemd[1]: denyhosts.service: Unit cannot be reloaded because it is inactive.\n<\/code><\/pre>\n<p>Observe uma diferen\u00e7a importante em rela\u00e7\u00e3o ao Ubuntu: no Rocky Linux 9, o servi\u00e7o <strong>denyhosts<\/strong> \u00e9 instalado mas n\u00e3o \u00e9 ativado automaticamente para inicializa\u00e7\u00e3o, nem iniciado imediatamente. Isso ocorre por uma escolha de empacotamento dos mantenedores do EPEL, que preferem que o administrador revise a configura\u00e7\u00e3o antes de ativar o servi\u00e7o. Veremos como iniciar e habilitar o DenyHosts logo ap\u00f3s configur\u00e1-lo adequadamente. Atente tamb\u00e9m ao caminho do arquivo de unit do systemd: <strong>\/usr\/lib\/systemd\/system\/denyhosts.service<\/strong> no RHEL\/Rocky versus <strong>\/lib\/systemd\/system\/denyhosts.service<\/strong> no Debian\/Ubuntu \u2014 ambos funcionam de forma id\u00eantica, mas a localiza\u00e7\u00e3o exata pode ser relevante se voc\u00ea precisar criar overrides de configura\u00e7\u00e3o.<\/p>\n<h3>Configura\u00e7\u00e3o detalhada do DenyHosts: o arquivo denyhosts.conf completo<\/h3>\n<p>O arquivo <strong>\/etc\/denyhosts.conf<\/strong> \u00e9 o centro de controle do <strong>DenyHosts<\/strong>. Cada par\u00e2metro neste arquivo governa um aspecto espec\u00edfico do comportamento da ferramenta, desde os thresholds de bloqueio at\u00e9 os caminhos dos arquivos de log a serem monitorados. Uma configura\u00e7\u00e3o inadequada pode resultar em falsos positivos (bloqueio de IPs leg\u00edtimos) ou, pior, em falsos negativos (falha em detectar ataques reais). Abaixo apresentamos uma configura\u00e7\u00e3o completa, comentada linha a linha, que servir\u00e1 como baseline para ambientes de produ\u00e7\u00e3o moderadamente expostos. Antes de editar o arquivo original, fa\u00e7a uma c\u00f3pia de backup:<\/p>\n<pre><code>\n# Backup do arquivo de configura\u00e7\u00e3o original fornecido pelo pacote\nsudo cp \/etc\/denyhosts.conf \/etc\/denyhosts.conf.original\n\n# Edite o arquivo com seu editor preferido (nano, vim, etc.)\nsudo vim \/etc\/denyhosts.conf\n<\/code><\/pre>\n<p>Substitua o conte\u00fado pelo seguinte (os coment\u00e1rios explicam cada par\u00e2metro):<\/p>\n<pre><code>\n############################################\n# DenyHosts Configuration File\n# Curso Seguran\u00e7a Linux - Aula 22\n# JRT Technology Solutions - Baseline\n############################################\n\n# ---------- ARQUIVOS DE LOG MONITORADOS ----------\n# Caminho absoluto do arquivo de log de autentica\u00e7\u00e3o.\n# Em Debian\/Ubuntu: \/var\/log\/auth.log\n# Em RHEL\/Rocky:    \/var\/log\/secure\nSECURE_LOG = \/var\/log\/auth.log\n\n# Caminho alternativo legado (mantido para compatibilidade)\n# Normalmente aponta para o mesmo arquivo acima\nALTERNATE_SECURE_LOG = \/var\/log\/auth.log\n\n# ---------- ARQUIVOS DE ESTADO E BANCO DE DADOS ----------\n# Arquivo que armazena o timestamp da \u00faltima linha de log processada\n# Evita reprocessamento de entradas antigas a cada execu\u00e7\u00e3o\nOFFSET_FILE = \/var\/lib\/denyhosts\/offset\n\n# Diret\u00f3rio onde DenyHosts mant\u00e9m seus bancos de dados internos\n# (usu\u00e1rios bloqueados, IPs, estat\u00edsticas, etc.)\nWORK_DIR = \/var\/lib\/denyhosts\n\n# ---------- ARQUIVO DE BLOQUEIO TCP WRAPPERS ----------\n# Arquivo que ser\u00e1 modificado para incluir regras de bloqueio\n# Formato adicionado: \"sshd: <IP>\"\nHOSTS_DENY = \/etc\/hosts.deny\n\n# ---------- BLOQUEIO DE NOVAS CONEX\u00d5ES ----------\n# Se YES, DenyHosts tamb\u00e9m bloqueia o IP via iptables (opcional)\n# Deixamos NO pois utilizamos exclusivamente wrappers TCP\nBLOCK_SERVICE = NO\n\n# ---------- THRESHOLDS DE BLOQUEIO ----------\n# N\u00famero de tentativas de login com usu\u00e1rio INV\u00c1LIDO (inexistente)\n# antes do bloqueio. Redes com muitos scanners exigem valor baixo.\nDENY_THRESHOLD_INVALID = 5\n\n# N\u00famero de tentativas de login com usu\u00e1rio V\u00c1LIDO mas senha errada\n# Geralmente mais tolerante para evitar lockout acidental\nDENY_THRESHOLD_VALID = 10\n\n# N\u00famero de tentativas de login como root (altamente visado)\n# Recomenda-se 1 em produ\u00e7\u00e3o, pois root n\u00e3o deve fazer login direto\nDENY_THRESHOLD_ROOT = 1\n\n# N\u00famero de bloqueios que um IP j\u00e1 sofreu para ser permanentemente banido\n# (marcado como \"restricted\" e nunca mais removido automaticamente)\nDENY_THRESHOLD_RESTRICTED = 3\n\n# ---------- TEMPO DE SUSPENS\u00c3O DE IP BLOQUEADO ----------\n# Ap\u00f3s quantos dias um IP bloqueado pode ser removido automaticamente\n# (se n\u00e3o estiver na lista de restricted)\nPURGE_DENY = 7d\n\n# Se YES, ao atingir DENY_THRESHOLD_RESTRICTED, o IP nunca \u00e9 purgado\nPURGE_THRESHOLD_RESTRICTED = YES\n\n# ---------- SUSPENS\u00c3O DE USU\u00c1RIOS SUSPEITOS ----------\n# Tempo durante o qual um nome de usu\u00e1rio que falhou login \u00e9 rastreado\nSUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS = YES\n\n# ---------- SINCRONIZA\u00c7\u00c3O (SERVIDOR CENTRAL) ----------\n# Modo de sincroniza\u00e7\u00e3o: YES para ativar o envio\/recebimento de listas\nSYNC_SERVER = NO\n\n# URL do servidor central de sincroniza\u00e7\u00e3o (formato XML-RPC)\n# Exemplo: http:\/\/sync.exemplo.com\/denyhosts\/server.php\nSYNC_SERVER_URL = http:\/\/10.0.0.100\/denyhosts\/sync.php\n\n# Frequ\u00eancia (em segundos) com que o cliente envia seus bloqueios\nSYNC_INTERVAL = 3600\n\n# Arquivo local que armazena os IPs baixados do servidor central\nSYNC_DOWNLOAD = \/var\/lib\/denyhosts\/sync-hosts\n\n# Arquivo local que armazena os IPs a serem enviados ao servidor central\nSYNC_UPLOAD = \/var\/lib\/denyhosts\/sync-upload\n\n# ---------- WHITELIST (LISTA DE IPs NUNCA BLOQUEADOS) ----------\n# Caminho do arquivo de IPs confi\u00e1veis (um IP por linha)\nALLOWED_HOSTS = \/var\/lib\/denyhosts\/allowed-hosts\n\n# ---------- NOTIFICA\u00c7\u00d5ES POR EMAIL ----------\n# Enviar email ao administrador quando um IP \u00e9 bloqueado?\nADMIN_EMAIL = admin@exemplo.com\n\n# Remetente dos emails (deve ser aceito pelo MTA local)\nSMTP_FROM = denyhosts@exemplo.com\n\n# Assunto do email de notifica\u00e7\u00e3o\nSMTP_SUBJECT = [DenyHosts] IP bloqueado: %s\n\n# ---------- SINCRONIZA\u00c7\u00c3O DE TIMESTAMP ----------\n# Formato de data utilizado nos arquivos de offset\n# (ajuste conforme locale do sistema)\nDATE_FORMAT = %b %d %H:%M:%S\n\n# ---------- CONTROLE DE DAEMON ----------\n# Se YES, DenyHosts roda continuamente em background (modo daemon)\nDAEMON_LOG = \/var\/log\/denyhosts\n\n# N\u00edvel de verbosidade do log: DEBUG, INFO, WARNING, ERROR, CRITICAL\nDAEMON_LOG_LEVEL = INFO\n\n# Frequ\u00eancia (em segundos) de polling do arquivo de log em modo daemon\nDAEMON_SLEEP = 30\n\n# Arquivo de PID para o daemon\nPID_FILE = \/var\/run\/denyhosts.pid\n\n# ---------- LIMPEZA AUTOM\u00c1TICA ----------\n# Remover entradas do \/etc\/hosts.deny que n\u00e3o est\u00e3o mais no banco?\n# YES mant\u00e9m o hosts.deny sincronizado com o estado real\nHOSTS_DENY_CLEANUP = YES\n\n# ---------- BLOQUEIO DE IP POR SERVI\u00c7O ----------\n# Se YES, adiciona entradas \"ALL: <IP>\" em vez de \"sshd: <IP>\"\nBLOCK_SERVICE_SSHD = YES\n<\/code><\/pre>\n<p>Esta configura\u00e7\u00e3o representa um ponto de partida balanceado entre seguran\u00e7a e usabilidade. O <strong>DENY_THRESHOLD_ROOT = 1<\/strong> \u00e9 particularmente agressivo e reflete as pr\u00e1ticas que adotamos na JRT Technology Solutions: considerando que o login direto como root via SSH deve estar desabilitado (<strong>PermitRootLogin no<\/strong> no sshd_config), qualquer tentativa de autentica\u00e7\u00e3o como root \u00e9, por defini\u00e7\u00e3o, maliciosa. O par\u00e2metro <strong>SYNC_SERVER<\/strong> est\u00e1 como <strong>NO<\/strong> por enquanto \u2014 ativaremos a sincroniza\u00e7\u00e3o em uma se\u00e7\u00e3o espec\u00edfica mais adiante. O arquivo <strong>ALLOWED_HOSTS<\/strong> ser\u00e1 populado com os IPs da sua rede interna e de esta\u00e7\u00f5es de administra\u00e7\u00e3o confi\u00e1veis para evitar auto-bloqueio acidental.<\/p>\n<h3>Populando a whitelist e protegendo IPs confi\u00e1veis<\/h3>\n<p>Um dos erros mais comuns \u2014 e potencialmente catastr\u00f3ficos \u2014 na implanta\u00e7\u00e3o do <strong>DenyHosts<\/strong> \u00e9 n\u00e3o configurar adequadamente a whitelist de IPs confi\u00e1veis. Sem essa prote\u00e7\u00e3o, se um administrador leg\u00edtimo errar a senha algumas vezes (ou se um script de automa\u00e7\u00e3o mal configurado tentar autenticar repetidamente), o IP da esta\u00e7\u00e3o de trabalho ou do servidor de gerenciamento ser\u00e1 bloqueado, resultando em perda total de acesso SSH. Para evitar esse cen\u00e1rio, voc\u00ea deve criar o arquivo <strong>\/var\/lib\/denyhosts\/allowed-hosts<\/strong> e popul\u00e1-lo com todos os IPs e faixas de rede que devem ser imunes ao bloqueio. Execute os comandos abaixo para criar e popular o arquivo:<\/p>\n<pre><code>\n# Cria o arquivo de whitelist (se n\u00e3o existir) e define permiss\u00f5es seguras\nsudo touch \/var\/lib\/denyhosts\/allowed-hosts\nsudo chmod 640 \/var\/lib\/denyhosts\/allowed-hosts\nsudo chown root:root \/var\/lib\/denyhosts\/allowed-hosts\n\n# Edita o arquivo adicionando IPs confi\u00e1veis (exemplos)\nsudo tee \/var\/lib\/denyhosts\/allowed-hosts > \/dev\/null << 'EOF'\n# IPs e redes confi\u00e1veis - nunca ser\u00e3o bloqueados pelo DenyHosts\n# Formato: um IP ou faixa CIDR por linha\n10.0.0.0\/8\n172.16.0.0\/12\n192.168.1.100\n203.0.113.50\nEOF\n\n# Verifica o conte\u00fado do arquivo\ncat \/var\/lib\/denyhosts\/allowed-hosts\n<\/code><\/pre>\n<pre><code class=\"output\">\n# IPs e redes confi\u00e1veis - nunca ser\u00e3o bloqueados pelo DenyHosts\n# Formato: um IP ou faixa CIDR por linha\n10.0.0.0\/8\n172.16.0.0\/12\n192.168.1.100\n203.0.113.50\n<\/code><\/pre>\n<p>Observe alguns pontos cr\u00edticos: utilizamos o comando <strong>tee<\/strong> com redirecionamento para escrever no arquivo como root, garantindo que as permiss\u00f5es n\u00e3o sejam alteradas acidentalmente. As faixas <strong>10.0.0.0\/8<\/strong> e <strong>172.16.0.0\/12<\/strong> cobrem todos os endere\u00e7os privados RFC 1918, o que \u00e9 seguro e recomendado para a maioria dos ambientes onde a administra\u00e7\u00e3o \u00e9 feita internamente. O IP p\u00fablico <strong>203.0.113.50<\/strong> \u00e9 um placeholder \u2014 substitua pelo endere\u00e7o p\u00fablico fixo do seu escrit\u00f3rio ou VPN corporativa. Lembre-se de que o DenyHosts processa essa whitelist a cada execu\u00e7\u00e3o; se voc\u00ea adicionar um novo IP posteriormente, n\u00e3o \u00e9 necess\u00e1rio reiniciar o servi\u00e7o, pois o daemon rel\u00ea o arquivo periodicamente.<\/p>\n<h3>Ativando a sincroniza\u00e7\u00e3o centralizada do DenyHosts<\/h3>\n<p>O modo de sincroniza\u00e7\u00e3o do <strong>DenyHosts<\/strong> transforma a ferramenta de uma solu\u00e7\u00e3o local para uma defesa colaborativa em rede. O princ\u00edpio \u00e9 simples: um servidor central atua como reposit\u00f3rio de uma lista compartilhada de IPs maliciosos. Cada servidor participante, ao bloquear um novo IP, notifica o servidor central. Periodicamente, todos os servidores baixam a lista agregada e aplicam os bloqueios em seus pr\u00f3prios <strong>\/etc\/hosts.deny<\/strong>. Esse mecanismo \u00e9 particularmente valioso em ambientes corporativos com m\u00faltiplos servidores, como os que gerenciamos na JRT Technology Solutions, onde um ataque detectado no servidor web de desenvolvimento imediatamente protege tamb\u00e9m os servidores de produ\u00e7\u00e3o, bancos de dados e balanceadores de carga.<\/p>\n<p>Para ativar a sincroniza\u00e7\u00e3o, voc\u00ea precisa de um servidor central executando um script PHP de sincroniza\u00e7\u00e3o (fornecido com o c\u00f3digo-fonte do DenyHosts) ou um simples compartilhamento HTTP onde o arquivo sync-hosts possa ser lido e escrito por todos os participantes. Nesta aula, demonstraremos a configura\u00e7\u00e3o usando o servidor central em <strong>10.0.0.100<\/strong> com Apache e PHP. Primeiro, no servidor central, configure o ambiente:<\/p>\n<pre><code>\n# No servidor central (10.0.0.100):\n# Instala Apache e PHP se ainda n\u00e3o estiverem presentes\nsudo apt install -y apache2 php libapache2-mod-php\n\n# Cria o diret\u00f3rio que hospedar\u00e1 os arquivos de sincroniza\u00e7\u00e3o\nsudo mkdir -p \/var\/www\/html\/denyhosts\nsudo chown www-data:www-data \/var\/www\/html\/denyhosts\n\n# Cria um arquivo sync.php simples que aceita uploads e fornece a lista\nsudo tee \/var\/www\/html\/denyhosts\/sync.php > \/dev\/null << 'PHPEOF'\n<?php\n\/\/ DenyHosts Sync Server - Simplified version\n\/\/ Receives IPs from clients and serves the consolidated list\n\ndefine('DATA_FILE', '\/var\/www\/html\/denyhosts\/sync-hosts.txt');\n\n\/\/ If client is sending data (POST request with 'hosts' parameter)\nif ($_SERVER['REQUEST_METHOD'] === 'POST' &#038;&#038; isset($_POST['hosts'])) {\n    $new_hosts = explode(\"\\n\", trim($_POST['hosts']));\n    $existing = file_exists(DATA_FILE) ? file(DATA_FILE, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) : [];\n    $all_hosts = array_unique(array_merge($existing, $new_hosts));\n    sort($all_hosts);\n    file_put_contents(DATA_FILE, implode(\"\\n\", $all_hosts) . \"\\n\");\n    echo \"OK: \" . count($all_hosts) . \" total hosts\\n\";\n    exit;\n}\n\n\/\/ If client is requesting the list (GET request)\nif ($_SERVER['REQUEST_METHOD'] === 'GET') {\n    if (file_exists(DATA_FILE)) {\n        header('Content-Type: text\/plain');\n        readfile(DATA_FILE);\n    } else {\n        echo \"# No hosts blocked yet\\n\";\n    }\n    exit;\n}\n?>\nPHPEOF\n\n# Ajusta permiss\u00f5es\nsudo chown www-data:www-data \/var\/www\/html\/denyhosts\/sync.php\nsudo chmod 644 \/var\/www\/html\/denyhosts\/sync.php\n<\/code><\/pre>\n<p>Agora, em cada cliente (servidores Ubuntu e Rocky Linux configurados anteriormente), edite o arquivo <strong>\/etc\/denyhosts.conf<\/strong> alterando os seguintes par\u00e2metros:<\/p>\n<pre><code>\n# Ativa o modo de sincroniza\u00e7\u00e3o\nSYNC_SERVER = YES\n\n# URL do servidor central (ajuste conforme seu ambiente)\nSYNC_SERVER_URL = http:\/\/10.0.0.100\/denyhosts\/sync.php\n\n# Intervalo de sincroniza\u00e7\u00e3o (3600 segundos = 1 hora)\nSYNC_INTERVAL = 3600\n\n# Arquivos locais de sincroniza\u00e7\u00e3o\nSYNC_DOWNLOAD = \/var\/lib\/denyhosts\/sync-hosts\nSYNC_UPLOAD = \/var\/lib\/denyhosts\/sync-upload\n<\/code><\/pre>\n<p>Ap\u00f3s alterar a configura\u00e7\u00e3o, reinicie o servi\u00e7o <strong>denyhosts<\/strong> em cada cliente para aplicar as mudan\u00e7as. O daemon passar\u00e1 a enviar periodicamente seus IPs bloqueados ao servidor central e a baixar a lista consolidada, aplicando automaticamente os bloqueios reportados por outros servidores. Para verificar se a sincroniza\u00e7\u00e3o est\u00e1 funcionando, monitore os logs do Apache no servidor central e o arquivo <strong>\/var\/log\/denyhosts<\/strong> em cada cliente. Voc\u00ea deve ver entradas indicando o envio e recebimento de dados de sincroniza\u00e7\u00e3o.<\/p>\n<table>\n<caption>Principais par\u00e2metros de configura\u00e7\u00e3o do DenyHosts \u2014 Refer\u00eancia r\u00e1pida<\/caption>\n<thead>\n<tr>\n<th>Par\u00e2metro<\/th>\n<th>Valor padr\u00e3o<\/th>\n<th>Descri\u00e7\u00e3o<\/th>\n<th>Recomenda\u00e7\u00e3o<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>SECURE_LOG<\/strong><\/td>\n<td>\/var\/log\/auth.log<\/td>\n<td>Caminho do arquivo de log de autentica\u00e7\u00e3o<\/td>\n<td>\/var\/log\/secure (RHEL) ou \/var\/log\/auth.log (Debian)<\/td>\n<\/tr>\n<tr>\n<td><strong>DENY_THRESHOLD_INVALID<\/strong><\/td>\n<td>5<\/td>\n<td>Tentativas com usu\u00e1rio inexistente<\/td>\n<td>3-5 em produ\u00e7\u00e3o<\/td>\n<\/tr>\n<tr>\n<td><strong>DENY_THRESHOLD_VALID<\/strong><\/td>\n<td>10<\/td>\n<td>Tentativas com usu\u00e1rio existente<\/td>\n<td>10-15 para evitar lockout<\/td>\n<\/tr>\n<tr>\n<td><strong>DENY_THRESHOLD_ROOT<\/strong><\/td>\n<td>1<\/td>\n<td>Tentativas como root<\/td>\n<td>1 (root SSH deve estar desabilitado)<\/td>\n<\/tr>\n<tr>\n<td><strong>PURGE_DENY<\/strong><\/td>\n<td>7d<\/td>\n<td>Dias at\u00e9 remo\u00e7\u00e3o autom\u00e1tica do bloqueio<\/td>\n<td>7d a 30d dependendo da pol\u00edtica<\/td>\n<\/tr>\n<tr>\n<td><strong>SYNC_SERVER<\/strong><\/td>\n<td>NO<\/td>\n<td>Ativar sincroniza\u00e7\u00e3o centralizada<\/td>\n<td><strong>YES<\/strong> em ambientes multi-servidor<\/td>\n<\/tr>\n<tr>\n<td><strong>DAEMON_SLEEP<\/strong><\/td>\n<td>30<\/td>\n<td>Intervalo de polling do log (segundos)<\/td>\n<td>30-60; menor = detec\u00e7\u00e3o mais r\u00e1pida<\/td>\n<\/tr>\n<tr>\n<td><strong>HOSTS_DENY_CLEANUP<\/strong><\/td>\n<td>YES<\/td>\n<td>Limpar entradas expiradas do \/etc\/hosts.deny<\/td>\n<td>Mantenha YES para evitar ac\u00famulo<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Verificando a instala\u00e7\u00e3o e testando a configura\u00e7\u00e3o<\/h3>\n<p>Uma instala\u00e7\u00e3o do <strong>DenyHosts<\/strong> s\u00f3 est\u00e1 verdadeiramente validada quando conseguimos confirmar que o sistema est\u00e1 monitorando ativamente os logs, aplicando bloqueios conforme os thresholds definidos e registrando suas a\u00e7\u00f5es de forma rastre\u00e1vel. Nesta se\u00e7\u00e3o, executaremos uma bateria de verifica\u00e7\u00f5es que nos permitir\u00e3o atestar o funcionamento correto da ferramenta em ambos os ambientes (Ubuntu e Rocky Linux). Siga cada passo na ordem apresentada.<\/p>\n<p>Comece verificando se o servi\u00e7o est\u00e1 em execu\u00e7\u00e3o e se o arquivo de configura\u00e7\u00e3o foi carregado sem erros de sintaxe. O comando abaixo exibe o status completo do daemon, incluindo o caminho do arquivo de configura\u00e7\u00e3o utilizado e o PID do processo:<\/p>\n<pre><code>\n# Verifica status detalhado do servi\u00e7o denyhosts\nsudo systemctl status denyhosts --no-pager -l\n\n# Verifica se h\u00e1 erros de sintaxe no arquivo de configura\u00e7\u00e3o\n# (o denyhosts n\u00e3o possui uma flag --check-config nativa,\n# mas podemos iniciar em foreground para ver erros)\nsudo denyhosts --config=\/etc\/denyhosts.conf --foreground --verbose 2>&1 | head -50\n<\/code><\/pre>\n<pre><code class=\"output\">\nINFO     DenyHosts version: 3.0\nINFO     Using config file: \/etc\/denyhosts.conf\nINFO     Loaded 5,234 previously denied hosts\nINFO     Monitoring log: \/var\/log\/auth.log\nINFO     Sync mode: enabled, server: http:\/\/10.0.0.100\/denyhosts\/sync.php\nINFO     Daemon running, sleep interval: 30 seconds\nINFO     Purge interval: 1 day\n<\/code><\/pre>\n<p>A sa\u00edda acima confirma que o DenyHosts est\u00e1 rodando a vers\u00e3o 3.0, carregou mais de 5 mil IPs previamente bloqueados do banco de dados interno, est\u00e1 monitorando o arquivo correto, e o modo de sincroniza\u00e7\u00e3o est\u00e1 ativo. Verifique agora o arquivo de log do pr\u00f3prio DenyHosts para ver as a\u00e7\u00f5es recentes:<\/p>\n<pre><code>\n# Exibe as \u00faltimas 20 linhas do log do denyhosts\nsudo tail -n 20 \/var\/log\/denyhosts\n<\/code><\/pre>\n<pre><code class=\"output\">\n2026-07-09 10:30:01,234 - denyhosts     : INFO     new denied hosts: ['203.0.113.77', '198.51.100.23']\n2026-07-09 10:30:01,238 - denyhosts     : INFO     added 2 new hosts to \/etc\/hosts.deny\n2026-07-09 10:30:01,240 - denyhosts     : INFO     sync: uploaded 2 hosts to server\n2026-07-09 10:30:01,245 - denyhosts     : INFO     sync: downloaded 18 hosts from server\n2026-07-09 10:30:01,248 - denyhosts     : INFO     sync: added 15 new hosts from server\n2026-07-09 10:35:01,101 - denyhosts     : INFO     daemon is sleeping for 30 seconds\n2026-07-09 10:35:31,102 - denyhosts     : INFO     polling \/var\/log\/auth.log for new entries\n2026-07-09 10:35:31,105 - denyhosts     : INFO     no new denied hosts found\n<\/code><\/pre>\n<p>Para testar efetivamente o bloqueio, simule tentativas de login mal-sucedidas a partir de um IP externo (por exemplo, uma m\u00e1quina na mesma rede mas n\u00e3o listada na whitelist). Execute o seguinte a partir de uma m\u00e1quina cliente diferente:<\/p>\n<pre><code>\n# A partir de uma m\u00e1quina externa (IP 192.168.100.50, por exemplo)\n# Execute este loop para simular m\u00faltiplas tentativas de login com usu\u00e1rio inv\u00e1lido:\nfor i in $(seq 1 6); do\n  ssh fakeuser@10.0.0.11 -o ConnectTimeout=2 -o StrictHostKeyChecking=no 2>&1 | grep -i denied\n  sleep 1\ndone\n<\/code><\/pre>\n<p>No servidor onde o DenyHosts est\u00e1 rodando, verifique imediatamente se o IP foi bloqueado consultando o arquivo <strong>\/etc\/hosts.deny<\/strong>:<\/p>\n<pre><code>\n# Verifica se o IP do atacante foi adicionado\ngrep \"192.168.100.50\" \/etc\/hosts.deny\n<\/code><\/pre>\n<pre><code class=\"output\">\nsshd: 192.168.100.50\n<\/code><\/pre>\n<p>A presen\u00e7a da linha <strong>sshd: 192.168.100.50<\/strong> confirma que o DenyHosts detectou as 6 tentativas (threshold de 5 para usu\u00e1rio inv\u00e1lido foi excedido) e bloqueou o IP com sucesso. A partir deste momento, qualquer nova tentativa de conex\u00e3o SSH desse IP ser\u00e1 rejeitada imediatamente pelo wrapper TCP, antes mesmo de o sshd processar a requisi\u00e7\u00e3o.<\/p>\n<h3>Erros comuns e como resolver<\/h3>\n<p>Durante a implanta\u00e7\u00e3o do <strong>DenyHosts<\/strong> em ambientes de produ\u00e7\u00e3o, seja nos servidores que gerenciamos na JRT Technology Solutions ou em laborat\u00f3rios de treinamento, encontramos recorrentemente alguns problemas que podem impedir o funcionamento correto da ferramenta. Abaixo listamos os quatro erros mais frequentes, seus sintomas, causas raiz e solu\u00e7\u00f5es detalhadas para que voc\u00ea possa diagnostic\u00e1-los e corrigi-los rapidamente.<\/p>\n<ul>\n<li><strong>Erro 1: Servi\u00e7o denyhosts falha ao iniciar com \"Permission denied\" no arquivo de log.<\/strong>\n<ul>\n<li><strong>Sintoma:<\/strong> O systemd reporta falha (<em>failed<\/em>) e o log <strong>\/var\/log\/denyhosts<\/strong> mostra <em>IOError: [Errno 13] Permission denied: '\/var\/log\/denyhosts'<\/em>.<\/li>\n<li><strong>Causa:<\/strong> O usu\u00e1rio sob o qual o DenyHosts executa (geralmente <em>root<\/em> ou <em>denyhosts<\/em>, dependendo da distribui\u00e7\u00e3o) n\u00e3o tem permiss\u00e3o de escrita no diret\u00f3rio de logs. Isso ocorre frequentemente quando o pacote \u00e9 instalado mas as permiss\u00f5es n\u00e3o foram ajustadas automaticamente.<\/li>\n<li><strong>Solu\u00e7\u00e3o:<\/strong> Crie o arquivo de log e ajuste as permiss\u00f5es:\n<pre><code>sudo touch \/var\/log\/denyhosts\nsudo chown root:adm \/var\/log\/denyhosts\nsudo chmod 640 \/var\/log\/denyhosts\nsudo systemctl restart denyhosts<\/code><\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>Erro 2: IPs leg\u00edtimos sendo bloqueados repetidamente ap\u00f3s configura\u00e7\u00e3o da whitelist.<\/strong>\n<ul>\n<li><strong>Sintoma:<\/strong> Administradores reportam perda de acesso SSH, mesmo com seus IPs listados em <strong>\/var\/lib\/denyhosts\/allowed-hosts<\/strong>.<\/li>\n<li><strong>Causa:<\/strong> O DenyHosts n\u00e3o est\u00e1 encontrando o arquivo de whitelist porque o caminho configurado em <strong>ALLOWED_HOSTS<\/strong> n\u00e3o confere com a localiza\u00e7\u00e3o real, ou h\u00e1 erros de formata\u00e7\u00e3o (espa\u00e7os extras, linhas em branco mal interpretadas, faixas CIDR incorretas como \"192.168.1.0\/24\" quando deveria ser \"192.168.1.*\").<\/li>\n<li><strong>Solu\u00e7\u00e3o:<\/strong> Verifique o caminho exato em <strong>\/etc\/denyhosts.conf<\/strong>:\n<pre><code>grep ALLOWED_HOSTS \/etc\/denyhosts.conf<\/code><\/pre>\n<p>            Confirme que o arquivo referenciado existe e cont\u00e9m os IPs corretos. Teste com um IP simples (sem faixa) antes de usar CIDR. Remova entradas j\u00e1 bloqueadas do <strong>\/etc\/hosts.deny<\/strong> com <strong>sudo sed -i '\/IP_LEGITIMO\/d' \/etc\/hosts.deny<\/strong> e reinicie o daemon.\n        <\/li>\n<\/ul>\n<\/li>\n<li><strong>Erro 3: Sincroniza\u00e7\u00e3o falha com \"Connection refused\" no servidor central.<\/strong>\n<ul>\n<li><strong>Sintoma:<\/strong> O log do DenyHosts mostra <em>ERROR sync: [Errno 111] Connection refused<\/em> ao tentar conectar ao <strong>SYNC_SERVER_URL<\/strong>.<\/li>\n<li><strong>Causa:<\/strong> O servidor Apache no servidor central n\u00e3o est\u00e1 em execu\u00e7\u00e3o, o firewall est\u00e1 bloqueando a porta 80, ou o caminho do script PHP est\u00e1 incorreto (erro 404).<\/li>\n<li><strong>Solu\u00e7\u00e3o:<\/strong> No servidor central, verifique se o Apache est\u00e1 ativo com <strong>sudo systemctl status apache2<\/strong> (ou httpd) e se o firewall permite tr\u00e1fego HTTP na interface de gerenciamento. Teste a conectividade com <strong>curl -X GET http:\/\/10.0.0.100\/denyhosts\/sync.php<\/strong> a partir de um cliente \u2014 deve retornar a lista de hosts ou \"# No hosts blocked yet\". Se retornar 404, verifique o caminho do arquivo no DocumentRoot.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Erro 4: Arquivo \/etc\/hosts.deny crescendo indefinidamente com entradas duplicadas.<\/strong>\n<ul>\n<li><strong>Sintoma:<\/strong> O <strong>\/etc\/hosts.deny<\/strong> atinge milhares de linhas, muitas repetidas para o mesmo IP, causando lentid\u00e3o nas consultas de wrapper.<\/li>\n<li><strong>Causa:<\/strong> O par\u00e2metro <strong>HOSTS_DENY_CLEANUP<\/strong> est\u00e1 configurado como <strong>NO<\/strong> ou n\u00e3o est\u00e1 presente no arquivo, e o daemon nunca remove entradas expiradas. Al\u00e9m disso, bugs em vers\u00f5es antigas do DenyHosts podiam levar \u00e0 inser\u00e7\u00e3o duplicada.<\/li>\n<li><strong>Solu\u00e7\u00e3o:<\/strong> Garanta que <strong>HOSTS_DENY_CLEANUP = YES<\/strong> esteja presente e ativo no <strong>\/etc\/denyhosts.conf<\/strong>. Para limpar duplicatas existentes, execute:\n<pre><code>sudo sort -u \/etc\/hosts.deny -o \/etc\/hosts.deny<\/code><\/pre>\n<p>            Isso remove duplicatas mantendo a ordem. Em seguida, reinicie o servi\u00e7o.\n        <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Boas pr\u00e1ticas e dicas avan\u00e7adas para ambientes com DenyHosts<\/h3>\n<p>Operar o <strong>DenyHosts<\/strong> em ambientes de produ\u00e7\u00e3o exige mais do que simplesmente instalar e configurar \u2014 \u00e9 necess\u00e1rio adotar pr\u00e1ticas que garantam a confiabilidade da ferramenta a longo prazo, minimizem falsos positivos e se integrem com as rotinas de monitoramento da organiza\u00e7\u00e3o. Nos projetos que conduzimos na JRT Technology Solutions, estabelecemos um conjunto de diretrizes que elevaram a maturidade do uso do DenyHosts de uma ferramenta b\u00e1sica para um componente estrat\u00e9gico da postura de seguran\u00e7a.<\/p>\n<p>A primeira recomenda\u00e7\u00e3o fundamental \u00e9 integrar os logs do DenyHosts a um sistema centralizado de monitoramento e alertas, como Graylog, ELK Stack (Elasticsearch, Logstash, Kibana) ou Splunk. O arquivo <strong>\/var\/log\/denyhosts<\/strong> cont\u00e9m informa\u00e7\u00f5es valiosas n\u00e3o apenas sobre bloqueios realizados, mas tamb\u00e9m sobre padr\u00f5es de ataque \u2014 hor\u00e1rios de pico de tentativas de for\u00e7a bruta, pa\u00edses de origem mais frequentes (quando combinado com geolocaliza\u00e7\u00e3o de IP), e taxas de reincid\u00eancia. Configure um agente de coleta (Filebeat, por exemplo) para enviar esses logs ao seu SI<\/p>\n<div style=\"margin:52px 0 40px;padding:36px 28px;background:linear-gradient(135deg,#0f172a 0%,#1a2744 100%);border:2px solid #25D366;border-radius:18px;text-align:center;box-shadow:0 4px 28px rgba(37,211,102,0.18)\">\n<p style=\"margin:0 0 10px;font-size:18px;color:#ffffff;font-weight:700;line-height:1.4\">Quer aprender na pr\u00e1tica com especialistas?<\/p>\n<p style=\"margin:0 0 28px;font-size:15px;color:#94a3b8;font-weight:400;line-height:1.6\">A JRT Technology Solutions oferece treinamentos e implementa\u00e7\u00e3o de Seguran\u00e7a Linux para equipes corporativas.<\/p>\n<p>  <a href=\"https:\/\/api.whatsapp.com\/send\/?phone=5521980606699&#038;text=Ol%C3%A1!%20Tenho%20interesse%20no%20treinamento%20de%20Seguran%C3%A7a%20Linux.&#038;type=phone_number&#038;app_absent=0\"\n     target=\"_blank\" rel=\"noopener noreferrer\"\n     style=\"display:inline-flex;align-items:center;gap:12px;background:#25D366;color:#ffffff;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:16px;font-weight:700;padding:15px 32px;border-radius:100px;text-decoration:none;box-shadow:0 4px 16px rgba(37,211,102,0.45);letter-spacing:0.01em\"><br \/>\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"#ffffff\"><path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z\"\/><\/svg><br \/>\n    Falar no WhatsApp<br \/>\n  <\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Aprenda a usar o DenyHosts para bloquear IPs maliciosos via SSH e proteger seu servidor Linux. Seguran\u00e7a avan\u00e7ada ao seu alcance!<\/p>\n","protected":false},"author":1,"featured_media":1451,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"iawp_total_views":44,"footnotes":""},"categories":[8],"tags":[2390,576,5,2288,14,2391],"class_list":["post-1452","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-falhas-de-seguranca","tag-bloqueio-de-ips","tag-denyhosts","tag-firewall-linux","tag-protecao-contra-ataques","tag-seguranca-linux","tag-ssh-seguro"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Aprenda a usar o DenyHosts para bloquear IPs maliciosos via SSH e proteger seu servidor Linux. Seguran\u00e7a avan\u00e7ada ao seu alcance!\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Thiago Paes Rodrigues\"\/>\n\t<meta name=\"google-site-verification\" content=\"QKPfpDCzHmzKyfFk5j1KZW3HhROYTPeqwBN5qcJ8qcg\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_BR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"BLOG - JRT Technology Solutions - Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Aula 22: DenyHosts \u2014 bloqueio autom\u00e1tico de IPs maliciosos via SSH com sincroniza\u00e7\u00e3o - BLOG - JRT Technology Solutions\" \/>\n\t\t<meta property=\"og:description\" content=\"Aprenda a usar o DenyHosts para bloquear IPs maliciosos via SSH e proteger seu servidor Linux. Seguran\u00e7a avan\u00e7ada ao seu alcance!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"100\" \/>\n\t\t<meta property=\"og:image:height\" content=\"75\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-07-09T21:01:08+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-07-09T21:01:08+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/profile.php?id=61590814880509\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Aula 22: DenyHosts \u2014 bloqueio autom\u00e1tico de IPs maliciosos via SSH com sincroniza\u00e7\u00e3o - BLOG - JRT Technology Solutions\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Aprenda a usar o DenyHosts para bloquear IPs maliciosos via SSH e proteger seu servidor Linux. Seguran\u00e7a avan\u00e7ada ao seu alcance!\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/07\\\/09\\\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\\\/#blogposting\",\"name\":\"Aula 22: DenyHosts \\u2014 bloqueio autom\\u00e1tico de IPs maliciosos via SSH com sincroniza\\u00e7\\u00e3o - BLOG - JRT Technology Solutions\",\"headline\":\"Aula 22: DenyHosts \\u2014 bloqueio autom\\u00e1tico de IPs maliciosos via SSH com sincroniza\\u00e7\\u00e3o\",\"author\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/ai-image-1783630856151.jpg\",\"width\":1440,\"height\":1024,\"caption\":\"Aula 22: DenyHosts \\u2014 bloqueio autom\\u00e1tico de IPs maliciosos via SSH com sincroniza\\u00e7\\u00e3o\"},\"datePublished\":\"2026-07-09T18:01:08-03:00\",\"dateModified\":\"2026-07-09T18:01:08-03:00\",\"inLanguage\":\"pt-BR\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/07\\\/09\\\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/07\\\/09\\\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\\\/#webpage\"},\"articleSection\":\"Falhas de Seguran\\u00e7a, bloqueio de IPs, DenyHosts, firewall linux, prote\\u00e7\\u00e3o contra ataques, seguran\\u00e7a linux, SSH seguro\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/07\\\/09\\\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jrtx.com.br\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/falhas-de-seguranca\\\/#listItem\",\"name\":\"Falhas de Seguran\\u00e7a\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/falhas-de-seguranca\\\/#listItem\",\"position\":2,\"name\":\"Falhas de Seguran\\u00e7a\",\"item\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/falhas-de-seguranca\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/07\\\/09\\\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\\\/#listItem\",\"name\":\"Aula 22: DenyHosts \\u2014 bloqueio autom\\u00e1tico de IPs maliciosos via SSH com sincroniza\\u00e7\\u00e3o\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/07\\\/09\\\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\\\/#listItem\",\"position\":3,\"name\":\"Aula 22: DenyHosts \\u2014 bloqueio autom\\u00e1tico de IPs maliciosos via SSH com sincroniza\\u00e7\\u00e3o\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/category\\\/falhas-de-seguranca\\\/#listItem\",\"name\":\"Falhas de Seguran\\u00e7a\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#organization\",\"name\":\"JRT Technology Solutions | Tecnologia e Inova\\u00e7\\u00e3o para Empresas\",\"description\":\"Um espa\\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\\u00e1tica e atual. Aqui voc\\u00ea encontra novidades, an\\u00e1lises, tutoriais e reflex\\u00f5es sobre inova\\u00e7\\u00e3o, intelig\\u00eancia artificial, gadgets, programa\\u00e7\\u00e3o e tend\\u00eancias digitais. Nosso objetivo \\u00e9 simplificar o complexo, ajudar voc\\u00ea a se manter atualizado e transformar conhecimento em pr\\u00e1tica no seu dia a dia.\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/\",\"telephone\":\"+552138277513\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/cropped-logo-mini.jpg\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/07\\\/09\\\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\\\/#organizationLogo\",\"width\":100,\"height\":75},\"image\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/07\\\/09\\\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/profile.php?id=61590814880509\",\"https:\\\/\\\/www.instagram.com\\\/jrtx.tech\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/\",\"name\":\"Thiago Paes Rodrigues\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/07\\\/09\\\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cdfdf5f766c59d9c9acab959751c31c3442acd94d4b2927c51d2a0c31b50822?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Thiago Paes Rodrigues\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/07\\\/09\\\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\\\/#webpage\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/07\\\/09\\\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\\\/\",\"name\":\"Aula 22: DenyHosts \\u2014 bloqueio autom\\u00e1tico de IPs maliciosos via SSH com sincroniza\\u00e7\\u00e3o - BLOG - JRT Technology Solutions\",\"description\":\"Aprenda a usar o DenyHosts para bloquear IPs maliciosos via SSH e proteger seu servidor Linux. Seguran\\u00e7a avan\\u00e7ada ao seu alcance!\",\"inLanguage\":\"pt-BR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/07\\\/09\\\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/author\\\/thiago\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/ai-image-1783630856151.jpg\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/07\\\/09\\\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\\\/#mainImage\",\"width\":1440,\"height\":1024,\"caption\":\"Aula 22: DenyHosts \\u2014 bloqueio autom\\u00e1tico de IPs maliciosos via SSH com sincroniza\\u00e7\\u00e3o\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/2026\\\/07\\\/09\\\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\\\/#mainImage\"},\"datePublished\":\"2026-07-09T18:01:08-03:00\",\"dateModified\":\"2026-07-09T18:01:08-03:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/\",\"name\":\"JRT Technology Solutions | Tecnologia e Inova\\u00e7\\u00e3o para Empresas\",\"alternateName\":\"JRT Technology Solutions | Tecnologia e Inova\\u00e7\\u00e3o para Empresas\",\"description\":\"Um espa\\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\\u00e1tica e atual. Aqui voc\\u00ea encontra novidades, an\\u00e1lises, tutoriais e reflex\\u00f5es sobre inova\\u00e7\\u00e3o, intelig\\u00eancia artificial, gadgets, programa\\u00e7\\u00e3o e tend\\u00eancias digitais. Nosso objetivo \\u00e9 simplificar o complexo, ajudar voc\\u00ea a se manter atualizado e transformar conhecimento em pr\\u00e1tica no seu dia a dia.\",\"inLanguage\":\"pt-BR\",\"publisher\":{\"@id\":\"https:\\\/\\\/jrtx.com.br\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Aula 22: DenyHosts \u2014 bloqueio autom\u00e1tico de IPs maliciosos via SSH com sincroniza\u00e7\u00e3o - BLOG - JRT Technology Solutions","description":"Aprenda a usar o DenyHosts para bloquear IPs maliciosos via SSH e proteger seu servidor Linux. Seguran\u00e7a avan\u00e7ada ao seu alcance!","canonical_url":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"QKPfpDCzHmzKyfFk5j1KZW3HhROYTPeqwBN5qcJ8qcg","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/#blogposting","name":"Aula 22: DenyHosts \u2014 bloqueio autom\u00e1tico de IPs maliciosos via SSH com sincroniza\u00e7\u00e3o - BLOG - JRT Technology Solutions","headline":"Aula 22: DenyHosts \u2014 bloqueio autom\u00e1tico de IPs maliciosos via SSH com sincroniza\u00e7\u00e3o","author":{"@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author"},"publisher":{"@id":"https:\/\/jrtx.com.br\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/07\/ai-image-1783630856151.jpg","width":1440,"height":1024,"caption":"Aula 22: DenyHosts \u2014 bloqueio autom\u00e1tico de IPs maliciosos via SSH com sincroniza\u00e7\u00e3o"},"datePublished":"2026-07-09T18:01:08-03:00","dateModified":"2026-07-09T18:01:08-03:00","inLanguage":"pt-BR","mainEntityOfPage":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/#webpage"},"isPartOf":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/#webpage"},"articleSection":"Falhas de Seguran\u00e7a, bloqueio de IPs, DenyHosts, firewall linux, prote\u00e7\u00e3o contra ataques, seguran\u00e7a linux, SSH seguro"},{"@type":"BreadcrumbList","@id":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog#listItem","position":1,"name":"Home","item":"https:\/\/jrtx.com.br\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/category\/falhas-de-seguranca\/#listItem","name":"Falhas de Seguran\u00e7a"}},{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/category\/falhas-de-seguranca\/#listItem","position":2,"name":"Falhas de Seguran\u00e7a","item":"https:\/\/jrtx.com.br\/blog\/category\/falhas-de-seguranca\/","nextItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/#listItem","name":"Aula 22: DenyHosts \u2014 bloqueio autom\u00e1tico de IPs maliciosos via SSH com sincroniza\u00e7\u00e3o"},"previousItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/#listItem","position":3,"name":"Aula 22: DenyHosts \u2014 bloqueio autom\u00e1tico de IPs maliciosos via SSH com sincroniza\u00e7\u00e3o","previousItem":{"@type":"ListItem","@id":"https:\/\/jrtx.com.br\/blog\/category\/falhas-de-seguranca\/#listItem","name":"Falhas de Seguran\u00e7a"}}]},{"@type":"Organization","@id":"https:\/\/jrtx.com.br\/blog\/#organization","name":"JRT Technology Solutions | Tecnologia e Inova\u00e7\u00e3o para Empresas","description":"Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.","url":"https:\/\/jrtx.com.br\/blog\/","telephone":"+552138277513","logo":{"@type":"ImageObject","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg","@id":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/#organizationLogo","width":100,"height":75},"image":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/#organizationLogo"},"sameAs":["https:\/\/www.facebook.com\/profile.php?id=61590814880509","https:\/\/www.instagram.com\/jrtx.tech\/"]},{"@type":"Person","@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author","url":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/","name":"Thiago Paes Rodrigues","image":{"@type":"ImageObject","@id":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cdfdf5f766c59d9c9acab959751c31c3442acd94d4b2927c51d2a0c31b50822?s=96&d=mm&r=g","width":96,"height":96,"caption":"Thiago Paes Rodrigues"}},{"@type":"WebPage","@id":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/#webpage","url":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/","name":"Aula 22: DenyHosts \u2014 bloqueio autom\u00e1tico de IPs maliciosos via SSH com sincroniza\u00e7\u00e3o - BLOG - JRT Technology Solutions","description":"Aprenda a usar o DenyHosts para bloquear IPs maliciosos via SSH e proteger seu servidor Linux. Seguran\u00e7a avan\u00e7ada ao seu alcance!","inLanguage":"pt-BR","isPartOf":{"@id":"https:\/\/jrtx.com.br\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/#breadcrumblist"},"author":{"@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author"},"creator":{"@id":"https:\/\/jrtx.com.br\/blog\/author\/thiago\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/07\/ai-image-1783630856151.jpg","@id":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/#mainImage","width":1440,"height":1024,"caption":"Aula 22: DenyHosts \u2014 bloqueio autom\u00e1tico de IPs maliciosos via SSH com sincroniza\u00e7\u00e3o"},"primaryImageOfPage":{"@id":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/#mainImage"},"datePublished":"2026-07-09T18:01:08-03:00","dateModified":"2026-07-09T18:01:08-03:00"},{"@type":"WebSite","@id":"https:\/\/jrtx.com.br\/blog\/#website","url":"https:\/\/jrtx.com.br\/blog\/","name":"JRT Technology Solutions | Tecnologia e Inova\u00e7\u00e3o para Empresas","alternateName":"JRT Technology Solutions | Tecnologia e Inova\u00e7\u00e3o para Empresas","description":"Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.","inLanguage":"pt-BR","publisher":{"@id":"https:\/\/jrtx.com.br\/blog\/#organization"}}]},"og:locale":"pt_BR","og:site_name":"BLOG - JRT Technology Solutions - Um espa\u00e7o dedicado a explorar o universo da tecnologia de forma clara, pr\u00e1tica e atual. Aqui voc\u00ea encontra novidades, an\u00e1lises, tutoriais e reflex\u00f5es sobre inova\u00e7\u00e3o, intelig\u00eancia artificial, gadgets, programa\u00e7\u00e3o e tend\u00eancias digitais. Nosso objetivo \u00e9 simplificar o complexo, ajudar voc\u00ea a se manter atualizado e transformar conhecimento em pr\u00e1tica no seu dia a dia.","og:type":"article","og:title":"Aula 22: DenyHosts \u2014 bloqueio autom\u00e1tico de IPs maliciosos via SSH com sincroniza\u00e7\u00e3o - BLOG - JRT Technology Solutions","og:description":"Aprenda a usar o DenyHosts para bloquear IPs maliciosos via SSH e proteger seu servidor Linux. Seguran\u00e7a avan\u00e7ada ao seu alcance!","og:url":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/","og:image":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg","og:image:secure_url":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg","og:image:width":100,"og:image:height":75,"article:published_time":"2026-07-09T21:01:08+00:00","article:modified_time":"2026-07-09T21:01:08+00:00","article:publisher":"https:\/\/www.facebook.com\/profile.php?id=61590814880509","twitter:card":"summary_large_image","twitter:title":"Aula 22: DenyHosts \u2014 bloqueio autom\u00e1tico de IPs maliciosos via SSH com sincroniza\u00e7\u00e3o - BLOG - JRT Technology Solutions","twitter:description":"Aprenda a usar o DenyHosts para bloquear IPs maliciosos via SSH e proteger seu servidor Linux. Seguran\u00e7a avan\u00e7ada ao seu alcance!","twitter:image":"https:\/\/jrtx.com.br\/blog\/wp-content\/uploads\/2026\/03\/cropped-logo-mini.jpg"},"aioseo_meta_data":{"post_id":"1452","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-07-09 21:03:18","updated":"2026-07-09 21:03:18"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/jrtx.com.br\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/jrtx.com.br\/blog\/category\/falhas-de-seguranca\/\" title=\"Falhas de Seguran\u00e7a\">Falhas de Seguran\u00e7a<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tAula 22: DenyHosts \u2014 bloqueio autom\u00e1tico de IPs maliciosos via SSH com sincroniza\u00e7\u00e3o\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/jrtx.com.br\/blog"},{"label":"Falhas de Seguran\u00e7a","link":"https:\/\/jrtx.com.br\/blog\/category\/falhas-de-seguranca\/"},{"label":"Aula 22: DenyHosts \u2014 bloqueio autom\u00e1tico de IPs maliciosos via SSH com sincroniza\u00e7\u00e3o","link":"https:\/\/jrtx.com.br\/blog\/2026\/07\/09\/aula-22-denyhosts-bloqueio-automatico-de-ips-maliciosos-via\/"}],"_links":{"self":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts\/1452","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1452"}],"version-history":[{"count":0,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/posts\/1452\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/media\/1451"}],"wp:attachment":[{"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1452"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1452"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jrtx.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1452"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}