CentOS - semanage - Excluir intervalo de portas

6

Surpreendentemente, não foi possível encontrar informações claras sobre como excluir um intervalo de portas por meio de semanage port . Aqui está uma lista de permutações que tentei:

semanage port -d -t http_port_t -p tcp 0-60000
semanage port -d -t http_port_t -p tcp [1-60000]
semanage port -d -t http_port_t -p tcp 1,60000
semanage port -d -t http_port_t -p tcp 1-60000
semanage port -d -t http_port_t -p tcp 1 60000
semanage port -d -t http_port_t -p tcp 1,60000
semanage port -d -t http_port_t -p tcp <60000
semanage port -d -t http_port_t -p tcp '1-60000'
semanage port -d -t http_port_t -p tcp '1,60000'
semanage port -d -t http_port_t -p tcp 1000-10000

A mensagem de ajuda não estava clara sobre como indicar um intervalo:

root@service1 /etc/yum/pluginconf.d # -> semanage -h
/usr/sbin/semanage: 
semanage [ -S store ] -i [ input_file | - ]
semanage [ -S store ] -o [ output_file | - ]

semanage login -{a|d|m|l|D|E} [-nrs] login_name | %groupname
semanage user -{a|d|m|l|D|E} [-LnrRP] selinux_name
semanage port -{a|d|m|l|D|E} [-nrt] [ -p proto ] port | port_range
    
por Mike Purcell 15.11.2012 / 02:56

1 resposta

6

Bem, isso foi impressionante, você me fez ir ao código-fonte para encontrar uma resposta. Você tropeçou na maneira correta de definir um intervalo com sua primeira tentativa: dois números devem ser separados por um hífen.

O que está acontecendo é isso:

(rc, exists) = semanage_port_exists(self.sh, k)
if rc < 0:
    raise ValueError(_("Could not check if port %s/%s is defined") % (proto, port))
if not exists:
    raise ValueError(_("Port %s/%s is not defined") % (proto, port))

Se você especificar um intervalo de portas ao adicionar uma regra, deverá especificar o mesmo intervalo de portas ao excluir uma regra. Por exemplo:

sudo semanage port -l | grep ^http_port_t
http_port_t                    tcp      80, 443, 488, 8008, 8009, 8443

Para excluí-los, você deve chamar delete uma vez para cada porta ou intervalo de portas entre as vírgulas. Eles não podem ser um intervalo contíguo porque não foram definidos dessa maneira.

Por outro lado, com este exemplo:

mysqld_port_t                  tcp      1186, 3306, 63132-63163

Você não pode excluir individualmente 63132 ou 63133. Você deve especificar esse intervalo exato.

Exemplo de adição e exclusão de um intervalo:

semanage port --add -t http_port_t -p tcp 8899-8902
semanage port --delete -t http_port_t -p tcp 8899-8902
    
por 30.11.2012 / 02:27