De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: André Luiz Facina
Data de Publicação: 09 de Fevereiro de 2009
A técnica de Hardening são atividades corretivas para elevar o nível de segurança do sistema operacional, preparando-o para enfrentar tentativas de ataques. Normalmente o Hardening inclui remover logins do sistema, desativar serviços desnecessários, aplicar patchs, modificar permissões no sistema e etc...
Até mesmo nos sistemas operacionais considerados mais seguros, como o OpenBSD, é possível realizar o Hardening, aumentando ainda mais a segurança do sistema e chegando a um nível bem paranóico de usuários :-)
Começando...
O Secure Levels diz como o kernel irá lidar com a segurança do
ambiente. Existem quatro níveis de segurança, são eles -1, 0, 1 e 2, e pode
ser configurado no arquivo /etc/rc.securelevel
.
Nível -1: Podemos dizer que o nível -1 é o nível Windows, pois não há nenhuma "feature" de segurança configurada para o kernel. Os desenvolvedores do OpenBSD não recomendam utilizar esse nível. Apenas utilize em casos de necessidade.
Nível 0: Quando o OpenBSD é iniciado pela primeira vez o securelevel 0 é usado. Esse nível também não possui segurança adicional.
Nível 1: É o padrão do OpenBSD. Nesse nível o kernel não permite a escrita
direta a memória através dos devices /dev/mem
e /dev/kmem.
A escrita nos
"Raw Disk" também é proibida e as flags schg
e sappnd
não podem ser removidas
dos arquivos.
Nível 2: É o nível mais paranóico do sistema. Nesse nível o firewall (PF) não pode ser alterado e as configurações até mesmo do relógio do sistema são limitadas. Esse nível também inclui as caracteristicas do nível 1.
O secure level pode ser definido através do comando sysctl
(se estiver nos
níveis -1 e 0), ou através do arquivo /etc/rc.securelevel
(será preciso
reiniciar o sistema).
# sysctl kern.securelevel kern.securelevel=-1 # sysctl kern.securelevel=2 kern.securelevel: -1 -> 2
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 extendidos 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 e etc...
Existem quatro tipos de flags, elas são: sappnd, schg, uappnd e uchg.
Essa flag só pode ser definido ou removido pelo root. Arquivos defenidos 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.
Essa flag só pode ser defenido ou removido 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.
O dono do arquivo ou o root podem defenir 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.
O dono do arquivo ou o root podem defenir 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.
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
# 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)
# 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
# chflags -R schg /bin # chflags -R schg /sbin # chflags -R schg /usr/bin # chflags -R schg /usr/libexec # chflags -R schg /usr/sbin
É interessante manter o swap criptografado, para ativar é muito simples
# sysctl vm.swapencrypt.enable vm.swapencrypt.enable=0 # sysctl vm.swapencrypt.enable=1 vm.swapencrypt.enable: 0 -> 1
No exemplo acima, no próximo boot a configuração será perdida. Para manter
a configuração edite o arquivo /etc/sysctl.conf
# vi /etc/sysctl.conf
Modifique a linha
#vm.swapencrypt.enable=0
Para
vm.swapencrypt.enable=1
Por padrão o OpenBSD vem com o inetd habilitado, se você não for utilizar nenhum serviço dele é bom desativá-lo.
Edite o arquivo /etc/rc.conf
e troque a linha inetd=YES
para inetd=NO
,
depois pare o processo do inetd.
# kill `cat /var/run/inetd.pid`
Acima demonstrei algumas ténicas básicas de Hardening. O meu objetivo é difundir ainda mais o OpenBSD na comunidade brasileira e desmitificá-lo como sendo um sistema difícil de utilizar.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários