A questão que suas regras de firewall não funcionam é que quando uma máquina está se conectando ao seu servidor de banco de dados, a partir do ponto do servidor de banco de dados, é de fato a porta de destino; no entanto, quando um pacote está deixando o servidor de banco de dados, do ponto de vista do servidor de banco de dados, a porta de serviço / escuta do banco de dados é a porta de origem.
Como tal, corrigindo as suas regras, deve ser:
-A INPUT -p tcp -m tcp --dport 50000 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 50000 -j ACCEPT
Cuidado também com as conexões localhost, que muitas vezes são necessárias por vários daemons; você pode precisar no topo de suas regras:
-A INPUT -i lo -j ACCEPT
-A OUTPUT -i lo -j ACCEPT
Dependendo dos seus requisitos de segurança e do seu número de regras, eu daria uma olhada no DIRETRIZES ESTABELECIDAS E RELACIONADAS . Isso permitiria simplificar suas regras com regras que reconhecem firewalls com estado.
ESTABLISHED meaning that the packet is associated with a connection which has seen packets in both directions, NEW meaning that the packet has started a new connection, or otherwise associated with a connection which has not seen packets in both directions, and RELATED meaning that the packet is starting a new connection, but is associated with an existing connection, such as an FTP data transfer, or an ICMP error.