New Post

Rss

Showing posts with label Permisses. Show all posts
Showing posts with label Permisses. Show all posts
Thursday, September 1, 2011
no image

Linux – Sistema de Permissões

No Linux, as permissões são agrupadas em três atributos principais: leitura, gravação e execução (no caso de arquivos) ou listagem do conteúdo (no caso das pastas). Eles são representados, respectivamente pelas letras r,w, x.

As permissões são definidas de forma separada para o dono, o grupo (que inclui todos os usuários incluídos nele) e para os outros, ou seja, todos os demais usuários do sistema. Em geral, o dono tem acesso completo, o grupo tem permissões variáveis  e os demais apenas podem ler os arquivos, sem fazer qualquer alteração.

A ideia básica da segurança no sistema GNU/Linux é definir o acesso aos arquivos por donos, grupos e outros usuários:

Dono – É a pessoa que criou o arquivo ou o diretório. Normalmente, somente o dono pode modificar as permissões de acesso do arquivo. As permissões de acesso do dono de um arquivo somente se aplicam ao dono do arquivo/diretório. A identificação do dono também é chamada de user id (UID).Grupo – Permite que vários usuários diferentes tenham acesso a um mesmo arquivo mesmo não sendo dono daquele arquivo. Por padrão, quando um novo usuário é criado e não especificar nenhum grupo, ele pertencerá ao grupo de mesmo nome do seu usuário. A identificação do grupo é chamada de GID (group id). Um usuário pode pertencer a um ou mais grupos. outrosOutros – É a categoria de usuários que não são donos ou não pertencem ao grupo do arquivo.

Quanto aos tipos de permissões que se aplicam ao dono, grupo e outros usuários, temos 3 permissões básicas:

r – Permissão de leitura para arquivos. Caso for um diretório, permite listar seu conteúdo (através do comando ls, por exemplo).w – Permissão de gravação para arquivos. Caso for um diretório, permite a gravação de arquivos ou outros diretórios dentro dele. Para que um arquivo/diretório possa ser apagado, é necessário o acesso a gravação.x – Permite executar um arquivo (caso seja um programa executável). Caso seja um diretório, permite que seja acessado através do comando cd.

As permissões de acesso a um arquivo/diretório podem ser visualizadas com o uso do comando ls -l. As 3 letras (rwx) são agrupadas da seguinte forma:

drwxr-xr– root root teste

A primeira letra diz qual é o tipo do arquivo. Caso tiver um “d” é um diretório, um “l” um link a um arquivo no sistema, um “-” quer dizer que é um arquivo comum, etc.

Da segunda a quarta letra (rwx) dizem qual é a permissão de acesso ao dono do arquivo. Neste caso root ele tem a permissão de ler (r – read), gravar (w – write) e executar (x – execute) o arquivo computadores.

Da quinta a sétima letra (r-x) diz qual é a permissão de acesso ao grupo do arquivo. Neste caso todos os usuários que pertencem ao grupo root tem a permissão de ler (r), e também executar (x) o arquivo teste. Lembre-se que quanto um usuário é criado, um grupo com o nome do usuário também é criado. Isso explica o fato do “root root”, que indica que o arquivo pertence ao usuário root e ao grupo root.

Da oitava a décima letra (r–) diz qual é a permissão de acesso para os outros usuários. Neste caso todos os usuários que não são donos do arquivo teste tem a permissão somente para ler (r) o arquivo.

O primeiro root indica o nome do dono do arquivo.

O segundo root indica o nome do grupo que o arquivo pertence.

A palavra teste indica o nome da pasta.

Para ajustar as permissões de acesso de um arquivo/diretório, utilizamos os comandos chmod e chown. O primeiro permite ajustar as permissões de arquivos e pastas, enquanto o segundo permite transferir a posse, dizendo a qual usuário e a qual grupo determinada pasta ou arquivo pertence.

Para que os usuários do grupo professores possam alterar o conteúdo da pasta, o primeiro passo é alterar as permissões, transferindo a posse do grupo root para o grupo professores. Nesse caso, não precisamos alterar o dono da pasta, que pode continuar sendo o root.

# chown –R root:professores teste

O –R no exemplo faz com que a alteração seja aplicada de forma recursiva, afetando todos os arquivos e subpastas. Sem ele, a alteração seria aplicada apenas a pasta propriamente dita, mas não ao seu conteúdo. Em seguida, especificamos o novo dono e o novo grupo, separados por : seguido da pasta. Com isso as permissões serão alteradas para:

drwxr-xr– root professores teste

Falta agora alterar as permissões de acesso para o grupo, de forma que os usuários possam finalmente escrever na pasta. Para isso, usamos o comando chmod –R g+rw, que especifica que o grupo (g) terá permissão de leitura e escruta (+rw):

chmod –R g+rw teste

Se você quisesse fazer o oposto, ou seja, remover a permissão de escrita para o grupo, usaria o chmod –R g-w teste, se quisesse remover a permissão de leitura para todos os demais usuários usaria o chmod –R o-r e, se quisesse abrir as permissões para todo mundo, usaria o chmod –R ugo+rwx.

Abaixo, segue uma pequena “cola” com os parâmetros:

-R: Recursivo, altera as permissões de todo o conteúdo da pasta, opcional.u: Permissões para o dono da pasta (user)g: Permissões para o grupo (group)o: Permissões para os demais (others)+: Adiciona a permissão-: Remove a permissãor: Permissão de leituraw: Permissão de gravaçãox: No caso dos arquivos indica permissão de escrita e, no caso da pasta, permissão para ver o conteúdo.

Ao invés de utilizar os modos de permissão +r, -r, etc, pode ser usado o modo octal para se alterar a permissão de acesso a um arquivo. O modo octal é um conjunto de oito números onde cada número define um tipo de acesso diferente.

O uso de um destes números define a permissão de acesso do dono, grupo ou outros usuários. Um modo fácil de entender como as permissões de acesso octais funcionam, é através da seguinte tabela:

A soma desses números define as permissões concedidas.

É mais flexível gerenciar permissões de acesso usando o modo octal ao invés do comum, pois você especifica diretamente a permissão do dono, grupo, outros ao invés de gerenciar as permissões de cada um separadamente. Abaixo a lista de permissões de acesso octal:

0 – Nenhuma permissão de acesso. Equivalente a -rwx.1 – Permissão de execução (x).2 – Permissão de gravação (w).3 – Permissão de gravação e execução (wx). Equivalente a permissão 2+14 – Permissão de leitura (r).5 – Permissão de leitura e execução (rx). Equivalente a permissão 4+16 – Permissão de leitura e gravação (rw). Equivalente a permissão 4+27 – Permissão de leitura, gravação e execução. Equivalente a +rwx (4+2+1).

Vamos à prática com alguns exemplos:

# chmod 764 teste

Os números são interpretados da direita para a esquerda como permissão de acesso aos outros usuários (4), grupo (6), e dono (7). O exemplo acima faz os outros usuários (4) terem acesso somente leitura (r) ao arquivo teste, o grupo (6) ter a permissão de leitura e gravação (rw), e o dono (7) ter permissão de leitura, gravação e execução (rwx) ao arquivo teste.

# chmod 40 teste

O exemplo acima define a permissão de acesso dos outros usuários (0) como nenhuma, e define a permissão de acesso do grupo (4) como somente leitura (r). Note usei somente dois números e então a permissão de acesso do dono do arquivo não é modificada (leia as permissões de acesso da direita para a esquerda!).

# chmod 751 teste

O exemplo acima define a permissão de acesso dos outros usuários (1) para somente execução (x), o acesso do grupo (5) como leitura e execução (rx) e o acesso do dono (7) como leitura, gravação e execução (rwx).

Referências: Guia Foca GNU/Linux e Guia do Hardware
Confira mais em: www.techlivre.com.br

Monday, February 28, 2011
no image

Segurança além das permissões de acessos

As empresas cada vez mais investem em segurança para proteger suas informações, mas ao mesmo tempo, continuam se descuidando do elo fraco de qualquer sistema: a intervenção humana.

Fator Humano e Engenharia Social

Todos os sistemas informatizados, dos mais simples aos mais complexos, são desenvolvidos no intuito de serem eficientes e seguros, ou seja, com o objetivo de proverem produtividade ao mesmo tempo que protegem informações. Porém, todo sistema, por mais bem planejado que seja, sempre depende de uma intervenção humana que, se for falha, pode comprometer o mais consistente dos sistemas.

Uma vez que o sistema está sujeito à intervenção humana, também está sujeito a todas as suas fraquezas. As pessoas muitas vezes não estão cientes da importância das informações que detém, ou mesmo das consequências do mau uso destas. Uma vez que não estão conscientes de sua importância não se cercam de cuidados que possam evitar problemas.

Pessoas também costumam ser vaidosas e consequentemente mais receptivas quando recebem uma avaliação positiva em relação à sua personalidade ou profissão. Buscam transmitir confiança, demonstrações que fazem algo bem, e que possuem domínio sobre determinado assunto, além de valorizar suas habilidades pessoais, técnicas ou profissionais. Estes fatores se unem à vontade de ser útil, a busca por novas amizades ou relacionamentos profissionais, e tornam as pessoas suscetíveis a entregarem informações importantes, crendo que estão provando sua capacidade, porém, uma pessoa com poder de persuasão, e que saiba explorar estes fatores, facilmente pode obter informações importantes, e até mesmo confidenciais.

A Engenharia Social é um conjunto de práticas, usadas com o objetivo de obter informações importantes, explorando basicamente a confiança das pessoas. Dentro do contexto de um sistema de segurança da informação é uma forma de ataque não técnica, uma vez que não é necessário qualquer conhecimento de tecnologia. O foco é integralmente nas habilidades interpessoais, utilizadas para ganhar a confiança das pessoas utilizando-se de diversas técnicas para isso.

O processo de Engenharia Social se inicia com a coleta de informações. O hacker ou engenheiro social busca as mais diversas informações dos usuários, tais como: número de CPF, data de nascimento, nomes dos pais, manuais da empresa, etc. Essas informações ajudarão a estabelecer uma relação com alguém da empresa visada. A coleta de informações pode ser feita em diversas fases, obtendo informações de uma pessoa, que poderá levar a outra e assim por diante até atingir aquele que possui a informação que realmente interessa. O engenheiro social explora a natureza humana de ser confiante. Procura obter informações da vítima ou empresa como, por exemplo, senha, agenda de compromissos, dados de conta bancária ou cartão de crédito que serão utilizados no ataque. Dependendo do grau de acesso que o criminoso tem dentro de uma empresa, pode se aproveitar também do descuido, de informações expostas enquanto deveriam estar protegidas, seja na forma de um papel esquecido em cima da mesa, ou mesmo escutando uma conversa na hora do café. E uma vez formada a base de conhecimento o ataque propriamente dito é executado, atingindo a empresa ou pessoa, através do uso de todas as informações obtidas.

As empresas de pequeno porte conhecidamente não possuem grandes responsabilidades com política ou sistemas de segurança, e é notável o quanto estão expostas suas informações. Em um cenário oposto estão as empresas de grande porte, muito fortes nesses aspectos, com conhecida burocracia interna, e diversos processos de controle bem definidos.

Prevenção

A prevenção contra ataques de Engenharia Social é facilmente estabelecida quando os esforços são concentrados diretamente sobre as pessoas, uma vez que, dispositivos de segurança como hardware ou software podem ser ineficazes contra este tipo de ameaça.

O primeiro passo é educar e treinar. É fundamental conscientizar as pessoas sobre o valor da informação que elas dispõem e manipulam, seja ela de uso pessoal ou institucional. Imprescindível esclarecer também, como age um engenheiro social, demonstrar seus métodos, utilizar exemplos reais e ilustrar como ocorre um ataque. A decisão de simplesmente demonstrar o valor da informação, pode ter seu efeito controverso quando esta é percebida por pessoas que agem de má fé, sendo assim, deve-se mostrar a responsabilidade do indivíduo sobre a informação e as conseqüências de sua má administração.

De qualquer forma as técnicas de Engenharia Social visam burlar justamente a parte psicológica das pessoas, e por isso, deve-se cercar de outros cuidados. Permitir o acesso a dependências de uma organização apenas às pessoas devidamente autorizadas, bem como dispor de funcionários de segurança a fim de monitorar entrada e saída da organização são os primeiros cuidados. Quanto menos pessoas tiverem acesso à informação, menos pontos de vulnerabilidade serão criados, consequentemente, menos serão as chances de um engenheiro social atingir seu objetivo.

As políticas de segurança tem papel fundamental neste processo de proteção da informação, pois além de orientar as pessoas, estabelecem aquilo que é permitido ou proibido, permite que medidas punitivas sejam tomadas e assim materialize as consequências que desvios de conduta podem ter contra a pessoa que os pratica.

No caso da Engenharia Social, pouco importa se a senha é curta ou extensa, simples ou complexa, os métodos se aplicam para qualquer uma delas. Uma vez que as senhas complexas podem ser descobertas da mesma forma, a complexidade só burocratiza o sistema e aborrece os usuários que correrão maior risco de esquecê-las. Este aborrecimento fará com que se perca a confiança do usuário, este que por consequência, repudiará todo o treinamento recebido e passa a ser mais vulnerável. Lamentavelmente, o mais provável a acontecer é o usuário anotar sua senha e deixar em lugar de fácil acesso para consultá-la.

Em suma, é evidente que o fator humano é crítico dentro de um sistema de segurança, tanto pelo poder de comprometê-lo como pela pouca atenção que recebe. A Engenharia Social, neste contexto, torna-se uma ferramenta perigosa e capaz de explorar as falhas humanas em suas características mais profundas. As empresas investem uma quantidade cada vez maior de recursos em tecnologia para se protegerem, mas deixam de lado o ponto mais fraco que é a intervenção humana.

A conscientização dos funcionários e o estabelecimento de políticas claras de segurança são medidas fundamentais, mas não as únicas, quando se quer evitar a falha humana, e principalmente que deve ser dada a significativa importância ao valor que as pessoas representam dentro de um sistema de segurança da informação.

Até a próxima!

Deixem seus comentários e visitem meu blog em rcdelgado.wordpress.com

Saturday, February 26, 2011
no image

CHMOD: Permissões em Sistemas Linux e Unix-Like

Sistemas Operacionais Unix-Like, como o Linux, permitem restringir acesso a arquivos por meio do sistema de permissões. Como tudo em Linux é tratado como arquivo, as permissões são válidas para arquivos, diretórios, dispositivos de entrada/saída etc.

Não somente usuários Linux devem conhecer o sistema de permissões. Desenvolvedores que programam sistemas que rodarão em plataforma Linux devem conhecer o sistema de permissões também. É muito comum vermos programadores PHP falando “dê chmod 777, que resolve o problema de permissão”. Isso não é solução, é apenas o começo de um possível problema – e grave – futuro.

As permissões estão divididas em três níveis: permissões para o dono do arquivo, permissões para o grupo ao qual pertence o dono do arquivo e permissões para os outros usuários.

É por isso que sempre são mostrados três números, como 755, 644 ou três grupos de letras, como rwxr-xr-x ou rw-r–r–. Cada grupo corresponde a um nível de permissão.

O primeiro conjunto corresponde às permissões do dono do arquivo. O segundo, do grupo ao qual pertence o dono do arquivo. E o terceiro, ao outros usuários.

Cada conjunto citado acima corresponde a três bits. Com três bits, é possível formar oito combinações:

000 = 0
001 = 1
010 = 2
011 = 3
100 = 4
101 = 5
110 = 6
111 = 7

O primeiro bits corresponde a permissão de leitura (read). O segundo corresponde à permissão de escrita (write). O terceiro, à de execução (execution). Sendo assim, podemos reescrever as combinações acima da seguinte forma:

000 = --- = 0 = nenhuma permissão001 = --x = 1 = somente permissão de execução010 = -w- = 2 = somente permissão de escrita011 = -wx = 3 = somente permissões de escrita e execução100 = r-- = 4 = somente permissão de leitura101 = r-x = 5 = somente permissões de leitura e execução110 = rw- = 6 = somente permissões de leitura e escrita111 = rwx = 7 = permissões de leitura, escrita e execução (acesso total)

Vamos esclarecer o que significa ter permissão de leitura, escrita e execução em arquivos e diretórios.

Permissão de escrita em arquivo significa poder modificar o conteúdo do arquivo.Permissão de leitura de arquivo significa poder acessar (ler) o conteúdo do arquivo.Permissão de execução de arquivo significa poder executar o arquivo no terminal de comandos (shell).Permissão de escrita em diretórios significa poder criar arquivos no diretório. Além disso, permissão de escrita possibilita a remoção de arquivos existentes, assim como a modificação das permissões dos arquivos desse diretório.Permissão de leitura de diretórios significa poder acessar (ler) o conteúdo do diretório, ou seja, fazer a listagem do conteúdo do diretório.Permissão de execução em diretórios significa poder entrar no diretório, seja por meio do comando cd ou acessando via URL no navegador.

Permissão 777 significa acesso total. Se um diretório tem permissão 777, qualquer usuário pode mexer naquele diretório, inserindo ou removendo arquivos, além de poder mudar as permissões deles. Qualquer usuário pode inserir um script ou programa executável malicioso, dar permissão de execução e executá-lo quando quiser. Imagine isso ocorrendo em um servidor de hospedagem! É um risco enorme! É por isso que sempre insisto: nunca use permissão 777.

É muito comum vermos “programadores” PHP postando dúvidas em fóruns falando que estão recebendo mensagem de erro de permissão. Aí alguém responde “dá chmod 777?. Nunca façam isso!

O correto é verificar o dono do arquivo e definir as permissões adequadas. Normalmente usa-se 755 para diretórios e 644 para arquivos não executáveis, como é o caso do PHP rodando em servidores WEB.

Abraços,

Beraldo
Visite meu blog: www.rberaldo.com.br
Siga-me no Twitter: @rberaldo