O Chroot fornece um pouco de segurança para fornecer um aumento de velocidade para um invasor. Se você tem uma vulnerabilidade em apache / CGIs, um invasor precisa escapar da jaula chroot. Ataques automatizados são menos propensos a tentar fazer isso, mas se houver uma exploração de kernel conhecida e os requisitos para essa exploração forem obtidos no ambiente chrooted, você será escolhido.
O SELinux oferece maior segurança, mas a dor da implementação não é para ser espirrada. Para casos simples, pode haver políticas SELinux pre-canned para você, mas se você estiver fazendo coisas estranhas / personalizadas, você precisará estendê-las você mesmo. Isso não é muito difícil se você tiver os RPMs de desenvolvimento selinux carregados. Comece no modo não obrigatório, exercite seu sistema completamente e execute:
audit2allow -a -l -R -m foo -o foo.te
Isso ajudará você a desenvolver suas políticas personalizadas.
Um passo similar ao SELinux é o GRSecurity. É menos padrão, mas é provavelmente um pouco mais seguro no SELinux e possivelmente um pouco mais fácil de usar, embora com menos pessoas aleatórias na internet possam ajudá-lo.
Outra abordagem é executar o servidor da Web em uma VM. Isso lhe dá um pouco mais de segurança, mas é sabido que os ataques podem escapar de um ambiente de VM. No entanto, esses provavelmente seriam atacantes muito determinados, e não o seu roteiro normal.