Alterar politica de senhas no Linux com PAM

Para podermos ter um controle maior sobre a segurança dos nossos sistemas e rede de computadores, podemos definir uma política de senhas onde as mesmas devem ter um grau alto de dificuldade. Podendo definir quantidade de caracteres especiais, números, tamanho da senha, tempo que ela vai expirar, não repetir a mesma senha digitada anteriormente, etc.

Como não podemos confiar totalmente nas instruções passadas para os usuários, devemos forçar essas opções. Usaremos o pam para realizar esses ajustes.

O PAM surgiu como um intermediador entre as aplicações e o mecanismo de autenticação. Todas as aplicações agora têm suporte ao PAM, que tem uma interface de comunicação única. Então quando quisermos fazer qualquer modificação de onde autenticar, basta apenas modificar a configuração do PAM e todo o resto das aplicações já estará configurada automaticamente. Muito mais prático.

Na família Debian, o arquivo a ser ajustado será o /etc/pam.d/common-password. Em outros sistemas procure verificar se o arquivo será o mesmo. Como requisito precisaremos instalar o pacote libpam-cracklib.

Faça um backup do arquivo para garantir:

E agora vamos editá-lo, deixando com apenas a linha abaixo:

Onde:

retry = 3 : tentativas antes de retornar com erro. O padrão é 1.
minlen = 8 : O tamanho mínimo aceitável para a nova senha.
difok = 3 : Essa opção não deixa ter 3 letras iguais a senha antiga. Por exemplo a senha antigo é pastel e tentar alterar para pastoso irá ser rejeitada
ucredit = -1 : A nova senha deve conter pelo menos 1 caracteres maiúsculos.
ocredit = -2 : A nova senha deve conter pelo menos 2 caracteres especiais.

Diferença entre opções positivas e negativas

Como podemos ver na opção ucredit usamos um valor negativo isso porque os números negativos significam que queremos no mínimo o valor x, sendo uma exigência. Quando usamos o numero positivo estamos indicando o valor máximo.

Outras opções

dcredit=x: Informa a quantidade digitos, numeros, exigidos na senha
lcredit=x: Representa a quantidade caracteres minusculos, acredito que seja pouco usada

Proibir senhas já usadas

No mesmo arquivos iremos acrescentar

remember=10 : Senha não poderá ser igual as ultimas 10

Testando, lembrando que se tentar trocar senha como root, ele dará o aviso porém irá alterar a senha mesmo assim. Caso seja um usuário comum ele não irá aceita a troca da senha.

Fonte:
http://blog.marcelocavalcante.net/blog/2011/09/27/politica-de-senhas-no-linux-senhas-com-data-para-expirar/
https://www.cyberciti.biz/faq/securing-passwords-libpam-cracklib-on-debian-ubuntu-linux/

Extensões de arquivos no Linux

Primeiramente o que devemos saber é que no Linux a extensão é opcional, o tipo de arquivo é reconhecido pelo seu conteúdo e não pela sua extensão. Mas para facilitar a vida é bom conhecer algumas extensões no Linux.

Arquivos Executáveis

out: formato binário usado nas primeiras versões do GNU/Linux
pl: script em linguagem Perl
py: script em linguagem Python
sh: script de shell, usado para criar pequenos programas

Códigos fontes e bibliotecas

c: código em linguagem C
cpp: código em linguagem C++
diff: conjunto de instruções que definem as trocas a aplicar um patch
h: cabeçalho de arquivos programados em C
lo: arquivo temporário criado pela compilação de uma library
o: arquivo temporário criado pela compilação de um programa
so: bibliotecas compartilhadas equivalentes aos “dll” em windows

Arquivos compactados

bz2: arquivo comprimido pelo Bzip2
gz: arquivo gerado pelo programa Gzip que substituiu o obsoleto Compress
rar: substituto natural do Arj, que permite uma maior compressão e dividir arquivos grandes em vários menores
tar: arquivo empacotado sem compressão, usado para num único ficheiro o conteúdo de um pasta com vários arquivos
tbz2 (tar.bz2): arquivo resultante da compressão em Bzip2 dum ficheiro Tar
tgz (tar.gz): resultado da compressão em Gzip dum ficheiro Tar.
z: arquivo comprimido com o programa Compress
zip: formato de compressão mais usado na internet. Tem menos compressão que o Bzip2.

Arquivos do Sistema

conf: arquivo de configuração de um programa
ko: módulos do núcleo do kernel 2.6
lock: indica o bloqueio de um serviço, processo ou programa
log: arquivo de de informação gerado pelo núcleo do kernel, pelos programas e pelos serviços instalados. É nele que ficam guardados os estados e erros que se produzem pelos programas
pid: arquivos indicadores de processos necessários para o correto funcionamento dos serviços em execução
socket: meio de comunicação entre dois programas situados em equipamentos diferentes
tmp: ficheiro temporário criado por um programa para armazenar informação

Arquivos de pacotes

deb: usado pela Debian e distribuições derivadas da Debian
dsc: arquivo de informação do código fonte de um pacote Debian
ebuild: script usado pela Gentoo para compilar e instalar pacotes a partir do código fonte
rpm: arquivo usado pela Red Hat, Fedora, CentOS, SUSE, Mandriva e outros
tgz: arquivo Tar.gz já compilados para Slackware

Dica rápida – Verificar pastas que ocupam mais espaço

Bom essa dica é bem simples mas muito útil, vamos usar uma combinação de comandos para listar as 5 pastas que mais utilizam espaço no diretório corrente. O bom comando seria esse:

Saida:

Explicando:

O comando du faz a verificação do uso das pastas em si;
O comando sort faz a ordenação do maior pro menor;
E o comando head mostra os 5 primeiros, pode ser usado qualquer quantidade.

Se alguém tiver dúvidas quanto as opções usadas, basta digitar o nome do comando –help, que terá todas as informações.

Gerar lista de pacotes instalados no Debian, Ubuntu, etc

Para gerar uma lista dos pacotes instalados no sistema, poderemos usar o dpkg para isso. Pode ser muito útil na hora de criar sistemas com a mesma base

Gerando lista de pacotes

Instalando pacotes a partir da lista

Fonte

Emmi Linux – Uma distribuição pequena e leve

Hoje vou falar um pouco sobre essa distribuição que conheci e acabei me envolvendo no projeto: Emmi Linux. Bom segue palavras do próprio autor do projeto, Jefferson Rocha:

Assim como Debian todas versões serão LTS, com suporte ativo por 5 anos.

Leve, um computador de 1 GB de ram vai rodar muito bem a Emmi, então aquele computador de 2007 vai ser ressucitado e vai ter um novo folego!
O tamanho da iso é muito importante para nós, com apenas 700 mb, o que para as distros de hoje é dificil achar uma iso com este tamanho.

Ambiente totalmente moderno e leve com XFCE.
Não vamos de maneira alguma empurrar pacotes pré instalados, a distribuição vem com a base e alguns utilitarios, o resto o usuário pode moldar como querer do seu jeito, esse é o foco da distro, ou seja sabe aquela porrada de programas muitas vezes que não usamos nem uma parte que vem junto com algumas distribuições? na Emmi não vem.
Boot e poweroff, incrivelmente rápido.

Assim como Debian não incentivamos os usuários a instalar pacotes fora do repositorio, ppa? muito menos.
Pacotes que não tem no Debian nos vamos testar, empacotar e disponibilizar em nosso repositorio. (não temos ainda um repositorio proprio, mas está nos planos já.)

Agora falando em facilidade para usuários novos e leigos, a distribuição tem tudo para ser até mais fácil que o Linux mint, o plano é esse.

Bom de resto é testando para você ver.

Basicamente é isso, nossa proposta é diferente, com tempo tudo se acerta.

Emmi Linux

Realmente o sistema está muito bonito e fluído, vale a pena testar. Em breve postarei um review sobre a distro com mais detalhes.

Link para site: Emmi Linux

 

Alterando hostname sem reiniciar computador

Para podermos alterar o nome da máquina sem precisar reiniciar é muito simples. Primeiramente precisamos alterar o arquivo /etc/hostname. Mas após a alteração notamos que o nome não muda, mesmo dando o comando hostname, o nome continua o antigo. Para essa alteração valer sem precisar reiniciar, pois as vezes pode se tratar de um servidor que não pode parar no momento, basta digitar o comando abaixo:

Pronto, problema resolvido.

Fonte

Comandos de manipulação de permissões no Linux

Entendo um pouco o sistema de permissões no sistema Linux

Pelo fato do Linux ser multiusuário, as permissões deve estar bem alinhadas para que o usuário tenha acesso somente aquilo que é de seu direito, incluindo pastas, arquivos e inclusive periféricos, como impressoras e drivers de CD por exemplo.
A Estrtutura básica das permissões é separada em três classes:

  • Dono: define as permissões ao dono do arquivo, ou seja, que criou o arquivo.
  • Grupo: define as permissões para o grupo de usuários ao qual o dono do arquivo pertence.
  • Outros: define as permissões para os demais usuarios, que não seja o dono ou que faça parte do grupo.

Dentro de cada classe citada anteriormente, temos os tipos de acesso:

  • Leitura (r): permissão de leitura para arquivos. Caso seja um diretório permite a listagem do seu conteúdo.
  • Escrita (w): permite a escrita em arquivos ou criação dentro de pastas.
  • Execução (x): permite a execução de um programa “executável”

Quando a gente executa um ls -la no terminal, podemos ver como funciona:

No começo de cada linha temos 10 colunas referente as permissões de cada arquivo, onde a primeira coluna identifica o tipo do arquivo, se é um arquivo, um diretório, um link, etc. Após a primeira coluna, temos um conjunto de três colunas para cada classe de permissões, ou seja, do dono, do grupo e outros contando da esquerda para direita.

Diferença de permissões entre arquivos e diretórios:

Objeto Leitura (r)
Gravação (w)
Execução (x)
Arquivo Permite ler o conteúdo do arquivo Permite alterar o arquivo Permite executar arquivo como um programa
Diretório Permite listar o conteúdo do diretório Permite criar e apagar arquivos no diretório Permite ler e gravar arquvos no diretório

Lista de comandos para trabalhar as permissões

chmod

Muda as permissões de acesso a um determinado arquivo ou diretório.

Sintaxe

Opções

-v, –verbose

Mostra todos os arquivos que estão sendo processados.

-f, –silent

Não mostra a maior parte das mensagens de erro.

-c, –change

Semelhante a opção -v, mas só mostra os arquivos que tiveram as permissões alteradas.

-R, –recursive

Muda permissões de acesso do diretório/arquivo no diretório atual e sub-diretórios.

ugoa+-=rwxXst

  • ugoa – Indica o nível de acesso será mudado. Especificam, em ordem, usuário (u), grupo (g), outros (o), todos (a).
  • +-=+ adiciona a permissão, retira a permissão do arquivo e = define a permissão exatamente como especificado.
  • rwx – r permissão de leitura do arquivo. w permissão de gravação. x permissão de execução (ou acesso a diretórios).

Exemplos

sele%ef%bf%bd%ef%bf%bdo_004

chgrp

Muda o grupo de um arquivo ou diretório

Sintaxe

Opções

-v, –verbose

Mostra todas as mensagens e arquivos sendo modificados.

-R, –recursive

Altera os grupos de arquivos/sub-diretórios do diretório atual.

chown

Altera dono de um arquivo ou diretório. Pode também ser usado para mudar o grupo

Sintaxe

Opções

-v, –verbose

Mostra os arquivos enquanto são alterados.

-R, –recursive

Altera dono e grupo de arquivos no diretório atual e sub-diretórios.

Exemplos

umask

O comando umask define as permissões iniciais quando um arquivo ou diretório for criado. Digitando umask sem nenhum parâmetro podemos visualizar nosso umask atual. O umask cria permissão diferente caso o arquivo seja um executável e se for um arquivo texto. Veja a tabela a seguir:

Caso seu umask seja 022, os arquivos de texto será criados por padrão com permissão 644, ou seja, rw- para o dono, r– para o grupo e r– para outros. Para que alterar o umask, geralmente deve-se alterar seu valor no arquivo /etc/profile.

[Dica rápida] Meus 10 comandos mais rodados no linux

Com este comando podemos conferir quais os 10 comandos mais rodados em nossa máquina:

Meu resultado foi:

 

Reforçando segurança servidor ssh

Restrições de acesso

Caso queria restringir acesso somente a grupos ou usuários específicos, acrescentaremos ou editaremos as opções abaixo no arquivo de configuração do servidor ssh, o /etc/ssh/sshd_config. O mais correto ainda seria criar um grupo somente para acessos ssh.

Podendo usar ou somente restrição por grupo ou somente restrição por usuário.

Não permitir acesso direto como root

Modificar porta padrão

De preferência uma porta  com valor alto.

Bloquear ataques de força bruta com iptables

Logando com chaves de criptografia

Gerar a chave

selecao_009

Copiar para a outra máquina a chave pública

selecao_010

Verificar se o arquivo foi copiado para o destino em .ssh/authorized_keys e modificar a permissão para 600, por questões de segurança

Desabilitar autenticação por senha