Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Knocking on servers doors

Colaboração: Fabio Maximo

Data de Publicação: 13 de Setembro de 2006

Essa dica é muito legal para quem tem servidores remotos e preocupa-se com segurança no SSH. Voce pode fechar todo fluxo na porta 22 e so voce abre quando precisa.

O knock é um daemon que atenta para o que ocorre em certas portas no servidor. Quando alguem "bate" nas portas certas e na ordem certa, um determinado comando é executado.

Importante notar que as portas não estão abertas. O Deamon checa isso a nivel de kernel, portanto um port scan não detecta diferença nenhuma entre uma porta que sera knockada e uma outra qualquer.

Uma vez que o knock tenha sido realizado corretamente, o comando padrao é liberar acesso ssh para o IP que knockou o servidor.

Poder ser adicionados outros comandos e combinacoes de porta.

Obter o programa

  $ wget "http://www.zeroflux.org/knock/files/knock-0.5.tar.gz"

Descompactar

  $ tar -xvzf knock-0.5.tar.gz

instalar

  $ cd knock-0.5
  $ ./configure
  $  make
  $  make install

Configurar

  $ vi /etc/knockd.conf

Ainda configuracao

  $  cd /etc/init.d/

O Seguinte script para inicialização foi escrito por Marcio Andréeta - utilizar mas manter a nota de autoria.

  $  vi knockd
  ============================INICIO DO SCRIPT==========================
  #!/bin/sh
  # Script written by Marcio Luis Barsi Andréeta 04/07/2005
  #
  # This script starts/stops knockd
  # normal UNIX system operation
  #
  # This file is installed as:
  #     /etc/rc.d/init.d/knockd
  EXECUTABLE=/usr/local/sbin/knockd
  # error "description"
  error () {
  /bin/echo $0: $* 2>&1
  exit 1
  }
  # find the named process(es)
  findproc() {
  pid=`/bin/ps auxww |
  /bin/grep root |
  /bin/grep -e "$1\$" |
  /bin/grep -v grep |
  /bin/awk '{print $2}'`
  /bin/echo $pid
  }
  # for testing purposes only
  testproc() {
  pid=`/bin/ps auxww |
  /bin/grep root |
  /bin/grep -e "$1\$" |
  /bin/grep -v grep |
  /bin/awk '{print $2}'`
  /bin/echo $pid
  }
  # kill the named process(es)
  killproc() {
  pid=`findproc "$1"`
  [ "$pid" != "" ] && kill -TERM $pid
  }
  # kill the named process(es)
  forcedkillproc() {
  pid=`findproc "$1"`
  [ "$pid" != "" ] && kill -9 $pid
  }
  # Start/stop knockd
  case "$1" in
  'start')
  /bin/echo -n "Starting knockd..."
  # Check if the server is already running.
  if [ -n "`findproc "$EXECUTABLE"`" ]; then
  /bin/echo "knockd deamon is running."
  exit 0
  fi
  $EXECUTABLE &
  /bin/echo "done"
  ;;
  'stop')
  /bin/echo -n "Stopping knockd..."
  echo `findproc $EXECUTABLE`
  if [ -z "`findproc "$EXECUTABLE"`" ]; then
  /bin/echo "not running."
  exit 0
  fi
  killproc "$EXECUTABLE"
  /bin/echo "done"
  ;;
  *)
  /bin/echo "Usage: $0 { start | stop }"
  # for testing testing functions
  echo "`testproc "$EXECUTABLE"`"
  ;;
  esac
  ============================FIM DO SCRIPT==========================
  
  Startar o serviço no RedHat / Fedora
  
  ``` $  service knockd start
  
  Em outras distros
  
  ``` $ /etc/init.d/knockd start
  
  Para que o mesmo starte no boot da maquina vamos adicionar um link no Run
  Level 3 - Isso pode mudar de acordo com a distro.

$ cd /etc/rc3.d/ $ ln -s /etc/init.d/knockd S99knockd

  
  Abaixo esta o conteudo do /etc/knockd.conf - Repare que o mesmo é muito
  simples, dando opcao de configuracao do arquivo de log e os comandos abaixo
  com as sequiencias de portas na opcao sequence.
  
  
  ==Conteudo do /etc/knockd.conf==
  

[options] logfile = /var/log/knockd.log

[openSSH] sequence = 7000,8000,9000 seq_timeout = 5 command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn

[closeSSH] sequence = 9000,8000,7000 seq_timeout = 5 command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn

  
  Interessante que se voce quiser montar uma sequencia para outro comando voce
  pode. Mas se voce tem shell, pra que mais?
  
  Em todo caso poderiamos acrescentar:

[wall] sequence = 7001,8001,9001 seq_timeout = 5 command = /usr/bin/wall "TESTE OK" tcpflags = syn

  
  Bem, mas como vamos bater nessa porta??
  
  Simples:
  
  De sua estação use o comando knock seguindo a sintaxe / exemplo abaixo:

knock [ip] [portas] $ knock 192.168.0.90 7001 8001 9001

  Para os que usam estação Windows, ha um "batedor" para windows,
  e a sintaxe é a mesma. Da para baixar do seguinte link:
  http://www.zeroflux.org/cgi-bin/cvstrac.cgi/knock/wiki

Veja a relação completa dos artigos de Fabio Maximo

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.00/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (1557 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Lan University

Submarino.com.br

Encontre imóveis, apartamentos e casas a venda no Imobilien
Saiba mais

 

 

Procure pela casa ou apartamento ideal à venda ou para aluguel na busca inteligente do Imohoo
Buscar imóveis