RHEL7: Aggiungere porte non standard con SELinux

By | Dicembre 28, 2018

Nota: questo è un obiettivo d’esame RHCE 7.

Presentazione

A causa della politica SELinux, un servizio è normalmente autorizzato a funzionare su un elenco limitato di porte conosciute. Ad esempio, nel caso del servizio httpd, questo elenco è 80, 443, 488, 8008, 8009, 8443.

Per consentire a un servizio di utilizzare porte non standard, è necessario seguire una procedura specifica per modificare la politica di SELinux.

Prerequisiti

Installare il server setroubleshoot (per ottenere il comando semanage) e, opzionalmente, i pacchetti selinux-policy-devel (per ottenere il comando sepolicy):

# yum install -y setroubleshoot-server selinux-policy-devel

Installa il servizio (qui httpd) che vuoi eseguire (se non è già stato fatto):

# yum install -y httpd

Procedura SELinux

Per ottenere l’elenco di tutte le porte con restrizioni per servizio, digitare:

# semanage port -l
SELinux Port Type              Proto    Port Number

afs3_callback_port_t           tcp      7001
afs3_callback_port_t           udp      7001
afs_bos_port_t                 udp      7007
afs_fs_port_t                  tcp      2040
afs_fs_port_t                  udp      7000, 7005
afs_ka_port_t                  udp      7004
afs_pt_port_t                  udp      7002
afs_vl_port_t                  udp      7003
...
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
...
zookeeper_client_port_t        tcp      2181
zookeeper_election_port_t      tcp      3888
zookeeper_leader_port_t        tcp      2888
zope_port_t                    tcp      8021

 

Per ottenere l’elenco delle porte conosciute per il servizio httpd, digitare:

# semanage port -l | grep -w http_port_t
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

In alternativa, puoi anche usare il comando sepolicy per ottenere lo stesso risultato:

# sepolicy network -t http_port_t
http_port_t: tcp: 80,81,443,488,8008,8009,8443,9000

Per verificare se una porta è già utilizzata (qui 8001), digitare:

# sepolicy network -p 8001
8001: tcp unreserved_port_t 1024-32767
8001: udp unreserved_port_t 1024-32767

Per consentire l’esecuzione del servizio httpd sulla porta tcp 8001 (-a per aggiungere), digitare:

# semanage port -a -t http_port_t -p tcp 8001

Nota 1: utilizzare l’opzione -d anziché l’opzione -a per rimuovere una porta dall’elenco.
Nota 2: Nel caso in cui la porta tcp 8001 sia già assegnata ad un altro servizio, utilizzare l’opzione -m (per ulteriori informazioni consultare le domande frequenti su Sander van Vugt RHCE): una porta può essere utilizzata da un solo servizio alla volta.

Per verificare che l’elenco sia aggiornato, digitare:

# semanage port -l | grep -w http_port_t
http_port_t                    tcp      8001, 80, 81, 443, 488, 8008, 8009, 8443, 9000

In alternativa, puoi controllare il nuovo stato della porta (qui 8001):

# sepolicy network -p 8001
8001: tcp unreserved_port_t 1024-32767
8001: udp unreserved_port_t 1024-32767
8001: tcp http_port_t 8001

Configurazione di servizio specifica aggiuntiva

Oltre alla modifica della politica di SELinux, potrebbe essere necessario modificare la configurazione del servizio.
Ad esempio, con il servizio httpd, è necessario aggiornare la direttiva Listen o, se si tratta di un host virtuale, la direttiva <VirtualHost> nel file /etc/httpd/conf/httpd.conf per tenere conto della nuova porta.

Fonte: Guida per utenti e amministratori SELinux di RHEL 7 e pagina man di sepolicy network.

One thought on “RHEL7: Aggiungere porte non standard con SELinux

  1. Francesco

    Grazie mille per aver postato questo articolo molto interessante. Mi è stato utile per configurare alcuni aspetti sul mio server

    Reply

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.