| Limitando usuários com o PAM |
|
|
|
| Escrito por cristhian |
| Seg, 27 de Dezembro de 2010 03:05 |
2. Limitação dos usuáriosSabendo que cada módulo pode ser responsável por algum tipo de recurso para os logins no PAM, vamos trabalhar alguns módulos que produzem limitações aos usuários no sistema. Estes módulos são: pam_limits, para limites dentro de uma sessão; e pam_time para restrição de logins em certos períodos. 2.1. Configuração InicialPara que tanto o pam_limits, quanto o pam_time funcionem, eles precisam estar habilitados na sua distribuição e configuração do PAM. Geralmente o pam_limits já vem por padrão na grande maioria das distribuições, mas o pam_time nunca vem habilitado por padrão. A configuração do PAM não é tão simples assim como a gente gostaria que fosse, então vou explicar aqui apenas o básico para aprendermos à habilitar as funcionalidades que queremos. Todas as configurações do PAM estão contidas no diretório /etc/pam.d. Dentro deste diretório, cada arquivo representa o que um programa vai utilizar de mecanismo PAM. Por exemplo, o arquivo /etc/pam.d/su vai ser utilizado pelo programa su para saber como ele vai autenticar os usuários. Para facilitar um pouco a vida dos usuários, as distribuições unificam as configurações comuns em apenas alguns arquivos. Em sistemas baseados em Red Hat EL / Fedora, este arquivo será o /etc/pam.d/system-auth, enquanto que em sistemas baseados em Debian, são 4 arquivos: common-account, common-auth, common-password e common-session, todos dentro do diretório /etc/pam.d. Vamos aos exemplos, em um sistema Fedora, no system-auth vai ter a linha: session required /lib/security/pam_limits.so O que significa que o pam_limits já está sendo carregado cada vez que o usuário inicie uma sessão. Para habilitar o pam_time, precisamos adicionar uma linha: account requisite /lib/security/pam_time.so account required /lib/security/pam_unix.so A segunda linha (pam_unix) já existia. A primeira linha habilita o pam_time, ou em outras palavras, torna a execução do pam_time obrigatória na hora que o usuário for acessar a conta (antes de se logar). Agora em um sistema Debian, pode-se colocar as duas linhas (do pam_limits e do pam_time) nos arquivos common-session e common-account respectivamente, que isso irá se aplicar para tudo que utiliza o PAM, assim como fizemos com o system-auth no Fedora. Ou você também pode utilizar o arquivo /etc/pam.d/login, que é responsável pelos logins locais no sistema. Dentro do /etc/pam.d/login no Debian você já poderá encontrar várias linhas pré-definidas e comentadas. Se procurar pelo pam_limits, vai ver que a linha: session required pam_limits.so Está lá. Se procurar pelo pam_time, vai ver que a linha está comentada: # account requisite pam_time.so Então para habilitar basta descomentar e salvar o arquivo. Com estas duas linhas configuradas no PAM, os limites para os usuários já podem ser configurados! 3. Limitando por HoraHabilitado o pam_time, podemos configurá-lo através do arquivo /etc/security/time.conf. Dentro deste arquivo, cada linha vai ser uma restrição para os usuários. Como o próprio arquivo diz, a sintaxe das linhas é: serviços;ttys;usuários;horas Sendo que:
Para aprender melhor, vamos aos exemplos: sshd:*:teste:Mo2100-2200 Na linha acima, o usuário teste só poderá acessar o sshd das 21:00 até as 22:00 na Segunda-Feira. A linha: sshd:*:teste:!Mo2100-2200 O usuário teste poderá acessar o sshd toda hora, exceto Segunda-Feira das 21:00 até as 22:00. A exclamação inverteu totalmente o caso. No campo da faixa de tempo, podemos usar as abreviações:
E como horários, basta usar faixas de horas como 2100-2200 (21 horas até 22 horas), ou 1732-1915 (17:32 até as 19:15). Mais exemplos: sshd:*:hugo:Wd0800-1800 O usuário hugo só poderá acessar o sshd em horário comercial, ou seja, de Segunda à Sexta das 08:00 da manhã até as 18:00. *:*:silvia|lisa:!Al1200-1800 As usuárias silvia e lisa não vão poder acessar nada durante todos os dias, das 12:00 às 18:00. samba:*:guest:We1200-1201 O usuário guest só vai poder acessar o serviço PAM samba na quarta-feira das 12:00 as 12:01! Boa sorte pra ele! Lembre-se, a partir do momento que você salva o arquivo de configuração time.conf as configurações já estarão funcionando. 4. Limitando recursosAgora é a vez do pam_limits. O arquivo de configuração do pam_limits é o /etc/security/limits.conf. Dentro dele, as linhas serão configuradas da seguinte forma: usuario/grupo tipo de limite recurso valor do limite Em usuário/grupo, podemos colocar um * para especificar todos os usuários, colocar um nome de usuário qualquer ou um nome de grupo, começando com @. No tipo de limite, existem dois tipos possíveis: soft e hard. Quando o limite do tipo soft é chegado, o sistema avisa que chegou no limite mas não restringe nada. Se o limite for do tipo hard, o sistema simplesmente restringe o recurso e não deixa passar dalí. O soft então serve apenas para um “aviso” amigável, então na dúvida o hard é quem manda! O recurso e o valor do limite são os importantes aqui. Alguns dos recursos:
Agora vamos entender melhor com os exemplos: teste hard fsize 100 O usuário teste não pode criar arquivos maiores que 100KB (fsize 100). Testando: $ dd if=/dev/zero of=arquivo bs=1024 count=100 100+0 records in 100+0 records out 102400 bytes (102 kB) copied, 0.0011873 s, 86.2 MB/s Ele deixou criar um arquivo de 100KB. Agora vou criar um de 105! $ dd if=/dev/zero of=arquivo bs=1024 count=105 File size limit exceeded Outro exemplo: teste hard nproc 5 O usuário teste só poderá executar 5 processos. Tenha em mente que os processos do bash por exemplo também contam. Então colocar 1 não é uma boa idéia assim se seu usuário tiver executando uma shell interativa. @teste hard maxlogins 1 Todo mundo do grupo teste só pode se logar uma vez no sistema. dumau hard memlock 20000 O usuário dumau só pode usar 20MB de memória no sistema. @users hard priority 19 Todos os usuários do grupo users vão executar seus processos automaticamente com prioridade mais baixa do sistema. 4.1. Boas práticas de limites de recursosPara ter um sistema um pouco mais seguro se você tiver muitos acessos externos, imponha limites tais como:
5. ConclusãoCom o PAM podemos ter um controle maior sobre o que os usuários fazem dentro de um sistema. Em servidores, por exemplo, isso é mais do que essencial! Se aparecer qualquer outro exemplo, não deixe de me contactar para que eu adicione no artigo. |



Comentários
Parabéns
Assine o RSS dos comentários