Como fazer um servidor QOTD ou semelhante

1

QOTD ("Quote of the Day") é um protocolo que pode ser aberto em servidores por padrão na porta 17. Eu pesquisei e pesquisei e por algum motivo não há praticamente nenhuma informação sobre como fazer um servidor, que quando conectado na porta 17, poderia retornar uma cotação usando QOTD.

Na verdade, o servidor QOTD poderia ser usado como uma maneira prática de mostrar e enviar dados em um formato legível se ele pudesse lidar com grandes quantidades de texto e se não estivesse propenso ao ataque de "pingue-pongue". Wikipedia- QOTD

Esse ataque consiste no servidor qotd enviando respostas para solicitações de outro computador e, quando as solicitações são muitas, o servidor travará (um simples ataque DoS)

Aqui está um exemplo de um servidor QOTD (execute isso no terminal em uma máquina mac ou linux)

  nc shairosenfeld.com 17

Existe uma maneira de fazer um tipo de servidor do tipo QOTD em que os pedidos possam ser limitados no valor por minuto, ou se spammers para respostas pudessem ser banidos (como o denyhosts para ssh)? Alguém tem um exemplo linux, porque eu olhei sem sorte.

    
por Blue Ice 18.03.2013 / 05:57

2 respostas

5

Parece ser bastante trivial escrever um aplicativo QOTD. Eu não sou um programador python, mas um servidor de prova de conceito seria:

#!/usr/bin/python

from socket import *
myHost = ''
myPort = 17

s = socket(AF_INET, SOCK_STREAM)    # create a TCP socket
s.bind ( (myHost, myPort) )
s.listen (5)

while 1:
  connection, address = s.accept() 
  connection.send("echo Hello World\n")
  connection.close() 

(que precisa ser executado como root, claro - porque a porta é menor que 1024)

Você poderia fazer alguma limitação com IPTABLES para limitar o número de conexões - Algo como:

/sbin/iptables  -A INPUT -p tcp --syn --dport 17 -m connlimit --connlimit-above 3 -j REJECT

(Veja aqui para mais opções de conexão limitando o iptables)

    
por 18.03.2013 / 08:04
3

Criando uma linha de comando O servidor QOTD é trivial se você tiver o netcat e o fortune instalados:

# nc -lk -p 17 -e fortune

Algumas versões do netcat podem não ter o -e ativado, nesse caso use a versão do busybox, que faz:

# busybox nc -lk -p 17 -e fortune
    
por 05.10.2014 / 15:25