Índice
hosts.equiv
e .rhosts
Este capítulo documenta diversos métodos de fazer restrições de contas, limitação de acesso interno/externo, de recursos por usuários/grupos, login, tempo máximo ocioso, e outros modos para limitar o uso de recursos do sistema. Também são descritos métodos para aumentar a segurança do acesso físico a seu servidor e maneiras de restringir o uso de serviços disponíveis no sistema.
Se você deseja restringir o acesso de máquinas na rede ou portas específicas em sua máquina , veja também Capítulo 10, Firewall iptables .
Variáveis exportadas na forma comum podem ser modificadas a qualquer momento pelo usuário, e isso pode trazer problemas de acordo com o tipo de sistema que administramos. A definição da variável como somente leitura (readonly) evita a maioria destes problemas:
readonly TESTE="123"
A variável TESTE
não poderá ser modificada ou
excluída. Com isto o administrador pode "bloquear" a modificação de variáveis
que controlam o funcionamento de determinados recursos do interpretador de
comandos (alguns deles serão vistos ainda nesta seção).
OBS1: Algumas variáveis de controle de
ambientes ambiente do interpretador de comandos já são iniciadas com valores
somente leitura (como as variáveis EUID
e
PPID
)
OBS2: Variáveis exportadas como somente leitura em shell scripts são mantidas até a finalização do script e depois liberadas.
O controle de acesso a diretórios de usuários é importante quando desejamos que
outras pessoas não tenham acesso ao diretório de outros usuários, violando a
privacidade do mesmo e obtendo acesso a partes indesejáveis, principalmente do
usuário root
. É recomendado restringir o acesso somente ao
dono
e grupo
do usuário, bloqueando o
acesso a outros tipos de usuários:
chmod 2750 /root chmod 2750 /home/usuario
O exemplo acima permitirá o acesso do diretório /root
e
/home/usuario
somente ao usuário e grupo que pertencem.
Este processo pode ser facilitado na criação dos diretórios de usuários em
/home
especificando a variável:
DIR_MODE=0750
no arquivo
/etc/adduser.conf
.
OBS: Algumas distribuições de
Linux garantem o acesso livre a diretórios de usuários por
padrão pois alguns daemons que requerem acesso a diretório de usuários rodam
sob outros usuários ao invés do root. Um bom exemplo é a utilização do recurso
"UserDir" do Apache para servir requisições como
http://servidor.org/~usuario
.
A restrição de diretório home neste caso bloqueará o acesso do servidor web
Apache ao diretório
/home/usuario/public_html
. Mesmo assim, uma alternativa
para garantir a utilização da restrição é incluir o usuário do servidor web
Apache (www-data
) no grupo "usuario" (que
possui acesso ao diretório /home/usuario
):
adduser www-data usuario
Isto garantirá que o servidor Apache continue servindo as
requisições dentro do diretório /home/usuario
, com acesso
garantido via grupo. O mesmo principio pode ser aplicado em outros programas,
apenas leve em consideração que se um cracker tomar conta do processo que tem
acesso ao seu diretório home restrito, ele certamente também terá acesso.
Quando o bash é iniciado com o parâmetro
-r
, --restricted
ou como
rbash, o shell restringe o uso dos seguintes recursos em sua
seção:
Usar o comando cd para mudar de diretório.
Definindo, modificar ou apagar a variáveis SHELL
,
PATH
, ENV
,
BASH_ENV
.
Nomes de comandos que contém /
Especificar um nome de arquivo contendo uma /
como
argumento para o comando builtin (embutido no interpretador
de comandos).
Especificar uma /
como argumento a opção
-p no comando hash (embutido no
interpretador de comandos).
Importar a definição de funções do ambiente do shell atual.
Analisar o valor da variável SHELLOPTS
do ambiente
do shell atual.
Redirecionando a saída padrão usando os operadores de redirecionamento
>
, >|
, <>
,
>&
, >&
; e
>>
.
Usando o comando embutido exec para substituir o shell por outro comando.
Usar as opções -f ou -d com o comando enable (embutido no interpretador de comandos).
Especificar a opção -p ao comando interno command.
Desativar o modo restrito com set +r
ou set +o
restricted
*
Estas restrições são ativadas após a leitura dos arquivos de inicialização do interpretador de comandos. O shell restrito desliga as restrições quando um shell script é executado.
A variável TMOUT
determina o tempo de inatividade de
um shell para que ele seja terminado.
export TMOUT=600
Terminará o bash caso nenhum comando seja executado no período de 600 segundos (5 minutos). Veja “Uso do comando readonly para exportar variáveis” como complemento.
Todos os comandos que digitamos em uma seção do shell são registrados no
arquivo ~/.bash_history
, as seguintes variáveis fazem seu
controle:
HISTFILE
- Nome do arquivo que armazenará o
histórico de comandos. O padrão é ~/.bash_history
. Caso
não seja especificado, os comandos não serão gravados após finalizar o shell.
HISTSIZE
- Define o número de comandos que o arquivo
de histórico poderá armazenar, o padrão é 500.
HISTFILESIZE
- Define o número máximo de linhas no
arquivo de histórico.
Se você possui muitos usuários em seu sistema, é recomendado ajustar estas variáveis como somente leitura para que o usuário não desative o logging por qualquer motivo (veja “Uso do comando readonly para exportar variáveis”).
Existem casos onde o usuário precisa estar cadastrado no sistema mas não precisa ter acesso a uma conta de login válida (como um sistema servidor de e-mail ou outros serviços). Neste caso a desabilitação dos serviços de shell aumentará um pouco a segurança do sistema, mesmo conseguindo acesso a conta/senha estará impedido de entrar no sistema (pelo menos terá um pouco mais dificuldade para conseguir isso).
Um programa que é muito usado para desabilitar o shell exibindo uma mensagem ao
usuário que fez a tentativa é o falselogin. Ele deve ser
colocado como o "shell padrão" no arquivo /etc/passwd
e
exibirá a mensagem contida no arquivo /etc/falselogin.conf
quando o login para aquele usuário for tentado. Esta operação pode ser
facilitada usando a variável
DSHELL=/usr/bin/falselogin
no arquivo
/etc/adduser.conf
.
Uma forma alternativa de desativar o serviço de login de TODOS os usuários
(exceto o root
e os já logados no sistema) é criar um
arquivo chamado /etc/nologin
e colocando uma mensagem
dentro dele, que será exibida quando tentarem efetuar o login no sistema.
OBS: Tome cuidado ao usar esta alternativa, este método deve ser usado somente em caso de EMERGÊNCIA, as distribuições Linux usam este método para bloquear o login de outros usuários durante o processo de inicialização, removendo assim que o processo é terminado. Esteja consciente disso.
Em alguns casos, o uso do PAM pra desabilitar os serviços de login pode ser mais adequado (veja “Restringindo/Bloqueando o login”).
Copyright © 1999-2020 - Gleydson Mazioli da Silva