Kernel Flags – Hardening


Essas flags são permissões adicionais no sistema de arquivos, fugindo das permissões padrões de usuário, grupo e outros. O conceito é parecido com os atributos estendidos do Linux, pois você pode definir um arquivo como imutável, como modificável apenas por um daemon, arquivo que pode ser editado, mas não removido etc.

Existem quatro tipos de flags, elas são: sappnd, schg, uappnd e uchg.

* sappnd

Essa flag só pode ser definida ou removida pelo root. Arquivos definidos com essa flag só podem receber dados (append), mas não podem ser editados. O uso é adequado para logs do sistema. Essa flag não pode ser removido com o secure level 1 ou superior.

* schg

Essa flag só pode ser definida ou removida pelo root. Arquivos com essa flag se tornam imutáveis, não podendo ser modificados ou substituídos. Essa flag não pode ser removida no o secure level 1 ou superior.

* uappnd

O dono do arquivo ou o root podem definir essa flag. Com ela arquivos podem ser modificados, mas não removidos por outros usuários. O dono do arquivo ou o root podem remover essa flag em qualquer secure level.

* uchg

O dono do arquivo ou o root podem definir essa flag. Da mesma forma como o schg, essa flag torna o arquivo imutável, mas com a diferença que a flag pode removida em qualquer secure level pelo dono do arquivo ou root.

Uso das flags

Exemplo de um arquivo sem as flags:

# ls -lo /bsd

-rw-r–r– 1 root wheel – 6861562 Dec 16 18:15 /bsd

Definindo uma flag para o arquivo /bsd (kernel)

# chflags schg /bsd

Verificando novamente:

# ls -lo /bsd

-rw-r–r– 1 root wheel schg 6861562 Dec 16 18:15 /bsd

Removendo a flag:

# chflags noschg /bsd

# ls -lo /bsd

-rw-r–r– 1 root wheel – 6861562 Dec 16 18:15 /bsd

Lembrando que as flags schg e sappnd não podem ser removidas com o secure level 1 e 2. Para poder removê-las desses dois secure levels é preciso rebootar o sistema e entrar em modo mono-usuário (boot -s).

Arquivos interessantes do sistema para utilizar a flag schg (imutáveis).

# chflags schg /bsd

# chflags schg /etc/changelist

# chflags schg /etc/daily

# chflags schg /etc/inetd.conf

# chflags schg /etc/netstart

# chflags schg /etc/pf.conf

# chflags schg /etc/rc

# chflags schg /etc/rc.conf

# chflags schg /etc/rc.local

# chflags schg /etc/rc.securelevel

# chflags schg /etc/rc.shutdown

# chflags schg /etc/security

# chflags schg /etc/mtree/special

Pastas:

# chflags -R schg /bin

# chflags -R schg /sbin

# chflags -R schg /usr/bin

# chflags -R schg /usr/libexec

# chflags -R schg /usr/sbin

Deixe um comentário