Usando SELinux no CentOs6 da Linode

Há alguns dias migrei uma de minhas VPS[bb]`s da LINODE para CentOS6. Como a de muitos, a minha primeira atividade, foi checar o firewall[bb] e também o SELinux. Para minha surpresa o SElinux estava desabilitado, e aparentemente não era possível habilita-lo.

Com alguns minutos de busca, encontrei o real motivo do problema. Por padrão as imagens fornecidas pela Linode vem com um kernel[bb] específico preparado por eles, no meu caso  3.0.18-x86_64-linode24, que não tem suporte a SELinux.

Para usar SELinux no CentOS6 da Linode é necessário usar o pv_grub para ativar o suporte a kernel customizado. Para mais informações sobre o pv-grub clique aqui.

Existe uma página na Linode que mostra os procedimentos para utilizar um custom kernel usando pv-grub em diversos sistemas operacionais. Nessa página[bb] descobri que uma boa alma, escreveu um script para automatizar esse processo para o CentOS5.5, logo para resolver o problema foi só atualizar o script.

Como não tive muito tempo de atualizar e colocar no github, fica aqui o procedimento para fazer isso no CentOS6:

Instale um novo kernel que suporte SELinux

yum -y install selinux-policy-targeted audit kernel-xen

Crie os diretórios e arquivos necessários para o pv-grub:

mkdir /boot/grub/

cat > /boot/grub/grub.conf << EOF
default=0
timeout=5
title CentOS (2.6.18-194.26.1.el5xen)
root (hd0)
kernel /boot/vmlinuz-2.6.32-220.4.2.el6.x86_64 root=/dev/xvda
initrd /boot/initrd-2.6.32-220.4.2.el6.x86_64.img

EOF

No passo acima, verifique se a versão do kernel-xen continua a mesma, na data que escrevi era 2.6.32-220.4.2.el6.x86_64 , mas é possível que esteja 2.6.32-220.7.0.el6.x86_64 . ESSA ETAPA É FUNDAMENTAL.

Gere a initrd:

mkinitrd -f --preload xenblk /boot/initrd-2.6.32-220.4.2.el6.x86_64.img /lib/modules/2.6.32-220.4.2.el6.x86_64

Faça o necessário para o console funcionar:

mount /dev/xvda /mnt
mkdir /mnt/dev/pts
umount /mnt
echo "devpts /dev/pts devpts gid=5,mode=620 0 0" >> /etc/fstab
echo "sysfs /sys sysfs defaults 0 0" >> /etc/fstab
sed -i 's#1:2345:respawn:/sbin/mingetty hvc0#co:2345:respawn:/sbin/agetty xvc0 38400 linux#' /etc/inittab

Em teoria tudo deve funcionar agora, apenas não esquece de mudar no painel[bb] do seu Linode a opção de kernel para pv-grub.

Acesse: LINODES -> LINODE-ID -> LINODE-PROFILE

E altere as configurações:

Boot Settings
Kernel: pv-grub*
Filesystem/Boot Helpers
Xenify Distro: NO
Automount devtmpfs: NO

Após todos esses passos, faça um reboot na VPS. Execute:

uname -r

E confirme seu novo Kernel. Daqui pra frente é só configurar seu SELinux em /etc/sysconfig/selinux.
[]’s