Configure o sudo para fazer piadas quando o usuário erra a senha

A cultura hacker é extremamente forte entre usuários Linux/UNIX e a descontração, quando alguém comete um erro, sempre fez parte da comunidade.
O comando sudo, como comportamento padrão, admite até 3 tentativas de senhas erradas.
Depois disto, ele termina e envia uma mensagem ao root (administrador do sistema), informando sobre a “tentativa de obter privilégios” perpetrada pelo usuário em questão.
comando sudo insultos
As piadas ou “insultos”, são variados.
Veja alguns exemplos (com a minha tradução livre):

  1. You speak an infinite deal of nothing — “Você diz um amontoado de besteiras”
  2. Take a stress pill and think things over — “Tome um calmante e pare para pensar”
  3. That’s something I cannot allow to happen — “Taí uma coisa que eu não posso deixar acontecer”
  4. You silly, twisted boy you — “Seu tolo, você é um menino confuso”
  5. I have been called worse — “Já me chamaram de coisa pior”

Sinta-se à vontade para sugerir uma tradução diferente, nos comentários, caso não concorde com alguma (sem ofensas!) Sua contribuição será bem vinda. 😉

Como configurar o sudoers para ofender os usuários

Abra o arquivo de configuração do sudo com o visudo:


sudo visudo

localize a seção que tem os Defaults e acrescente uma linha com o seguinte conteúdo:


Defaults	insults

Se não quiser acrescentar uma linha, é possível apenas adicionar uma vírgula, seguida do parâmetro ‘insults’ a qualquer uma das linhas já existentes.
Veja como está esta sessão no meu arquivo de configuração sudoers:


Defaults        env_reset,timestamp_timeout=5,pwfeedback, insults
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin$
Defaults        insults

A depender do seu sistema, pode ser necessário se reautenticar para poder ver os efeitos da alteração.

Como obter a lista de insultos, ofensas e piadas do sudo

No Debian 9, a lista completa de insultos pode ser obtida no arquivo binário ‘/usr/lib/sudo/sudoers.so’.
Ele pode ser encontrado com o comando find, caso não esteja lá:


find /usr/lib/sudo -type f | xargs grep "fallen in the water"

Arquivo binário /usr/lib/sudo/sudoers.so coincide com o padrão

Por ser um arquivo binário, se você usar o comando cat nele, vai obter um monte “lixo” na sua tela.
Tente encontrar as frases com o seguinte comando, no terminal:


strings /usr/lib/sudo/sudoers.so | less

Agora digite ‘/dumber’ e as frases irão aparecer na tela.
No Askubuntu (link no final), é possível encontrar as várias listas de insultos, separadas por arquivos.
Minhas preferidas são as que usam falas do filme 2001: A Space Odissey (2001: Uma Odisseia no Espaço).
Veja algumas:

  • “Just what do you think you’re doing Dave?”
  • “It can only be attributed to human error.”
  • “That’s something I cannot allow to happen.”
  • “My mind is going. I can feel it.”
  • “Sorry about this, I know it’s a bit silly.”
  • “This mission is too important for me to allow you to jeopardize it.”
  • “I feel much better now.”

Desta vez, vai sem tradução…

sudo insults list
Sudo insults list.

Acho, ainda, importante frisar que certas frases, desta “brincadeira”, induzem a erro de interpretação, como os exemplos abaixo:

  • invalid authentication methods.
  • Invalid authentication methods compiled into sudo! You may not mix standalone and non-standalone authentication.
  • There are no authentication methods compiled into sudo! If you want to turn off authentication, use the –disable-authentication configure option.
  • Unable to initialize authentication methods.

As mensagens acima podem levar um usuário desavisado a “entrar em parafuso” (se ele souber algum inglês, claro). Além disso, elas não fazem sentido algum para os propósitos do sudo.
Se você, como sysadmin, se incomoda com perguntas “inocentes” de usuários, ativar os insults pode não ser uma boa ideia.
Na dúvida, para não ter problemas, use uma mensagem personalizada para o sudo.

Referências

https://askubuntu.com/questions/837558/where-are-sudos-insults-stored/837562.

Conteúdo relacionado pelo Google

Altere o tempo máximo de cada sessão do SUDO

O comando sudo é o que permite a um usuário normal ou ao sysadmin administrar o sistema, sem precisar autenticar como root.
Com o sudo, você executa rapidamente uma tarefa – investido de superpoderes – e volta ao prompt de seu usuário normal em seguida.
Dar acesso a este recurso, pode ser uma forma mais segura de conceder poderes administrativos a usuários normais do seu sistema — sem revelar a senha do root.
Como comportamento padrão, uma sessão do sudo dura 15 minutos. Durante este período de tempo, não é pedido qualquer senha ao usuário.
Se você acredita que este tempo é muito curto ou muito longo, é fácil alterá-lo.

No meu caso, acredito que 5 minutos é tempo suficiente para realizar qualquer tarefa administrativa no sistema.

Quando é necessário executar vários comandos com privilégios administrativos (e que irão demorar mais do que 5 minutos para serem executados), prefiro digitar a minha senha algumas vezes a mais — sem problemas.


Por outro lado, este post ensina a executar vários comandos, em fila, usando o sudo, sem precisar se preocupar com a expiração do tempo. Recomendo a leitura.

Como configurar o tempo de expiração da sessão do sudo

A maneira adequada de ajustar os parâmetros do sudo é através do visudo.

O visudo edita o arquivo sudoers de maneira segura — protegendo-o contra alterações simultâneas e fazendo verificação básica de erros.

Nas grandes distribuições, como Debian e no Ubuntu, o programa irá abrir, por padrão, o editor de textos Nano.
Neste caso, quando terminar a edição, use as combinações de teclas ‘Ctrl-o’ e ‘Ctrl-x’, para gravar e sair do editor.
Se, na sua distro, o editor padrão for o vi ou o vim, tecle ‘Esc’ e, em seguida, ‘:wq’ e ‘Enter’, quando terminar de alterar o sudoers.
Você pode rodar o visudo com o próprio sudo:

sudo visudo

Em seguida, localize a linha (que deve estar no começo):


Defaults        env_reset

e altere-a para


Defaults        env_reset,timestamp_timeout=5

Como eu já disse, prefiro que o valor da minha variável timestamp_timeout seja 5 (minutos). Você deve usar o valor que considerar mais adequado às suas necessidades.
sudo sudoers environment variables

Como evitar que a sessão do sudo expire

Se você precisa que a sua sessão fique ativa indefinidamente (ou pelo menos até você se desautenticar do sistema), use o sudo combinado com as seguintes opções:


sudo -s

[sudo] senha para justincase: 

Outros usuários preferem usar o sudo para logar-se diretamente como root:


sudo su

Em qualquer um dos casos, quando terminar, use ‘exit’ para sair:

root@inspiration:/home/justincase# exit
exit

Conteúdo relacionado pelo Google

Proteja o disco rígido do seu notebook Linux contra quedas

Quando um laptop cai no chão, da altura de uma mesa ou da sua cintura, vários de seus componentes pode ser danificados.
Um dos componentes mais sensíveis é o disco rígido (HDD).
O maior problema, neste caso, não são os danos físicos, uma vez que ele sempre pode ser substituído por outro.
O maior problema, ao danificar um HD, é perder todos os seus dados.
O disco rígido é composto de várias peças e partes móveis, como sabemos. Após a queda, quando ele chega ao chão, estas peças funcionam como armas — umas contra as outras.
O braço mecânico e a ponta da cabeça de leitura, podem destruir uma quantidade significativa de dados gravados nos discos, durante o processo de desaceleração brusca — sem qualquer chance de recuperação.
O software que vou apresentar, neste post, trabalha na detecção de situações típicas de queda e “ordena” que o sistema recolha imediatamente os braços de leitura/gravação dos discos rígidos.
A partir daí, as possibilidades de recuperação dos seus dados podem ser bem maiores.
Mesmo que o HD não funcione mais, se os discos ainda estiverem inteiros, ainda será possível entregá-los a uma empresa de recuperação de dados, para tentar extrair e salvar as informações de dentro deles.

O que é o hdapsd

O acrônimo significa Hard Drive Active Protection System — Sistema Ativo de Proteção ao Disco Rígido.
De acordo com a descrição oficial, o HDAPS é um daemon voltado para laptops de diversas marcas que possuam sensores de movimento (motion sensor).
Sua função é proteger o disco rígido do seu sistema, com o monitoramento constante dos valores de aceleração.
Assim que o daemon detecta uma queda ou um deslizamento brusco do seu notebook, ele age, fazendo com que as cabeças de leitura/gravação “estacionem” (parking).

Verifique no manual do seu produto ou pergunte ao vendedor se o seu equipamento possui sensor de movimento. Sem isso, o hdaps é inútil.

A versão atual (20141203) do hdapsd tem suporte às seguintes interfaces:

  • IBM/Lenovo ThinkPad (HDAPS)
  • Apple iBook/PowerBook (AMS)
  • Apple MacBook/MacBook Pro (APPLESMC)
  • HP (HP3D)
  • Dell (FREEFALL)
  • Toshiba (ACPI and HAPS)
  • Acer (INPUT)

No Debian/Ubuntu, é possível obter estas informações (lista, acima), bem como da versão do hdapsd, com o comando apt, antes de instalar:

apt show hdapsd

Se você tem um Lenovo Thinkpad, é recomendado usar o módulo hdaps, que já vem no pacote tp-smapi-dkms ou tp-smapi — que consome menos energia e tem compatibilidade com uma quantidade maior de equipamentos da linha Thinkpad.


Como instalar e usar o hdapsd

O daemon começa a funcionar logo após a instalação.
Para instalar no Debian/Ubuntu, use o apt:

sudo apt install hdapsd

O arquivo de configuração padrão, pode ser encontrado em /etc/hdapsd.conf.
Dentro dele, podemos indicar exatamente qual o dispositivo (sda, sdb etc.) a ser protegido e qual a sensibilidade desejada para a interface do sensor (sensitivity).
O valor padrão de sensibilidade é 15. Se quiser que ele seja mais sensível (recomendado!), use um valor mais baixo.

Conteúdo relacionado pelo Google

Gerenciamento básico de usuários no Linux

Gestão e controle de usuários, é o básico de qualquer curso ou certificação Linux.
É aqui que o seu conhecimento em administração do sistema começa.
gnu linux tux flag
O texto, que segue, é voltado para usuários iniciantes. Ainda assim, desconfio que algumas dicas podem ser desconhecidas do público mais avançado.
Seja qual for o seu caso, espero que este artigo lhe seja útil.

Como ver informações sobre UID, GID e Grupos no Linux

Você pode usar o comando id para obter informações sobre os atributos de grupo, GID e UID:

id justincase 
uid=1000(justincase) gid=1000(justincase) groups=1000(justincase),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),126(sambashare)

Você pode filtrar esta informação. Se quiser saber apenas os nomes dos grupos a que o usuário pertence, use o comando id da seguinte forma:

id --groups --name justincase 
justincase adm cdrom sudo dip plugdev lpadmin sambashare

Como encontrar os arquivos de um usuário

No próximo exemplo, veja como encontrar todos os arquivos que um determinado usuário tem espalhados pelo sistema.

find /home/ -uid 1000 | tee arquivos-do-justin.txt

Este comando irá procurar recursivamente, dentro do diretório /home, por todos os arquivos pertencentes ao usuário de id 1000 (justincase, no meu caso).
Os que forem encontrados, serão gravados dentro do arquivo ‘arquivos-do-justin.txt’.
Para vê-los, use o comando less:

less arquivos-do-justin.txt 

se você substituir a opção ‘-uid’, por ‘-gid’, o comando irá fazer a busca por grupos.

Como transferir a posse de um arquivo entre usuários ou grupos

O comando chown é uma abreviatura para change owner (mude o dono).
Veja um exemplo de seu uso:

chown nome-dono:nome-grupo meu-arquivo.arq

No exemplo, acima, trocamos o usuário e o grupo a que o arquivo pertencia.
Este é o procedimento mais usual — transferir, não somente, a posse para o novo usuário, como também para o novo grupo.
Se quiser apenas transferir a posse de usuário e manter a posse original do grupo, use o comando assim:

chown nome-dono meu-arquivo.arq

Veja um exemplo prático:

chown justincase:justincase .bashrc

Para alterar a posse de todos os arquivos de um diretório, recursivamente, use a opção ‘-R’:

chown -R justincase:justincase /home/musica

Se quiser, você pode envolver o comando find, para fazer o mesmo serviço. Veja este exemplo:

find / -uid 1001 -exec chown -v 1000:1000 {} \;

Execute os comandos para alterar a posse com cuidado, ou você poderá ficar sem acesso a seus arquivos — pelo menos, até mudar de volta à posse original.

Como adicionar e remover usuários no sistema

Além de poder usar as ferramentas GUI (gráficas) para realizar estas tarefas, na linha de comando, as opções são – como quase sempre – mais flexíveis e numerosas.
Veja, quantos comandos: useradd, userdel, usermod, groupadd, groupdel, groupmod, adduser e addgroup.
No Debian e nas distribuições derivadas (como o Ubuntu), há os comandos adduser e addgroup, que são Perl wrappers para os comandos useradd e groupadd.
O comando adduser tem um assistente para ajudar você a criar uma nova conta de usuário no sistema.
Os comandos adduser e addgroup usam as configurações armazenadas no arquivo ‘/etc/adduser.conf’.
No Red Hat (e derivados), é possível encontrar o adduser, mas ele é apenas um symlink (link simbólico) para o comando useradd. Portanto, nesta distro, ele se comporta como useradd.
Os comandos useradd, userdel, usermod, groupadd, groupdel e groupmod estão presentes em todas as distribuições Linux. O comportamento padrão do comando useradd é definido no arquivo ‘/etc/default/useradd’.
Você também pode ver as configurações padrão do useradd, com o seguinte comando:

useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

Pra criar um usuário novo, com direito a um assistente, use o comando adduser, conforme a imagem.
linux unix useradd

O useradd é um comando de baixo nível e precisa de vários parâmetros e opções, na linha de comando, para fazer o trabalho desejado.
A documentação do Debian, recomenda o adduser, que tem um wizard para guiar o trabalho do administrador até a conclusão e criação de um novo usuário no sistema.

Para remover usuários do sistema, use o comando deluser:

deluser novato

# ou use a opção --remove-all-files, para excluir todos os arquivos pertencentes ao usuário do sistema (cuidado!)
deluser --remove-all-files novato

# ou use a opção --backup, para criar um arquivo de tar.bz2 com todos os arquivos do usuário dentro, antes de removê-los
deluser --backup novato

Se quiser saber mais sobre o comando tar, leia O comando tar em 9 exemplos.

Como encontrar e derrubar processos de determinados usuários

Se você pretende excluir a conta de um usuário do sistema, pode ser interessante, procurar algum processo remanescente dele, que ainda esteja rodando.
Nos comandos abaixo, vamos descobrir a id do usuário e procurar processos rodando sob esta id:

id novato
uid=1002(novato) gid=1002(novato) groups=1002(novato)

ps U 1002
  PID TTY      STAT   TIME COMMAND
22312 pts/1    S      0:00 bash
22356 pts/1    S+     0:00 nano

Como você pode ver, o usuário 1002 (novato) está rodando o bash e o editor de textos nano.
Use o kill para matar os 2 processos:

kill -9 22312 22356

ps U 1002
PID TTY      STAT   TIME COMMAND

Referências

Leia mais sobre a administração do Linux.
https://www.linux.com/learn/so-you-think-you-know-linux-user-management.

Conteúdo relacionado pelo Google

Como forçar usuários do sistema a criar e usar senhas fortes

Os usuários de sistemas operacionais Linux e FreeBSD podem alterar as próprias senhas com o comando passwd.
Como administrador do sistema, você pode intervir de várias formas neste processo.
Vamos mostrar, neste breve artigo, como estabelecer as regras para seus usuários alterarem suas senhas.
linux tux badge
Senhas ruins, tais como “abc123”, “senha”, “123456” etc. serão recusadas pelo sistema.
Os exemplos, demonstrados no decorrer do texto, se baseiam em um sistema operacional Debian 9 “Stretch” testing. Aplicam-se automaticamente ao Ubuntu e outros derivados do Debian. Em outros sistemas, é necessário adequar os comandos de instalação do pacote libpam_cracklib — que inclui um módulo PAM que testa a qualidade das senhas, no momento em que são alteradas.

Como o libpam_cracklib funciona

A biblioteca libpam_cracklib verifica a força das senhas através de um método, que segue os seguintes passos:

  1. A nova senha é uma palavra, que consta do dicionário?
  2. A nova senha é um palíndromo?
  3. A nova senha é igual a anterior, com a mudança de apenas uma letra?
  4. A nova senha é uma versão “rotacionada” da sequência anterior?
  5. A nova senha é muito pequena?
    São usados 6 argumentos para fazer esta verificação: minlen, maxclassrepeat, dcredit, ucredit, lcredit, e ocredit.
  6. Opcionalmente, verifica também:
    • se há caracteres repetidos consecutivamente.
    • sequências muito longas de caracteres monotônicos.
    • se a nova senha contém o nome do usuário, em alguma forma.

Como instalar o libpam_cracklib

No Linux, os arquivos /etc/passwd e /etc/shadow, são usados para armazenar informações dos usuários — incluindo senhas.
No Ubuntu e no Debian, use o apt, para instalar:

sudo apt install libpam-cracklib

A instalação deve decorrer em um curto prazo, pois o pacote é de tamanho bem reduzido.
Depois de instalado, tente alterar a sua senha.
Veja alguns exemplos de mensagens de erro:

passwd

Neste exemplo, use respectivamente as senhas ‘justincase’, ‘1234567’ e ‘123’ — obtendo os seguintes resultados:

Mudando senha para justincase.
Senha UNIX (atual):
Nova senha:
SENHA INCORRETA: é baseada no seu nome de usuário
Nova senha:
SENHA INCORRETA: é muito simples/sistemática
Nova senha:
SENHA INCORRETA: é MUITO curta
passwd : Esgotado o número máximo de tentativas para serviço
passwd: senha inalterada

Como configurar o libpam_cracklib

Como você pode ver, no exemplo anterior, o aplicativo já vem basicamente configurado e pronto para usar, logo após a instalação.
É possível fazer alguns ajustes adicionais, contudo, para tornar o sistema mais seguro.
Antes de configurar o libpam, vamos fazer um backup do arquivo de configurações:

sudo cp /etc/pam.d/common-password /root/

A seguir, abra o arquivo em seu editor favorito:

sudo editor /etc/pam.d/common-password

Agora, encontre e substitua a linha:

password      requisite                       pam_cracklib.so retry=3 minlen=8 difok=3

pela seguinte:

password      requisite                       pam_cracklib.so retry=3 minlen=16 difok=3 ucredit=-1 lcredit=-2 dcredit=-2 ocredit=-2

Vamos entender o que foi feito e quais requisitos foram ajustados:

  • retry=3 — Prompt user at most 3 times before returning with error. The default is 1.
  • minlen=16 — Determina o comprimento mínimo (ou minimum length), requerido para a nova senha.
  • difok=3 — Este argumento altera o valor padrão mínimo do número de caracteres novos exigidos para a nova senha, em relação à velha. O padrão é 5.
  • ucredit=-1 — Determina que a nova senha necessita ter, ao menos, 1 caractere em maiúsculas (uppercase).
  • lcredit=-2 — Especifica o número mínimo de letras minúsculas para formar a nova senha.
  • dcredit=-2 — Especifica o número mínimo de dígitos, que devem compor a nova senha.
  • ocredit=-2 — Determina que a nova senha deva conter, no mínimo 2 símbolos.

Agora que você já sabe o significado, tem melhores condições de voltar ao arquivo e reajustar os valores de acordo com a sua própria política de senhas.
Notou os “valores negativos”?
O sinal ‘-‘ indica que se trata de um valor ‘mínimo’.
Use o sinal ‘+’ quando desejar estabelecer um valor ‘máximo’.

estabelecer uma política de senhas mais rígida pode trazer impopularidade ao administrador, mas torna mais difícil a vida de crackers que pretendam penetrar a sua segurança através da força bruta.

Para complementar este texto, sugiro a leitura de Use o apg para gerar senhas mais seguras — que explica como usar o aplicativo para gerar senhas aceitas pelos sistemas mais rígidos de segurança.

Conteúdo relacionado pelo Google