A batida de porta é uma forma de proteger um servidor fechando portas de firewall – mesmo aquelas que você sabe que serão usadas. Essas portas são abertas sob demanda se – e somente se – a solicitação de conexão fornecer a batida secreta.
Índice
Na década de 1920, quando a proibição estava em pleno andamento, se você quisesse entrar em um bar clandestino, precisava saber a batida secreta e batê-la corretamente para entrar.
A batida de porta é um equivalente moderno. Se você deseja que as pessoas tenham acesso aos serviços em seu computador, mas não deseja abrir seu firewall para a Internet, pode usar o recurso de bloqueio de porta. Ele permite que você feche as portas de seu firewall que permitem conexões de entrada e as abra automaticamente quando um padrão pré-arranjado de tentativas de conexão é feito. A sequência de tentativas de conexão atua como uma batida secreta. Outra batida secreta fecha a porta.
Port knocking é uma novidade, mas é importante saber que é um exemplo de segurança através da obscuridade e que esse conceito é fundamentalmente falho. O segredo de como acessar um sistema é seguro porque apenas aqueles em um grupo específico sabem disso. Mas uma vez que esse segredo seja descoberto – seja porque foi revelado, observado, adivinhado ou elaborado – sua segurança é nula. É melhor você proteger seu servidor de outras maneiras mais fortes, como exigir logins baseados em chave para um servidor SSH .
As abordagens mais robustas para a segurança cibernética são multicamadas, portanto, talvez o bloqueio de portas deva ser uma dessas camadas. Quanto mais camadas, melhor, certo? No entanto, você pode argumentar que a detecção de portas não acrescenta muito (se é que agrega) a um sistema seguro e devidamente fortalecido.
A cibersegurança é um tópico vasto e complicado, mas você não deve usar o bloqueio de portas como sua única forma de defesa.
Para demonstrar a batida de porta, vamos usá-lo para controlar a porta 22, que é a porta SSH. Usaremos uma ferramenta chamada knockd . Use apt-get
para instalar este pacote em seu sistema se você usa Ubuntu ou outra distribuição baseada em Debian. Em outras distribuições Linux, use a ferramenta de gerenciamento de pacotes de sua distribuição Linux.
Digite o seguinte:
sudo apt-get install knockd
Você provavelmente já tem o firewall iptables instalado em seu sistema, mas pode ser necessário instalar o iptables-persistent
pacote. Ele lida com o carregamento automático de iptable
regras salvas .
Digite o seguinte para instalá-lo:
sudo apt-get install iptables-persistent
Quando a tela de configuração IPV4 aparecer, pressione a barra de espaço para aceitar a opção “Sim”.
Pressione a barra de espaço novamente na tela de configuração IPv6 para aceitar a opção “Sim” e seguir em frente.
O comando a seguir informa iptables
para permitir que as conexões estabelecidas e em andamento continuem. Agora vamos emitir outro comando para fechar a porta SSH.
Se alguém estiver conectado por SSH quando emitirmos este comando, não queremos que ele seja cortado:
sudo iptables -A INPUT -m conntrack --ctstate ESTABELECIDO, RELACIONADO -j ACEITAR
Este comando adiciona uma regra ao firewall, que diz:
-m
parâmetro faz iptables
com que sejam usados módulos de correspondência de pacote extras – neste caso, aquele chamado conntrack
funciona com os recursos de rastreamento de conexão de rede do kernel.Agora podemos emitir o comando para fechar a porta:
sudo iptables -A INPUT -p tcp --dport 22 -j REJEITAR
Este comando adiciona uma regra ao firewall, que diz:
Devemos iniciar o netfilter-persistent
daemon. Podemos fazer isso com este comando:
sudo systemctl start netfilter-persistent
Queremos netfilter-persistent
passar por um ciclo de salvar e recarregar, para que ele carregue e controle as iptable
regras.
Digite os seguintes comandos:
sudo netfilter-persistent save
sudo netfilter-persistent reload
Agora você instalou os utilitários e a porta SSH está fechada (com sorte, sem encerrar a conexão de ninguém). Agora, é hora de configurar a batida secreta.
Existem dois arquivos que você edita para configurar knockd
. O primeiro é o seguinte knockd
arquivo de configuração:
sudo gedit /etc/knockd.conf
O gedit
editor é aberto com o knockd
arquivo de configuração carregado.
Vamos editar este arquivo para atender às nossas necessidades. As seções nas quais estamos interessados são “openSSH” e “closeSSH”. As quatro entradas a seguir estão em cada seção:
iptables
firewall quando a ação abrir ou fechar é acionada. Esses comandos adicionam uma regra ao firewall (para abrir a porta) ou a retiram (para fechar a porta).A seção “openSSH” pode ser lida como “uma solicitação de conexão TCP deve ser feita às portas 7000, 8000 e 9000 – nessa ordem e em 5 segundos – para que o comando para abrir a porta 22 seja enviado ao firewall”.
A seção “closeSSH” pode ser lida como “uma solicitação de conexão TCP deve ser feita às portas 9000, 8000 e 7000 – nessa ordem e em 5 segundos – para que o comando de fechamento da porta 22 seja enviado ao firewall”.
As entradas de “comando” nas seções openSSH e closeSSH permanecem as mesmas, exceto por um parâmetro. É assim que eles são compostos:
As edições que faremos no arquivo são destacadas em vermelho abaixo:
Estendemos o “seq_timeout” para 15 segundos. Isso é generoso, mas se alguém está disparando manualmente em solicitações de conexão, ele pode precisar de muito tempo.
Na seção “openSSH”, alteramos a -A
opção (anexar) no comando para -I
(inserir). Este comando insere uma nova regra de firewall no topo da lista de regras de firewall. Se você deixar a -A
opção, ela acrescentará a lista de regras do firewall e a colocará no final .
O tráfego de entrada é testado em relação a cada regra de firewall na lista de cima para baixo. Já temos uma regra que fecha a porta 22. Portanto, se o tráfego de entrada for testado em relação a essa regra antes de ver a regra que permite o tráfego, a conexão é recusada; se ele vir essa nova regra primeiro, a conexão será permitida.
O comando close remove a regra adicionada por openSSH das regras de firewall. O tráfego SSH é mais uma vez tratado pela regra pré-existente “a porta 22 está fechada”.
Depois de fazer essas edições, salve o arquivo de configuração.
O knockd
arquivo de controle é totalmente mais simples. Antes de mergulharmos e editarmos isso, no entanto, precisamos saber o nome interno de nossa conexão de rede; para encontrá-lo, digite este comando:
endereço de ip
A conexão que esta máquina usa para pesquisar este artigo é chamada enp0s3
. Anote o nome da sua conexão.
O seguinte comando edita o knockd
arquivo de controle:
sudo gedit / etc / default / knockd
Aqui está o knockd
arquivo em gedit
.
As poucas edições que precisamos fazer são destacadas em vermelho:
Alteramos a entrada “START_KNOCKD =” de 0 para 1.
Também removemos o hash #
do início da entrada “KNOCKD_OPTS =” e substituímos “eth1” pelo nome de nossa conexão de rede enp0s3
,. Claro, se sua conexão de rede for eth1
, você não a mudará.
É hora de ver se isso funciona. knockd
Iniciaremos o daemon com este comando:
sudo systemctrl start knockd
Agora, vamos pular em outra máquina e tentar conectar. Instalamos a knockd
ferramenta nesse computador também, não porque desejamos configurar o bloqueio de portas, mas porque o knockd
pacote fornece outra ferramenta chamada knock
. Usaremos esta máquina para disparar em nossa sequência secreta e bater para nós.
Use o seguinte comando para enviar sua sequência secreta de solicitações de conexão para as portas no computador host de batida de porta com o endereço IP 192.168.4.24:
knock 192.168.4.24 7000 8000 9000 -d 500
Isso informa knock
para direcionar o computador no endereço IP 192.168.4.24 e disparar uma solicitação de conexão para as portas 7000, 8000 e 9000, por sua vez, com um -d
(atraso) de 500 milissegundos entre elas.
Um usuário chamado “dave” faz uma solicitação SSH para 192.168.4.24:
ssh dave@192.168.4.24
Sua conexão é aceita, ele insere sua senha e sua sessão remota é iniciada. Seu prompt de comando muda de dave@nostromo
para dave@howtogeek
. Para sair do computador remoto, ele digita:
Saída
Seu prompt de comando retorna ao computador local. Ele usa knock
mais uma vez, e desta vez, visa as portas na ordem inversa para fechar a porta SSH no computador remoto.
knock 192.168.4.24 9000 8000 7000 -d 500
Reconhecidamente, esta não foi uma sessão remota particularmente frutífera, mas demonstra a abertura e o fechamento da porta através de batidas de porta e se encaixa em uma única captura de tela.
Então, como é isso do outro lado? O administrador do sistema no host knocking de porta usa o seguinte comando para visualizar as novas entradas que chegam no log do sistema:
tail -f / var / log / syslog
iptables
lista de regras é enviado. Ele permite o acesso via SSH na porta 22 do endereço IP específico do PC que deu a batida secreta correta (192.168.4.23).Agora, a única regra na iptables
lista de regras em relação à porta 22 é aquela que digitamos no início para fechar essa porta. Portanto, a porta 22 está fechada novamente.
Esse é o truque de salão do bombardeio. Trate isso como uma diversão e não o faça no mundo real. Ou, se necessário, não confie nele como sua única forma de segurança.
Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…
Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…
A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…
A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…
O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…
Para ver suas fotos mais de perto ou para uma edição precisa , você pode…