Iptables não permite porta escutar [RESOLVIDO]

1. Iptables não permite porta escutar [RESOLVIDO]

Bruno Borges
brunobsantos

(usa Ubuntu)

Enviado em 23/09/2017 - 08:20h

Eu estou com problema em meu Ubuntu Server 16.04. Se eu não estiver errado o firewall dele é constituído apenas pelo iptables (não uso o ufw) e eu configurei o iptables para permitir acesso à porta 30000 do meu VPS, mas a porta não fica no modo LISTEN e é dada como inacessível quando verificado a partir de sites como testeportas.com.br

Aqui vão alguns dados:

iptables

root@vps:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:30000

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:30000


Netstat

root@vps:~# netstat -na
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:2929 0.0.0.0:* LISTEN
tcp 0 72 191.101.9.234:2929 179.213.207.76:41056 ESTABLISHED
tcp 0 0 191.101.9.234:2929 179.213.207.76:39322 ESTABLISHED
tcp 0 0 191.101.9.234:2929 179.213.207.76:38776 ESTABLISHED
tcp6 0 0 :::111 :::* LISTEN
tcp6 0 0 :::2929 :::* LISTEN
udp 0 0 0.0.0.0:30000 0.0.0.0:*
udp 0 0 0.0.0.0:729 0.0.0.0:*
udp 0 0 0.0.0.0:111 0.0.0.0:*
udp6 0 0 :::729 :::*
udp6 0 0 :::111 :::*


Mais detalhes

* A aplicação que estou tentando colocar para rodar na porta 30000 é um servidor de jogo (Minetest)

* Eu consigo me conectar ao servidor de jogo utilizando a porta 30000 atravez da versão cliente do jogo em meu próprio notebook, acredito que seja pelo fato de estar na lista de hosts confiáveis do VPS e portanto não é bloquado. Eu notei o problema porque a aplicação em questão mostra (em seus depurador) um erro ao tentar notificar lista global de servidores (servers.minetest.net). Esse fato me faz acreditar ainda mais que o iptables ou algum outro firewall do ubuntu impede o acesso de outros hosts.

* Eu já contactei o suporte e eles disseram que eu estou configurando errado e que se eu encontrar um bug no sistema eu devo informar corretamente (sabe como é esses vps que oferecem taxa de administração). Então acredito que seja algo errado com as configurações.


  


2. Re: Iptables não permite porta escutar [RESOLVIDO]

Leandro Silva
LSSilva

(usa Outra)

Enviado em 23/09/2017 - 10:27h

brunobsantos escreveu:

Eu estou com problema em meu Ubuntu Server 16.04. Se eu não estiver errado o firewall dele é constituído apenas pelo iptables (não uso o ufw) e eu configurei o iptables para permitir acesso à porta 30000 do meu VPS, mas a porta não fica no modo LISTEN e é dada como inacessível quando verificado a partir de sites como testeportas.com.br

Aqui vão alguns dados:

iptables

root@vps:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:30000

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:30000


Netstat

root@vps:~# netstat -na
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:2929 0.0.0.0:* LISTEN
tcp 0 72 191.101.9.234:2929 179.213.207.76:41056 ESTABLISHED
tcp 0 0 191.101.9.234:2929 179.213.207.76:39322 ESTABLISHED
tcp 0 0 191.101.9.234:2929 179.213.207.76:38776 ESTABLISHED
tcp6 0 0 :::111 :::* LISTEN
tcp6 0 0 :::2929 :::* LISTEN
udp 0 0 0.0.0.0:30000 0.0.0.0:*
udp 0 0 0.0.0.0:729 0.0.0.0:*
udp 0 0 0.0.0.0:111 0.0.0.0:*
udp6 0 0 :::729 :::*
udp6 0 0 :::111 :::*


Mais detalhes

* A aplicação que estou tentando colocar para rodar na porta 30000 é um servidor de jogo (Minetest)

* Eu consigo me conectar ao servidor de jogo utilizando a porta 30000 atravez da versão cliente do jogo em meu próprio notebook, acredito que seja pelo fato de estar na lista de hosts confiáveis do VPS e portanto não é bloquado. Eu notei o problema porque a aplicação em questão mostra (em seus depurador) um erro ao tentar notificar lista global de servidores (servers.minetest.net). Esse fato me faz acreditar ainda mais que o iptables ou algum outro firewall do ubuntu impede o acesso de outros hosts.

* Eu já contactei o suporte e eles disseram que eu estou configurando errado e que se eu encontrar um bug no sistema eu devo informar corretamente (sabe como é esses vps que oferecem taxa de administração). Então acredito que seja algo errado com as configurações.


Deve ser realmente algo na sua configuração do server do jogo.
Está usando política ACCEPT na table Filter, logo todas as regras de abertura de portas que adicionar serão em vão se não bloquear as demais no final (Pela saída do iptables não está fazendo isso). Com isso qualquer porta, desde que esteja rodando algum serviço por padrão estará aberta para acesso externo, contudo, pelo fato da porta UDP não estar em estado "Listenning" significa que não há socket aberto na mesma, não há aplicação local executando nesta porta.
Se quer algum tipo de segurança neste servidor deveria ao menos editar o sysctl.conf:
rp_filter = 1
tcp_syncookies = 1

E depois criar um firewall com política DROP para INPUT, pelo menos. Daí a liberação de porta que você fez faria sentido; não precisa liberar para OUTPUT, pois seu server irá apenas receber conexões, não é (possivelmente representando o ciclo infinito retratado no modelo cliente-server que o server deve assumir)?

Além de ter que configurar corretamente o serviço que pretende executar ou executar o mesmo (pode ser que não esteja executando), no caso do Minecraft já não posso te ajudar.



3. Re: Iptables não permite porta escutar

Bruno Borges
brunobsantos

(usa Ubuntu)

Enviado em 23/09/2017 - 12:44h

LSSilva,
Eu vou refazer a questão da segurança sim, eu só estou tentando descobrir o que está errado nessa porta 30000 por enquanto, mas vou organizar tudo depois, obrigado pelas recomendações de segurança que com certeza eu vou fazer.
Sobre aquela regra que eu coloquei no OUTPUT, é porque imaginei que o serviço do jogo está tentando se conectar ao servers.minetest.net para informar à lista global de servidores do jogo, mas acredito que esteja errado mesmo, vou retirar.
Então você acredita que o problema seja no serviço que eu pretendo colocar na porta 30000 certo? Tem alguma forma de testar isso? Eu acho estranho porque faz meses que isso funcionava normalmente, mas é claro que alguma atualização pode ter causado erro no serviço do jogo.

CarlosEduLinux,
Eu tentei configurar o bind_address do serviço de jogo para escutar no ipv4 externo do VPS, mas tive o mesmo problema, então você sugere utilizar outro? (por padrao o jogo utiliza esse 0.0.0.0)

Veja se isso esclarece

root@vps:~# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.2 P-t-P:127.0.0.2 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:555741 errors:0 dropped:0 overruns:0 frame:0
TX packets:330427 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:810315193 (810.3 MB) TX bytes:19155130 (19.1 MB)

venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:191.101.9.234 P-t-P:191.101.9.234 Bcast:191.101.9.234 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1




4. Re: Iptables não permite porta escutar

Bruno Borges
brunobsantos

(usa Ubuntu)

Enviado em 23/09/2017 - 12:57h

Aqui vai um trecho do depurador do serviço

2017-09-23 11:54:32: ACTION[Main]: .__ __ __
2017-09-23 11:54:32: ACTION[Main]: _____ |__| ____ _____/ |_ ____ _______/ |_
2017-09-23 11:54:32: ACTION[Main]: / \| |/ \_/ __ \ __\/ __ \ / ___/\ __\
2017-09-23 11:54:32: ACTION[Main]: | Y Y \ | | \ ___/| | \ ___/ \___ \ | |
2017-09-23 11:54:32: ACTION[Main]: |__|_| /__|___| /\___ >__| \___ >____ > |__|
2017-09-23 11:54:32: ACTION[Main]: \/ \/ \/ \/ \/
2017-09-23 11:54:32: ACTION[Main]: World at [/root/minetest/bin/../worlds/minemacro]
2017-09-23 11:54:32: ACTION[Main]: Server for gameid="minetest" listening on 0.0.0.0:30000.
2017-09-23 11:54:32: ACTION[Server]: Announcing to servers.minetest.net
2017-09-23 11:54:37: ERROR[CurlFetch]: servers.minetest.net/announce not found (Timeout was reached) (response code 0)



5. Problema resolvido

Bruno Borges
brunobsantos

(usa Ubuntu)

Enviado em 23/09/2017 - 13:26h

Eu descobri que o problema do meu serviço não conseguir se conectar com o servers.minetest.net era devido o tempo de resposta ser superior a 5 segundos e o serviço por padrão retorna o erro apos 5 segundos. Eu aumentei o tempo de espera da resposta para 20 segundos e o problema inicial foi resolvido pois agora o servidor funciona normalmente.
Descobri que é possível se conectar a ele na porta 30000 (independente de estar ou não na lista de hosts.allow), mas provavelmente por algum problema do jogo ou do netstat a porta 30000 não é tida como em LISTEN.
Talvez seja uma imperfeição do jogo que ainda se encontra em desenvolvimento.

Eu considerar a situação como resolvida porque:
* Problema principal provavelmente é causado por um erro ou característica do serviço de jogo.
* Problema raiz resolvido (servidor aparece na lista global normalmente e qualquer um pode se conectar)

Quero agradecer por terem respondido e tentado ajudar, eu só venho ao fórum após perder horas tentando resolver, justamente para não ser incômodo. Vou estar fazendo uma configuração segura no iptables.

Final da história
Nenhum problema no iptables nem na configuração, mas sim no serviço que rodava na porta.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts