Documente Academic
Documente Profesional
Documente Cultură
coisa sobre o dispositivo de udio da mquina? claro que no. Eles no precisam.
Os mdulos PAM se encarregam disso.
Na verdade, PAM vai um pouco alm da autenticao. Os mdulos podem ser
divididos em quatro tipos:
auth:
a parte que verifica que o usurio realmente quem ele diz que . Pode ser
bem simples, pedindo apenas por um nome e uma senha, ou utilizando
autenticao biomtrica, por exemplo (como uma impresso de voz, uma
imagem da retina ou impresso digital).
account:
Esta parte verifica se o usurio em questo est autorizado a utilizar este servio
ao qual ele est se autenticando. Os mdulos aqui podem checar por horrio, dia
da semana, origem do login, login simultneo, etc.
passwd:
Este servio usado quando se deseja mudar a senha. Por exemplo, aqui podem
ser colocados mdulos que verificam se a senha forte ou fraca.
session:
Por fim, a parte session fica encarregada de fazer o que for necessrio para criar
o ambiente do usurio. Por exemplo, fornecer o acesso a alguns dispositivos
locais como o de udio ou cdrom, montar sistemas de arquivos ou simplesmente
fazer o registro do evento nos arquivos de log do sistema.
Um mdulo PAM pode ou no conter todas estas funes. O mdulo pam_pwdb, por
exemplo, pode ser usado nestes quatro tipos e possui aes diferentes em cada uma
das situaes, enquanto quepam_console normalmente usado apenas como session.
7.3.1.1. Instalao
Os mdulos PAM j vm instalados por padro no Conectiva Linux. Voc pode
verificar procurando, na lista de pacotes instalados do synaptic, pelo pacote pam.
7.3.1.2. PAM no Linux
Praticamente todos os aplicativos do Linux que requerem algum tipo de autenticao
suportam PAM. Na verdade, no funcionam sem PAM. Toda a configurao est
required
/lib/security/pam_securetty.so
required
/lib/security/pam_pwdb.so shadow nullok
required
/lib/security/pam_nologin.so
required
/lib/security/pam_pwdb.so
required
/lib/security/pam_cracklib.so
required
/lib/security/pam_pwdb.so shadow md5 nullok \
required
optional
/lib/security/pam_pwdb.so
/lib/security/pam_console.so
Este arquivo de configurao lista os mdulos PAM que este programa (login) deve
usar, e eles esto representados na figura atravs de letras. Estes mdulos sero
carregados e executados na ordem em que estiverem no arquivo de configurao.
Note que um mdulo pode aproveitar uma informao de um mdulo anterior, como
normalmente feito para username/senha. Isso usado para no pedir a mesma
informao novamente para o usurio.
A primeira coluna em um arquivo de configurao PAM representa o tipo de mdulo:
auth, account, password ou session. Neste exemplo, todos esto presentes, mas isto
no obrigatrio. Se um programa no tiver suporte troca de senha, o tipo
"password" no usado.
A segunda coluna define a flag de controle para o seu respectivo mdulo. O resultado
de cada mdulo pode influenciar de diversas formas o resultado do processo de
informaes desejadas.
Este mdulo aceita alguns parmetros, conforme seu uso (auth, account, etc.):
shadow: se estiverem sendo usadas senhas shadow ou convencionais.
nullok: permite o uso de senhas em branco. Note que, mesmo que a senha seja
linha password.
use_authtok: indica que o mdulo deve usar a autenticao j fornecida para os
minsculas?
similar: a nova senha muito similar antiga? Esta verificao pode ser
"similar", vista h pouco. O valor padro 10 (e este o valor alterado por "N"
ou metade do tamanho da senha atual), aquele que for o menor.
minlen=N
Tamanho mnimo da nova senha mais um. Alm de contar a quantidade de
caracteres da senha nova, crditos tambm podem ser fornecidos com base na
quantidade de algarismos, caracteres maisculos/minsculos e smbolos. Ou
seja, se o valor de minlen for 10, o usurio pode usar uma senha com menos do
que 10 caracteres, desde que, somando a quantidade de caracteres mais os
crditos, o valor final ultrapasse 10. Por exemplo:
password required /lib/security/pam_cracklib.so retry=3 minlen=10
Note que o uso de dois algarismos no ajudou em termos de crditos. Mas isto
pode ser mudado se passarmos um outro parmetro para o mdulo:
password required /lib/security/pam_cracklib.so retry=3 \
minlen=10 dcredit=2
7.3.1.2.5. pam_console
O objetivo do mdulo pam_console permitir ao usurio local (ou seja, no console,
fisicamente na mquina) o acesso a diversos dispositivos normalmente restritos ao
superusurio, como placa de som, dispositivo de disquete e tambm permitir ao
usurio comum (local) executar certas tarefas, como desligar o computador, entrar no
ambiente grfico ou mesmo instalar pacotes RPM.
Essa capacidade adicional fornecida ao usurio no seu primeiro login e removida
aps o ltimo logout, e se d atravs da modificao das permisses de alguns
dispositivos e tambm atravs de autenticao.
Diz-se que o primeiro usurio que fizer login no console "ganha" o console e as
permisses definidas no arquivo de configurao /etc/security/console.perms. Quando
um usurio possui o console, um arquivo de lock criado em /var/lock com o
nome console.lock. O contedo do arquivo o nome do usurio que possui o console.
Se um outro usurio local fizer um login, ele no receber o console, pois j existe
um lock indicando que o console pertence a outro usurio. Quando o usurio do
console fizer logout, o arquivo de lock ser removido e o console novamente ficar
disposio do primeiro usurio (no root) que fizer o login.
Quando um usurio recebe o console, vrias permisses so alteradas no sistema de
arquivos, conforme indicado no arquivo de configurao deste mdulo PAM. Note
que este mdulo est como optional, ou seja, no usado para o sucesso ou no da
autenticao do usurio. Isso necessrio, pois ele pode falhar (um outro usurio j
possui o console, por exemplo).
A seguir, um arquivo de configurao tpico (sem os comentrios maiores):
# file classes -- these are regular expressions
<console>=tty[0-9][0-9]* :[0-9]\.[0-9] :[0-9]
<xconsole>=:[0-9]\.[0-9] :[0-9]
# device classes -- these are shell-style globs
<floppy>=/dev/fd[0-1]*
<sound>=/dev/dsp* /dev/audio* /dev/midi* \
/dev/mixer* /dev/sequencer
<cdrom>=/dev/cdrom
<pilot>=/dev/pilot
<jaz>=/dev/jaz
<zip>=/dev/zip
<fb>=/dev/fb /dev/fb[0-9]*
<kbd>=/dev/kbd
<joystick>=/dev/js*
<v4l>=/dev/video* /dev/radio* /dev/winradio* /dev/vtx* /dev/vbi*
# permission definitions
<console> 0660 <floppy>
<console> 0660 <sound>
0660 root.floppy
0660 root.audio
<console>
<console>
<console>
<console>
<console>
<console>
<console>
<console>
0660
0600
0600
0600
0600
0600
0600
0600
<cdrom>
<pilot>
<jaz>
<zip>
<fb>
<kbd>
<joystick>
<v4l>
0660
0660
0660
0660
0600
0600
0600
0600
root.cdrom
root.tty
root.disk
root.disk
root
root
root
root
O mdulo pam_deny simplesmente vai sempre retornar erro. O problema que ele
no faz log disso, e a que entra o pam_warn, cujo nico objetivo colocar uma
mensagem no log do sistema. O log tipicamente como ilustrado abaixo:
jul 19 10:53:51 manticore PAM-warn[8365]: service: su \
[on terminal: <unknown>]
jul 19 10:53:51 manticore PAM-warn[8365]: user: (uid=681) -> root \
[remote: ?nobody@?nowhere]
Para gerar este log, removi o arquivo /etc/pam.d/su e, como usurio comum, tentei
executar o comando su:
[darkangel@manticore darkangel]$ su
su: senha incorreta
Se o arquivo other no tivesse o pam_warn, nada seria registrado nos logs do sistema.
7.3.1.4.2. pam_access
O mdulo pam_access pode ser usado para controlar quais usurios podem fazer
login de qual local (terminal, remoto, domnio, etc.). Alguns servidores, como o
openssh, j possuem um controle parecido embutido, mas tambm podem usufruir
deste mdulo. O arquivo de configurao do
mdulo pam_access /etc/security/access.conf e contm alguns exemplos. A sintaxe
bastante simples. Por exemplo, a linha abaixo permite o login do usurio perigo (ou
de usurios do grupo perigo) apenas a partir dos terminais tty3 e tty4. O resto
(inclusive logins remotos) fica negado:
- : perigo : ALL EXCEPT tty3 tty4
required
/lib/security/pam_access.so
7.3.1.4.3. pam_limits
Este mdulo muito importante quando se tem usurios com shell em um servidor.
Basicamente, ele configura limites para os recursos do sistema disponveis para o
usurio: uso de CPU, memria e outros que veremos a seguir. Note que estes limites
so aplicados por processo, e no por usurio[2]. Este mdulo entra apenas na
categoria session e seu arquivo de configurao, /etc/security/limits.conf, contm
vrios detalhes. As entradas do arquivo de configurao do mdulo pam_limits so da
seguinte forma:
<domnio>
<tipo>
<item>
<valor>
domnio:
Pode ser um nome de usurio, um nome de grupo (usando a sintaxe @grupo) ou
um asterisco (*), indicando qualquer domnio.
tipo:
Pode ter somente dois valores: hard e soft. Limites do tipo hard so aqueles
definidos pelo superusurio e impostos pelo kernel do Linux. O usurio no
pode aumentar estes limites. Por outro lado, limites do tipo soft so aqueles que
o usurio pode alterar, desde que no ultrapasse o que foi definido como um
limite hard. Pode-se pensar neste ltimo tipo de limites como sendo valores
padro para o usurio, ou seja, ele comea com estes valores.
item:
pode ser um dos seguintes:
(KB).
fsize: tamanho mximo para arquivos que forem criados.
memlock: tamanho mximo de memria que um processo pode bloquear
usurio.
as: limite para o espao de endereamento.
maxlogins: quantidade mxima de logins para este usurio.
priority: a prioridade com que os processos deste usurio sero
executados
valor:
Aqui deve ser colocado o valor para o item da coluna anterior.
importante notar que se tivermos limites para um usurio e para o seu grupo, os
limites para o usurio tero preferncia sobre os limites especificados para o seu
grupo. E, mais uma vez, no basta alterar o arquivo de configurao se o mdulo no
for usado. Este um mdulo da categoria session, e deve ser utilizado da seguinte
forma:
session
required
/lib/security/pam_limits.so
alternativo.
A seguir mostraremos alguns exemplos. Nmero mximo de logins simultneos para
o grupo coitados:
@coitados
maxlogins
Ultrapassando este limite, o usurio receber uma mensagem na tela informando que
excedeu o nmero mximo de logins e o log mostrar:
Jul 19 16:39:52 manticore pam_limits[14659]:Too many logins (max 1) \
for darkangel
Jul 19 16:39:54 manticore login[14659]: Permission denied
Isto vale tambm para logins remotos? Desde que se use PAM, sim. Por exemplo,
vale direto para o telnet, pois ele usa o programa login. Para fazer valer para ssh
tambm basta acrescentar o mdulopam_limits ao /etc/pam.d/sshd.
nproc
Exemplo:
manticore login: usuario
Password:
[usuario@manticore newton]$ bash
[usuario@manticore newton]$ bash
[usuario@manticore newton]$ bash
bash: fork: Recurso temporariamente indisponvel
[usuario@manticore newton]$ ls
bash: fork: Recurso temporariamente indisponvel
[usuario@manticore newton]$ exit
[usuario@manticore newton]$ ls
Desktop GNUstep
[usuario@manticore newton]$
required
/lib/security/pam_time.so
formato:
servio;terminal;usurios;horrios
Segunda-feira
Mo
Tera-feira
Tu
Quarta-feira
We
Quinta-feira
Th
Sexta-feira
Fr
Sbado
Sa
Domingo
Su
Dias teis
Wk
Fim-de-semana Wd
Todos os dias
Al
Uma "lista" , da forma como pode ser usada aqui, uma seqncia de nomes e
opcionalmente alguns caracteres especiais: ! (negao), * (curinga), & (AND) e
| (OR). Por exemplo, usar !joao&!root na lista de usurios significa que a regra
no se aplica ao usurio root nem ao usurio joao.
Para especificar os horrios, deve-se sempre utilizar o primeiro valor referente
ao dia da semana e logo aps a faixa de horrios, como, por exemplo, Mo18000900 indica apenas a segunda-feira das 18h s 9 horas do dia seguinte