Utilização da técnica de Port Knocking para negação de acesso indevido e. ocultação de portas TCP / UPD em servidores Linux.



Documentos relacionados
IPTABLES. Helder Nunes

Redes de computadores

Segurança de Redes de Computadores

Segurança da Informação

Infra-Estrutura de Redes de Computadores

Firewall. Tutorial Firewall em Linux Acadêmicos: Felipe Zottis e Cleber Pivetta

Segurança de redes com Linux. Everson Scherrer Borges Willen Borges de Deus

Entendendo como funciona o NAT

Instalação e Configuração Iptables ( Firewall)

Linux Network Servers

Componentes de um sistema de firewall - II. Segurança de redes

O Nmap - Network Mapper é uma ferramenta de código aberto para exploração de rede e auditoria de segurança.

Firewalls. Prática de Laboratório. Maxwell Anderson INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DA PARAÍBA

Segurança com Iptables

Segurança de Redes. Firewall. Filipe Raulino

Uso do iptables como ferramenta de firewall.

UNIVERSIDADE FEDERAL DE PELOTAS

Aula 08. Firewall. Prof. Roitier Campos Gonçalves

Firewall. Qual a utilidade em instalar um firewall pessoal?

Professor Claudio Silva

Sistemas para Internet 06 Ataques na Internet

Segurança em Sistemas de Informação

Firewall. Alunos: Hélio Cândido Andersson Sales

Firewalls, um pouco sobre...


Iptables. Adailton Saraiva Sérgio Nery Simões

III WTR do POP-BA III Workshop de Tecnologias de Redes Ponto de Presença da RNP na Bahia Instrutor: Ibirisol Fontes Monitor: Jundaí Abdon.

Conexão rápida entre dois computadores em uma plataforma Linux

Firewall Iptables. Professor: João Paulo de Brito Gonçalves. Campus - Cachoeiro Curso Técnico de Informática

Firewall Iptables - Impasses

Firewalls. Firewalls

Nesse artigo abordaremos os principais aspectos de instalação e uso do NTOP no Fedora Core 4.

FIREWALL. Prof. Fabio de Jesus Souza. Professor Fabio Souza

ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL

Curso de extensão em Administração de sistemas GNU/Linux: redes e serviços

OpenSSH

Usando o Nmap. A instalação do Nmap é bem simples. Após obter o código fonte execute os comandos abaixo: tar xjvpf nmap-3.48.tar.bz2 cd nmap-3.

Comandos Linux Comando tcpdump, guia de referência e introdução. Sobre este documento

Ameaças e Contramedidas de Host

Componentes de um sistema de firewall - I

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1

VPN entre Unimed Federação do Paraná e Singulares do Paraná. Gustavo Kochan Nunes dos Santos. Curso de Especialização em Redes e Segurança de Sistemas

Auditoria e Segurança de Sistemas Segurança de Redes de Computadores Adriano J. Holanda

FACULDADE DE TÉCNOLOGIA SENAC SEGURANÇA DA INFORMAÇÃO

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1

Backups Via FTP (File Transfer Protocol)

CSAU Guia: Manual do CSAU 10.0 como implementar e utilizar.

Características de Firewalls

Políticas de Segurança de Sistemas

(In)segurança Utilizando Software Livre. Maycon Maia Vitali

Orientador de Curso: Rodrigo Caetano Filgueira

Oficina de ferramentas de Gerência para Redes em Linux

Capítulo 5 Métodos de Defesa

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO

Algumas Leis da Segurança

ANGELLIRA RASTREAMENTO SATELITAL LTDA. Sistema LIRALOG. Manual de instalação e atualização TI 30/07/2014

GUIA INTEGRA SERVICES E STATUS MONITOR

4º Semestre. Aula 15 Serviços Internet (FTP)

Gerenciamento de Redes de Computadores. Pfsense Introdução e Instalação

Manual Comunica S_Line

Instalação: permite baixar o pacote de instalação do agente de coleta do sistema.

Sistema Operacional Unidade 12 Comandos de Rede e Acesso Remoto

Como é o Funcionamento do LTSP

Acesso Remoto Placas de captura

Segurança na Rede Local Redes de Computadores

01 - Entendendo um Firewall. Prof. Armando Martins de Souza armandomartins.souza@gmail.com

Hackers. Seus dados podem ser inúteis, mas seu computador em si pode ainda ser um recurso valioso.

ADMINISTRAÇÃO DE REDES I LINUX. Firewall. Frederico Madeira LPIC 1, CCNA fred@madeira.eng.br

Passo a passo para instalação de um Servidor SSH

Segurança de Redes. Funcionamento de um ataque. Varreduras Analisadores de vulnerabilidades. Levantamento de informações.

Unidade Curricular Segurança em Redes. Diego Dummer Vaz. THC-Hydra

Kerio Exchange Migration Tool

Obs: Endereços de Rede. Firewall em Linux Kernel 2.4 em diante. Obs: Padrões em Intranet. Instalando Interface de Rede.

Segurança em Sistemas de Informação Tecnologias associadas a Firewall

Curso Firewall. Sobre o Curso de Firewall. Conteúdo do Curso

Projeto e Instalação de Servidores Servidores Linux Aula 6 Firewall e Proxy

Redes de Computadores

SEG. EM SISTEMAS E REDES. 03. Vulnerabilidades em redes. Prof. Ulisses Cotta Cavalca <ulisses.cotta@gmail.com>

Projeto Integrador Projeto de Redes de Computadores

O projeto Metasploit é um framework que foi criado em 2003 por HD Moore e é uma plataforma que permite a verificação do estado da segurança dos

Configurando o DDNS Management System

Firewalls em Linux. Tutorial Básico. André Luiz Rodrigues Ferreira

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

Indústria de Cartão de Pagamento (PCI)

Procedimento para configuração de Redirecionamento de Portas

Rotina de Discovery e Inventário

Segurança em Sistemas de Informação

Firewall. Professor: João Paulo de Brito Gonçalves Disciplina: Serviços de Redes. Campus Cachoeiro Curso Técnico em Informática

Configurando DDNS no Stand Alone

Prática NAT/Proxy. Edgard Jamhour. Esses exercícios devem ser executados através do servidor de máquinas virtuais: espec.ppgia.pucpr.

Algumas das características listada nela:

SOUZA, NATHAN BORGES, TAIS OTT RELATÓRIO SOBRE FERRAMENTAS DE DIAGNOSTICOS ERD COMMANDER

FTP Protocolo de Transferência de Arquivos

Firewall IPTables e Exemplo de Implementação no Ambiente Corporativo.

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

GUIA PRÁTICO DE INSTALAÇÃO

Transcrição:

Utilização da técnica de Port Knocking para negação de acesso indevido e ocultação de portas TCP / UPD em servidores Linux Diego Pereira do Nascimento Curso de Especialização em Redes e Segurança de Sistemas Pontifícia Universidade Católica do Paraná Curitiba, janeiro de 2013 Resumo Este artigo tem como objetivo demonstrar a utilização da técnica de Port Knocking em servidores Linux, para bloqueio de diversas formas de ameaça presentes na rede, como Port Scans, Banner Grabbing, Vulnerability Scanning, Brute Forces, Worms, ataques DoS e DdoS, etc. Para demonstração da técnica, será montada uma rede virtual com um servidor Linux que implemente Port Knocking. Feito isto, serão realizados diversos testes, no sentido de tentar obter informações de portas, versões e vulnerabilidades do servidor Linux, a partir de um computador client. O artigo irá descrever os resultados obtidos e apresentar os resultados dos testes. 1 Introdução Com o crescente aumento da utilização de transações online, cresce também o número de ameaças online, como o risco de vazamento de informações confidenciais, risco de comprometimento da integridade das informações, indisponibilidade, Worms de rede, 0-day exploits e diversas outra formas de comprometimento da rede. Grande parte das informações de enviroment de servidores podem ser obtidas de forma muito simples, através do uso de técnicas de Port Scans, Banner Grabbing, Vulnerability Scanning. Através do uso destas técnicas é possível obter informações importantes e planejar ataques utilizando-se de brute forces, exploits.

Com o intuito de proteger o sistema contra port scans e outros tipos de técnicas de probing surgiu a implementação de Port Knocking em servidores *NIX, que possibilita o bloqueio de portas TCP/UDP para o acesso a serviços críticos do sistema (SSH, Telnet, etc) e previne o comprometimento do servidor contra ameaças já citadas, além de ameaças automatizadas como Worms e Bot Nets. 2 O que é o Port Knocking O Port Knocking é um método que permite abrir portas em um firewall externamente através da execução de uma tentativa de conexão em uma sequência de portas pré determinada, permitindo a implementação de segurança pela obscuridade. Após a sequência de tentativas de conexão nas portas corretas é recebida pelo daemon de Port Knocking, o firewall abre de forma dinâmica as portas determinadas pela regra de Port Knocking, de forma a permitir o computador cliente a conectar no computador servidor, nas portas especificadas pela regra. Exemplo: o computador cliente envia uma sequência de tentativas de acesso (knock) nas portas 4464, 9873, 9873, 1235, nesta ordem, fazendo com que a porta 22 (SSH) seja liberada para acesso remoto. Existe, no entanto uma variante de implementação de Port Knocking, chamada Single Packet Authorization, onde apenas uma tentativa de acesso, ou knock, é nececessária, sendo este pacote encriptado [1]. O objetivo principal de se usar Port Knocking, consiste em prevenir o scanning do servidor por vulnerabilidades que possam ser exploradas por um atacante, utilizando-se de um port scan (como o aplicativo nmap), pois se o atacante não conhecer a sequência correta de portas, irá enxergar as portas protegidas como se estivessem fechadas pelo firewall. Esta técnica pode ser implementada através da configuração de um daemon que verifique os logs de firewall e modifique suas regras de acesso quando observar que uma determinada sequência de portas foi acessada. 2.1 Como funciona O funcionamento do Port Knocking pode ser melhor entendido observando-se a sequência de imagens que segue abaixo. Na imagem da Figura 1, pode-se observar que o cliente A não consegue se conectar à aplicação da porta n e o cliente B não consegue estabelecer uma conexão com nenhuma porta. Na Figura 2 é demonstrado um client enviando

Figura 1 Figura 2 Figura 3 Figura 4 uma sequência de portas ao servidor. Como esta sequência de portas já é conhecida pelo servidor de Port Knocking, a porta n é liberada pelo firewall para acesso pelo client, conforme demonstrado na Figura 3. Desta forma, após a porta ser liberada, o client procede normalmente com a conexão, de acordo com o exibido na Figura 4 [2]. 2.2 Vantagens x Desvantagens Abaixo serão apresentados as vantagens e desvantagens da implementação da técnica de Port Knocking em um servidor: Inibir o uso de ferramentas de Port Scan Inibir Brute Forces em serviços de gerência (SSH, Telnet) Logs de acesso menores e mais significativos (devido ao menor número de acessos diretos à porta) Inibir infecção por worms de rede Evitar bots de scans de vulnerabilidades 0-day Necessidade de configurar cada aplicação cliente para usar Port Knocking Se o daemon do Port knocking trava, o sistema fica inacessível (embora algumas implementações de PK possuam mecanismos para remediar este problema) Delay para iniciar uma nova conexão, dependendo das configs do Port Knoking (embora o delay seja de apenas alguns milessegundos, já inviabilizaria a utilização em aplicações real-time) Sequência de portas pode ser obtida através de um ataque de man-in-the-middle (necessário utilizar SPA) Sequência de portas pode ser descoberta através de um ataque de brute force (necessário utilizar SPA)

Desencorajar um ataque ao servidor, devido ao trabalho extra para burlar o Port Knocking Fácil implementação no servidor Não é possível detectar que existe um daemon de Port Knocking rodando no servidor Diminuição geral do nível de segurança do sistema, de acordo com a teoria de Risk Compensation [2] É necessário que não existam barreiras entre o client e o servidor de Port Knocking [5] Trabalhoso modificar a sequência de portas (requer modificar todos os clients) O envio da sequência de portas pode ser criptografado, permitindo proteger a implementação de ataques de man-inthe-middle e brute force 2.3 Single Packet Autorization (SPA) Single Packet Authorization (SPA) é uma variante de port knocking que possui basicamente o mesmo objetivo, porém um mecanismo de trasmissão bastante diferente. No SPA, o knock é chamado de Authorization Packet (AP) que é encapsulado em um único pacote. Esta característica, garante certas vantagens que não estão presentes com o uso do port knocking tradicional, tais quais, eliminação de problemas de entrega de pacotes fora de ordem. O SPA simplifica e torna mais seguro o processo ao realizar o encapsulamento de todas as informações necessárias em um único pacote, tipicamente UPD ou ICMPs. Devido ao aumento na complexidade de implementação, esta técnica não será abordada no trabalho [6]. 3 O cenário Para mostrar o funcionamento da implementação de Port Knocking, consideremos um servidor Linux com as seguintes características: Endereço IP: 192.168.11.148 / Hostname: ubuntu-server / Sistema Operacional: Ubuntu 12.04 / Servidor SSH: OpenSSH 5.9 / Firewall: iptables 1.4.12 / Daemon de Port Knocking: knockd 0.5 / nmap 6.25

Neste servidor será configurado um Firewall iptables implementando um daemon de Port Knocking chamado knockd para a porta de SSH (22). A escolha do knockd foi realizada baseada em sua simplicidade de configuração e por estar embutida na maioria das distros atuais, porém existem muitos outros daemons, como Fwknop, Tariq, PortknockO, etc, e clients como KnockKnock, WebKnock, It s me, etc. 3.1 Configuração do ambiente Abaixo serão apresentados os passos realizados para a configuração de um daemon de Port Knocking no ambiente já mencionado. 3.1.1 Configuração do daemon do knockd (/etc/knockd.conf) Abaixo o conteúdo do arquivo de configuração do daemon de Port Knocking, knockd: root@ubuntu:/# cat /etc/knockd.conf [options]! logfile = /var/log/knockd.log [openssh]! sequence = 7000,8000,9000! seq_timeout = 5! command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT! tcpflags = syn [closessh]! sequence = 9000,8000,7000! seq_timeout = 5! command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT! tcpflags = syn Como pode-se observar acima, a sequência de portas definida para abrir a porta 22 no firewall é a: 7000, 8000, 9000. Para fechar o acesso à porta 22, a sequência é a: 9000, 8000, 7000. Após realizado os ajustes na configuração, foi iniciado o daemon do knockd com o comando sudo service knockd start. 3.1.2 Configuração do firewall iptables Após configurado e inicializado o knockd, o iptables foi configurado para não mais aceitar conexões de qualquer origem na porta 22, com o seguinte comando:

# /sbin/iptables -A INPUT -p tcp --dport ssh -j REJECT É importante observar que se faz necessário usar o target REJECT, pois se usarmos o DROP, os programas de Port Scan detectam que a porta está protegida pelo firewall (filtered) e isto seria indesejado pois daria uma pista para o atacante de que existe um firewall filtrando os pacotes. Usando o target REJECT, a porta 22 é detectada como fechada (closed). 3.2 Abrindo portas no firewall Após configurado e ativado o knockd, para acessar a porta 22 se faz necessário enviar ao servidor a sequência de knocks correta, de forma que o acesso à porta desejada seja liberado pelo knockd no servidor. Para este fim, existe um programa client chamado knock que facilita o envio de knocks ao servidor. Porém, o uso deste programa não é obrigatório, visto que o knock pode ser realizado também de outras formas, como via programa Telnet. O uso do programa knock é demonstrado abaixo:./knock 192.168.11.148 7000 8000 9000 Este comando irá abrir o acesso à porta 22 no firewall a partir do IP do computador onde o comando foi executado. 3.2.2 Teste de acesso à porta 22 via Telnet Resultado do comando Telnet antes da ativação do daemon knockd: $ telnet 192.168.11.148 22 Trying 192.168.11.148... Connected to ubuntu-server. Escape character is '^]'. SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1 É possível observar que o acesso é realizado normalmente e conseguimos inclusive obter a versão do pacote do SSH instalado no servidor. Resultado do comando Telnet após a ativação do daemon knockd:

$ telnet 192.168.11.148 22 Trying 192.168.11.148... telnet: connect to address 192.168.11.148: Operation timed out out no Telnet. Neste caso, o acesso não é possível pois a porta está fechada, causando erro de time 3.3 Análise dos logs do sistema O seguinte log é apresentado no arquivo /var/log/knockd.log após o recebimento de uma sequência de knock válida: [2012-12-09 22:30] 192.168.11.144: openssh: Stage 1 [2012-12-09 22:30] 192.168.11.144: openssh: Stage 2 [2012-12-09 22:30] 192.168.11.144: openssh: Stage 3 [2012-12-09 22:30] 192.168.11.144: openssh: OPEN SESAME [2012-12-09 22:30] openssh: running command: /sbin/iptables -I INPUT -s 192.168.11.144 -p tcp --dport 22 -j ACCEPT Como pode-se observar no log, após o recebimento da sequência de 3 portas, identificadas no log por Stage 1, 2 e 3, é realizada a execução do comando definido no arquivo de configuração: /sbin/iptables -I INPUT -s 192.168.11.144 -p tcp --dport 22 -j ACCEPT, que faz com que a porta 22 seja aberta para o IP de origem do comando da sequência de portas correta (7000, 8000 e 9000, nesta ordem). Para demonstrar melhor, abaixo é exibida a tabela de regras do iptables após o envio da sequência de Port Knocking pelo computador client: # iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- MacBook-Diego anywhere tcp dpt:ssh DROP tcp -- anywhere anywhere tcp dpt:ssh Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

É possível perceber que foi criada uma regra com target ACCEPT na chain INPUT, tendo como source o computador que realizou o envio da sequência (MacBook-Diego). Abaixo o log encontrado em /var/log/knockd.log quando a porta é fechada novamente (timeout). [2013-01-13 07:45] 192.168.11.144: closessh: Stage 1 [2013-01-13 07:45] 192.168.11.144: closessh: sequence timeout (stage 1) 3.4 Banner Grabbing e Port Scans Resultado da varredura do nmap antes de ativar o knockd: $ sudo nmap -sv 192.168.11.148 Starting Nmap 6.25 ( http://nmap.org ) at 2012-12-09 22:29 BRST Nmap scan report for Ubuntu-Server (192.168.11.148) Host is up (0.0012s latency). Not shown: 997 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1 (Ubuntu Linux; protocol 2.0) 5555/tcp open http Apache httpd 2.2.22 ((Ubuntu)) 9876/tcp open http Apache httpd 2.2.22 ((Ubuntu)) Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel É possível detectar a porta 22 (SSH) como aberta e inclusive obter informações de versão detalhadas do serviço de SSH (OpenSSH 5.9p1 Debian 5ubuntu1), o que poderia facilitar para um invasor, que pode usar alguma vulnerabilidade conhecida desta versão para realizar um ataque ao servidor. Abaixo, o resultado da varredura do nmap no servidor após a ativação do knockd: $ sudo nmap -sv 192.168.11.148 Starting Nmap 6.25 ( http://nmap.org ) at 2013-01-13 15:21 BRST Nmap scan report for Ubuntu-Server (192.168.11.148) Host is up (0.0011s latency). Not shown: 998 closed ports PORT STATE SERVICE VERSION 5555/tcp open http Apache httpd 2.2.22 ((Ubuntu)) 9876/tcp open http Apache httpd 2.2.22 ((Ubuntu))

Como pode-se observar, não é mais possível detectar a porta 22, pois, a não ser que você conheça a sequência de portas, ela sempre será detectada como fechada. 3.5 Brute-force e DoS Com a utilização de ferramentas de brute-force (hydra) e DoS (t50) o resultado foi similar ao obtido nos testes já mencionados, sendo que todos os pacotes destinados à porta 22 são simplesmente ignorados pelo firewall caso o IP de origem dos pacotes não conheça a sequência de knock e consequentemente não tenha aberto antecipadamente a porta 22 para acesso remoto. Portanto, os milhares de pacotes enviados em um ataque de DoS não surtem nenhum efeito no servidor alvo, nem mesmo afetando o desempenho de forma perceptível. Abaixo um exemplo de como seria um ataque de brute-force ao servidor caso não estivesse protegido pela técnica de PK: # hydra -l diego -P /tmp/wordlist.txt -t12 192.168.11.148 ssh Hydra v7.3 (c)2012 by van Hauser/THC & David Maciejak - for legal purposes only Hydra (http://www.thc.org/thc-hydra) starting at 2013-01-06 20:01:38 [DATA] 12 tasks, 1 server, 11000002 login tries (l:1/p:11000002), ~916666 tries per task [DATA] attacking service ssh on port 22 [22][ssh] host: 192.168.11.148 login: diego password: eureka1 [STATUS] attack finished for 192.168.11.148 (waiting for children to finish) 1 of 1 target successfuly completed, 1 valid password found Hydra (http://www.thc.org/thc-hydra) finished at 2013-01-06 21:02:10 5 Conclusão Com o presente trabalho, concluí que é possível implementar uma camada extra de segurança em servidores linux, com o uso de Port Knocking de forma rápida e simples. A implementação da técnica pode prevenir a exposição do servidor contra muitas ameaças como Worms, Brute forces, redes zumbis realizando scans por servidores vulneráveis, ataques de DoS e DDoS, exploits 0-day, obtenção de informações de versão de pacotes e sistema operacional, visto que é inútil se o atacante não conseguir estabelecer uma conexão com o servidor, por não conhecer a sequência de knock. O aumento do uso de recursos de hardware após a implementação da técnica é imperceptível, porém um contra observado foi a implementação do lado do client, que exige que comandos sejam executados, de forma que a porta seja aberta no servidor (para cada serviço, seria necessário existir uma rotina de abertura

de portas). Outra particularidade do uso da técnica é que os knocks são dependentes de um caminho livre até o servidor final, ou seja, em uma grande rede, os firewalls no caminho precisariam permitir o acesso a estas portas de knock, além de estarem abertos a interceptação por um ataque de man-in-the-middle. Todavia, isto poderia ser prevenido com o uso de SPA (Single Packet Authorization), que emprega técnicas de encriptação para o envio dos knocks. Baseado em todos os fatos apresentados anteriormente e apesar de o presente trabalho ter utilizado uma implementação mais simples de Port Knocking, concluo que é viável implementar a técnica em grandes redes de computadores. Acredito que os benefícios apresentados superam as desvantagens e a segurança e disponibilidade do sistema aumentam consideravelmente, justificando seu uso. Porém é importante frisar que a técnica de Port Knocking não é infalível e muito menos uma forma definitiva de proteção, pois um atacante determinado a quebrar o sistema, provavelmente irá conseguir burlar o daemon de Port Knock através de brute force (apesar de existirem meios de tornar isto bastante difícil) ou outra técnica e por este motivo, não deve substituir outras formas de manutenção da segurança, como atualização periódica do sistema operacional, patches de segurança, firewall, IDS, IPS, etc. Bibliografia [1] http://en.wikipedia.org/wiki/port_knocking [2] http://www.portknocking.org/ [3] Wikipedia. Risk Compensation. Disponível em http://en.wikipedia.org/wiki/ Risk_compensation. Acessado em 30/10/12. [4] http://www.zeroflux.org/projects/knock [5] http://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/port-knocking.html [6] http://www.securitygeneration.com/wp-content/uploads/2010/05/an-analysis-of-port- Knocking-and-Single-Packet-Authorization-Sebastien-Jeanquier.pdf