você está aqui: Home  → Arquivo de Mensagens

Variável TMOUT

Colaboração: Flavio Alexandre dos Reis

Data de Publicação: 15 de setembro de 2010

Hardening é um processo de mapeamento de ameaças, blindagem de sistemas, mitigação de riscos executando atividades corretivas com foco na infra-estrutura a fim de evitar possíveis tentativas ataque.

Várias técnicas podem ser utilizadas, desde o kernel, controle de acesso de usuários, atualizações de segurança e muito mais.

Nesse primeiro post será abordado o uso da variável TMOUT.

Cenário

Imagine um administrador logado como root em um dos servidores executando uma tarefa administrativa. Logo em seguida é solicitado sua presença em outro setor, e seu terminal ficou logado como root. Um funcionário mal intencionado pode aproveitar dessa situação e e danificar o sistema, ou roubar informações de acesso somente do root. Para REDUZIR, isso mesmo reduzir essa possibilidade de ataque será utilizada a variável TMOUT.

Mas por que apenas reduzir? Deve-se atentar para as politicas de acesso físico à área dos servidores. Bloqueio de interfaces usb, desativar funções do kernel como ctrl+alt+del.

Exemplo da variável TMOUT

A função da variável TMOUT é executar um logout automático por tempo de inatividade do terminal. Estipula-se um valor em segundos que após decorridos sem qualquer ação o sistema fará uma logout automático.

Essa variável deverá ser inserida dentro do arquivo /etc/profile. Dessa forma sempre que o sistema iniciar seu valor será atribuído.

Abaixo segue um exemplo do arquivo profile com a variável TMOUT

  #vim /etc/profile
  
  # /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
  # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
  
  if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/games"
  fi
  
  if [ "$PS1" ]; then
  if [ "$BASH" ]; then
  PS1='\u@\h:\w\$ '
  else
  if [ "`id -u`" -eq 0 ]; then
  PS1='# '
  else
  PS1='$ '
  fi
  fi
  fi
  TMOUT=60
  export TMOUT
  export PATH
  umask 022

Para que a atualização entre em vigor execute o comando source, ele irá reler o arquivo profile

  #source /etc/profile

Após decorridos 60 segundos de inatividade um auto-logout é executado.

Neste exemplo o administrador estava logado via ssh, observe...

  # timed out waiting for input: auto-logout
  Connection to 192.168.217.5 closed.

Quanto ao valor a ser utilizado, deverá ser analisado pelo próprio administrador.



Veja a relação completa dos artigos de Flavio Alexandre dos Reis

 

 

Opinião dos Leitores

Edgar Paes
04 Fev 2013, 00:13
É por isso que se deve utilizar a diretiva readonly, por exemplo:

readonly TMOUT=60
export TMOUT

Assim, um usuário não poderá desfazer as alterações exportadas (nem mesmo o root). É claro que ele (root) pode editar o /etc/profile e retirar readonly, mas como foi dito anteriormente, um sistema comprometido com privilégios de root o TMOUT será o menor dos problemas.
Marcelo Vilar
16 Out 2010, 21:35
@Crítico

Desculpe, mas você não entendeu o propósito da dica. Se o atacante obter o acesso ao sistema, o TMOUT vai ser o menor dos problemas.

O que essa dica se propoe é criar um mecanisco para evitar que um terminal logado com o root que esteja ocioso seja utilizado por um atacante caso o administrador do sistema esqueça de fazer o logoff ao se ausentar.
Critico again
15 Set 2010, 13:44

Legal sua abordagem, mas basta ignorar o alias digitando "\" antes do comando:

\set
\env
\unset TMOUT

Mas é claro que o atacante precisa conhecer mais do que um usuário comum para saber disso.

Abraços,
Mais Critico Ainda
15 Set 2010, 08:34
Muito interessante a critica, porem tenho uma solução para "unset TMOUT" não funcione.

Dentro do proprio /etc/profile
adicionei no final

# Se o usuário esperto tentar verificar o valor de TMOUT não vai listar nada.
alias set="set | grep -vi TMOUT"
alias env="env | grep -vi TMOUT"

# Se o cara tentar apagar a variavel com "unset" tambem não vai conseguiir.

function alias_unset()
{
v="$1"
[ "${v}" = "TMOUT" ] && true ${v} || unset ${v}
}

alias unset="alias_unset"

# Da pra evoluir mais bloqueando o comando "alias" pra não listar os mapeamentos do set, env e unset
Crítico
15 Set 2010, 07:47

Interessante, mas nem um pouco eficaz, basta que o atacante digite:

unset TMOUT

E esse recurso será desativado ...



*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