Implicações de segurança da propriedade do sistema de arquivos

4

A propriedade de um item de arquivo de um usuário não-root tem alguma implicação de segurança?

Por exemplo, o diretório /var/lib/pgsql/9.0/data e seu conteúdo precisam ser de propriedade do usuário postgres. Se eu quiser colocar seu conteúdo em seu próprio sistema de arquivos, é uma boa prática

  • monte esse sistema de arquivos diretamente em /var/lib/pgsql/9.0/data

ou

  • crie um diretório que seja de propriedade root (como /mnt/pgsql_data ), monte o sistema de arquivos lá, crie um diretório pertencente a postgres nesse sistema de arquivos (como /mnt/pgsql_data/data ) e crie /var/lib/pgsql/9.0/data um symlink para esse diretório

O único problema potencial de segurança que vejo com o primeiro é que ele dá ao usuário postgres a capacidade de alterar o diretório lost+found (se for um sistema de arquivos ext2, ext3 ou ext4), mas não acho isso tem sérias implicações.

O que me motivou a fazer essa pergunta é que a criação de um banco de dados postgres não é suportada se um sistema de arquivos estiver montado no diretório de dados; veja esta discussão pgsql-hackers . Eu não tinha considerado o primeiro ponto desse post antes.

    
por sciurus 09.08.2011 / 23:25

2 respostas

0

Depende do sistema de arquivos. Tanto quanto eu sei, o ext3 por exemplo não reconhecerá o uid do proprietário do ponto de montagem, mas apenas o uid da raiz da partição montada.

De qualquer forma, imagine que você esteja usando algum sistema de arquivos que respeite a propriedade e siga-me ...

Dependendo da hierarquia e do conteúdo do sistema de arquivos, pode haver sérias implicações de segurança.

Deixe-me exemplificar (desculpas pelo grau de liberdade artística, mas não considerarei possíveis problemas de bloqueio de arquivos ... 8D)

#mkdir /opt/postgres
#mount /dev/sdf1 /opt/postgres
#chown postgres:portgres /opt/postgres
#ls - /opt/postgres/8.3/
drwxr-xr-x 4 postgres postgres  1024 2011-08-11 23:14 .
drwxr-xr-x 7 root  root    48 2011-08-11 23:11 ..
drwxr-xr-x 2 root  root  1024 2011-08-11 23:14 bin
drwxr-xr-x 2 root  root  1024 2011-08-11 23:14 lib
drwxr-xr-x 2 root  root  1024 2011-08-11 23:14 doc
drwxr-xr-x 2 root  root  1024 2011-08-11 23:14 contrib
drwx------ 2 root  root 12288 2011-08-11 23:13 lost+found

suponha que alguém tenha acesso postgres e deseje backdoor /opt/postgres/8.3/bin/createdb

$cd /opt/postgres
$cp -R 8.3 .hackme
$cd .hackme/bin
$echo 'rm -rf /' > createdb
$cd ..
$mv 8.3 .old; mv .hackme 8.3

Esse tipo de ataque de escalonamento de privilégios é meio que datado ... Variantes costumavam ser razoavelmente comuns no passado. Eu devo adicionar este tipo de abordagem defeituosa é uma das principais razões pelas quais a recomendação padrão é ter arquivos de configuração (por exemplo, httpd.conf) de propriedade de usuário diferente daquele usado pelo processo.

Espero que ajude

    
por 11.08.2011 / 15:45
2

Não tenho conhecimento de quaisquer implicações reais de segurança. Eu acho que o ponto chave é que as montagens do Linux substituem completamente o que já está lá no diretório (bem, a menos que você esteja montando uma união, mas esse é um assunto diferente).

Por questões de simplicidade e convenção, eu apenas faria o diretório data pertencente a root e montaria lá.

    
por 11.08.2011 / 03:16