10.2.08

Melhore a segurança de seu Linux I

Trabalhar com segurança de informação, ou pelo menos pesquisar, estudar e testar muito isso, requer fazer alguns procedimentos para que a máquina não facilite a vida de um possível visitante indesejado. Antes de pensar em ferramentas, precisamos pensar na máquina crua, no post_install().

Primeiro de tudo, independente da distribuição, a maioria dos arquivos base são os mesmos, como fstab, login.defs, securetty… Então, vamos precisar melhorar o que vem de genérico numa instalação, pois você em seu desktop pode não se incomodar em ter alguns padrões no seu linux, mas um sysadmin precisa se preocupar.

Tudo é questão de configuração geral, então estaremos tratando do diretório /etc lógico. Começe pelos seguintes arquivos:

login.defs:

#Permite uma nova tentativa de login em 5 segundos no caso de falha
FAIL_DELAY 5
#Registra também contas de usuário falsas quando há tentativas de login com falhas
LOG_UNKFAIL_ENAB yes
#Registra também logins realizados com sucesso
LOG_OK_LOGINS yes
#Define /var/log/sulog como arquivo que detêm os registros do uso de su
SULOG_FILE /var/log/sulog
#Registra tentativas de mudança de usuário
SYSLOG_SU_ENAB yes

host.conf:

#Procura os nomes primeiro no DNS, depois no arquivo local
order bind, hosts
#Retorna todos os endereços válidos para uma máquina
multi on
#Tenta impedir spoofing de hostname
nospoof on
#Gera mensagem de alerta no caso de spoofing utilizando o syslog
spoofalert on

securetty:

# cp /etc/securetty{,.old}
# >/etc/securetty

#Permite que o root logue apenas uma vez em apenas um terminal
#Se você não quer que o root faça login, comente as linhas abaixo
console
vc/1

shells:

#Habilite somente os shells que você usa
/bin/bash
/bin/sh

#Somente se você usar screen
/bin/screen

Desative o suid em partições home, var, tmp:

fstab:
Utilize as opções abaixo nas respectivas partições:

/var	        nosuid,nodev,noexec
/home           nosuid,nodev
/usr	        nodev

#Exemplo de partição:
/dev/sdb1 /home reiserfs nodev,nosuid,auto 1 2

Retire todos os usuários que não possuem shell válida e são inúteis (como games, irc, list, lp etc).

Você deve impedir reinicalização com ctrl+alt+del (após isso, precisa fazer #init q):

inittab:

#Comentar a linha abaixo:
#a::ctrlaltdel:/sbin/shutdown -t3 -r now

Configure o ntp para sincronizar hora em um dos servidores da RNP (eu os considero muito confiáveis).

Adicione o conteúdo abaixo no /etc/profile:

TMOUT=3600
export TMOUT

ssh/sshd_config:

#Configure uma porta diferente da 22
Port 2130
#Por favor, utilize a versão 2…
Protocol 2
#Define o tempo máximo que o usuário tem para digitar a senha
LoginGraceTime 30
#Não permite que root logue via ssh
PermitRootLogin no
#Não permite senhas em branco
PermitEmptyPasswords no
#Impede que se use a interface gráfica via ssh
X11Forwarding no

Continua no próximo capítulo…

07.4.08

Ué, qual é a senha mesmo?

Quem nunca fez essa pergunta é porque:

  1. tem muita boa memória, daquelas que faz contas de 15 dígitos de cabeça em 10s.
  2. anota tudo num papel (ou parede, mesa, qualquer coisa riscável), até a senha do banco, e fica pescando.
  3. joga tudo num .txt e fica pescando.

Qual já fez tem as seguintes saídas:

  1. acaba lembrando depois da 5ª tentativa.
  2. desiste e tenta depois de 2 dias e acaba lembrando.
  3. desiste e assume que esqueceu mesmo, só depois de 20 tentativas, e pede pro admin resetar a senha.

Para quem nunca fez a pergunta (exceto quem tem excelente memória) tem sérios problemas. Primeiro de segurança. Quem nunca viu no banco: “Não anote sua senha num papel.”? Poisé, eu gosto de pensar que se eu tenho idéia de onde achar algo relevante sobre mim mesma, alguém também poderá descobrir também.

Nem papel, nem .txt puro. O que descobri depois de muitas vezes pertubar meu amigo Hugo Dória foi que eu precisava de um programa que gerenciasse minhas senhas. Bem, juro que tentei o Kwallet e o Revelation. Mas, sh**, interface gráfica não ajudou muito, só fez depender do mouse para… tudo! Então, na minha busca por uma wallet perfeita descobri que o Linux.com tinha feito um “How-to” de um wallet em linha de comando. Mas… “eu tenho que digitar muita coisa, não vou lembrar disso!”.

Daí encontrei aquilo que eu procurava (ainda tem umas frescuras, mas vá lá): um Wallet com GPG feito em Shell Script! Wow! Vamos lá, testar.

Dependências: dialog, vim e gpg.

Baixe o script aqui: wallet.

Sugiro colocar em algum lugar na home e adicionar o diretório no $PATH (lembre de adicionar no seu ~/.bashrc) .

$ mkdir ~/bin
$ cd ~/bin
$ wget http://even.archlinux-br.org/blog/wp-content/uploads/2008/07/wallet
$ chmod 700 wallet
$ export PATH=$PATH:~/bin

Depois tem que criar o arquivo de configuração dizendo onde o wallet irá salvar suas senhas:

$ echo “PASSWD_LIST=~/path/to/your/password/file” > ~/.walletrc

Pronto! Agora para editar sua wallet:

$ wallet -e

E para visualizar a wallet:

$ wallet

It’s amazing!