FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD - Knock: "O poderoso abre/fecha porta".
 
08.07  
Inicio arrow Artigos arrow Knock: "O poderoso abre/fecha porta".
Principal
Inicio
Noticias
Artigos
Regras da Lista
Assinar a Lista
Histrico da Lista
Forum
Keyserver
PC-BSD: Artigos
PC-BSD: Notcias
Galeria de Imagens
Contador Usurios FUG
FUGs Estaduais
Downloads
Enquetes
FAQ
Resumo do Site
Links
Pesquisar
Contato
Sobre a FUG-BR
RSS / Twitter
-
DOC-BR (FUG BR)
Introduo
Projeto DOC-BR
Handbook
FAQ Oficial
-
+ Noticias
Alertas de Seguranca
Alertas em Ports
BSD em Geral
DaemonNews (Ingles)
MyFreeBSD
Todas Categorias
-
Login
Nome de Usurio

Senha

Lembrar login
Esqueceu sua senha?
Sem conta? Crie uma


Knock: "O poderoso abre/fecha porta". PDF Imprimir E-mail
Por Giancarlo Rubio   
17/10/2006
El Gran BeastieNesse artigo vamos conhecer o knock, daemon que permite que portas sejam abertas ou fechadas por demanda, dependendo "de quem bate à porta", ou seja de acordo com o IP originando a requisição. Esse artigo trata de um exemplo prático, simples e claro do funcionamento do knock. Este título foi o que chegou mais perto para a definição da função do Knock.

O que é Knock?

Knock é um poderoso daemon, que gerencia a abertura/fechamento das portas de um determinado computador a apenas os usuários que obtiverem a permissão ou conhecerem.

Como funciona?

O cliente envia requisições (bate) a uma série de portas predefinidas e a abre a porta desejada. No nosso caso a porta 22 do ssh será aberta.
 
Requisitos prévios para nossos exercícios são algum conhecimento básico em:

  • ipfw
  • ports

Instalando Knock

Sempre é recomendável atualizar a árvore dos ports para a instalação de qualquer aplicação.

Para aqueles que ainda não usam portsnap vamos baixar e extrair

#portsnap fetch extract

Atualizando o ports

#portsnap fetch update

Instalando o Knock

#cd /usr/ports/security/knock
make install clean


São mostradas as seguintes opções:

  •     Cliente, aquele que faz a requisição remota para abertura das portas;
  •     Servidor, aquele responsável por abrir a porta.

O cliente não é tão necessário, mais tarde explico porque, mas o servidor é obrigatório para o desenrolar do artigo.

O arquivo padrão está em /usr/local/etc/knockd.conf.sample

Copiamos para o nome certo, sem .sample


#cp /usr/local/etc/knockd.conf.sample /usr/local/etc/knockd.conf

Vamos ao arquivo de configuração, com meus comentários

#vi /usr/local/etc/knockd.conf

[options]
        logfile = /var/log/knockd.log     # Local que serão registrados os logs de abertura de portas
        interface = fxp0        #Interface que vai ouvir, normalmente a internet
#Abre o ssh
[openSSH]
        sequence    = 7000,8000,9000    #Sequencia de portas que o cliente deve "bater" para logar
        seq_timeout = 5            #Intervalo de tempo (milisegundos) para uma requisição entre portas
        command     = /sbin/ipfw -q add pass proto tcp src-ip %IP% dst-port 22    #Regra a ser adicionada no firewall
        tcpflags    = syn        #Podem ser usados as seguintes opções:syn,fin,ack e !ack,!syn,!fin
#Fecha o Ssh
[closeSSH]
        sequence    = 9000,8000,7000   
        seq_timeout = 5
        command     = /sbin/ipfw -q delete pass proto tcp src-ip %IP% dst-port 22
        tcpflags    = syn


Iniciando o daemon

#/usr/local/etc/rd.d/knockd start

Não sei porque o meu não iniciou assim, mais em todo caso iniciei na mão(-d daemon, -v verbose

#knockd -dv

Vamos ao funcionamento
Primeiro bloquei o ssh na sua máquina


su-2.05b# ipfw show
00100   0     0 deny ip from any to me dst-port 22
65535     0     0 allow ip from any to any
su-2.05b#


De fora da minha rede fiz um portscan, para ver as portas abertas usando o nmap (/usr/ports/security/nmap)

su-2.05b# nmap -sS 201.21.140.208

Starting Nmap 4.01 ( http://www.insecure.org/nmap/ ) at 2006-10-17 21:45 BRT
Interesting ports on virtua-cwbas128-208.ctb.virtua.com.br (201.21.140.208):
(The 1661 ports scanned but not shown below are in state: closed)
PORT    STATE    SERVICE
21/tcp  filtered ftp
22/tcp  filtered ssh
25/tcp  filtered smtp
80/tcp  filtered http
135/tcp filtered msrpc
136/tcp filtered profile
137/tcp filtered netbios-ns
138/tcp filtered netbios-dgm
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
587/tcp open     submission

Nmap finished: 1 IP address (1 host up) scanned in 41.260 seconds
su-2.05b#


A porta está fechada ok?

Vamo abri-la

Existem 2 formas (De fora da rede)


1- Usando o knock cliente

#knock 201.21.140.208 7000 8000 9000

2-Usando telnet, atente para o fato de serem regras simlultaneas, pois definimos o tempo em 5 milisegundos

#telnet 201.21.140.208 7000;telnet 201.21.140.208 8000;telnet 201.21.140.208 9000

Nosso /var/log/knockd.log

[2006-10-17 21:49] 200.0.0.0: openSSH: Stage 1
[2006-10-17 21:49] 200.0.0.0: openSSH: Stage 2
[2006-10-17 21:49] 200.0.0.0: openSSH: Stage 3
[2006-10-17 21:49] 200.0.0.0: openSSH: OPEN SESAME
[2006-10-17 21:49] openSSH: running command: /sbin/ipfw -q add pass proto tcp src-ip 200.0.0.0 dst-port 22

meu ipfw


su-2.05b# ipfw show
00100    4    176 deny ip from any to me dst-port 22
65100    0      0 allow ip from any to any proto tcp src-ip 200.0.0.0 dst-port 22
65000 6488 310002 allow ip from any to any
su-2.05b#


Pronto agora a porta esta aberta. Ele adicionou a regra 65100 com o ip da maquina cliente. Use a vontade a aplicação até necessitar que seja fechada a porta [closeSSH].


1- Usando o knock cliente

#knock 201.21.140.208 9000 8000 7000

2-Usando telnet, atente para o fato de serem regras simlultaneas, pois definimos o tempo em 5 milisegundos

#telnet 201.21.140.208 9000;telnet 201.21.140.208 8000;telnet 201.21.140.208 7000

Vamos verificar

su-2.05b# nmap -sS 201.21.140.208

Starting Nmap 4.01 ( http://www.insecure.org/nmap/ ) at 2006-10-17 22:03 BRT
Interesting ports on virtua-cwbas128-208.ctb.virtua.com.br (201.21.140.208):
(The 1661 ports scanned but not shown below are in state: closed)
PORT    STATE    SERVICE
21/tcp  filtered ftp
22/tcp  filtered ssh
25/tcp  filtered smtp
80/tcp  filtered http
135/tcp filtered msrpc
136/tcp filtered profile
137/tcp filtered netbios-ns
138/tcp filtered netbios-dgm
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
587/tcp open     submission

Nmap finished: 1 IP address (1 host up) scanned in 20.377 seconds
su-2.05b#


Porta fechada!!!!!

Simples não??

Resalvas:

  1. Nunca se sabe até aonde uma aplicação dessas deve gerenciar regras no firewall, lembre-se que ele executa como root, logo você é responsável pelo que faz.
  2. Evite usar essas portas default, coloque qualquer coisa diferente disso, ja existem scanner que varrem estas portas.

Comentrios
Por Ari Arantes em 23/10/2006 18:50:31
Ser que conseguiu acessar de fora? 
 
00100 4 176 deny ip from any to me dst-port 22 
65100 0 0 allow ip from any to any proto tcp src-ip 200.0.0.0 dst-port 22 
 
O deny all no deveria estar depois da regra 65100?
Por gianrubio em 30/10/2006 10:50:05
2 opcoes 
 
1- Coloque sua regra deny como a ultima do firewall 
ipfw add 65135 deny all from any to me dst-port 22 
 
2-Altere seu knock.conf colocando o numero da regra antes do seu deny, digamos que seu deny seja no. 300 coloque assim 
command = /sbin/ipfw -q add 299 pass proto tcp src-ip %IP% dst-port 22 #Regra a ser adicionada no firewall
Por Anderson em 21/11/2006 01:36:01
Porque o Virtua tenta acessar essa porta? Devo bloquear?
Por gianrubio em 22/11/2006 16:48:34
Pq eu fiz um portscan aqui de casa e eu uso virtua saco?
Knock vs PF
Por marcfee em 07/04/2008 16:53:05
Boa tarde Giancarlo! 
 
Sabe me responder se o "Knock" trabalha com o PF? 
 
Grato.
Porque o script de start no funcionou
Por Geovane Gonalves em 16/09/2008 10:28:51
Na linha abaixo do script de inicializao (knockd.sh) abaixo, o default "NO", troque por YES como no exemplo abaixo:  
 
knockd_enable=${knockd_enable:-"YES"} 
 
Gostei da dica e resolvi fazer uma pequena contribuio. 
At mais


Comente!*
Nome:
E-mail
Homepage
Ttulo:
Comentrio:

Cdigo:* Code

ltima Atualizao ( 18/10/2006 )
 
< Anterior   Prximo >
FUG-BR - Espalhando BSD
Dicas Rpidas:
 






Wallpapers
Sua Opiniao
Online:
Ns temos 22 visitantes online


Devil Store - Sua loja BSD
FreeBSD Brasil LTDA

FUG-BR: Desde 1999, espalhando BSD pelo Brasil.