Para responder à sua pergunta, você provavelmente pode restringir uma porta a um aplicativo específico usando o SElinux. Eu não usei isso sozinho e só tenho conhecimento superficial de suas capacidades, mas aqui está um ponteiro que encontrei neste site:
link
Nessa resposta, o wzzrd parece mostrar como conceder permissão a uma aplicação específica (foo) para ligar a uma porta específica (803). Você teria que ter a configuração da política de modo que somente o seu aplicativo (nginx) tenha permissão para as portas especificadas (80 e 443).
Baseando-me na resposta do wzzrd, pode ser tão simples quanto adicionar isso à política
allow nginx_t nginx_port_t:tcp_socket name_bind;
e executando isso
semanage port -a -t nginx_port_t -p tcp 80
semanage port -a -t nginx_port_t -p tcp 443
No entanto, imagino que você também precisará de uma linha na política que especifique que nenhum outro programa pode ser vinculado a essas portas.
No final, estou apenas adivinhando qual é a configuração apropriada.
Enfim, não acho que tenha havido um Ubuntu que tenha o SElinux instalado e habilitado por padrão. Porque eu acredito que requer a aplicação de certos patches para vários utilitários e uma opção de kernel, pode ser mais fácil simplesmente usar o Centos que tem o SElinux instalado e ativado desde o início.
Desculpe, não tenho mais ajuda. Talvez outra hora, eu baixarei uma imagem de Centos e tentarei isto; será um bom passo de aprendizado. Eu atualizarei esta resposta se eu fizer isso.